LDR no comparador do 89C2051

Software e Hardware para linha x51

Moderadores: 51, guest2003, Renie, gpenga

LDR no comparador do 89C2051

Mensagempor Fandango » 05 Jan 2009 21:57

Aí gente! Feliz e próspero 2009 prá todos vocês! :D

Ano novo, novas brincadeiras... Resolvi fazer um brinquedinho para minha filha e queria ligar um LDR à porta comparadora do 89C2051 para "medir" a intensidade de luz. Na realidade, a ideia (reparem na grafia dentro da nova regra :lol: ) é identificar quando começa a escurecer.
Sei que dá para simular um ADC usando o comparador, mas não entendi direito como fazer isso. Me parece que tenho que usar um capacitorzinho e um timer. Alguém já implementou algo no estilo? Poderia me dar uma dica (de como ligar e como ler)?

Abração!
... e assim falou Zaratustra !
Fandango
Byte
 
Mensagens: 187
Registrado em: 11 Jun 2007 22:13
Localização: SC - Brasil

Mensagempor RobL » 06 Jan 2009 07:51

Um circuito série: um resistor e o LDR um lado no +V (5V)e outro no zero o centro na porta (junção do R com LDR na porta).
Ajustar o valor do resistor para a intensidade de luz em função da transição do seu comparador (voltagem de referência do seu comparador).
Pode e deve acrescer um cap cerâmico da porta para a referência.
Para calcular o valor do R meça o valor da resistência do seu LDR (se tiver um gráfico melhor) com luz que considerar normal (dia) eleja uma corrente em torno de 1mA (ou pouco maior se necessário baixar impedância da malha) e calcule como um circuito série com 2 resistores ou use um resistor variável para tal.
Na penumbra escolhida o valor da tensão na porta deverá ser a de referência do seu comparador.
RobL
Dword
 
Mensagens: 1546
Registrado em: 20 Fev 2007 17:56

Mensagempor Fandango » 06 Jan 2009 08:56

Obrigado RobL,

Creio que compreendi. Contudo me parece que se também adicionar um transistor, controlado por um outro pino de saída qualquer, daria para implementar um ADC usando o comparador e um timer interno. Desta forma eu poderia não só identificar um limiar, como que também alguns níveis de iluminação, não é isto? 8)

Pelo que entendi até agora, poderia usar um PNP e teria que ligar o coletor desse transistor à porta P1.0 (AIN0) do 89C2051 e ao capacitor (cujo outro lado vai no GND). O emissor seria ligado no LDR e este no +5V e a base teria dois resistores ligados: um para o +5V e o outro para esse pino qualquer do 89C2051. Assim, quando o transistor permitisse, o capacitor seria carregado via LDR. Evidentemente o tempo de carga seria proporcional ao nível de iluminação incidente no LDR (resistência). Com muita luz (resistência do LDR baixa) o capacitor carregaria rapidamente. Analogamente, com pouca luz (resistência do LDR alta) o capacitor carregaria lentamente. Meu raciocínio está correto? :wink:

Bem, imagino que o transistor ficaria normalmente desabilitado, o capacitor descarregado e P3.6 seria inicializado com 0, então, ao habilitá-lo através desse pino de saída qualquer, eu dispararia um timer decrescente e o capacitor começaria a se carregar. Quando a tensão no capacitor atingisse um valor igual ou superior àquele presente em P1.1 (AIN1), P3.6 seria setado (pelo próprio 89C2051) e nesse momento o timer seria interrompido. O valor residual do timer seria proporcional à intensidade de luz incidente no LDR.
Para uma nova leitura teria que aguardar a descarga do capacitor e reestabelecer as condições iniciais (transistor desabilitado, P3.6 = 0, timer = valor máximo).

Bem, imagino que seja um processo de conversão lento, mas para o propósito a que se destina serviria (se funcionasse). Será que por aí dá para implementar? Alguém já tentou algo assim? :?:
... e assim falou Zaratustra !
Fandango
Byte
 
Mensagens: 187
Registrado em: 11 Jun 2007 22:13
Localização: SC - Brasil

Mensagempor RobL » 06 Jan 2009 09:44

Bom, se for para aplicação sem exatidão aplique a tensão entre a junção LDR e R diretamente ao ADC e converta os valores coletados diretamente em intensidade luminosa.
Em outras palavras, somente 2 componentes o R e o LDR limintando em 5Vcc a alimentação, ou se V for maior faça um divisor de tensão para adequação e segurança da porta.
Dessa forma não precisa o timer nem transistores.

Editando:
Me desculpe, você não tem um ADC. É então use o timer da forma que colocou.
RobL
Dword
 
Mensagens: 1546
Registrado em: 20 Fev 2007 17:56

Mensagempor Rhone » 06 Jan 2009 18:10

Fandango, isso que vc quer fazer funciona muito bem e pode ser emprementado em vários arranjos e lógicas. O problema é que a curva não fica linear. Há tempos atrás fiz um conversor 4-20 para PWM utilizando o mesmo fundamento e para a precisão pedida ficou ótimo, só que gerei uma base de tempo interna fixa (pela INT0) para ativar o transistor (NPN). Após zerar C e deixar desabilitado o transistor, temos que o tempo de carga de C, até um valor especificado na outra entrada do comparador por um divisor (trimpot ou dois R), será em função do valor de "R" do LDR que é em função da luminosidade. Ao zerar C inicie um contador interno até ativar a saída do comparador. Você só tem que calcular o valor de C para ter um range adequado máximo para o contador.

Abs
Rhone
Bit
 
Mensagens: 14
Registrado em: 11 Out 2006 21:01
Localização: RJ- Brasil

Mensagempor Fandango » 06 Jan 2009 18:46

Bela dica Rhone! Vou considerar as suas observações e também calcular o capacitor conforme sugeriu. :D
Neste fim de semana vou aproveitar um tempinho livre e faço uma montagem experimental para testar. Depois coloco aqui o circuito e as rotinas.
Valeu!
... e assim falou Zaratustra !
Fandango
Byte
 
Mensagens: 187
Registrado em: 11 Jun 2007 22:13
Localização: SC - Brasil

Mensagempor Silvio51 » 08 Jan 2009 07:49

RobL escreveu:Bom, se for para aplicação sem exatidão aplique a tensão entre a junção LDR e R diretamente ao ADC e converta os valores coletados diretamente em intensidade luminosa.
Em outras palavras, somente 2 componentes o R e o LDR limintando em 5Vcc a alimentação, ou se V for maior faça um divisor de tensão para adequação e segurança da porta.
Dessa forma não precisa o timer nem transistores.

Editando:
Me desculpe, você não tem um ADC. É então use o timer da forma que colocou.

RobL... acho que você não entendeu a pergunta do Fandango: Ele quer usar o comparador de tensão do uC como se fôsse um ADC, pois este uC não possui ADC. Em seguida ele quer exemplos de como fazê-lo, perguntando à alguém que já implementou o circuito.
Silvio51
Byte
 
Mensagens: 383
Registrado em: 02 Nov 2006 14:04
Localização: Brasil


Voltar para 8051

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x