Que tal montar um relógio microcontrolado que se parece muito com os que estão presentes nas ruas dos grandes centros, com mostrador "grande" e capacidade de mostrar hora e a temperatura ambiente? Esta é a montagem proposta neste artigo!

 

Nota: este artigo foi publicado em 2008.

 

Nosso Relógio

O Relógio Big poderia ser considerado mais um relógio entre tantos outros já apresentados nesta e em outras revistas. Porém, devido a algumas peculiaridades, podemos dizer que se trata de uma montagem diferente. As principais características do Relógio Big são:

• Funcionamento: mostra hora e temperatura ambiente alternadamente (a cada 5 s);

• Mostrador: montado com LEDs (visualização dos dados a uma maior distância);

• Base de tempo: retirada da rede elétrica (60 Hz) com excelente precisão;

• Microcontrolador: ATmega8 Atmel;

• Sistema "Anti Perda de Horário" — usa um Cl DS1302 (Real Time Clock - RTC) para garantir que, no caso da falta de energia elétrica, o relógio não atrase ou mesmo seja necessário o ajuste da hora;

• Tomada da temperatura: uso do Cl DS1620 para medir a temperatura ambiente com excelente precisão.

 

Devido às características este relógio pode ser utilizado em uma série de locais como escritórios, ambientes industriais de pequeno e médio porte, ambientes domésticos em geral, portarias e muitos outros. O leitor também poderá alterar o programa original inserindo novos recursos ao relógio, de acordo com as suas necessidades. Tudo depende da criatividade de cada um.

 

O circuito

A figura 1 apresenta o circuito do nosso relógio. Basicamente temos o microcontrolador (Cl1), um acoplador óptico (Cl5) e dois Cls auxiliares (Cl2 e Cl3). A parte dos mostradores (displays) é na verdade um segundo projeto, "Display de sete segmentos Com comunicação serial", apresentado na edição n°111 da revista Eletrônica Total.


| Clique na imagem para ampliar |

 

 

Observando a figura 1, o leitor notará que o circuito pode ser dividido em blocos. Num primeiro bloco, por exemplo, temos uma fonte que alimenta o circuito com duas tensões básicas 5 VDC e 12 VDC. Esta fonte é formada por um transformador com tomada central no secundário, dois diodos retificadores (D2 e D3) de 1 A (retificação em onda completa), dois reguladores de tensão (Cl's 4 e 6) e pelos capacitores C1, C2, C3, C4, C5 e C6.

Em um segundo bloco temos a tomada da base de tempo (60 Hz). Esta é retirada da fonte e inserida em um acoplador óptico (Cl5) que tem como função isolar o microcontrolador da parte AC da fonte. R3 é um resistor limitador de corrente para o LED interno ao acoplador. D1 ajuda a eliminar a parte negativa da senoide no secundário do transformador, melhorando a proteção do acoplador. R2 é um resistor de pull-up que garante nível lógico "1" no pino de interrupção do microcontrolador (PD2), já que este foi programado para trabalhar com interrupção na borda de descida.

Temos ainda um bloco para o "sistema anti perda de horário", que nada mais é que um RTC (Real Time Clock) formado pelo Cl DS1302 da Maxim/Dallas (Cl2), o cristal (X1), uma bateria (B1) de 3 V utilizada para manter o RTC em pleno funcionamento no caso da falta de alimentação da fonte principal. C8 é um capacitor de desacoplamento.

O bloco para tomada da temperatura é formado basicamente por Cl3, um DS1620 também da Maxim/Dallas. C7 é um capacitor de desacoplamento.

Também está presente no circuito um bloco que pode ser considerado de "interação com o usuário". Este bloco é formado pelas teclas de ajuste para horas e minutos (ajuste, horas e minutos), pelos conectores DISP1 a DISP4 e VCC_DISP (comunicação e alimentação dos displays) e do buzzer BZ1 (interação através de áudio). O transistor Q2 "chaveia" BZ1 (liga/desliga), o resistor R5 limita a corrente de controle para Q2 e o resistor R6 atua como resistor de coletor para Q2.

E por último temos o bloco de controle, formado pelo microcontrolador AVR ATmega8 (Cl1). Suas principais características são:

• 8 kbytes de área para programa (memória FLASH);

• 512 Bytes de memória EEPROM interna para dados;

• 1k Bytes de memória SRAM;

• 23 pinos de I/O;

• 1 USART;

• 2 timers de 8 bits com prescalers;

• 1 timer expandido de 16 bits com prescalers;

• até 8 canais AD internos;

• Watch Dog Timer,

• 1 comparador analógico;

• Tensão de alimentação entre 2,5V — 5,5V (ATMega8L) e 4,5V — 5,5V (ATMega8);

• Interrupções para todos os periféricos e mais 1 externa;

• 3 canais para PWM;

• Programação via ISP ou paralela;

•Clock de até 8 MHz para ATMega8L e até 16 MHz para ATMega8;

• Velocidade máxima de 16 MIPS (milhões de instruções por segundo) a 16 MHz;

• Arquitetura RISC — Harvard;

• Linguagens de programação disponíveis:

• Assembly;

•"O";

• BASIC;

• Pascal.

• Encapsulamentos:

• 28 pinos DIP;

• 32 pinos TQFP ou MLF.

 

Para os leitores interessados em conhecer um pouco mais sobre este microcontrolador recomendamos a leitura do seu datasheet, que pode ser obtido gratuitamente através do endereço eletrônico: www.atmel.com/avr. A leitura deste tipo de documento é altamente recomendada ao leitor que deseja se aprofundar no componente em questão.

Cl1 é o responsável por todo o controle do circuito como o controle dos displays seriais, teclas, buzzer e dos Cl's auxiliares (RTC e temperatura). O Cl DS1302 e o Cl DS1620, utilizam protocolo de comunicação 3-Wire da Maxim-Dallas. O nome 3-Wire reflete diretamente o tipo de comunicação que temos nestes componentes: uma comunicação do tipo serial síncrona, com três fios: Dados (DO), Clock (CLK) e Reset (RES). Neste tipo de comunicação o elemento de controle (mestre) é responsável pela geração do clock de sincronismo e também pelo controle do reset (no caso dos Cl's DS1302 e DS1620, o mesmo é feito levando o pino RES ao nível lógico "0").

