quarta-feira, 15 de junho de 2011

apresentação final





Eletroscópio Eletronico
Projeto do eletroscópio
Suporte feito para lampada e ldr


Projeto do suporte

Planilha - Condutância/Distância
Gráfico - Condutância/Distância
















Planilha - Condutância/(1/distância²)
Gráfico - Condutância/(1/distância²)

segunda-feira, 13 de junho de 2011

Código fonte

void setup(){
  Serial.begin(9600);
  Serial.println("1- Ler valor de luz de fundo.");
  Serial.println("2- Ler valor de luz.");
  Serial.print("\n");
}

void exibe(float valor, float condutancia){
  Serial.print("Valor em volts = ");
  Serial.print(valor,4);
  Serial.print(" V");
  Serial.print("\n");
  Serial.print("Valor da condutancia = ");
  Serial.print(condutancia,4);
  Serial.print(" mS");
  Serial.print("\n");
}

float leitura(){
 const int portaAnalogica = 0;
 int valorLido, k;
 float valorVolts;
 valorLido = analogRead(portaAnalogica); // Leitura da porta analogica
 valorVolts = valorLido * 0.0048876; // Conversão do valor analogico em volts
 return(valorVolts);
}

float calculaCondLuzFundo(float luzFundo){
  float voltResistor, corrente, resistenciaLuzFundo, condLuzFundo;
  voltResistor = 5.0000000 - luzFundo; // calcula voltagem no resistor
  corrente = voltResistor/4.7; // calculo da corrente
  resistenciaLuzFundo = luzFundo/corrente;
  condLuzFundo = (1/resistenciaLuzFundo);
  return(condLuzFundo);
}

float calculaCondLDR(float condLuzFundo, float voltLDR){
  float voltResistor, corrente, resistenciaLDR, condLDR;
  voltResistor = 5.0000000 - voltLDR;
  corrente = voltResistor/4.7;
  resistenciaLDR = voltLDR/corrente;
  condLDR = (1/resistenciaLDR) - condLuzFundo;
  return(condLDR);
}

void loop(){
  int opt;
  float luzFundo, voltLDR, condLuzFundo, condLDR;
  if (Serial.available() > 0) {
    opt = Serial.read(); 
    switch(opt)
      {
        case 49 :
          luzFundo = leitura();
          condLuzFundo = calculaCondLuzFundo(luzFundo);
          exibe(luzFundo, condLuzFundo);
          break;
        case 50 :
          voltLDR = leitura();
          condLDR = calculaCondLDR(condLuzFundo, voltLDR);
          exibe(voltLDR, condLDR);
          break;
      }
  }
}

segunda-feira, 30 de maio de 2011

Molde do projeto

para medir a distancia será usado uma placa de madeira com as seguintes medidas :

Placa de Madeira

  • altura :73 cm
  • largura:25,2cm
  • Espaço usado para os suportes:14,5cm
Suporte do LDR e lampada

  • altura:14cm
  • largura:3,1cm

nele será fixado o LDR e a lâmpada para medição de distancia




segunda-feira, 16 de maio de 2011

Mudanças no projeto

Vamos trocar o circuito do projeto, o eletroscópio sofre muito com interferência então por sugestão da professora Marisa, usaremos um LRD e uma fonte de luz, pois a lei da distancia ao quadrado também se aplica nas variações de intensidade de luz.

Computação:
 - Calcular a condutancia da luz de fundo.
 - Utilizar a voltagem que passa no resistor (valor da porta analogica) para calcular a corrente do circuito (i = V/R)
 - Calcular a resistencia do LDR (5v - Vresistor = Vldr) (R = Vldr/i)
 - Calcular a condutancia do LDR (1/R)

Mostrar a tabela com os valores da distancia e condutancia equivalentes.

Imagem ilustrativa do novo circuito, usando o LDR. 

quarta-feira, 11 de maio de 2011

Apresentação - 10/5/11 e Codigo para calculo de média

link:Apresentação 10/5/11

Código em C

const int PinoEletroscopio = 0;
int arm1[50],Eletroscopio = 0,k;
float arm2[50], v = 0.0f;

void setup(){
Serial.begin(9600);
}

void loop(){
Eletroscopio = analogRead(PinoEletroscopio);// Leitura da porta analogica 0
v = (float)(5 * Eletroscopio) / 1023; //Converte o valor recebido da porta analogica para volts
  arm1[1]=Eletroscopio;//Armazena o primeiro valor no primeiro vetor da variável arm1
  arm2[1]=v;//Armazena o primeiro valor no primeiro vetor da variável arm2
for(k=2;k<50;k++){//k iniciar com valor inicial 2 e aumenta seu valor em 1 ate o valor seja 50
Eletroscopio = analogRead(PinoEletroscopio);
  v = (float)(5 * Eletroscopio) / 1023;
  arm1[k]=Eletroscopio;//armazena o valor no vetor k da variável arm1
  arm2[k]=v;//armazena o valor no vetor k da variável arm1
  if(arm1[1]>arm1[k]){//compara se arm1[1] for maior que arm[k] então ele deve ser substituído por arm[k]
 arm1[1]=arm1[k];
 arm2[1]=arm2[k];}
}
    Serial.print("Leitura Arduino = ");
    Serial.print(arm1[1]);//imprime menor valor da variável arm1
    Serial.print(" em volts= ");
    Serial.println(arm2[1]);//imprime menor valor da variável arm2
    delay(1000);//Atraso do programa em 1 segundo
}

-Rafael-

segunda-feira, 2 de maio de 2011

planos de arduino

Tentamos usar a energia que ligava ao arduino mas se mostrou com grandes problemas como interferência mesmo com a solda, com a ajuda do coordenador Daniel conseguimos ligar numa protoboard na qual a corrente de uma bateria ligado ao eletroscópio e com ligação paralela ao arduino pela porta analógica e a porta ground.

Eletroscópio ligado a uma bateria,um voltímetro e um arduino 2009
Eletroscópio em uma protoboard
Um voltímetro foi usado para garantir a precisão da tensão e o seguinte código foi usado para o calculo de tensão:


const int PinoEletroscopio = 0;
int Eletroscopio = 0;
float v = 0.0f;

void setup(){
  Serial.begin(9600);
}
void loop(){

  Eletroscopio = analogRead(PinoEletroscopio);
  v = (float)(5 * Eletroscopio) / 1023;
  Serial.print("Leitura Arduino = ");
  Serial.print(Eletroscopio);
  Serial.print(" em volts= ");
  Serial.println(v);
  delay(1000);
}


Calculo de corrente
5v=1023
X=Y

5Y=1023X
X:O valor da porta analógica em volts
Y:O valor que sai da porta analógica



A porta analógica recebe um valor máximo de 1023 (5v) fazemos o calculo para sabermos o valor em volts ao se aproximar um corpo carregado, ainda essa semana iremos melhorar o código do programa para que seja calculado a distância que um corpo carregado está do eletroscópio, também será testado o uso de baterias com carga menor que 9v para a melhoria de prescisão.

-Rafael-