Sommario:

Orologio digitale Arduino sincronizzato dalla linea di alimentazione a 60Hz: 8 passaggi (con immagini)
Orologio digitale Arduino sincronizzato dalla linea di alimentazione a 60Hz: 8 passaggi (con immagini)

Video: Orologio digitale Arduino sincronizzato dalla linea di alimentazione a 60Hz: 8 passaggi (con immagini)

Video: Orologio digitale Arduino sincronizzato dalla linea di alimentazione a 60Hz: 8 passaggi (con immagini)
Video: Arduino - Orologio digitale con modulo RTC 2024, Novembre
Anonim
Orologio digitale Arduino sincronizzato dalla linea di alimentazione a 60Hz
Orologio digitale Arduino sincronizzato dalla linea di alimentazione a 60Hz

Questo orologio digitale basato su Arduino è sincronizzato dalla linea di alimentazione a 60Hz. Ha un semplice ed economico display ad anodo comune a 4 cifre e 7 segmenti che mostra ore e minuti. Utilizza un rilevatore di crossover per rilevare quando l'onda sinusoidale di 60 Hz in ingresso attraversa il punto di tensione zero e deriva un'onda quadra di 60 Hz.

In brevi periodi di tempo la frequenza dell'onda sinusoidale in ingresso dalla linea di alimentazione può variare leggermente a causa del carico, ma per lunghi periodi di tempo è in media di 60Hz in modo molto preciso. Possiamo approfittare di questo per derivare una sorgente di temporizzazione per sincronizzare il nostro orologio.

Passaggio 1: lo schema del circuito

Il diagramma del circuito
Il diagramma del circuito

Esistono due versioni del circuito a seconda che si desideri utilizzare un trasformatore con presa centrale o uno senza, in entrambi i casi il funzionamento del circuito è pressoché identico. Per questa build ho usato un adattatore a muro (senza rubinetto centrale) che emette 12V AC. Userò questo disegno (Digital Clock1 Circuit Diagram) per la descrizione del circuito. Si noti che è importante utilizzare un adattatore a muro che emette 12 V CA e non 12 V CC in modo da poter attingere all'onda sinusoidale CA per la temporizzazione. Probabilmente potresti anche usare un trasformatore che emette 9V AC, rimuovere R19 e farlo funzionare anche, ma 12V è molto comunemente disponibile. Ecco come funziona il circuito:

120V AC a 60Hz viene convertito in 12V AC dal trasformatore TR1. Questo viene alimentato al diodo D4 e rettificato in modo che solo la tensione +ve venga alimentata e livellata a circa DC con ripple dal condensatore C3. La tensione su C3 viene fornita al regolatore di tensione 7805 (U6) tramite il resistore R19. R19 serve per ridurre la tensione su C3 che nel mio caso è stata misurata a circa 15VDC. Questo può essere regolato dal 7805 ma con questo livello di ingresso il 7805 deve scendere di circa 10VDC e di conseguenza diventa piuttosto caldo. Usando R19 per abbassare la tensione a circa 10VDC evitiamo che U6 si surriscaldi troppo. Quindi questa non è una tecnica di conversione di potenza efficiente, ma funziona per i nostri scopi. NOTA: utilizzare qui almeno una resistenza da 1/2 W o più. Il circuito assorbe circa 55 ma, quindi la dissipazione di potenza in R19 è di circa 1/3 W in base a P=I**2*R o P = 55ma x 55ma x 120 ohm = 0,363W. Il prossimo U6 emette 5V DC puri con C4 e C5 sull'uscita per filtrare qualsiasi rumore sulla linea di alimentazione a 5V. Questo 5 V CC alimenta tutti i circuiti integrati sulla scheda.

Da TR1 prendiamo anche un campione del segnale AC non filtrato e lo inseriamo nel potenziometro RV1 che viene utilizzato per regolare il livello inviato al rilevatore di crossover. R18 e R17 formano un divisore di tensione per ridurre ulteriormente il livello di tensione CA in ingresso. Ricorda che arriva a 12 V CA e dobbiamo ridurlo a meno di 5 V in modo che funzioni con il nostro rilevatore di crossover che è solo alimentato da 5VDC. R15 e R16 forniscono la limitazione della corrente mentre D1 e D2 hanno lo scopo di prevenire l'overdrive dell'amplificatore operazionale U5. Nella configurazione mostrata, l'uscita di U5 sul pin 1 si alternerà tra +5V e 0V ogni volta che l'onda sinusoidale in ingresso cambia da positiva a negativa. Questo genera un'onda quadra a 60 Hz che viene inviata al microcontrollore, U4. Il programma caricato su U4 utilizza quindi quest'onda quadra a 60Hz per incrementare l'orologio ogni minuto e ogni ora. Come farlo verrà discusso nella sezione sul programma software e nei commenti sul software.

