Páginas

quarta-feira, 14 de março de 2012

A bancada

A bancada do Dnail está uma bagunça, em breve mais conteúdo e mais organização 


Enfim, uma atualização

Praticamente dois anos sem postar nada. Neste meio tempo até criei outro blog, (www.meltingtronics.tumblr.com) a proposta era a mesma: coisas do meu dia-a-dia que merecessem menção, circuitos eletrônicos, engenharia elétrica, pensamentos, tirinhas do Dilbert(r), etc.. Analisando, nem sei ao certo porque resolvi criar outro do zero, invés de retomar este projeto antigo. Ontem quase criei um outro blog (domínio registrado e o escambau) porém, resolvi desativar os outros blogs antes. Para minha surpresa, este blog até tinha um tráfego considerável (em torno de 6 visitas por dia) e sei que não fui eu quem gerou estes acessos, pois eu não entro nem pra ler faz dois anos... Tanto que só vi agora que tinham dois comentários em uma postagem que fiz do circuito de controle de potência com o PIC, solicitando mais informações. Minhas desculpas a estas pessoas, acredito que agora, depois de dois anos, vocês não devem mais estar precisando dos arquivos.
Resumindo, fiquei com pena de acabar com o blog, já que ele está ao menos sendo útil para alguém.
O outro blog, bem, ele também tem algumas postagens legais e também estou com pena de deleta-lo, e agora estou com este dilema. Não consigo postar regularmente nem no mural do facebook, quanto mais manter dois blogs sobre praticamente a mesma coisa...

quarta-feira, 14 de abril de 2010

Back to Live...

Depois de um hiato de quase 1 ano sem postar, vai aqui algo produtivo:

O DIMER ELETRONICO MICRO-PROCESSADO

Com ele é possível controlar quanta potência elétrica desejamos entregar a determinada carga.

A idéia foi tirada de um experimento de laboratório da diciplina de Arquitetura de Processadores Digitais que cursei em 2009, e utilizava o microcontrolador 8051. Este experimento tem por base um exemplo do livro "Microcontroladores -Programação e projetos com a família 8051" - Mendonça/Zelenovsky
De lá pra cá, eu fiz diversas alterações no projeto original, a principal delas foi a mudança do 8051 para o PIC que é bem melhor de se trabalhar.

Síntese:
O projeto consiste em duas placas de circuito uma de controle e outra de potência para o acionamento da carga. Na placa de controle existem 3 'blocos' principais: O circuito de detecção de passagem por zero (cross-zero), O microcontrolador e o bloco da interface. O circuito de detecção por zero é extemamente simples e exatamente como descrito no livro, seu coração é um acoplamento optico 4N25, sem muitos detalhes o que ele faz é enviar um pulso para um pino do microcontrolador toda vez que a tensão senoidal da rede doméstica passa por zero. (no final das contas o sinal é um trem de pulsos com frequencia de 120Hz sincronizado com a rede) O microcontrolador detecta essa passagem por zero dispara um contador. No final da contagem ele dá um pulso num outro pino que dispara o circuito de potencia, o valor guardado no contador determina a potencia entregue a carga (maior valor, menor potencia). A interface consiste em um botão de ajuste da potencia e 8 leds que indicam essa potencia.

A placa de potencia também é muito simples e exatamente como mostrada no livro. Consiste em um num foto-triac MOC3020 que recebe o pulso vindo do PIC e transmite para o gate de um TRIAC de potencia (BTA-16 600B). A razão do foto-triac é desacoplar eletricamente o circuito de comando do circuito de potencia e seus ruidos, principalmente aqueles oriundo do BTA-16. Repare que R4 no circuito representa a CARGA, ou seja, o que você deseja controlar (ex.: lâmpada, resistencia, etc...)


O programa foi escrito em C e bastou algumas linhas apenas. O conceito básico como falei é utilizar as interrupções. A interrupção por mudança de estado no pino RB0 esta ligada ao cross-zero, ela ativa/carrega o contador timer1 = (65535-SETPOINT) e também ativa a interrupção deste contador. Quando o timer estoura, (atinge 65536) a rotina de interrupção é chamada que apena cria um pulso positivo no pino RB1 (RB1=0; RB1=1; delay x micro-segundos; RB1=0), é esse pulso que dispara o triac no estagio de potencia, em seguida pára o timer1. Durante todo o tempo o programa fica apenas aguardando uma interrupção ou a outra, além de monitorar quando o botão é pressionado. Cada vez que o botão é pressionado um valor diferente é carregado na variável SETPOINT que só assume 8 valores distintos, cada valor corresponde a uma intensidade de potencia ou nível (0 a 100%), o nível atual é indicado pelos LEDs, além disso o valor do ultimo nível utilizado é sempre salvo na EEPROM, assim ao se religar o aparelho ele voltará ao ultimo estado.


As imagens a seguir são simulações feitas no proteus.


O traço amarelo (canal A), está ligado a rede 220V ele mostra a tensão senoidal disponível e esta ai apenas para fins de comparaçã, passando esse sinal pelo transformador (para abaixar a tensão pra uns 6V ) e depois pelos diodos, obtem-se o sinal correspondente ao traço azul (canal B) e ele que é aplicado na entrada do acoplamento optico (4n25), o traço vermelho (canal C) é o pulso transmitido do 4n25 ao PIC, note que ele acontece toda vez que a senoide da rede (traço amarelo) cruza a linha do zero. Por fim o traço verde (canal D) é o pulso gerado pelo PIC e que vai para a placa de potencia. Neste caso ele acontece quase no final de cada semi-ciclo, e equivale ao nível de potencia mais baixo, quando se aumenta a potencia, esse pulso se desloca para a esquerda do gráfico. Abaixo o pulso para uma potencia ajustada em aproximadamente 50%.




Abaixo uma imagem que eu acho muito legal, é um modelo 3D da placa gerada pelo software ARES, onde é feito o layout de circuito impresso. Repare que o transformador não vai na placa, as conexão a ele e a placa de potencia são feitas pelos conectores tipo KRE.



Agora umas fotos do protótipo em funcionamento: Testei tanto para carga resistiva (lâmpada) quando indutiva (motor). Para a lâmpada o pulso de disparo pode ocorrer basicamente a qualquer momento do semi-ciclo (isso determina a intensidade com que a mesma acende). Porém para o motor isso não é possível, nos meus testes eu verifiquei que o pulso de disparo não pode acontecer antes do ponto de máximo/minimo da senoide, caso contrário o motor fica travado ou batendo (tentando girar para um lado e para ao outro), isso acontece porque para conseguirmos controlar um motor de indução devemos variar tanto a frequencia quanto a tensão fornecida o que não acontece neste circuito.








Ficha técnica:

Processador: PIC(R) 16f628A - microchip(TM)
Esquemático, simulação, layout PCI: Proteus 7.6-sp4 (ISIS + ARES)

IDE programação, gravação: MPLAB 8 (http://www.microchip.com/)

compilador C: CCS

Programador: ICD-2 - MultiPROG

A versão anterior deste projeto era um pouco mais elaborada, nela eu utilizava um PIC16F877A e um display de LCD que informava: "POTENCIA: XXX%". além disso havia 2 botões, um de incremento e outro de decremento da potencia. Nele era possível ajustar qualquer valor de 0 a 100% e não apenas 8 posições distintas como é o caso. O código fonte foi todo escrito em assembly e deu várias e várias linhas de código... além de alguns bugs não resolvidos.