Realizziamo un orologio a Led a risparmio energetico

Il motto del progetto che andiamo a presentare è "leggere l'orario solo quando serve". Gli orologi con i display a cristalli liquidi senza retroilluminazione sono difficili da leggere al crepuscolo e di notte, anche quando la luce di una stanza è accesa. Con la retroilluminazione, un display LCD consuma quasi la stessa corrente di un display a LED. Si può progettare un pratico orologio da muro, alimentato a batterie, che utilizza un display a LED. L'orario è mostrato solo quando qualcuno si trova in prossimità del dispositivo. Per questo scopo viene utilizzato un sensore PIR.

Introduzione

Gli orologi da parete e altri dispositivi per la misura del tempo, dotati di LED, offrono la migliore leggibilità in tutte le condizioni di illuminazione, ma necessitano di una presa di corrente altrimenti è necessario cambiare continuamente le batterie. Spesso occorre montare un orologio proprio dove non c'è una presa di corrente disponibile. Un orologio con i display LCD ridurrebbe drasticamente il fabbisogno energetico ma a scapito della leggibilità, soprattutto di notte. È possibile aggiungere una retroilluminazione, ma i requisiti energetici aumenterebbero. Un orologio realizzato con display LED a 7 segmenti offre un'eccellente leggibilità e un elevato contrasto, ma non è adatto per funzionare a batterie. Qual'è, dunque, il miglior sistema per realizzare tale dispositivo?

Display a LED a risparmio energetico

Esistono diversi modi per ridurre il consumo energetico dei display a LED. Ad esempio, è possibile impostare una bassa corrente dei LED in modo che si illuminino leggermente. Questo va bene in condizioni di scarsa illuminazione, ma in piena luce solare il display risulta illeggibile. Un altro metodo sarebbe quello di utilizzare un pulsante manuale per accendere, per un breve tempo, il display ma l'operazione potrebbe risultare un po' fastidiosa. Per il progetto si è deciso di utilizzare un rilevatore di movimento grazie all'uso di un sensore PIR. Quando si oltrepassa l'orologio (o si fa un cenno con la mano), l'orario viene visualizzato sul display solo per pochi secondi, abbastanza per consentire una comoda e ottimale lettura ma sufficiente per mantenere al minimo il consumo energetico.

Alcune considerazioni per la progettazione

Per mantenere basso il consumo energetico, è necessario visualizzare solo le ore e i minuti. Ciò riduce a quattro il numero di display a 7 segmenti. Per restare indipendenti dalla rete elettrica si utilizzeranno delle batterie ricaricabili. L'orologio non deve perdere l'ora corrente durante la sostituzione della batteria. L'orario sarà visualizzato solo quando qualcuno si trova nelle vicinanze dell'orologio. Esso dovrebbe essere alimentato da una batteria agli ioni di litio in modo che possa essere semplicemente ricaricata e non sostituita del tutto. Sarà necessario un chip per la gestione della batteria. Inoltre un modulo Real Time Clock (RTC) con una pila di backup a bottone farà in modo che le informazioni sull'orario vengano mantenute quando la batteria è scarica. Viene utilizzato un modulo sensore PIR per rilevare la presenza di una persona in prossimità dell'orologio.

La parte hardware

Grazie all'utilizzo dei circuiti integrati, la realizzazione del circuito è abbastanza semplice. Esso utilizza un Maxim RTC, un microcontrollore, un chip per display driver, quattro display LED a 7 segmenti e un sensore PIR. C'è anche una cella agli ioni di litio insieme a un integrato che gestisce la carica e impedisce la sua scarica totale. L'hardware dell'orologio è suddiviso in due parti: la prima parte è rappresentata dal display a LED e relativo driver mentre la seconda parte è formata dal circuito logico vero e proprio.

Il modulo display

