Página 1 de 2
Chaveamento

Enviado:
22 Nov 2008 20:57
por Pask
Amigos, tenho uma aplicação em que, quando a plug for retirado da tomada AC, o PIC deverá reconhecer isto imediatamente através da sua entrada analógica do CAD no pino RA2. Parece simples, mas o problema, é que, o sinal que está acoplado ao pino RA2, vem de uma fonte com retificação e filtragem. No momento em que a alimentação é cortada, a tensão neste pino não decresce instantaneamente como deveria ser e o PIC demora mais de 50ms para reconhecer a queda de tensão e tomar a decisão. Eu preciso que este reconhecimento seja mais rápido - entre 3 e, no máximo, 10 ms - !
Se eu retirar o capacitor eletrolítico que filtra a fonte, surge um sinal retificado em onda completa no pino RA2 que confunde o CAD interno do PIC, impedindo o seu correto funcionamento; se eu mantenho o capacitor, a tensão decresce mais lentamente e o reconhecimento não se dá no tempo que eu quero, surgindo um indesejável "delay".
O fragmento do código que lê este pino, é assim:
set_adc_channel(2); //habilita canal 2 no pino RA2
delay_us(68); //aguarda tempo para conversão A/D
var=read_adc(); //após término da conversão, resultado fica em var
if(var < 231 || var > 378) tomar decisao; //valores lidos do CAD
O problema não está no código fonte, pois todas as leituras do CAD se dão sem problemas.
O problema está no circuito.
Como eu resolvo este problema?