U7 viene utilizzato il registro a scorrimento 74HC595 perché abbiamo un numero limitato di pin digitali sul microprocessore, quindi viene utilizzato per espandere il numero di uscite. Usiamo 4 pin digitali sul microprocessore ma possiamo controllare 7 segmenti sul display tramite il 74HC595. Ciò si ottiene spostando schemi predeterminati di bit, memorizzati nel microcontrollore e che rappresentano ciascuna cifra da visualizzare, nel registro a scorrimento.

Il display utilizzato qui è un anodo comune, quindi dobbiamo invertire i livelli del segnale in uscita dal 74HC595 per accendere un segmento. Quando un segmento deve essere acceso il segnale che esce dal pin di uscita 74HC595 sarà a +5V, ma abbiamo bisogno che il pin che sta alimentando sul display sia a 0V per accendere quel segmento del display. Quindi per fare questo abbiamo bisogno di inverter esadecimali U2 e U3. Sfortunatamente un IC inverter può gestire solo 6 inversioni, quindi ne abbiamo bisogno di due anche se sul secondo utilizziamo solo una delle 6 porte. Uno spreco purtroppo. Potresti chiederti perché non utilizzare un display di tipo a catodo comune qui ed eliminare U2 e U3? Bene, la risposta è che puoi, ho solo un tipo di anodo comune nella mia fornitura di parti. Se si dispone o si desidera utilizzare un display di tipo a catodo comune, è sufficiente eliminare U2 e U3 e ricablare Q1 - Q4 in modo che i collettori del transistor siano collegati ai pin del display e gli emettitori del transistor siano collegati a massa. Q1 - Q4 controlla quale dei quattro display a 7 segmenti è attivo. Questo è controllato dal microcontrollore, tramite i pin collegati alla base dei transistor Q1 - Q4.

I pulsanti di incremento e impostazione verranno utilizzati per impostare manualmente l'ora corretta dell'orologio quando si tratta di utilizzare effettivamente l'orologio. Quando si preme una volta il pulsante Set, è possibile utilizzare il pulsante Incremento per scorrere le ore visualizzate sul display. Premendo nuovamente il pulsante Set, è possibile utilizzare il pulsante di incremento per scorrere i minuti visualizzati sul display. Premendo una terza volta il pulsante Set, l'ora viene impostata. R13 e R14 abbassano i pin del microcontrollore associati a questi pulsanti quando non sono in uso.

Nota che qui abbiamo preso U4 (Atmega328p) dalla tipica scheda prototipo Arduino UNO e l'abbiamo messa sulla scheda prototipo con il resto del nostro circuito. Per fare ciò dobbiamo come minimo fornire il cristallo X1 e i condensatori C1 e C2 per fornire una sorgente di clock per il microcontrollore, legare il pin 1, il pin di reset, alto e fornire alimentazione a 5VDC.

Passaggio 2: breadboard il tuo circuito

Breadboard il tuo circuito
Breadboard il tuo circuito
Breadboard il tuo circuito
Breadboard il tuo circuito

Indipendentemente dal fatto che tu stia costruendo il circuito esattamente come mostrato nello schema elettrico o magari utilizzando un trasformatore, un tipo di display o altri componenti leggermente diversi, dovresti prima eseguire il breadboard del circuito per assicurarti che funzioni e che tu capisca come funziona.

Nelle immagini puoi vedere che il breadboarding ha richiesto un paio di schede e una scheda Arduino Uno. Quindi, per programmare il microcontrollore o sperimentare o apportare modifiche al software, inizialmente sarà necessario l'IC del microcontrollore su una scheda UNO in modo da poter collegare un cavo USB ad esso e al computer per caricare il programma o apportare modifiche al software.

Una volta che l'orologio funziona sulla breadboard e il microcontrollore è stato programmato, è possibile scollegarlo e collegarlo alla presa dell'orologio permanente della build finale sulla scheda prototipo. Assicurati di seguire le precauzioni antistatiche quando lo fai. Utilizzare un cinturino da polso antistatico mentre si maneggia il microprocessore.

Passaggio 3: costruzione del circuito sulla scheda prototipi