Il circuito del display è mostrato in Figura 1 ed è abbastanza semplice. I quattro display SC08-11 a 7 segmenti sono collegati a matrice e controllati da un chip per driver video AMS AS1108. In linea di principio qualsiasi tipo di display a LED a 7 segmenti a catodo comune è adatto allo scopo. I condensatori C2 e C3 collegati tra i rami di alimentazione aiutano a prevenire eventuali abbassamenti di tensione quando i LED del display vengono illuminati. Il resistore R2 e il trimmer R3 controllano la luminosità del display. Con R3 al minimo il display sarà più luminoso. Lo si imposti opportunamente per trovare il migliore punto di lavoro.

Figura 1: il circuito del modulo a display utilizza solo un driver di visualizzazione e quattro display a 7 segmenti

Figura 1: il circuito del modulo a display utilizza solo un driver di visualizzazione e quattro display a 7 segmenti

Il modulo principale

Tutte le restanti funzioni sono gestite dal modulo principale. Utilizzando quattro circuiti integrati, il ​​circuito (Figura 2) è abbastanza semplice. Le funzioni dell'orologio sono gestite dal chip RTC DS1306 (IC4). Esso mantiene l'orario e si occupa del corretto avanzamento. In realtà gestisce anche la data ma tale opportunità non è utilizzata nel progetto. Il chip è cadenzato da un timer standard da 32.768 kHz. La batteria è una normale cella al litio CR2032 che si collega al Pin 2 di IC4.

Figura 2: utilizzando quattro circuiti integrati, lo schema elettrico è abbastanza semplice

Figura 2: utilizzando quattro circuiti integrati, lo schema elettrico è abbastanza semplice

In normale funzionamento, il chip riceve energia dal pin 16, collegato alla tensione di alimentazione. Quando la tensione di alimentazione di B2 scende al di sotto della tensione della batteria B1, il chip cambia di modalità e viene alimentato dalla batteria a bottone (B1), interrompendo qualsiasi comunicazione SPI. Il resto del circuito è alimentato da B2 e il microcontrollore (IC3) "capisce" che la batteria ha bisogno di essere ricaricata, indicandolo anche sul display. Si utilizza il microcontrollore Microchip PIC16F1826 che dispone di 2 kW di spazio per il programma. L'unità kW non si riferisce ai kilowatt, ma ai kilowords (lo spazio di archiviazione indirizzabile è 14 bit). Inoltre ci sono 256 Byte SRAM e 256 Byte EEPROM (non utilizzati). IC3 ha un'interfaccia MSSP (Master Synchronous Serial Port) configurata come controller master SPI. IC3 non richiede solo le informazioni sull'ora da IC4 tramite SPI, ma controlla anche il driver di visualizzazione IC5 utilizzando il bus SPI. IC3 dispone di tante porte libere per implementare, eventualmente, altre estensioni hardware. L'IC2 MCP112T-300 di Microchip è un rilevatore di tensione. La sua uscita assume uno stato "basso" quando la tensione all'ingresso scende al di sotto di 3 V. IC3 viene quindi informato che la batteria è scarica e il display avvertirà che è necessario ricaricarla per evitare di scaricarla oltre i livelli consentiti. Il livello di tensione di una nuova batteria a bottone B1 può essere anche di 3,2 V. L'uso di IC2 non è strettamente necessario e può essere omesso dal circuito, nel qual caso è possibile utilizzare un collegamento tra i pin 1 e 2. Il sensore PIR utilizzato è il modulo PIR 555-28027. E' importante notare che esso può essere alimentato con un'alimentazione compresa tra 3 e 5 V e fornisce un'uscita attiva quando viene rilevato un movimento. Infine, IC1 è il circuito integrato di carica per una singola cella agli ioni di litio. Gestisce il ciclo di ricarica, fornendo una corrente massima di 500 mA alla batteria fino a una tensione di carica finale di 4,2 V. La caduta di tensione su IC1 è tipicamente di 380 mV a 500 mA, quindi il circuito può essere facilmente alimentato con i 5V standard, tramite J1. D1 fornisce una protezione contro l'inversione di polarità. Il LED1 indica che l'adattatore di rete è collegato. C1 aiuta a ridurre la resistenza dinamica interna di B2.

