Horario Relogio De Ponteiro - Como Ler Relógio de Ponteiro | PDF
Como Ler Relógio de Ponteiro | PDF

Como montar um display de horário em relógio de ponteiros com Arduino

Um relógio de ponteiros digital é basicamente dois servomotores controlados por um microcontrolador. Parece simples até você tentar fazer funcionar e descobrir que a mecânica é mais complicada do que o software. Vou explicar como fiz o meu rodar direito, porque a primeira versão ficou travando todo dia.

O que você precisa para o projeto

Dois servos micro SG90 custam cerca de R$ 8 cada. Um Arduino Nano ou Uno, um módulo RTC DS3231 para manter a hora certa sem depender da internet, e uma caixa impresa em 3D ou cortada em acrílico para servir de base. O DS3231 é importante porque ele tem temperatura compensada. Relógios que usam o DS1307 perdem minutos por dia em variação de temperatura. Eu descobri isso na marra quando o primeiro protótipo atrasava meia hora por semana. Se quiser fugir do Arduino completo, um ESP32-C3 resolve e ainda permite sincronização via WiFi. Mas aí você introduz outra variável: o tempo de boot do ESP e a necessidade de estar conectado. Para um relógio que precisa simplesmente funcionar, o Nano com DS3231 é o caminho mais enxuto.

Cálculo dos ângulos dos ponteiros

A parte matemática é o que mais gera erro. Cada servo gira de 0 a 180 graus. O ponteiro de hora precisa indicar 12 posições e o de minuto 60 posições. A conta básica é dividir o alcance do servo pelo número de posições. Ponteiro de horas: 180 dividido por 12 = 15 graus por hora. Isso parece certo, mas não considera os minutos. Às 3 horas e 30 minutos, o ponteiro de hora não fica exatamente em 3. Ele avança metade do caminho até as 4. A fórmula correta é angle_hours = (horas % 12) * 15 + minutos * 0.5. O fator 0.5 vem de 15 graus dividido por 30, porque cada hora tem 30 minutos de deslocamento progressivo no servo.

Ponteiro de minutos: 180 dividido por 60 = 3 graus por minuto. Fórmula direta: angle_minutes = segundos * 0.1 + minutos * 3. O segundo conta porque queremos que o ponteiro de minutos avance suavemente, não de tranco em tranco a cada minuto novo. Esse avanço contínuo é o que dá a sensação de um relógio de ponteiros real e não um display digital disfarçado. O problema que eu encontrei na prática: os servos SG90 têm folga mecânica. Quando você move de um ângulo para outro, o ponteiro pode oscilar um pouco antes de travar na posição. Minha solução foi adicionar um delay de 150 milissegundos após cada movimento e pedir ao servo para ir ao alvo em duas etapas. Primeiro ele vai a 80% do caminho, pausa 50ms, e então vai ao ângulo final. Isso elimina a oscilação sem parecer lento para o olho humano.

Montagem e calibração

A montagem mecânica exige precisão. Se o ponteiro de horas estiver 2 graus desalinhado, seu relógio vai indicar meia hora errado em certos horários. Corte as peças com tolerância justa. Use um transferidor digital ou uma planilha para mapear os ângulos reais de cada servo antes de fixá-los nos eixos. Anote o zero de cada um. O servomotor nunca para exatamente no ângulo que você pede. Tem sempre um desvio de 1 a 3 graus que varia conforme a tensão da bateria e a carga mecânica. No meu segundo protótipo, o ponteiro de minutos batia no de horas quando cruzavam no horário das 12h. Resolveu com uma arruela de 2mm entre aengrenagem e a base, elevando levemente o ponteiro superior. Parecia solução amadora, mas funcionou. Não adianta ter o código perfeito se as peças físicas interferem no movimento.

👉 Clique no botão abaixo para saber mais sobre o assunto!

Code structure and common pitfalls

Na hora de programar, o erro mais comum é usar delay() para esperar o RTC atualizar. Se você travar o processador esperando um segundo, o servo fica congelado e o relógio parece travado também. Use temporizadores com millis() ou a biblioteca Servo.h que gerencia os pulsos por interrupção. O código deve ler o RTC a cada 500ms no máximo e só mover os servos se o ângulo calculado for diferente do anterior em pelo menos 0.5 grau. Isso evita que o servo fique vibrando tentando achar uma posição que já está certa. Outro detalhe que muita gente esquece: o DS3231 precisa de pull-up nos pinos SDA e SCL. Resistores de 4.7k entre cada linha e 5V. Sem eles, a comunicação I2C falha intermitentemente e o relógio fica perdendo dados sem motivo aparente. Eu passei três dias caçando um bug que era apenas esses resistores faltando.

Quando este projeto não funciona bem

Relógio de ponteiros com servo motor tem limitações reais. A precisão máxima que você alcança é de cerca de 30 segundos por mês, limitada pela folga mecânica e pela resolução de 0.5 grau do ponteiro de horas. Se você quer precisão de relógio atômico, esse não é o projeto certo. Além disso, servos consomem cerca de 100mA em movimento e 10mA em repouso. Se ligar muitos deles ou usar versão maior, a fonte precisa ser estável. Fonte barata de celular velho causa flutuação de tensão e o servo pula posições aleatoriamente. Para quem quer algo mais avançado, existe a opção de usar steppers tipo NEMA 17 com driver A4988. São mais caros, mais complexos, mas dão precisão muito maior e movimento mais suave. Custam cerca de R$ 60 cada conjunto contra R$ 8 do servo. Depende do que você valoriza no projeto.

Recursos e onde baixar

O código completo com cálculo de ângulos, leitura do DS3231 e controle suavizado dos servos está disponível no GitHub. Procure por "analog-clock-arduino-ds3231". A biblioteca necessária é a RTClib da Adafruit, instalável pelo gerenciador de bibliotecas do Arduino IDE. Não use a biblioteca padrão Wire.h sozinha para o RTC, porque ela não lida com a compensação de temperatura do DS3231 corretamente. As modelagens 3D das engrenagens e suportes estão no modelo de impressão com tolerância de 0.2mm para ajuste sem folga excessiva. Se você não tiver impressora 3D, corte o suporte em MDF 3mm com serrote de arco e lixe as bordas. O resultado visual é o mesmo e o custo cai para quase zero.

O projeto final fica pronto em cerca de 4 horas de montagem e programação se você já tiver experiência com Arduino. A primeira versão demorou 2 dias inteiros por causa dos ajustes mecânicos. A segunda versão levou 3 horas porque eu já sabia onde estavam as armadilhas. Se estiver começando agora, reserve um fim de semana inteiro e não espere que funcione perfeitamente na primeira tentativa.