Epoch

De Garoa Hacker Clube
Ir para navegação Ir para pesquisar

O projeto Epoch consiste em utilizar um display de pinball para apresentar um contador de segundos desde a fundação do Garoa (como o que fica na parte inferior esquerda deste wiki).

Para os segundos transcorridos entre 01/jan/1970 0:00:00.000 e a momento de fundação do Garoa, veja Epoch Garoa.

Epoch1.jpg

Nos dígitos mais a esquerda do contador é sempre apresentado "641204" que corresponde a "GAROA". O contador propriamente dito começa no sétimo dígito.

O Display

O display possui na frente dois blocos de 8 dígitos e no outro lado o circuito e um conector:

Epoch2.jpg

O diagrama de blocos do circuito do display é:

Epoch4.jpg

Para cada bloco (A e B) temos quatro sinais (a8, a4, a2 e a1) que codificam em binário o dígito a apresentar. Os 7447 convertem estes sinais binários na ativação dos segmentos correspondentes. A saída do 7447 vai para os 8 dígitos; três sinais (S0, S1 e S2) selecionam um deles. A decodificação destes sinais é feita pelo 74238, o 2803 e os transistores são usados devido à corrente que circulará quando todos os segmentos forem acesos simultaneamente.

A pinagem do conector (no que diz respeito aos pinos que interessam para o projeto):

Epoch5.jpg

A página Painéis_de_displays_de_7_segmentos possui documentação adicional do display, compilada quando recebemos o display e começamos o trabalho de engenharia reversa.

Hardware

A ideia básica foi usar um microcontrolador para acionar o display. Uma conexão RS232 com um micro é usada para programar o valor inicial e um relógio com bateria é usado para manter atualizada a data e hora quando o microcontrolador estiver desligado. O microcontrolador escolhido foi o PIC16F882-I/SP. É um modelo relativamente recente com algumas características interessantes para este projeto:

  • Encapsulamento PDIP com 28 pinos, dos quais até 24 podem ser usados como E/S digital
  • Clock interno de 8MHz, calibrado na fábrica
  • USART para comunicação serial

Para o relógio foi usado o DS1302. Além do tradicional relógio/calendário e Ram (no caso 31 bytes), este chip é capaz de fazer carga lenta (trickle-charge) da bateria de backup, uma bateria recarregável de NiCad de 3,6V 60mA/h, destas que se encontra em algumas placa mães de PC.

Para converter o nível dos sinais de Rx e Tx entre TTL e RS232 foi usado o tradicional MAX232.

O circuito é bastante simples. Além dos três CIs (PIC, DS1302 e MAX232) temos o cristal e a bateria para o DS1302, um pullup para o sinal de reset do PIC e os capacitores para o MAX232. Os sinais para programação in-circuit do PIC vão para um conector, para permitir a carga do software sem precisar retirá-lo do circuito:

EpochCircuito.png

Os primeiros testes foram feitos em uma breadboard. A montagem foi feita em uma placa de circuito impresso padrão, destas que possuem trilhas semelhantes às conexões da breadboard.

EpochPlaca.jpg

Conectores

EpochConectores.png

O conector de Gravação é utilizado para gravar o firmware. Nele deve ser conectado um gravador PIC padrão.

O conector de Ajuste é utilizado para ajustar o relógio. Deve ser conectado via um conversor serial TTL USB ("FTDI"). O ajuste é feito conectando a 9600bps, formato 8N1. Enviando CR ("Enter") para o Epoch ele responderá com ">". A data e a hora atuais devem ser enviados no formato ddmmaahhmmss, seguido de um novo CR.

Relato Detalhado

Um relato mais detalhado pode ser visto nos post abaixo:

Display

Hardware

Software: interface com o DS1302

Software: programa principal, Display e tratamento da Serial

Disponível também no GitHub do Garoa, caso alguém queira propor melhorias: https://github.com/garoa/Display_Epoch