Il firmware

Il firmware è completamente scritto in assembler e quindi molto compatto. Analogamente all'hardware, il software è diviso in due parti: Il file "91_SPI_comm_16F1826.inc" contiene tutte le subroutine utilizzate per la comunicazione SPI, il "file 01_PIR_clock_v1p09.asm" contiene le funzioni dell'orologio assieme a tutte le altre. I file sorgente possono essere scaricati dalla pagina web [1] dell'articolo; possono essere modificati con qualsiasi programma di editor e sono stati generati usando l'assemblatore MPASM versione 5.65. Il file esadecimale assemblato è disponibile anche sul sito.

Comunicazione SPI

Le routine SPI sono utilizzabili anche in altri progetti. Le informazioni sulle tre subroutine contenute nel file di inclusione "91_SPI_comm_16F1826.inc" si trovano in Tabella 1. Sono scritte per il modulo MSSP1 del PIC16F1826. Con alcune modifiche, possono anche essere adattati a tutti i microcontrollori PIC a 8 bit con un modulo MSSP. Le subroutine per i segnali CS (per AS1108 e DS1306) sono davvero molto semplici e adattate al circuito e agli IC utilizzati. Queste sono le subroutine "spi_cs0_en" e "spi_cs1_en" che abilitano i segnali di selezione del chip CS0 o CS1. CS0 abilita il driver video AS1108 e CS1 il chip RTC. Richiamando "spi_cs0_dis" o "spi_cs1_dis" il segnale di selezione del chip CSO o CS1 è disabilitato.

Il programma principale

Esso è molto semplice. Dopo l'inizializzazione, il sistema passa a un ciclo infinito (main_loop), in cui vengono eseguite continuamente le seguenti attività:

  1. controllare l'ingresso del sensore PIR:
    1. nessun movimento rilevato: spegne i LED dell'orologio. e torna all'inizio;
    2. movimento rilevato: esegui il passo 2;
  2. richiesta informazioni sull'ora da IC4 (subroutine rtc_spi_read);
  3. le informazioni dell'orario sono convertite in formato visualizzabile;
  4. i dati sono inviati  al driver IC5 per la relativa visualizzazione;
  5. se l'ora corrente è aggiornata manualmente, passa alle subroutine corrispondenti.


Dopo che l'orario è stato regolato, esso viene memorizzato in IC4, grazie alla routine rtc_spi_write. Oltre al loop principale e all'impostazione dell'ora, vi sono anche le routine per il driver del display, che si possono riconoscere dal prefisso AMS_.

Subroutine Funzione Scopo
spi_init_m0 Inizializzazione MSSP
SPI Master Mode 0
SPI Mode 0 per la comunicazione
col driver display AS1108
spi_init_m1 Inizializzazione MSSP
SPI Master Mode 1
SPI Mode 1 per la comunicazione
col modulo DS1306 RTC
spi_send Invio e ricezione atraverso
interfaccia SPI
Comunicazione SPI: invia e riceve
1 Byte contemporaneamente

Tabella 1: routines SPI

Utilizzo

