ENCICLOPEDIA DELLA RADIOELETTRONICA ED ELETTRICA Sveglia semplice su PIC16F84. Enciclopedia dell'elettronica radio e dell'ingegneria elettrica Enciclopedia della radioelettronica e dell'elettrotecnica / Orologi, temporizzatori, relè, interruttori di carico Non molto tempo fa, gli orologi elettronici venivano costruiti sui cosiddetti chip dell'orologio della serie K176 e sui chip specializzati delle serie K145 (K145IK1901) e KR1016 (KR1016VI1). Il loro principale svantaggio sono le limitate capacità di miglioramento (qualsiasi modifica richiede modifiche hardware). Gli orologi assemblati sulla base di un microcontrollore si confrontano favorevolmente. Il circuito è molto semplificato e l'“upgrade” può essere effettuato senza alcuna modifica all'hardware. Anche l'impostazione della frequenza di clock può essere puramente software. Questi sono gli orologi descritti nell'articolo pubblicato di seguito. La sveglia proposta con indicatore LED a quattro cifre si basa su un microcontrollore (MK) e mostra l'ora nel formato 24 ore con uno zero insignificante nella cifra delle decine oscurata. È presente una modalità per la visualizzazione di minuti e secondi, un breve segnale acustico (durata 1 s) all'inizio di ogni ora (questa funzione può essere disattivata se necessario), due sveglie commutabili e un'impostazione software del coefficiente di correzione del tempo, da cui dipende la precisione dell'orologio. Il valore del coefficiente e le impostazioni dell'allarme sono registrati nella memoria non volatile (EEPROM) del MK. Lo stato degli allarmi e la segnalazione "Ogni ora" sono indicati tramite LED. Lo schema schematico del dispositivo è mostrato in Fig. 1. La sua base è un microcontrollore PIC16F84 (DD1), la cui frequenza operativa è impostata da un generatore con un risonatore esterno ZQ1 a 4 MHz. L'ingresso di ripristino MK (MCLR) è collegato direttamente al bus di alimentazione +5 V. La porta A a cinque bit, tutte le cui linee sono configurate per l'uscita, controlla il LED HL1 e cambia le cifre dell'indicatore HG1. Le quattro cifre più significative della porta B (RB4-RB7) sono configurate per l'ingresso e la ricezione dei segnali di controllo dai pulsanti SB1-SB4, che sono collegati ai pin senza resistori "pull-up", perché l'MK li ha. I bit RB0 e RB1 della porta B vengono utilizzati per caricare il codice a sette elementi corrispondente alla cifra visualizzata nel registro DD2. La scarica RB2 è l'uscita del segnale o dell'allarme 3H (a seconda della versione del programma), che può essere collegata direttamente all'emettitore piezoelettrico (ZP-1, ZP-3 e simili), all'ingresso dell'amplificatore 3H o al un attuatore, ad esempio un relè, che quando suona la sveglia accende la radio, la TV o altro dispositivo. I LED HL1 e HL2 indicano rispettivamente lo stato del segnale “Ogni ora” e degli allarmi: HL1 si accende se il segnale “Ogni ora” è attivo e HL2 - se almeno uno degli allarmi è attivo o se sono entrambi attivi. Il dispositivo utilizza un indicatore LED specializzato per le ore di Kingbright, contenente quattro cifre a sette elementi con un anodo comune e due punti di indicazione dei secondi tra le cifre centrali. Poiché i terminali degli elementi ag sono comuni a tutte le cifre, il controllo dell'indicatore è possibile solo in modalità dinamica. Per questo progetto, l'indicatore si adatta perfettamente: il numero di linee di ingresso/uscita per uso generale sull'MCU P1C16F84 non consente l'indicazione statica e, con un'indicazione dinamica, sarebbe necessario combinare le uscite degli stessi elementi di diversi categorie sul tabellone con un altro indicatore. I resistori R3-R10 limitano la corrente attraverso i LED indicatori. Viene introdotto il registro a scorrimento DD2 per risparmiare pin MK: converte il codice seriale in parallelo durante la visualizzazione dinamica. Il condensatore C4 filtra le increspature nel circuito di alimentazione MK. Non c'è posto sulla scheda, è saldato direttamente ai terminali della presa MK dal lato dei conduttori stampati. Il programma di controllo per MK è scritto nell'assemblatore MPASM standard di Microchip e compilato nell'ambiente MPLAB della stessa azienda. Delle 1024 celle di memoria del programma MK ne sono state utilizzate circa ottocento, quindi ci sono risorse per miglioramenti. Immediatamente dopo l'accensione, il programma di controllo viene inizializzato: i bit della porta sono configurati per ingresso e uscita, la modalità operativa del timer è impostata su 0 e le impostazioni dell'allarme e il fattore di correzione temporale vengono letti dalla memoria non volatile. Il compito principale del programma - la formazione di intervalli di tempo precisi della durata di 1 s - viene risolto utilizzando le interruzioni del timer 0. Il suo preriscaldatore è collegato all'oscillatore al quarzo MK ed è regolato su un fattore di divisione di 16. Un numero da 0h in OFh viene scritto nel registro del timer 00 per ogni elaborazione di interruzione (c'è un fattore di correzione temporale, nel codice sorgente del programma si chiama TIME_SET), quindi il timer va in overflow non in 256, ma, ad esempio, in 250 cicli di clock (con TIME_SET = 5). In questo caso, quando si utilizza un risuonatore al quarzo con frequenza di 4 MHz, le interruzioni dal timer 0 si verificano con una frequenza di 1 Hz/000/000 = 250 Hz. Dopo l'inizializzazione, il programma entra in un ciclo aspettando questi interrupt e conteggiandoli. Quando il numero di interruzioni raggiunge 16, l'ora corrente aumenta di un secondo. Gli interrupt del timer 0 forniscono anche indicazioni dinamiche. Durante l'elaborazione, l'MK imposta il livello zero sui pin RA0-RA3 e quindi spegne l'indicatore. Successivamente, un codice di sette elementi corrispondente al simbolo che deve essere visualizzato viene caricato nel registro DD2 tramite i pin MK RB0 e RB1. Quindi su uno dei pin RAO-RA3 viene impostato un livello logico alto, grazie al quale si accende uno dei terminali familiari. Tutto questo avviene 250 volte al secondo e, grazie all'inerzia della visione, l'utente vede tutte le scariche accese contemporaneamente. Il bit più significativo del codice caricato nel registro DD2 viene utilizzato per controllare i secondi punti dell'indicatore, che lampeggiano alla frequenza di 1 Hz. Pertanto, con l'aiuto delle interruzioni del timer 0, vengono risolti due compiti contemporaneamente. Inoltre, nella subroutine di elaborazione dell'interruzione, l'MK controlla se la cifra di uscita è uno zero insignificante nella cifra di sinistra e, in tal caso, invece del codice a sette elementi della cifra O, l'MK carica il numero binario 11111111 in il registro (un indicatore con anodo comune, quindi uno corrisponde al segmento spento). La tastiera viene interrogata circa 10 volte al secondo, ma dopo la prima pressione di alcuni pulsanti e delle relative combinazioni, il programma non risponde alle pressioni ripetute per 1 secondo (ad esempio, se i pulsanti vengono tenuti premuti). Ciò è necessario per facilitare il controllo dell'orologio. Quando viene attivata la sveglia, sul pin RB2 appare per 1 minuto un segnale intermittente 3H o, a seconda della versione del programma, un segnale alto (più precisamente, impulsi con una frequenza di ripetizione di 1 Hz). I LED HL1 e HL2 lampeggiano. Dopo un minuto viene richiamata una apposita subroutine che ripristina la corretta accensione dei led. Il dispositivo è controllato dai pulsanti SB1-SB4, ognuno dei quali combina più funzioni (vedere lo schema mnemonico riportato in Fig. 2). L'orologio funziona in tre modalità: principale (indicazione dell'ora corrente), con un fattore di correzione dell'ora e modalità di impostazione della sveglia. Nella modalità principale, l'indicatore HG1 visualizza ore e minuti, mentre i secondi punti lampeggiano ad una frequenza di 1 Hz. L'ora corrente si imposta tramite i pulsanti SB1 (ore) e SB2 (minuti): ad ogni pressione degli stessi si incrementano le letture di uno, se fatto mentre si tiene premuto SB4 le si diminuisce. Quando le cifre dei minuti raggiungono lo zero, non avviene alcun trasferimento alle cifre delle ore. Se si tiene premuto il pulsante SB4 per tre secondi, l'indicatore visualizza i minuti e i secondi dell'ora corrente anziché le ore e i minuti. Il segnale “Ogni ora” si accende e spegne premendo il pulsante SB3 tenendo premuto SB4 (il LED HL1 si accende o si spegne di conseguenza). Per passare alla modalità di impostazione della sveglia, premere il pulsante SB3. Le letture del primo allarme appaiono sull'indicatore, i secondi punti si illuminano continuamente. L'impostazione delle ore e dei minuti avviene tramite gli stessi pulsanti SB1 e SB2 (in questo caso solo incrementando le letture). Premendo il pulsante SB4 si spegne l'allarme e sull'indicatore rimangono solo dei trattini (gli elementi G sono accesi). Alla successiva accensione della sveglia utilizzando lo stesso pulsante, sull'indicatore compaiono degli zeri (e non i valori precedenti) che vengono scritti nei registri della sveglia. Se si preme nuovamente il pulsante SB3, il secondo allarme apparirà sull'indicatore, ma i secondi punti si spegneranno. Entrambi gli allarmi sono impostati allo stesso modo. Una terza pressione del pulsante SB3 mette l'orologio in modalità di funzionamento con coefficiente di correzione temporale: sull'indicatore vengono visualizzati i simboli “EE X”, dove EE significa EEPROM, e X è il valore attuale del coefficiente in forma esadecimale; I secondi punti continuano a lampeggiare. Utilizzando il pulsante SB1 è possibile aumentare, mentre utilizzando il pulsante SB2 è possibile diminuire il valore del coefficiente nell'intervallo da Oh a Fh. Il numero impostato verrà scritto nel timer 0 nella routine di interruzione in caso di overflow. Quando si preme il pulsante SB3 per la quarta volta, le impostazioni dell'allarme e il valore del coefficiente vengono scritti nella EEPROM: il primo allarme - agli indirizzi 02h-05h (rispettivamente minuti, decine di minuti, ore e decine di ore), il secondo - agli indirizzi 06h-09h (nello stesso ordine), coefficiente - alle 01h. Il dispositivo è montato su un circuito stampato realizzato secondo il disegno riportato in Fig. 3 (le linee tratteggiate mostrano i ponticelli che collegano i conduttori del circuito stampato sul lato opposto della scheda). Senza alcuna modifica al circuito e al programma MK, è possibile utilizzare PIC16C84, un analogo programmabile una tantum di PIC16F84. Possiamo sostituire l'indicatore indicato nello schema con qualsiasi altro indicatore a quattro cifre con anodo comune (è auspicabile che i terminali degli stessi elementi di scarica siano collegati all'interno dell'indicatore). È accettabile utilizzare quattro indicatori a una cifra; in questo caso, come secondi punti possono essere utilizzati due LED separati, collegati tramite catodi all'uscita destra (secondo lo schema) del resistore R10 (se necessario, tramite un interruttore su un transistor). Resistori, condensatori, LED, pulsanti: tutti quelli piccoli. Per l'orologio sono state sviluppate tre versioni del programma di controllo. La versione 1.10 è quella principale (il suo file HEX è mostrato nella tabella). Quando vengono attivati gli allarmi, sul pin RB2 appare un segnale (onda quadra) con una frequenza di 1 Hz. Può essere utilizzato per controllare vari attuatori e generatori di segnali 3H: dai più semplici con due o tre elementi logici ai complessi sistemi di sintesi del suono digitale [1, 2]. La visualizzazione dinamica in questa versione funziona costantemente. Nella versione 1.11, l'indicazione funziona anche in modo continuo, ma quando vengono attivati gli allarmi e nel momento in cui viene generato il segnale "Ogni ora", sul pin RB2 compaiono raffiche di impulsi con una frequenza di ripetizione di 1 Hz (la frequenza delle oscillazioni che riempiono le raffiche corrisponde alla frequenza delle interruzioni del timer 0 - 250 Hz). Questo segnale può essere applicato direttamente all'emettitore o all'ingresso dell'amplificatore 3CH. La versione 1.20 differisce dalla 1.11 solo perché per impostazione predefinita la visualizzazione dinamica è disattivata (mentre tutte le altre funzioni dell'orologio funzionano normalmente). Inizia a funzionare quando si preme il pulsante SB4 e si spegne automaticamente dopo 10 s. Quando si premono i pulsanti e la sveglia suona, il conto alla rovescia di questo intervallo ricomincia. Se la sveglia si spegne quando l'indicazione è spenta, non si accende: è necessario premere due volte il pulsante SB4 per spegnere la sveglia e accendere l'indicazione. Si consiglia di utilizzare questo programma se l'orologio è alimentato da una batteria composta da celle galvaniche o batterie ricaricabili: spegnendo l'indicazione si risparmia l'energia della batteria. Quando si programma il MK, la parola di configurazione indica il tipo di generatore - XT, timer di accensione - acceso, timer watchdog e protezione del codice - spento. Inoltre, nella cella 01h della memoria dati non volatile è necessario inserire il numero da Oh a Fh (fattore di correzione temporale) e agli indirizzi 02h-09h - impostazioni di allarme. Se la regolazione software della precisione dell'orologio risulta approssimativa (il che è abbastanza probabile), è necessario installare il condensatore di sintonizzazione C3 mostrato nello schema con le linee tratteggiate (c'è un posto per questo sul circuito stampato). File HEX delle versioni del programma 1.11 e 1.20, nonché i testi sorgente di tutte le versioni Letteratura
Autore: A. Vakulenko, Tyumen Vedi altri articoli sezione Orologi, temporizzatori, relè, interruttori di carico. Leggere e scrivere utile commenti su questo articolo. Ultime notizie di scienza e tecnologia, nuova elettronica: Macchina per diradare i fiori nei giardini
02.05.2024 Microscopio infrarosso avanzato
02.05.2024 Trappola d'aria per insetti
01.05.2024
Altre notizie interessanti: ▪ MAX17558 Controller Buck 60 V CC-CC a doppio canale ▪ Tecnologia di posizionamento indoor ▪ Cellulare tracciato da un segnale speciale ▪ Colture agricole OGM in pericolo News feed di scienza e tecnologia, nuova elettronica
Materiali interessanti della Biblioteca Tecnica Libera: ▪ sezione del sito Storie dalla vita dei radioamatori. Selezione dell'articolo ▪ articolo telefonico. Storia dell'invenzione e della produzione ▪ articolo Cos'è un ananas? Risposta dettagliata ▪ articolo Crescione invernale americano. Leggende, coltivazione, metodi di applicazione ▪ articolo Vetro inesauribile. Messa a fuoco segreta
Lascia il tuo commento su questo articolo: Tutte le lingue di questa pagina Homepage | Biblioteca | Articoli | Mappa del sito | Recensioni del sito www.diagram.com.ua |