Para os leitores que desejam maiores informações sobre estes componentes sugerimos a leitura dos seus datasheets, que podem ser obtidos gratuitamente no endereço www.maxim-ic.com/ ou ainda através de dois artigos publicados pela Editora Saber na revista Eletrônica Total edição 0111 (Termômetro digital com microcontrolador PIC — Como usar o Cl DS1620 Delias) e revista Saber Eletrônica edição n°399 (Uso do RTC DS1302 com um microcontrolador PIC).

Já os displays usam em seu controle o Cl 74HC595 (Shift Register). É necessário que o leitor obtenha o artigo que demonstra a montagem do referido display e leia atentamente o mesmo se quiser compreender o seu funcionamento e obter sucesso na montagem do relógio aqui proposto.

O transistor Q1 junto com seu resistor de base R4 e os LEDs D4 e D5 (e seu resistor limitador de corrente R8) formam aqueles "dois pontos" luminosos muito comuns nos relógios digitais, que separam os dígitos da hora dos minutos (e em alguns casos, segundos também). Os resistores R9 a R12 são resistores de pull-up necessários a comunicação 3-Wire. O conector ISP é utilizado para a gravação do microcontrolador no próprio circuito (característica comum entre os microcontroladores da família AVR.

O conjunto formado pelo conector ISP, o LED D6 e seu resistor limitador de corrente formam o bloco de gravação para o microcontrolador. Este conector segue o padrão estabelecido pela ATMEL para a gravação do microcontrolador no circuito.

 

Obs.: O conector "DEBUG" foi utilizado pelo autor durante o desenvolvimento do relógio para depurar o programa e agora não tem mais nenhuma função específica.

 

Como se trata de um circuito microcontrolado, toda as operações são realizadas de acordo com um programa. Sendo assim, para compreender como o circuito funciona é necessário entender o funcionamento do programa. Então, vamos a isto.

 

Programa

Disponibilizamos, em nosso site, um arquivo (http://www.arnerobotics.com.br/ - relogio_big.zip) com o programa desenvolvido na Linguagem C. Utilizamos para a montagem e compilação do programa o compilador AVR-GCC 4.2.1 que pode ser obtido em http://packages.debian.org/uns-table/devel/gcc-avr. (*) A instalação de pacotes Linux não é nenhum segredo para a maioria dos usuários do sistema do pinguim. Em muitas distribuições, baseadas no Debian, o referido pacote pode ser facilmente instalado com o comando sudo apt-get install gcc-avr.

 

(*) Site na disponível na época da publicação do artigo

 

Para os leitores que utilizam o sistema operacional Windows, uma excelente alternativa é o WinAVR, que pode ser obtido no endereço eletrônico http://winavr.sourceforge.net/. O compilador WinAVR já foi alvo de um artigo, publicado na revista Eletrônica Total n°118 (WinAVR, compilador C gratuito para microcontroladores AVR). A leitura deste artigo pode facilitar o uso do referido compilador.

Ambos os compiladores são gratuitos e podem ser considerados boas alternativas para aqueles que desejam "entrar" no mundo da programação dos microcontroladores AVR Atmel com a Linguagem C, independente do sistema operacional instalado em sua máquina (Linux ou Windows).

O programa foi ricamente comentado para ajudar nosso leitor na sua compreensão. Porém a seguir trataremos um pouco sobre o seu funcionamento, descrevendo as operações mais importantes do programa. Na figura 2 temos o fluxograma que descreve a operação do programa desenvolvido para a montagem proposta neste artigo.

O programa começa na função main(). Nela é configurado o microcontrolador, onde é definido o modo de uso dos pinos (se entrada ou saída) através da função init_avr(), as variáveis de uso global através de init_vars() para somente, então, ser configurado o Cl DS1302 através da função init_rtc. Ainda dentro da função principal é verificado se o usuário pressionou a tecla para entrar no modo ajuste, a atualização do RTC a cada 1 minuto e também a leitura do Cl responsável pela tomada da temperatura (DS1620).

A contagem do "tempo" é feita pela coleta dos pulsos vindos da rede (60 Hz) através da função ISR(SIG_ INTERRUPTO). Quando a quantidade de pulsos for igual a 60, tem-se um segundo e assim o tempo (hora, minutos e segundos) vai sendo contado através da somatória de variáveis. Também dentro do laço principal do programa, os displays mostram a hora e a temperatura através da chamada da função atualiza_disp(), alternadamente, a cada 5 segundos, ou seja, são cinco segundos mostrando a hora e outros cinco segundos mostrando a temperatura ambiente. O controle do buzzer também está dentro do laço principal e é realizado pela função toca_buzzer().

 

 


| Clique na imagem para ampliar |

 

 

Algumas funções poderiam ter sido inseridas dentro de outras interrupções como, por exemplo, a atualização do display feita a cada cinco segundos. Esta função poderia ser feita via interrupção de um dos timers, por exemplo. Porém, o que temos em mãos é justamente um relógio. E se o que ele faz é justamente contar o tempo, nada melhor que usar a própria estrutura do mesmo para realizar algumas temporizações, principalmente quando estas requerem uma certa precisão. Salvo algumas exceções, é justamente isso o que acontece no programa. Usando apenas uma única interrupção foi possível controlar, com boa precisão, as temporizações mais importantes do programa.

 

Nota: Para o leitor sem conhecimento na linguagem C, aconselhamos a leitura da série "Linguagem C”, do autor Márcio José Soares, publicada entre as edições 98 e 103 da revista Eletrônica Total e também disponível na Revista Saber Eletrônica Especial CD n°11 (série completa no CD - arquivos no formato PDF). Nesta série o autor aborda os fundamentos da Linguagem C, passando informações e dicas importantes para o uso da linguagem tanto em PCs como em microcontroladores.

 

O programa é bem simples e como dito anteriormente, foi amplamente comentado. Nas linhas anteriores foram comentadas apenas as principais operações. Caberá ao leitor interessado estudar mais o programa, aprofundando-se no seu funcionamento, principalmente se este pretende alterá-lo.

 

Montagem

Na figura 3 o leitor tem nossa sugestão para o layout placa de circuito impresso. Este foi o desenho utilizado no desenvolvimento do nosso protótipo. O leitor poderá também usar um desenho próprio ou ainda uma placa padrão. Para aqueles que desejam apenas testar o circuito e/ou verificar apenas o funcionamento de alguma parte do circuito, nossa sugestão é o uso de uma matriz de contatos.

 


| Clique na imagem para ampliar |

 

 

Comece por montar os jumpers. Eles podem ser feitos com fio fino encapados, por exemplo. Em seguida, monte os resistores e capacitores cerâmicos. Tenha cuidado ao montar os componentes polarizados como transistores, diodos e capacitores eletrolíticos. O uso de suportes para todos os Cls é altamente recomendável.

Os displays poderão ser ligados ao circuito (conectores DISP1 a DISP4 e VCC_DISP) através de fios soldados diretamente à placa ou ainda com o uso de conectores sobre a mesma, como em nosso protótipo (figura 4).

 


 

 

 

As chaves (ajuste, horas e minutos) são montadas de forma "aérea" (na caixa). A ligação das mesmas na placa principal segue os mesmos moldes usados para os displays. O buzzer pode ser montado tanto na placa como de maneira também "aérea".

Os Cls reguladores de tensão devem ser montados em radiadores de calor. Em nosso protótipo utilizamos apenas um, conforme pode ser visto na figura 5. A bateria empregada em nosso protótipo é a mesma utilizada em placas-mãe de PC, tipo CR2032 de 3 V. O suporte é necessário, pois a bateria não é do tipo recarregável. Sua duração é boa e pode chegar a 1 ano ou mais.

 


 

 

 

Os LEDs D4 e D5 podem ser montados usando uma placa auxiliar ou ainda montados separadamente, com fios, partindo diretamente da placa. Em nosso caso, preferimos utilizar o primeiro método. Montando os LEDs uma placa padrão, mas o leitor também poderá fazer uma placa de suporte para os LEDs. A figura 6 mostra uma sugestão para esta.

 


 

 

 

É importante perceber que se a escolha for a montagem com uma placa auxiliar, neste caso, um dos LEDs na placa principal deverá ser montado com um jumper, conforme detalha a figura 7.

 


| Clique na imagem para ampliar |

 

Seja qual for a escolha, o leitor deverá lembrar-se que estes dois LEDs serão dispostos entre os displays que mostram as horas e minutos. Esta disposição pode ser vista na imagem de abertura deste artigo.

O transformador (TRAFO) é montado externamente a placa, dentro do gabinete. O desenho da placa traz o símbolo "12VAC" para a conexão das fases e GND para a conexão do terra no secundário do transformador. Em nosso protótipo utilizamos terminais tipo KRE, mas o leitor também poderá soldar os fios do transformador diretamente a placa, se preferir.

Alguns transformadores possuem formas diferentes para a ligação de seu primário. A figura 8 exibe os dois tipos possíveis. Para transformadores com primário simples use a figura 8A e para transformadores com primário duplo utilize a figura 8B.

 


 

 

 

E por último, a caixa. O leitor poderá escolher uma pronta no mercado ou optar por construir a sua. O autor preferiu construir a caixa do nosso protótipo com madeira. O acrílico vermelho utilizado na parte frontal do relógio foi obtido de uma prancheta de anotações para papel A4, comprada em uma papelaria local. A figura 9 mostra as medidas mais importantes da caixa preparada pelo autor.

 


| Clique na imagem para ampliar |

 

 

As posições para as furações das placas e para os outros componentes não estão presentes no desenho oferecido e deverão ser mensuradas por cada um de acordo com a disposição desejada para cada um deles. Preferimos fazer desta forma, pois acreditamos que cada um buscará sua própria solução para a caixa, pois a mesma deverá ser montada ou adquirida de acordo com as metas e possibilidades de cada um. O desenho é apenas uma sugestão e não deve, de maneira alguma, ser utilizado como formato único e absoluto. O desenho é apenas uma dica, que poderá ajudar o leitor em sua personalização.

 

Teste e uso

Após a montagem, seja qual for o método escolhido, aconselhamos uma verificação minuciosa na mesma. Reveja todas as ligações, soldas, posições dos componentes, etc. Gaste alguns minutos nesta verificação. Não tenha pressa em ligar o circuito. Alguns minutos gastos em uma boa checagem poderão representar a diferença entre o sucesso e o fracasso nesta montagem.

Antes de prosseguirmos, é necessário que o leitor compreenda que não é preciso compilar o código-fonte fornecido para gravar o microcontrolador. Um arquivo HEX testado está presente no pacote e o mesmo é o atualmente utilizado em nosso protótipo. A compilação do código-fonte só deve ser feita pelo leitor com experiência na linguagem de programação utilizada ("C") e também no uso de um dos compiladores comentados anteriormente.

Lembramos que o autor desenvolveu o referido programa em ambiente Linux, com o compilador AVR-GCC 4.2.1. Apesar dos compiladores citados serem bastante compatíveis, alguns problemas poderão ocorrer durante a compilação do código-fonte em ambiente Windows. O principal deles diz respeito aos subdiretórios utilizados pelos compiladores para os seus arquivos. Estes são sempre diferentes de acordo com o sistema operacional usado. Outros problemas não observados anteriormente pelo autor também poderão ocorrer, e estes podem estar relacionados a diferenças na versão do compilador e/ou do ambiente utilizado (infelizmente alguns compiladores, quando atualizados, nem sempre garantem total compatibilidade com as versões anteriores). Neste caso, o leitor deverá tratar cada um dos erros apresentados não como um erro no programa, mas sim como problemas decorrentes do uso de um compilador e/ou ambiente diferentes do utilizado pelo autor, e assim tratar cada um de acordo com as mensagens emitidas pelo compilador

De qualquer forma, o leitor não precisará compilar o código-fonte para gravar o microcontrolador. O arquivo HEX oferecido pode ser utilizado em qualquer ambiente (Linux ou Windows), já que a execução do mesmo não será feita na máquina do usuário (PC), mas sim no microcontrolador ATmega8.

Após estas recomendações, o leitor já pode gravar o microcontrolador com o arquivo HEX presente no pacote. O microcontrolador AVR poderá ser gravado diretamente na placa. Para isso use um gravador tipo ISP (In System Program) como o publicado na revista Eletrônica Total n° 113, por exemplo. Neste artigo foram passadas informações importantes a respeito dos microcontroladores AVR, sobre a montagem do gravador e também sobre o uso do programa PonyProg, utilizado no controle do gravador ET-AVR1 em ambiente Windows. Os usuários do sistema do pinguim poderão usar o programa AvrDude, por exemplo.

A gravação do microcontrolador AVR difere um pouco da gravação do microcontrolador PIC, principalmente no que diz respeito aos seus bits de configuração (fuses). Para gravar corretamente o microcontrolador AVR ATmega8, para que o mesmo funcione adequadamente no projeto Relógio Big, use a figura 10 (programa PonyProg). Para os usuários do AVRDUDE, no ambiente Linux, os valores para o HighFuse deve ser D9H e para LowFuse E1H.

 

Obs.: Evite alterar qualquer outro bit de configuração, que não os recomendados! Em alguns casos a gravação do microcontrolador poderá não mais ser feita pela alteração acidental de um simples bit! Tenha cuidado nesta operação!

 

Após gravado o microcontrolador, insira o mesmo na placa. Ligue o relógio a rede elétrica (você verificou tudo antes, não foi?). O mostrador deverá marcar "00:00". Acerte o seu relógio utilizando as chaves "Ajuste + Hora" para acertar a hora e "Ajuste + Minutos" para acertar os minutos. O formato aceito é "00:00 à 24:00". Se você mantiver qualquer um destes conjuntos pressionados o leitor terá a atualização de um dígito a cada 0,4 segundos (aproximadamente).

Para a temperatura nenhum ajuste é necessário. A primeira vez que o relógio mostrar a temperatura ela será igual a zero. Isso porque a primeira tomada não é levada ao display. Os LEDs que formam os "dois pontos" só serão ligados durante a mostra da hora. Ao mostrar a temperatura, os LEDs são apagados para facilitar a visualização da temperatura. O funcionamento do relógio foi comprovado através de um vídeo que pode ser visto em nosso site.

Se qualquer outro comportamento for notado, a montagem deverá ser revista. Verifique todas as ligações dos fios entre as placas, posições dos Cls em seus suportes, bateria, transformador, etc.

Lembre-se também que temos duas montagens e não uma única. Os displays devem ser checados de acordo com o artigo que demonstrou a sua montagem. Somente com a absoluta certeza do funcionamento dos mesmos, é que o leitor poderá passar para a placa principal ou vice-versa.

Se seu relógio não funcionar de primeira, mantenha a calma e verifique tudo novamente, quantas vezes forem necessárias e se possível, peça a ajuda de um amigo ou mesmo professor. Geralmente, um terceiro tem mais chance de enxergar um erro em nossas montagens que nós mesmos devido a alguns "vícios" em nossos métodos de verificação. A montagem não pode ser considerada das mais simples e assim, é necessária alguma experiência para a obtenção de êxito na mesma. Mas isto pode ser facilmente obtido pelo leitor iniciante se tiver perseverança, paciência e se este tiver a ajuda de alguém com mais experiência. Lembre-se, estamos sempre dispostos a ajudar nosso leitor caso encontrar algum problema. Contate-nos, se este for o seu caso.

 


| Clique na imagem para ampliar |

 

 

Conclusão

O uso de microcontroladores nos mais variados projetos já é uma realidade. Lidar com microcontroladores é sempre um desafio. Porém, para muitos há ainda a necessidade de estudar um pouco mais sobre programação e para outros sobre eletrônica. Seja qual for o caso, podemos afirmar com a mais absoluta certeza que não é possível obter êxito no mundo dos microcontroladores sem sólidos conhecimentos em programação e eletrônica.

O mercado busca profissionais que dominem o "mundo dos microcontroladores" em sua totalidade. Esperamos que o projeto publicado sirva mais uma vez como base para os estudos de nosso leitor interessado em microcontroladores. Procure estudar com o mesmo grau de intensidade programação e eletrônica, pois somente assim você obterá êxito com os microcontroladores. Bons estudos, boa montagem e até a próxima!

 

 


| Clique na imagem para ampliar |