H P S P I N E l e t r ô n i c a D i g i t a l e P r o g r a m a ç ã o d e M i c r o c o n t r o l a d o r e s P I C |
HOME PROJETOS PROGRAMAÇÃO |
Um relógio digital é um dispositivo encontrado no mercado por um preço muito baixo e não compensaria todo o esforço para desenvolver um projeto somente para construir um. Esse projeto nasceu da necessidade de se poder acionar uma carga externa de alta potência como um motor, uma lâmpada, um aquecedor ou outro dispositivo qualquer em determinados intervalos de tempo. O microcontrolador PIC18F4520 foi escolhido para o projeto porque dispensa o uso de um chip externo de RTC (Real Time Clock) especializado, como o DS1302 ou o DS1307, que complicaria o projeto com a necessidade do protocolo de comunicação I2C.
Antes de continuar, faça o download do Projeto MPLAB do Relógio de Tempo Real.
Nosso relógio de tempo real foi implementado com um oscilador externo de 32KHZ nas portas T1OSI e T1OSO do PIC18F4520, conforme descrito em seu data sheet, que será usado pelo TIMER1 na temporização do circuito. Os capacitores do clock sao críticos e, para montagem no protoboard, foi necessário usar valores entre 2,7pF a 10pF para conseguir uma temporização adequada (a placa do circuito foi montado com 10pF). Os registradores TMR1H:TMR1L do TIMER1 serão inicializados com o valor 32768 que, a uma frequência de 32KHZ, fornece um estouro de contagem preciso a cada 1 segundo. A cada estouro, uma interrupção de TIMER1 será disparada e a rotina ISR (Interruption Service Routine) do TIMER1 atualizará as horas, minutos e os segundos.
A exibição das horas será feita por um display de 7 segmentos FTTL655S recuperado de um velho rádio-relógio
cujas características podem ser encontradas no seu data sheet. A multiplexação do display será
temporizada pelo TIMER0 cujo valor de partida é ajustado para o display não piscar. A cada iterrupção de TIMER0, sua rotina ISR será
disparada para atualizar o display.
Os catodos do display serão selecionados através das portas RA3 e RA4 do PIC que estão ligadas às bases de transistores BC337
através de resistores de 4K7. Os coletores dos transistores estão ligados aos pinos 1 e 2 do display e seus emissores diretamente ao ground.
A porta RC3 do PIC esta ligada ao pino 30 do display através de um resistor de 100R para acender os dois pontos
centrais do display.
Abaixo pode ser visto o esquema elétrico do circuito que é alimentado por uma tensão continua de 9V. A entrada de alimentação do circuito contem um retificador que permite qualquer tipo de entrada, seja 9V em corrente continua ou corrente alternada que será convertida em 5V corrente continua para a alimentação do microprocessador, do display e dos outros componentes.
Para aqueles que usam o Eagle para desenvolver seus projetos, arquivo Eagle_PCB.zip contem o projeto completo, com o esquema elétrico e o PCB.
PORT | FUNÇÃO |
---|---|
MCLR | Reset e ICSP |
RA0 | Controle liga/desliga do rele |
RA3 | Catodo 1 |
RA4 | Catodo 2 |
RA5 | BUZZER do alarme |
RB0 a RB7 | Aos anodos do display e ao conector ICSP |
RC2 | Botão de acerto do alarme (ALM) |
RC3 | Dois pontos do display |
RC4 | Botão de avanço das horas (HH) |
RC5 | Botão de avanço dos minutos (MM) |
RC6 | Botão de acerto das horas (TME) |
RC7 | Botão de definição da repetição do alarme (RPT) |
RD7 a D2 | Aos anodos do display |
RE0 | Interruptor do alarme quando este estiver soando (INT) |
RE1 | Botão de definição do intervalo de tempo de rele ligado (RIC) |
RE2 | Botão de definição do intervalo de tempo de rele desligado (RID) |
Para montagem do relógio foi usada uma placa de circuito impresso de dupla face na qual o desenho, impresso numa folha de papel de revista com uma impressora laser, foi transferido com um ferro de passar roupas aquecido. A foto à esquerda mostra a face inferior ou face da solda e a foto à direita mostra a face superior ou face dos componentes.
![]() Face inferior |
![]() Face superior |
Botões usados no PORTC<7,6,5,4,2> e PORTE<2,1,0>: Os botões devem ser conectados, de um lado, diretamente aos PORTs e, de outro lado, ao ground. Os botões PORTC<7,6,5,4,2> e PORTE<2,1,0> devem ser conectados ao VCC(+5v) com resistores de 1K, portanto, ao pressionar os botões, os PORTs serão levados ao nível baixo, significando que produzirão uma lógica negativa. A figura 1 mostra as portas que serão usadas para os botões de funções:
|
![]() Montagem completa |
Um dispositivo externo, como um ventilador, um rádio ou uma lâmpada, pode ser acionado através do
rele conectado ao PORTA<0>.
A ligação do dispositivo a rede elétrica é feita através dos dois bornes de cor verde, representados no esquema elétrico pelo conector JP1. Em JP1, os pinos 1 e 3 devem ser ligados na tomada da rede elétrica. O cabo de alimentação, do dispositivo que se deseja acionar, deve ser ligado aos pinos 5 e 7 de JP1. Veja na foto acima a direita (montagem completa), as entradas e saídas de alta voltagem nos bornes verdes no canto inferior esquerdo da placa.
O dispositivo poderá ser programado para permanecer ligado durante um intervalo de tempo definido com o botão RIL "Intervalo ligado" (PORTE<1>). Quando o rele estiver energizado, para acionar o dispositivo externo, o LED verde indicador de carga acionada, que fica ao lado do rele, permanecerá aceso.
O dispositivo poderá ser programado para permanecer desligado durante um intervalo de tempo definido com o botão RID "Intervalo desligado" (PORTE<2>). Para desativar a programação de acionamento do dispositivo externo, basta zerar o "Intervalo ligado" com o botão RIL (PORTE<1>). Quando o rele estiver desligado, o LED verde indicador de carga acionada, que fica ao lado do rele, permanecerá apagado.
A foto ao lado mostra um pequeno motor sendo acionado pelo controle de dispositivo externo. Esse motor não é uma carga de alta potência mas serve para ilustrar o funcionamento. Teste com uma furadeira de bancada e um motor de esmeril foram realizados com sucesso. O projeto não prevê isolamento do comando do rele do resto do circuito que poderia ser feito com optoisoladores.
Para acertar as horas, segure pressionado o botão TME (PORTC<6>) e, ao mesmo tempo, pressione o botão HH (PORTC<4>). Os valores que estão sendo modificados serão mostrados nos dois dígitos à esquerda do display. Para acertar os minutos, segure pressionado o botão TME (PORTC<6>) e, ao mesmo tempo, pressione o botão MM (PORTC<5>). Os valores que estão sendo modificados serão mostrados nos dois dígitos à direita do display.
Para acertar as horas do intervalo de tempo pelo qual a carga externa deverá permanecer ligada, segure pressionado o botão RIL (PORTE<1>) e, ao mesmo tempo, pressione o botão HH (PORTC<4>). Os valores modificados serão mostrados nos dois dígitos à esquerda do display. Para acertar os minutos do intervalo de tempo pelo qual a carga externa deverá permanecer ligada, segure pressionado o botão RIL (PORTE<1>) e, ao mesmo tempo, pressione o botão MM (PORTC<5>). Os valores modificados serão mostrados nos dois dígitos à direita do display.
Para acertar o intervalo de tempo pelo qual a carga externa deverá permanecer desligada, siga o mesmo procedimento acima mas agora utilize o botão RID (PORTE<2>) em lugar de RIL (PORTE<1>).
O relógio pode ser programado para soar um alarme na hora desejada. Ao chegar a hora programada, o alarme começará a soar e assim permanacerá durante 1 minuto. Para interromper o alarme pressione momentaneamente o botão INT (PORTE<0>). O alarme também pode ser programado para ser repetido periodicamente través do botão RPT (PORTC<7>).
Para acertar as horas do alarme, segure pressionado o botão ALM (PORTC<2>) e, ao mesmo tempo, pressione o botão HH (PORTC<4>). Os valores modificados serão mostrados nos dois dígitos à esquerda do display. Para acertar os minutos do alarme, segure pressionado o botão ALM (PORTC<2>) e, ao mesmo tempo, pressione o botão MM (PORTC<5>). Os valores modificados serão mostrados nos dois dígitos à direita do display.
O alarme pode ser programado para ser repetido periodicamente.
Para programar as horas do intervalo de tempo de repetição do alarme, pressione o botão RPT (PORTC<7>) e,
ao mesmo tempo, pressione o botão HH (PORTC<4>). Os valores modificados serão mostrados nos dois
dígitos à esquerda do display.
Para programar os minutos do intervalo de tempo de repetição do alarme, pressione o botão RPT (PORTC<7>); e,
ao mesmo tempo, pressione o botão MM (PORTC<5>). Os valores modificados serão mostrados nos dois
dígitos à direita do display.
Se o alarme estiver soando e desejar interrompê-lo, pressione o botão INT (PORTE<0>). O alarme deixará
de soar e só vai fazê-lo na próxima hora programada.
Índice dos circuitos |
![]() |
H P S P I N Desde 04 de Março de 2010 Atualização: 26 de Apr de 2025 |
![]() |