L'interruttore S1 ei pulsanti S2 e S3 vengono utilizzati per impostare l'ora dell'orologio. Si prema S1: tutti i quattro punti decimali del display si accendono per indicare che l'orologio è in modalità di configurazione. Utilizzare il pulsante S2 per impostare il display dei minuti (pin d'ingresso RB6 di IC3). Dopo che il conteggio arriva a 59 passa nuovamente a 00. Allo stesso modo si impostino le ore, utilizzando il pulsante S3 (pin d'ingresso RB5 di IC3). Quando S1 viene riportato in modalità operativa, il contatore interno dei secondi (non visualizzato) inizierà il conteggio da zero. Lo switch S4 consente la disconnessione dalla batteria al litio B2. L'orologio continuerà a funzionare quando S4 è aperto. Normalmente il display visualizza l'ora nel formato 24 ore ma esso può essere modificato nel formato 12 ore agendo nel codice sorgente, secondo le proprie necessità. Quando la tensione della batteria scende al di sotto del livello di soglia, IC2 invia un segnale al microcontrollore per indicare che la batteria deve essere ricaricata. Il microcontrollore accende, quindi, l'ultimo punto decimale del display per indicare che la batteria B2 deve essere ricaricata. Se essa non viene caricata e il livello di tensione scende ulteriormente, IC4 passa alla modalità di backup e il display mostra il simbolo "-: -".

MSSP

L'MSSP può essere utilizzato in modalità differenti. Ad esempio, è possibile configurare un MSSP come interfaccia I2C o SPI. I PIC possono essere configurati come slave o master o entrambe le modalità. Molti microcontrollori offrono un solo modulo SSP, cioè senza la lettera "M" iniziale. Questi possono essere facilmente configurati come slave. Tuttavia, la "M" (= master) consente di risparmiare molto tempo e memoria di programma se si desidera utilizzare l'interfaccia seriale come master. Il bus SPI fu originariamente sviluppato dalla Motorola nel 1979, quando venne introdotta la leggendaria CPU 68K. Essa è un'interfaccia seriale sincrona che funziona in modalità "full duplex". Ciò rende le cose un po' più complesse in quanto, per la comunicazione bidirezionale, oltre al clock su SCLK e alle due linee dati MOSI (uscita master, ingresso slave) / SDO (uscita dati seriale) e MISO (ingresso principale, uscita slave) / SDI (Serial Data In), è richiesta almeno una linea CS (Chip Select) più la relativa massa. In realtà, tutti gli slave richiedono le proprie linee CS. L'uso di stadi push-pull consente velocità di trasferimento significativamente più elevate rispetto alla tecnologia open collector con I2C. Lo svantaggio è la lunghezza del cavo più limitata, simile a quella dell'RS232. Grazie alla velocità fino a 80 Mbit/s, SPI è particolarmente adatto per il collegamento di grosse quantità di dati come, ad esempio,  ADC veloci o chip flash esterni. Alcuni microcontrollori supportano contemporaneamente anche entrambi i protocolli (ad esempio MSSP1 come master I2C e MSSP2 come master SPI) e sono quindi molto flessibili. In un'applicazione di questo tipo, tuttavia, la velocità di trasferimento dei dati non è particolarmente importante.

>>>Leggi anche: Smart Grid e IoT per il risparmio energetico

Conclusioni

L'orologio del prototipo (vedi figura 3) viene utilizzato in bagno: durante la settimana lavorativa è utile al mattino a tutti i membri della famiglia per controllare facilmente l'orario, visto che spesso si va di fretta. Grazie al sensore PIR, che consente di visualizzare l'ora solo quando necessario, la fonte di alimentazione, composta da due batterie al litio in parallelo, dura circa tre mesi, prima che sia necessario ricaricarle tramite un caricatore USB o un Power Bank. Per risparmiare ancora energia si potrebbe collegare un sensore di luce e utilizzare i valori rilevati per ridurre la luminosità del display, in base alle condizioni di luce ambientale. Per ulteriori informazioni si può scrivere all'indirizzo miroslav.cina@t-online.de.

Figura 3: il prototipo dell'orologio montato su basetta millefori

Figura 3: il prototipo dell'orologio montato su basetta millefori

Links

[1] Download: www.elektormagazine.com/180277-02

 

Elektor Post

3 Commenti

  1. Andrea Garrapa Andrea Garrapa 29 gennaio 2019
  2. Fulvio De Santis Fulvio De Santis 29 gennaio 2019
  3. Daniele Valanzuolo Daniele Valanzuolo 3 febbraio 2019

Scrivi un commento

EOS-Academy