Costruzione di circuiti su scheda prototipi
Costruzione di circuiti su scheda prototipi
Costruzione di circuiti su scheda prototipi
Costruzione di circuiti su scheda prototipi

Il circuito è costruito su un pezzo di scheda prototipo e cablato punto a punto utilizzando un cavo avvolgitore #30 AWG. Fornisce un risultato robusto e affidabile. Poiché il trasformatore che ho ha una spina maschio da 5 mm all'estremità del cavo, ho montato la presa femmina corrispondente sul retro della scheda tagliando, piegando e forando un pezzo di striscia piatta di alluminio larga 1/2 per creare un staffa e poi l'ho imbullonata alla scheda con piccoli dadi e bulloni 4-40. Potresti semplicemente tagliare il connettore e saldare i cavi di alimentazione rimanenti alla scheda e risparmiare circa 20 minuti di lavoro, ma non volevo che il trasformatore fosse collegato in modo permanente al consiglio.

Passaggio 4: creare una presa per il display e dargli le gambe

Creare una presa per il display e dargli le gambe
Creare una presa per il display e dargli le gambe
Creare una presa per il display e dargli le gambe
Creare una presa per il display e dargli le gambe
Creare una presa per il display e dargli le gambe
Creare una presa per il display e dargli le gambe

Poiché il display ha 16 pin, 8 per lato, con una distanza tra i pin più ampia di una presa IC standard a 16 pin, è necessario regolare le dimensioni della presa per adattarla al display. Puoi farlo semplicemente usando un paio di tronchesi per tagliare la plastica che collega i due lati della presa, separarli e saldarli separatamente alla scheda con una spaziatura che corrisponda alla spaziatura dei pin sul display. È vantaggioso farlo in modo da non dover saldare direttamente ai pin del display ed esporre il display a calore eccessivo. Puoi vedere la presa a cui ho fatto questo nella parte superiore della scheda nell'immagine sopra.

Per fare in modo che il display si alzi correttamente, ho imbullonato due bulloni da 1 ai due fori d'angolo inferiori della scheda prototipo come mostrato nelle foto per creare un semplice supporto. Questo era piuttosto tizio, quindi se lo fai, potresti vuoi mettere qualcosa di pesante sul retro dei bulloni per stabilizzarlo.

Passaggio 5: controllo del cablaggio della scheda del circuito e preparazione alla calibrazione

Controllo del cablaggio del circuito stampato e preparazione alla calibrazione
Controllo del cablaggio del circuito stampato e preparazione alla calibrazione

Una volta che il circuito è stato cablato, ma prima di collegare i circuiti integrati o visualizzarlo o accenderlo, è una buona idea controllare i collegamenti della scheda con un DVM. È possibile impostare la maggior parte dei DVM in modo che emettano un segnale acustico in caso di continuità. Imposta il tuo DVM in questa modalità e quindi, seguendo lo schema del circuito, controlla il maggior numero possibile di connessioni del circuito. Verificare la presenza di un circuito aperto, o vicino ad esso, tra i punti +5V e Ground. Controllare visivamente che tutti i componenti siano collegati ai pin corretti.

Quindi collega il tuo trasformatore al circuito e accendilo. Verificare di avere esattamente 5 V CC sulla barra di alimentazione 5 V con un oscilloscopio o DVM prima di collegare qualsiasi circuito integrato o il display.

Quindi collegare SOLO l'amplificatore operazionale U5 IC in preparazione per il passaggio successivo. Qui controlleremo che il nostro circuito di crossover stia generando un'onda quadra e regoleremo il potenziometro RV1 per un segnale pulito a 60 Hz.

Passaggio 6: calibrazione del circuito

Calibrazione del circuito
Calibrazione del circuito
Calibrazione del circuito
Calibrazione del circuito

L'unica calibrazione da fare è regolare il potenziometro RV1 per il corretto livello di segnale che alimenta il rilevatore di crossover. Ci sono due modi per farlo:

1. Mettere una sonda dell'oscilloscopio sul pin 1 di U5 e assicurarsi di collegare il filo di terra della sonda dell'oscilloscopio alla terra del circuito. Quindi regolare RV1 fino a ottenere un'onda quadra pulita come mostrato nell'immagine sopra. Se regoli troppo RV1 in un modo o nell'altro, non avrai un'onda quadra o un'onda quadra distorta. Assicurarsi che la frequenza dell'onda quadra sia 60 Hz. Se hai un cannocchiale moderno, probabilmente ti dirà la frequenza. Se hai un cannocchiale antico come me, assicurati che il periodo dell'onda quadra sia di circa 16,66 ms o 1/60 di secondo.