Enviado:
22 Nov 2008 21:00
por Sergio38br
boa noite, um resistor em paralelo com o cap. de filtro não resolveria?
[ ]`s
Sergio

Enviado:
22 Nov 2008 21:23
por Pask
Veja o que já tentei:
1 - Colocar um resistor de 1k8 e depois 470 ohms em paralelo com o capacitor. Não resolveu e só aumentou os ruídos na entrada no canal analógico do CAD;
2 - Reduzir o valor do capacitor, originalmente de 100uF para 33uF. Idem para o caso acima;
3 - Criar um circuito para descarregar o capacitor instantaneamente. Não deu certo (ainda);
DETALHE: Eu fiz a descarga manual do capacitor, curto-circuitando o pino do CAD para a massa rapidamente e o PIC acionou do jeito que eu gostaria. Porém, como fazer isto de forma automática?

Enviado:
23 Nov 2008 06:24
por otavio luiz
Ao meu ver voce esta utilizando metodo errado, em vez de retificar, filtrar em medir a tensão com AD faça o seguinte, no caso 60hz da 16ms cada ciclo, bem pega a tensão do secundário do trafo e retifica em onda completa mas sem filtragem ai voce tem 120hz ou 8ms, coloca um shimt triger fazendo a detecção por passagem de 0, usa essa passagem por 0 para dar uma int no pic e ressetar um timmer se por um acaso a rede cair no maximo em 16ms ou 2 passagens por 0 ocorre o estouro do timmer e voce faz o chaveamento, entendeu??

Enviado:
23 Nov 2008 08:53
por Pask
Eu já tenho um sinal retangular de 5Vpp e 60Hz entrando pelo pino RB0 do PIC. Este pino pode ser configurado para trabalhar com interrupção externa acionada por este sinal. Talvez ele seja a solução seguindo a sua idéia.

Enviado:
23 Nov 2008 10:57
por MOR_AL
Olá Pask. Tudo bem?
Existe um CI que deteta a falta da rede. Não me lembro mais qual é.
Você pode fazer um (com tensão de saída analógica entre 5,6V e 0V) da seguinte maneira.
Altere o capacitor para a constante de tempo que você deseja.
Para Vdc próximo a 150V, A tensão (Saída) cai para 0,28V em 24ms após a falta na rede. ... E a potência dissipada no resistor R1 fica em cerca de 150mW.
ET. Não se esqueça que ao ligar o aparelho na rede, a tensão de saída levará alguns milissegundos para alcançar os 5,6V. Escolhi o zener de 5,6V porque esta tensão é suportada pela entrada do PIC, e seu coeficiente de temperatura tende a ser zero.
Bom trabalho.
MOR_AL

Enviado:
23 Nov 2008 12:56
por barboza
Tente colocar um diodo entre dois capacitores, o primeiro menor que irá alimentar o circuito detector, esta tensão passa pelo diodo e alimenta o capacitor maior que alimenta o seu circuito e o PIC.
Assim quando a tensão cair na entrada aciona o detector e o diodo não deixa a tensão do capacitor maior voltar, alimentando o seu MCU para fazer a tarefa.
Uso isso em alguns aparelhos que precisam do recurso de salvar o data/hora do momento da queda da energia.
Quando o circuito é alimentado por um regulador, 7805 por exemplo, pego a tensão de entrada dele, e alimento o detector, na saída dele (5V) uso um capacitor maior (~1000uF), o suficiente para dar tempo para detectar o sinal de queda (com debounce) e salvar os dados que preciso na EEPROM (~10ms).

Enviado:
23 Nov 2008 13:58
por RobL
Use o método similar ao do barboza.
Coloque um diodo antes dos capacitores de filtro, antes de todos eles.
Se for 5 Vcc, tire daí uma derivação, do anodo, através de um reistor para um capacitor em torno de 10nF a 100nF x 50V cerâmico (nano Farad).
O mais importante é colocar um resistor em torno de 10K do lado do anodo para a referência a fim de manter o diodo polarizado quando a fonte for desligada (dependo do circuito trafo, etc mas é bom colocar). Este R evita fluir corrente inversa intensa devido a falta de polarização e se não tiver, o diodo vira um resistor e mantém toda a carga do eletrolítico do filtro em sua entrada e não vai cair rápido. Levei bom tempo apanhando até chegar a este R de polarização.
Se neste ponto for maior que 5Vcc, use um zener após o R em paralelo com o cap cerâmico. A finalidade desse cap cerâmico é formar um filtro para a porta evitando que a tensão fique pulsando entre baixo e alto.

Enviado:
23 Nov 2008 14:25
por proex
Isso tudo é muito complicado.
No secundário do trafo, em qualquer uma das pontas e antes do retificador, ligue um resistor de 220K. Ligue a outra ponta desse resistor na porta RA2.
Pronto!.
RA2 estará "enxergando" uma onda quadrada de 60Hz.
Dai em diante é software.

Enviado:
23 Nov 2008 15:42
por Pask
Amigos, a questão da onda quadrada de 60Hz no pino RB0 já foi resolvida.
Agora, eu preciso escrever um soft que faça o seguinte: enquanto o sinal retangular estiver presente em RB0, um timer é ressetado continuamente a cada X ms e nunca vai estourar a contagem. Quando este sinal retangular faltar (pela ausência da rede elétrica), esse timer estoura a contagem em poucos ms e o PIC toma a decisão que tiver que tomar.
Eu preciso trabalhar com a interrupção externa em RB0 e, talvez, com a interrupção do timer.

Enviado:
23 Nov 2008 21:47
por RobL
Da forma sugerida é a mais simples. Não precisa ocupar um timer e mais nada.
O sinal fica sempre alto na RB0. Setar para interrupção ocorrer na descida do pulso (nível) e pronto faça o que quizer no serviço da INT0.

Enviado:
24 Nov 2008 09:29
por Pask
O sinal em RB0 não fica sempre alto. Ele é pulsado e retangular. Eu já ajustei o bit INTEDG no registrador OPTION para que a interrupção externa aconteça na borda e subida e de descida do sinal respectivamente. Isto quer dizer que acontecerá uma interrupção externa a cada 8,33ms aproximadamente.
Realmente a idéia de não usar mais o timer é boa mesmo. Não há necessidade de se ocupar um timer com esta operação.
Sendo assim, eu preciso do seguinte:
Enquanto a int. ext. ocorrer, o PIC mantém um flag setado ou ressetado; quando a int. ext. deixar de ocorrer, o PIC inverte o estado desse flag instantaneamente. É preciso controlar o tempo de 8,33ms. Já estou pensando em como fazer isto.

Enviado:
24 Nov 2008 11:03
por RobL
Pask, você não entendeu a parte elétrica.
O circuito sugerido, deixa o sinal alto, não pulsante, nada de onda quadrada. Da forma que está o circuito elétrico sugerido, este pulso cai em menos de 8ms (meio ciclo).
Configure INT0 para gerar interrupção na descida do "pulso", na verdade ao variar a tensão para zero.
Repetindo o circuito.
Um diodo é colocado em série com a corrente que vai aos capacitores de filtro. Do anodo deste diodo, onde a tensão ainda é pulsante, tira-se uma derivação através de um R (por exemplo 10K) e este é ligado a um capacitor cerâmico em torno de 10 a 100nF (a determinar para o seu caso).
Esta constante RC será suficiente para que a ondulação seja sempre bem acima do sinal baixo (zero lógico) para sua porta. Quanto mais próximo do zero estiver mais rápido aciona a interrupção.
Não esquecer de ligar também um outro R de 10K do anodo do diodo para referência "terra, negativo".
Desta forma quando a fonte for desligada a tensão no anodo do diodo cai bruscamente a zero e o diodo desliga os eletrolíticos do filtro.
O sinal na porta, sobre o capacitor cerâmico cai rapidamente, devido a resistência de fuga interna do capacitor cerâmico. Esta poderia ser acelerada por um R em paralelo com o Cap cerâmico, mas normalmente não é necessário.

Enviado:
24 Nov 2008 11:18
por Pask
Peço que você, se puder, me envie um desenho desse esquema que você está sugerindo para eu entender melhor.
Agora, vamos analisar o seguinte: primeiramente, eu preciso que o sinal em RB0 seja retangular para manter um sincronismo com o sinal da rede elétrica ficando em fase com ele; em segundo lugar, pela sua idéia, o sinal não cairá para zero em 8ms. Se eu ajustar para que a int. aconteça somente na borda de descida, somente será gerada uma borda de descida a cada 16,7ms, certo? Mas, tudo bem.
Na verdade, ainda não entendi muito bem como a tensão sobre o capacitor cairá tão rapidamente, pois o cap. de filtro que está sendo usado é de 100uF e o circuito não funciona com um capacitor menor, pois esta parte do circuito é usada para outra função que depende de um sinal bem retificado, entende?
Aguardo o desenho e/ou novas sugestões. Obrigado.

Enviado:
24 Nov 2008 13:13
por RobL
- Código: Selecionar todos
D
Retificador------>|------------- V fonte
| diodo |
R Cel
|-----porta |
Cer int0 |
| |
----------------------------------- 0V
Cel = Capacitor eletrolítico
R= resistor
Cer = Capacitor cerâmico
>|- = diodo
O sinal para porta RB0 (INT0) sai do retificador antes do diodo que
vai desligar o capacitor eletrolítico do filtro da fonte.
Esse sinal pulsante é filtrado pelo capacitor cerâmico. O valor desta constante RC deve ser o suficiente para que a ondulação fique acima do nível zero lógico da porta. Não é necessário usar um RC a ponto de reduzir muito a ondulação deixando-a perfeitamente contínua.
Funcionamento:
Ao tirar o" plug da tomada" imediatamente a tensão no anodo do diodo D
cai a zero. Neste momento o Cel de filtro é desligado pelo diodo D e a tensão sobre Cer, que já está próximo ao nível zero da porta, cairá em menos de 8ms. Este tempo será determinado pela sua necessidade.
No esquema acima, a descarga no Cer (capacitor cerâmico na faixa de 10nF a 100nF) cairá devido à sua resistência interna e a da porta (que é muito alta).
Não está mostrado um importante R que deverá ser ligado do anodo do diodo D para referência a fim de manter o diodo D polarizado. Este R poderá também ser de 10K. Isto depende do valor de sua tensão nesse ponto. Sem esse R não funciona.