Warning: mysqli_connect() [function.mysqli-connect]: (HY000/2003): Can't connect to MySQL server on 'hpspin.com.br' (111) in /home/storage/2/20/63/hpspin1/public_html/hpspin_v2/visitas/visitas.inc on line 11


REGISTRO DE VISITANTES

Erro ao tentar acessar o banco de dados de visitantes.


Warning: mysqli_error() expects parameter 1 to be mysqli, boolean given in /home/storage/2/20/63/hpspin1/public_html/hpspin_v2/visitas/visitas.inc on line 30

Código de erro não disponível.


Warning: mysqli_close() expects parameter 1 to be mysqli, boolean given in /home/storage/2/20/63/hpspin1/public_html/hpspin_v2/visitas/visitas.inc on line 35

Warning: mysqli_close() expects parameter 1 to be mysqli, boolean given in /home/storage/2/20/63/hpspin1/public_html/hpspin_v2/visitas/visitas.inc on line 40
HP.Spin
HOME PROJETOS PROGRAMAÇÃO

RELÓGIO DE TEMPO REAL COM PIC18F4520


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.


CARACTERÍSTICAS DO RELÓGIO

  1. Relógio de 24 horas (0:00 a 23:59)
  2. Alarme sonoro programável
  3. Programação de repetição do alarme
  4. Opção de interromper o alarme
  5. Programação do tempo de carga externa ligada
  6. Programação do tempo de carga externa desligada
  7. Programação do PIC através de ICSP

O RELÓGIO DE TEMPO REAL

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.


DISPLAY DE 7 SEGMENTOS

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.




ESQUEMA ELÉTRICO

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.




DESCRIÇÃO DAS CONEXÕES DO MICROCONTROLADOR


 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)  



ESQUEMA ELÉTRICO


Clique na imagem para ampliá-la




ASPECTOS DA PLACA

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 DE FUNÇÕES

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:



   PINO     FUNÇÃO     DESCRIÇÃO DA FUNÇÃO  
RC2ALM

Acerto do alarme. Manter pressionado enquanto se acerta as horas (HH) e os minutos (MM) do alarme.

RC4HH

Avança as horas.

RC5MM

Avança os minutos.

RC6TME

Acerto de horas. Manter pressionado enquanto se acerta as horas (HH) e os minutos (MM).

RC7RPT

Definição da repetição do alarme. Manter pressionado enquanto definir o intervalo (HH:MM) de repetição do alarme. Se definido HH:MM = 00:00 nao haverá repetição.

RE0INT

Interrupção do alarme.

RE1RIL

Definir intervalo durante o qual o rele permanece ligado.

RE2RID

Definir intervalo durante o qual o rele permanece desligado.


Montagem completa



ACIONAMENTO DE UM DISPOSITIVO EXTERNO

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.







ACERTO DAS HORAS E MINUTOS DO RELÓGIO

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.




INTERVALOS DE TEMPOS PARA CONTROLAR AS CARGAS EXTERNAS

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 ALARME

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>).




PROGRAMAÇÃO DO ALARME

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.




PROGRAMAÇÃO DA REPETIÇÃO PERIÓDICA DO ALARME

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.


INTERRUPÇÃO DO ALARME

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.



DOWNLOADS PARA ESTE PROJETO






Índice dos circuitos


HPSpin

Desde 04 de Março de 2010

Ultima versão: Outubro de 2019