LusoRobótica - Robótica em Português
Robótica => Iniciantes => Tópico iniciado por: FarraJ em 13 de Abril de 2011, 00:00
-
Boas.
Queria testar um LDR, mas nao estou a conseguir obter valores coerentes com o ambiente atraves do Serial Monitor.
Ligação:
pin 5V ligado a resistencia, que liga ao LDR e ao pin.anal 0. ldr ligado ao GND.
LED ligado a resistencia, pin 8 e GND (O LED nao é o problema, mas indica lo mal nao deve fazer)
codigo:
int value = 0;
void setup(){
pinMode(0, INPUT);
pinMode(8, OUTPUT);
Serial.begin(9600);
}
void loop(){
value = analogRead(A0);
digitalWrite(8, HIGH);
Serial.println(value, DEC);
delay(1000); }
O que está a falhar?
obrigado
-
Primeiro não precisas de declarar o pino 0 como uma entrada. Até acho que ele assume que é o pino digital 0 e não o analogico.
Depois o que queres fazer ler o ldr e quando tiver acima de uma valor acender um led?
-
nao tou a perceber a tua montadem
tens tipo isto?
gnd-----resistencia ------- ldr-------5v
|
pino do arduino
-
Para começar, que valores recebes?
Podes ter uma resistencia muito grande ou muito pequena..
-
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fwww.ladyada.net%2Fimages%2Fsensors%2Fcdslitetestdiag.gif&hash=01f940dd72ac4dae77682d91749e010b6cb92e05)
Liga de acordo com este esquema. a resistÊncia é de 10k mas tambem da com 1k.
-
nao declares o pin 0 como imput e experimenta outra vez. se tiveres um multimetro, ve a tensao que tens no divisor de tensao
-
nao tou a perceber a tua montadem
tens tipo isto?
gnd-----resistencia ------- ldr-------5v
|
pino do arduino
Resistencia trocada com LDR. li algures que isso iria criar um decrescimo na voltagem e nao um aumento. nao sei porque e que isso acontece, mas pareceu me mais seguro menos que mais :P
@Senso: neste momento 310 +- 20..
E a meio deste post, faço um mega facepalm: Estava a ligar isto ao Pin 0 DIGITAL EM VEZ DO ANALOGICO!!!!!!!!!!
Espero frequentar este forum mais vezes de forma a aprender mais, e como ja viram, vai por aqui uma azelhice desgraçada....
Enfim, brigado pelas vossas prontas respostas.
Já agora, alguem me explica (ou me indica um site, ou um nome para googlar) a cena da resistencia estar antes ou depois do LDR, e porque e que uma aumenta a tensao, e a outra decresce?
Obrigadissimo
-
Desculpem a minha azelhisse mas para quê a resistencia para o ldr?
-
Desculpem a minha azelhisse mas para quê a resistencia para o ldr?
Para teres um divisor de tensão, uma resistência fixa e outra variável vai fazer com que a tensão no ponto intermédio varie.
-
Desculpem a minha azelhisse mas para quê a resistencia para o ldr?
Para teres um divisor de tensão, uma resistência fixa e outra variável vai fazer com que a tensão no ponto intermédio varie.
Precisas do divisor para quê?
-
Desculpem a minha azelhisse mas para quê a resistencia para o ldr?
Para teres um divisor de tensão, uma resistência fixa e outra variável vai fazer com que a tensão no ponto intermédio varie.
Precisas do divisor para quê?
O uC lê tensão, logo tens k por la tensão, n podes ligar o LDR a um pino do ADC, não vai acontecer nada. Por exemplo tens isto
5V-----R---.----LDR------GND
|
| adc
Vadc = ( Rldr / (R+Rldr) ) * 5
Agora se fixares a resistência R com um valor teu cunhecido sabes que o LDR varia, logo a tensão no adc vai variar e tu vais ler essa variação.
ou
http://lmgtfy.com/?q=Voltage+divider (http://lmgtfy.com/?q=Voltage+divider)
-
Obrigado
Pensava que bastava isto:
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fandredrobotics.files.wordpress.com%2F2009%2F09%2Fldr_bb.png%3Fw%3D495%26amp%3Bh%3D310&hash=cbde211ca04e66e830840ad47fb2503046209d04)
-
Voces fazem esses desenhos todos bacanos nalgum software ou assim? :P
No papel fica perceptivel até certo ponto, depois torna se confuso.
obrigado
-
Voces fazem esses desenhos todos bacanos nalgum software ou assim? :P
No papel fica perceptivel até certo ponto, depois torna se confuso.
obrigado
O software é o Fritzing (http://www.fritzing.org)
-
Fantastico programa, obrigado pela resposta
-
Obrigado
Pensava que bastava isto:
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fandredrobotics.files.wordpress.com%2F2009%2F09%2Fldr_bb.png%3Fw%3D495%26amp%3Bh%3D310&hash=cbde211ca04e66e830840ad47fb2503046209d04)
Assim o A5 estava sempre ligado ao GND.
-
Não sei , nunca testei , obrigado pela resposta.
-
Boas.
Tentei montar um segundo LDR, e tambem nao esta a correr como esperado.
esquema é o seguinte (https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fi53.tinypic.com%2Fsep2kk.jpg&hash=4c1a3f0203bd6ae19f22e7bcd637645df6d76edd)
O serial monitor dá me sempre 0 pra este LDR (o ligado ao pin analogco 1). O outro continua na perfeiçao.
Neste tive que usar uma resistencia de 10K em vez de 2K, será isso?
obrigado
-
Mostras o código?
-
O led tava estragado. troquei os LEDs e já deu. btw, o codigo foi este, quaisquer sugestoes para o melhorar sao agradecidas:
int valor = 0;
int value = 0;
void setup(){
pinMode(0, INPUT);
pinMode(13, OUTPUT);
pinMode(1, INPUT);pinMode(12, OUTPUT);
Serial.begin(9600);
}
void loop(){
value = analogRead(A0);
if (value<100)
digitalWrite(13, HIGH); else digitalWrite(13,LOW);
valor = analogRead(A1);
if (valor<250)
digitalWrite(12, HIGH); else digitalWrite(12,LOW);
Serial.println(valor, DEC);Serial.println(value, DEC);
delay(1000);
obrigado
-
Tu estás a declarar os portos digitais 0 e 1 como input e não os analogicos como queres. Nos analogicos nao precisas , porque só funciona como input.
Cumprimentos,
-
Não tens resistência nos LEDs?
-
confere, obrigado pelo reparo!
@Amando96: Nao, ja li que era suposto usar, mas os que tenho diminuem imenso o brilho, e ate agora nao tive problemas (aquele LED estragado nunca sequer foi ligado a nada ;) )
Já agora, para evitar estar a encher isto de topicos em cada pergunta:
Quero controlar uns motores DC, e portanto vou precisar de 4 transistores para cada motor (ponte H). Já procurei guias na net, mas uns indicam coisas bem mais complicadas qe outros, portanto nao sei qual será melhor para mim.
Segundo sei, num NPN, quando há corrente na base (sentido base-emissor) passa tambem a haver corrente no sentido Colector Emissor. Como calculo que valor deve ter a corrente da base? Posso controlar isso com um digitalWrite?
Quais sao as principais coisas a ter em atençao?
Obrigado