Orologio con dimmer automatico

L'orologio che di notte non illumina più la stanza.
Arduino Duemilanove

Arduino

Questo ed altri progetti sono stati realizzati impiegando un microcontrollore Atmel ATMega 328, programmato mediante la piattaforma di sviluppo Arduino.


Vi rimando al sito di Arduino per qualsiasi altra informazione, ma se non avete mai sentito parlare di questa piattaforma, in sintesi, si tratta di un microcontrollore Atmel ATMegda 168 o 328, programmabile in linguaggio C via USB, che può gestire fino a 14 porte digitali configurabili come ingresso o uscita e fino a 6 ingressi analogici, rendendo disponibili fino a 32KB di Flash Memory, 2KB di Ram e 1KB di Eeprom.


Non occorre utilizzare la piattaforma completa per ogni circuito realizzato, infatti, una volta programmato il microcontrollore, questi può funzionare in modo autonomo utilizzando solo un quarzo da 16MHz e due condensatori da 22-33pF.


Su diversi siti italiani sono disponibili microcontrollori Atmel ATMega 328 già programmati con il bootloader Arduino 2009 o Arduino Uno, adatti allo scopo, con un costo tra i 5 e gli 8 euro circa. Inoltre, in rete sono disponibili informazioni per la programmazione di ATMega 328 vergini (che hanno un costo inferiore) in modo che possano essere utilizzati con la piattaforma Arduino. I circuiti presentati funzionano perfettamente anche con la nuova piattaforma Arduino Uno. Per qualsiasi informazione non esitate a contattarmi.

Piccoli, ma necessari!

Componenti SMD!

Questo circuito, per rendere più compatto il circuito stampato, oltre ai componenti elettronici tradizionali di tipo THD (Thru Hole Device), montati sul lato componenti e saldati sul lato inferiore del PCB stesso, utilizza anche componenti a montaggio superficiale SMD (Surface Mounted Component), che dovranno essere saldati direttamente sul lato rame.


Sarà comunque possibile sostituire i componenti SMD, quando disponibili in versione THD, ma il circuito stampato dovrà essere probabilmente ridisegnato e, di conseguenza, occuperà una superficie maggiore. Per la saldatura di questi componenti non è assolutamente obbligatorio impiegare forni a rifusione o altra strumentazione particolare, ma basterà un saldatore con punta sottile (max 0,8mm), una pinzetta ed un po' di pazienza.


Su internet troverete decine di siti che illustrano diverse tecniche per la saldatura SMD. Nel caso aveste difficoltà a reperire i componenti SMD, con la loro saldatura o per informazioni sulla loro sostituzione con equivalenti THD, contattatemi.


Vista del circuito completo

Dettaglio del PCB

Dettaglio della realizzazione

Aggiornamenti e download

18.06.2012 : Versione 1.0 : Pubblicazione del progetto dopo la realizzazione ed il collaudo.

Schema Elettrico
Circuito stampato - Vista complessiva
Circuito stampato - Lato Componenti
Circuito stampato - Lato Rame
Sorgente per Arduino (.PDE)

Illiminato al punto giusto

Di notte gli orologi a LED illuminano la stanza, quelli con display LCD, invece, non sono visibili. Un giusto compromesso si può ottenere realizzando un circuito che regola la luminosità di un display a LED in proporzione a quella ambientale. Quindi, con questo circuito è possibile ottenere un orologio digitale i cui display si illuminano in proporzione alla luminosità ambientale.

Funzionamento del circuito

Dopo averlo collegato ad una sorgente di alimentazione in continua (basta un piccolo alimentatore per cellulari riciclato: 9V / 300mA sono più che sufficienti), occorre impostare l'orario corretto. Premendo contemporaneamente i pulsanti ORE e MINUTI il circuito entra immediatamente in modalità programmazione e le cifre sul display iniziano a lampeggiare.

Premendo i tasti ORE o MINUTI si incrementano le rispettive cifre. Tenendoli premuti entrambi le cifre delle ore e dei minuti si incrementano contemporaneamente. Se per circa 5 secondi non vengano premuti i tasti ORE o MINUTI il circuito ritorna automaticamente in modo orologio e le cifre smettono di lampeggiare.

Durante il normale funzionamento il punto decimale del display delle ore lampeggerà ad ogni secondo, mentre i LED D1 e D2 indicheranno quanti secondi sono trascorsi, approssimativamente, dall'ultimo minuto:


La routine di attivazione dei display e dei LED D1 e D2 ne calibrerà la durata di attivazione in funzione della luminosità percepita dalla fotoresistenza presente nel circuito.

Schema elettrico

Il circuito, è alimentato direttamente da una tensione continua proveniente da una sorgente stabilizzata e, come già indicato sopra, può essere utilizzato un vecchio caricabatteria per cellulari. Utilizzando un alimentatore stabilizzato con tensione d'uscita a 5Vcc sarà possibile eliminare anche la sezione di alimentazione del circuito elettronico. Al contrario, volendo utilizzare U1 per la regolazione della tensione, è necessario fornire al circuito una tensione di almeno 7Vcc.

Arduino risulta collegato nella classica configurazione per il funzionamento stand-alone, mentre i pulsanti per l'impostazione dell'orario risultano collegati agli ingressi analogici, visto che tutte le uscite digitali risultano utilizzate per l'attivazione dei display e dei diodi LED D1 e D2.

La fotoresistenza LDR1 risulta anch'essa collegata ad un ingresso analogico e nella sua configurazione con la resistenza R3 crea un partitore di tensione dinamico, secondo il valore assunto da LDR1 (maggiore sarà la luminosità incidente su di essa e minore sarà la resistenza rilevata ai capi della stessa).

La cosa più interessante del circuito è la totale assenza delle resistenze di limitazione della corrente sui display e sui diodi led D1 e D2 nonché l'assenza dei classici transistor collegati ai catodi K dei display.

Questo tipo di configurazione implica, necessariamente, una tecnica di abilitazione ad alta velocità dei vari elementi, in modo che sugli stessi non cada una corrente eccessiva (anche se le uscite di Arduino non possono fornire più di 35mA).

Utilizzando il valore della tensione misurata tra LDR1 e R3 è possibile, via software, creare una routine che abiliti e disabiliti velocemente i vari display in modo da creare l'illusione al nostro occhio (persistenza retinica) che le cifre che vediamo siano sempre costantemente accese ad una determinata luminosità, quando invece le stesse vengono attivate e disattivate molto velocemente.

La sezione del programma che controlla l'attivazione dei display e dei LED viene richiamata con una velocità di 8MHz, ovvero una volta ogni 125 nanosecondi. All'interno di questa finestra temporale le uscite digitali DIG0-DIG13 vengono attivate in sequenza in modo da attivare, in quattro finestre temporali successive, prima le cifre sul display DISP1, quindi quelle sul display DISP2 e via dicendo, secondo un tempo direttamente proporzionale alla luminosità rilevata da LDR1.

Ad esempio, per l'accensione della cifra "1" sul display DISP1, verranno attivate "HIGH" (+5V) le uscite DIG1 e DIG2, mentre verrà attivata a livello "LOW" (0V) l'uscita DIG8. Esaminando attentamente il listato del programma di funzionamento del circuito elettronico (che è commentato) sarà possibile comprendere la modalità di attivazione dei vari display. Disponendo di un oscilloscopio o di un analizzatore di stati logici, sarà possibile vedere chiaramente i segnali presenti sulle varie uscite di Arduino.

Il progetto è distribuito in modo gratuito.


Statistiche