LusoRobótica - Robótica em Português
Sistemas específicos => Arduino / AVR => Tópico iniciado por: mrr em 23 de Fevereiro de 2010, 21:42
-
Boas pessoal,
Sou novo nas andanças da eletronica, acabei de comprar um arduino mas estou a ter problemas quando ligo mais que um sensor analogico.
Apos ligar um LM35 e um LDR, como estão nas imagens,(apenas o LDR está ligado ao PIN5 e tem uma resistência de 1K), verifiquei que ao dar mais luz ao LDR os valores do LM35 eram influenciados, mostrando valores inconstantes e irreais.
Será que algum me pode ajudar? será problema da resistência ser de 1K e não de 10k?
também cheguei a ligar um potenciómetro, mas ai é que os valores devolvidos pelos sensores todos eram totalmente inconstantes.
o código é o seguinte:
int pin = 0; // analog pin
int tempc = 0,tempf=0; // temperature variables
int samples[8]; // variables to make a better precision
int maxi = -100,mini = 100; // to start max/min temperature
int i;
int pinLuz = 5;
int photocellPin0 = 5; // the cell and 10K pulldown are connected to a0
int photocellReading0; // the analog reading from the analog resistor divider
float Res0=10.0;
void setup()
{
Serial.begin(9600); // start serial communication
}
void loop()
{
for(i = 0;i <= 7;i++)
{
samples = ( 5.0 * analogRead(pin) * 100.0) / 1024.0;
tempc = tempc + samples;
delay(1000);
}
tempc = tempc/8.0; // better precision
Serial.print("temp: ");
Serial.println(tempc);
tempc = 0;
//fotocell
photocellReading0 = analogRead(photocellPin0); // Read the analogue pin
float Vout0=photocellReading0*0.0048828125; // calculate the voltage
int lux0=500/(Res0*((5-Vout0)/Vout0)); // calculate the Lux
Serial.print("Lux: ");
Serial.println(lux0);
delay(1000);
}
-
Olá, mrr :)
Li o que escreveste, mas não entendi uma coisa. Nas imagens que disponibilizadas mostras o LDR e o LM35 montados um de cada vez; daí suponho que estejas a testar cada um em separado mas dizes que quando iluminas o LDR, o LM35 dá-te valores esquisitos. Para isso tens que estar a usar os dois em simultâneo... Daí te pergunto: Por acaso estás com os dois sensores ligados em simultâneo ao Analog In 0?
Pergunto isto, porque olhando para o código, só te vejo a usares o Analog In 0, mas o teu problema implica que estejas a usar os dois sensores...
-
Ola TCustodio,
Pois as imagens é só para ilustrar como liguei, mas de facto estão ligados ao mesmo tempo e em pinos diferentes, ao 0 para o LM35 e ao 5 para o LDR.
Obrigado.
-
Só agora é que reparei que de facto estão a ser usados 2 pinos analógicos :-X
olha, tenho uma sugestão: quando quiseres aqui colar código, no IDE do arduino vai ao menu Edit e clica em "Copy for forum", e assim o código fica todo colorido, e fácil de intepretar. E não te esqueças de identar o código!
-
Experimenta repetir 4 vezes a linha
photocellReading0 = analogRead(photocellPin0); // Read the analogue pin
(ficas só com a última leitura)
-
Obrigado pela dica, mas acho que esse não é o problema, isto porque o que afecta é os valores da temperatura quando vário a luminosidade.
Mas logo a noite vou tentar fazer leituras com alguns segundos de diferença entre sensores.
Acabei de testar Njay, e de facto resolve o problema, muito obrigado pela diga.
;D