2. Utilizzando un frequenzimetro o DVM in modalità Frequenza, misurare la frequenza al Pin 1 di U5 e regolare RV1 per esattamente 60 Hz.

Una volta eseguita questa calibrazione, spegnere il circuito e collegare tutti i circuiti integrati e il display per completare la costruzione del circuito.

Passaggio 7: il programma Arduino

Il programma è completamente commentato in modo da poter capire i dettagli di ogni passaggio. A causa della complessità del programma è difficile descrivere ogni passaggio, ma ad un livello molto alto è così che funziona:

Il microprocessore riceve l'onda quadra a 60 Hz in ingresso e conta 60 cicli e incrementa il conteggio dei secondi ogni 60 cicli. Una volta che il conteggio dei secondi raggiunge i 60 secondi, o 3600 cicli, il conteggio dei minuti viene incrementato e il conteggio dei secondi viene azzerato. Quando il conteggio dei minuti raggiunge i 60 minuti, il conteggio delle ore viene incrementato e il conteggio dei minuti viene azzerato. il conteggio delle ore viene reimpostato su 1 dopo 13 ore, quindi questo è un orologio di 12 ore. Se si desidera un orologio a 24 ore, è sufficiente modificare il programma per azzerare le ore dopo 24 ore.

Questo è un progetto sperimentale, quindi ho provato a utilizzare un ciclo Do-While per sopprimere il rimbalzo dell'interruttore sui pulsanti Imposta e Incrementa. Funziona abbastanza bene. Premendo una volta il pulsante Set, è possibile utilizzare il pulsante Incremento per scorrere le ore visualizzate sul display. Premendo nuovamente il pulsante Set, è possibile utilizzare il pulsante di incremento per scorrere i minuti visualizzati sul display. Premendo una terza volta il pulsante Set, l'ora viene impostata e l'orologio inizia a funzionare.

I modelli di 0 e 1 utilizzati per visualizzare ogni numero sui display a 7 segmenti sono memorizzati nell'array chiamato Seven_Seg. A seconda dell'ora attuale, questi modelli vengono inviati al 74HC595 IC e inviati al display. Quale delle 4 cifre del display è acceso in qualsiasi momento per ricevere questi dati è controllato dal microprocessore tramite il display Dig 1, 2, 3, 4 pin. Quando il circuito viene acceso, il programma esegue prima una routine di test chiamata Test_Clock che invia le cifre corrette per illuminare ogni display con un conteggio da 0 a 9. Quindi se vedi questo quando accendi significa che hai costruito tutto correttamente.

Passaggio 8: elenco delle parti

1 - Trasformatore da 120VAC a 12VAC circa 100ma o più1 - Scheda prototipo circa 3,5" x 3,5"1 - Display a 7 segmenti a 4 cifre YSD-439K2B-35 o equivalente (Sparkfun)2 - Pulsanti piccoli per montaggio su PCB NO (qualsiasi)4 - 2N3904 Transistor NPN8 - Resistenze da 330 ohm2 - 74LS04 Inverter Hex1 - 74HC595 registro a scorrimento a 8 bit da seriale a parallelo 1 - LM358 OP-AMP (Comparatore)1 - Microcontrollore ATMEGA328P (Creatron)4 - Resistenze da 4,7K7 - Resistenze da 10K1 - 1N4007 o 1N4001 diodo2 - 1N4148 diodi1 - Resistenza 120 ohm, 1/2W o 1W1 - Potenziometro 10K per montaggio su PCB1 - Condensatore 470uF 25V1 - Regolatore di tensione contenitore 7805 TO2201 - Condensatore 10uF 10V2 - Condensatori 0,1 uF 10V1 - Cristallo 16MHz (Sparkfun)2 - Condensatori 22pF1 - Jack di alimentazione femmina (Opzionale per adattarsi alla spina maschio se presente sul trasformatore a parete)2 - Prese IC a 16 pin2 - Prese IC a 14 pin1 - Presa IC a 8 pin1 - Presa IC a 28 pin2 - 1" di lunghezza circa 4 o #6 bulloni e dadi corrispondenti2 - 1/ Bulloni 4-40 lunghi 4" e dadi abbinati1 - pezzo di striscia di alluminio piatta larga 1/2" tagliata su misura e forato a misura

#30 AWG wire wrap wire#22 AWG wireSaldatura

Consigliato: