Sommario:

Timer programmabile a 8 canali: 13 passaggi
Timer programmabile a 8 canali: 13 passaggi

Video: Timer programmabile a 8 canali: 13 passaggi

Video: Timer programmabile a 8 canali: 13 passaggi
Video: COME PROGRAMMARE IL TIMER MECCANICO - MANUALE 2024, Luglio
Anonim
Timer programmabile a 8 canali
Timer programmabile a 8 canali
Timer programmabile a 8 canali
Timer programmabile a 8 canali
Timer programmabile a 8 canali
Timer programmabile a 8 canali

introduzione

Utilizzo la gamma di microcontrollori PIC di Microchip per i miei progetti dal 1993 e ho eseguito tutta la mia programmazione in linguaggio assembler, utilizzando l'IDE Microchip MPLab. I miei progetti spaziavano da semplici semafori e LED lampeggianti, a interfacce joystick USB per modelli R/C e analizzatori di quadri utilizzati nell'industria. Lo sviluppo ha richiesto molti giorni e talvolta migliaia di righe di codice assembler.

Dopo aver ricevuto Matrix Multimedia Flowcode 4 Professional, ero piuttosto scettico sul software. Sembrava troppo facile da credere. Ho deciso di provarlo e ho testato tutte le diverse macro di componenti, tutte con grande successo. La parte migliore dell'utilizzo di Flowcode era che i progetti semplici potevano essere codificati in una sola notte. Dopo aver giocato con l'I²C e un orologio in tempo reale DS1307, ho deciso di progettare il timer a 8 canali utilizzando Flowcode. Non essendo un progetto piccolo e facile, credevo che questo sarebbe stato un grande progetto per imparare a me stesso Flowcode.

Selezione di un microprocessore e altri componenti

A causa del numero di pin I/O richiesti, era chiaro che sarebbe stato necessario un dispositivo a 40 pin. È stato scelto il PIC 18F4520, principalmente per i suoi 32K di memoria di programma e 1536 byte di memoria dati. Tutti i componenti utilizzati, sono dispositivi standard a foro passante, che consentono di realizzare il circuito sulla scheda Vero se richiesto. Questo ha anche aiutato con lo sviluppo su una breadboard.

Fase 1: Obiettivi del progetto

Obiettivi di progetto
Obiettivi di progetto

obiettivi

- Cronometraggio preciso, con batteria tampone.

- Tutti i programmi ei dati da conservare, anche dopo un'interruzione di corrente.

- Interfaccia utente semplice.

- Flessibilità di programmazione.

Cronometraggio

Vivendo in un'area soggetta a interruzioni di corrente, lo standard 50/60Hz dalle linee elettriche non sarà sufficiente per un accurato cronometraggio. Un orologio in tempo reale era essenziale e, dopo aver testato diversi chip RTC, ho deciso per il DS1307 per la sua semplice configurazione dell'oscillatore e della batteria di backup. Il cronometraggio abbastanza accurato è stato ottenuto utilizzando solo un cristallo a 32,768 kHz collegato al DS1307. La precisione è stata entro 2 secondi in un periodo di prova di 2 mesi utilizzando 4 diverse marche di cristalli.

Conservazione dei dati

Tutti i dati del programma orario devono essere conservati, anche in caso di interruzione di corrente. Con un massimo di 100 programmi diversi e vari dati di configurazione, è diventato chiaro che i 256 byte di EEPROM a bordo del PIC non saranno abbastanza grandi. Una EEPROM 24LC256 I²C viene utilizzata per memorizzare tutte le informazioni di programmazione.

Interfaccia utente semplice

L'interfaccia utente è composta da soli 2 elementi, un display LCD a 16 x 4 righe con retroilluminazione a LED e una tastiera 4 x 3. Tutta la programmazione può essere eseguita con la semplice pressione di pochi pulsanti. Le aggiunte all'interfaccia sono un cicalino piezo udibile e una retroilluminazione LCD lampeggiante visiva.

Passaggio 2: flessibilità di programmazione

Flessibilità di programmazione
Flessibilità di programmazione

Per garantire una flessibilità sufficiente del programma, il timer dispone di 100 programmi che possono essere impostati individualmente. Per ogni programma è possibile impostare l'orario di accensione, l'orario di spegnimento, i canali di uscita e il giorno della settimana. Ogni programma ha tre modalità:

- Auto: vengono impostati l'orario di accensione, il tempo di spegnimento, il canale di uscita e il giorno della settimana.

- Off: Il singolo programma può essere disabilitato, senza cancellare le impostazioni. Per abilitare nuovamente il programma, selezionare semplicemente una modalità diversa.

- Giorno/Notte: vengono impostati l'orario di accensione, il tempo di spegnimento, il canale di uscita e il giorno della settimana. Funziona come la modalità Auto, ma lo farà

attivare le uscite tra gli orari di On e Off solo quando è buio. Ciò consente anche il controllo completo giorno/notte

come ulteriore flessibilità per accendere le luci al tramonto e spegnerle all'alba.

Esempio 1: accenderà la luce dopo le 20:00 e spegnerà la luce all'alba.:

il: 20:00, Spento: 12:00, Esempio 2: accenderà la luce al tramonto e spegnerà la luce alle 23:00.

Il: 12:00

Spento: 23:00

Esempio 3: accenderà la luce al tramonto e spegnerà la luce all'alba.

Il: 12:01

Spento: 12:00

Ulteriori opzioni disponibili, tutte funzionanti indipendentemente dai 100 programmi On/Off.

Canali di programma attivi: invece di disattivare diversi programmi, è possibile disattivare i singoli canali di uscita senza la necessità di modificare i programmi.

Ingressi ausiliari: Sono disponibili due ingressi digitali, per consentire l'attivazione di determinati canali di uscita per un tempo specifico. Può ad esempio essere utilizzato per accendere determinate luci quando si arriva a casa a tarda notte, quando viene premuto un pulsante su un telecomando o per accendere un diverso ser di luci quando viene attivato l'allarme domestico.

Uscite ausiliarie: sono disponibili due uscite aggiuntive (oltre agli 8 canali di uscita). Possono essere programmati per accendersi con determinati canali di uscita o con gli ingressi digitali. Nella mia installazione, ho le uscite 6-8 che controllano la mia irrigazione, che funziona a 24V. Utilizzo i canali 6-8 per attivare una delle uscite ausiliarie, per attivare un'alimentazione a 24V per l'impianto di irrigazione.

Attivazione manuale: nella schermata principale, i pulsanti 1-8 possono essere utilizzati per attivare o disattivare manualmente i canali.

Passaggio 3: hardware

Hardware
Hardware

Alimentazione: l'alimentatore è costituito da un raddrizzatore, un condensatore di livellamento e un fusibile da 1 Amp per la protezione da sovraccarico. Questa alimentazione è poi regolata da un regolatore 7812 e 7805. L'alimentazione a 12V viene utilizzata per pilotare i relè di uscita e tutti gli altri circuiti sono alimentati dall'alimentazione a 5V. Poiché il regolatore 7805 è collegato all'uscita del regolatore 7812, la corrente totale deve essere limitata a 1 amp attraverso il regolatore 7812. Si consiglia di montare questi regolatori su un idoneo dissipatore di calore.

Bus I²C: sebbene Flowcode consenta il controllo I²C hardware, ho deciso di utilizzare la configurazione I²C software. Ciò consente una maggiore flessibilità nell'assegnazione dei pin. Sebbene sia più lento (50 kHz), ha prestazioni eccezionali rispetto al bus I²C hardware. Sia DS1307 che 24LC256 sono collegati a questo bus I²C.

Orologio in tempo reale (DS1307): durante l'avvio, il registro RTC 0 e 7 viene letto per determinare se contiene dati di ora e configurazione validi. Una volta che l'impostazione è corretta, l'ora RTC viene letta e l'ora viene caricata nel PIC. Questa è l'unica volta che l'ora viene letta dall'RTC. Dopo l'avvio, sarà presente un impulso di 1Hz sul pin 7 dell'RTC. Questo segnale a 1Hz è collegato a RB0/INT0 e, tramite una routine di servizio di interrupt, il tempo del PIC viene aggiornato ogni secondo.

EEPROM esterna: tutti i dati e le opzioni del programma sono memorizzati nella EEPROM esterna. I dati EEPROM vengono caricati all'avvio e una copia dei dati viene archiviata nella memoria del PIC. I dati EEPROM vengono aggiornati solo quando vengono modificate le impostazioni del programma.

Sensore giorno/notte: come sensore giorno/notte viene utilizzato un resistore dipendente dalla luce standard (LDR). Poiché gli LDR sono disponibili in molte forme e varietà, tutti con diversi valori di resistenza nelle stesse condizioni di luce, ho usato un canale di ingresso analogico per leggere il livello di luce. I livelli diurno e notturno sono regolabili e consentono una certa flessibilità per i diversi sensori. Per impostare alcune isteresi, è possibile impostare valori individuali per Giorno e Notte. Lo stato cambierà solo se il livello di luce è al di sotto del Giorno, o al di sopra dei set point Notte, per più di 60 secondi.

Display LCD: viene utilizzato un display a 4 righe e 16 caratteri, poiché non è stato possibile visualizzare tutti i dati su un display a 2 righe. Il progetto include alcuni caratteri personalizzati, definiti nella macro LCD_Custom_Char.

Ingressi ausiliari: entrambi gli ingressi sono bufferizzati con un transistor NPN. Sul connettore sono disponibili anche +12 V e 0 V, consentendo connessioni più flessibili a connessioni esterne. Ad esempio, è possibile collegare all'alimentazione un ricevitore di telecomando.

Uscite: Tutte le uscite sono isolate elettricamente dal circuito tramite un relè a 12V. I relè utilizzati sono classificati per 250 V CA, a 10 ampere. I contatti normalmente aperti e normalmente chiusi vengono portati ai terminali.

Tastiera: La tastiera utilizzata è una tastiera a matrice 3 x 4 ed è collegata a PORTB:2..7.

Passaggio 4: interruzioni della tastiera

Interruzioni della tastiera
Interruzioni della tastiera
Interruzioni della tastiera
Interruzioni della tastiera
Interruzioni della tastiera
Interruzioni della tastiera

Volevo utilizzare l'interruzione PORTB Interrupt on Change su qualsiasi pressione di tasto. Per questo, è stato necessario creare un'interruzione personalizzata in Flowcode, per garantire che la direzione e i dati PORTB siano impostati correttamente prima e dopo ogni interruzione della tastiera. Viene generato un interrupt ogni volta che viene premuto o rilasciato un pulsante. La routine di interrupt risponde solo quando viene premuto un tasto.

INTERRUZIONE PERSONALIZZATA

Abilita codice

portab = 0b00001110;trisb = 0b11110001;

intcon. RBIE = 1;

intcon2. RBIP = 1;

intcon2. RBPU = 1;

rcon. IPEN = 0;

Codice gestore

if (intcon & (1 << RBIF))

{ FCM_%n();

portab = 0b00001110;

trisb = 0b11110001;

wreg= portb;

clear_bit(intcon, RBIF);

}

Problema trovato

Durante un'interruzione, la routine del servizio di interruzione deve, in nessuna condizione, chiamare qualsiasi altra macro che potrebbe essere utilizzata da qualche parte nel resto del programma. Questo alla fine porterà a problemi di overflow dello stack, poiché l'interruzione può verificarsi nello stesso momento in cui il programma principale si trova nella stessa subroutine. Questo viene anche identificato come SERIOUS ERROR da Flowcode quando il codice viene compilato.

Nel codice personalizzato del tastierino in GetKeyPadNumber, c'è una tale chiamata alla macro Delay_us, che causerà un overflow dello stack. Per ovviare a questo, ho rimosso il comando Delay_us(10) e l'ho sostituito con 25 righe di "wreg = porta;" comandi. Questo comando legge PORTA e inserisce il suo valore nel registro W, solo per ottenere un po' di ritardo. Questo comando verrà compilato su una singola istruzione simile all'assemblatore movf porta, 0. Per il clock a 10 MHz utilizzato nel progetto, ogni istruzione sarà di 400 ns e per ottenere un ritardo di 10 us avevo bisogno di 25 di queste istruzioni.

Nota sulla seconda riga della Figura 3: GetKeypadNumber Custom Code, che il comando delay_us(10) originale è stato disabilitato con "//". Sotto questo, ho aggiunto il mio 25 "wreg = porta;" comandi per ottenere un nuovo ritardo di 10us. Senza chiamate a nessuna macro all'interno del codice personalizzato Keypad_ReadKeypadNumber, la macro della tastiera può ora essere utilizzata all'interno di una routine di servizio di interrupt.

Va notato che la tastiera Flowcode e i componenti eBlocks non utilizzano i resistori di pull-up standard sulle linee di ingresso. Invece, utilizza resistori pull-down da 100K. A causa di alcune interferenze riscontrate sulla tastiera durante lo sviluppo, i resistori da 100K sono stati tutti sostituiti con 10K e tutti i resistori da 10K sono stati sostituiti con 1K5. La tastiera è stata testata per funzionare correttamente con cavi da 200 mm.

Passaggio 5: utilizzo del timer

Utilizzo del timer
Utilizzo del timer
Utilizzo del timer
Utilizzo del timer
Utilizzo del timer
Utilizzo del timer

Tutte le schermate sono impostate per indicare tutte le informazioni necessarie affinché l'utente possa apportare modifiche rapide alle impostazioni. La riga 4 viene utilizzata per assistere nella navigazione attraverso i menu e le opzioni del programma. Durante il normale funzionamento sono disponibili un totale di 22 schermate.

RIGA 1: Ora e Stato

Mostra il giorno e l'ora correnti, seguiti dalle icone di stato:

A – Indica che l'ingresso Aux A è stato attivato e il timer dell'ingresso Aux A è in esecuzione.

B – Indica che l'ingresso Aux B è stato attivato e il timer dell'ingresso Aux B è in esecuzione.

C – Indica che l'uscita Aux C è attiva.

D – Indica che l'uscita Aux D è attivata.

} – Stato sensore giorno/notte. Se presente, indica che è notte.

LINEA 2: Uscite programma

Mostra i canali che sono stati attivati dai diversi programmi. I canali vengono visualizzati nei rispettivi numeri di uscita e un "-" indica che l'uscita specifica non è attivata. I canali che sono stati disabilitati in “Program Outputs Active” saranno ancora indicati qui, ma le uscite Real non saranno impostate.

LINEA 3: Uscite reali

Mostra quali canali sono attivati dai diversi programmi, ingressi Aux A e B o uscite manuali impostate dall'utente. Premendo 0 si disattiveranno tutte le uscite attivate manualmente e si reimposteranno i timer dell'uscita Aux A e B.

RIGA 4: Menu e opzioni dei tasti (su tutti i menu)

Indica la funzione dei tasti “*” e “#”.

La parte centrale indica quali tasti numerici (0-9) sono attivi per la schermata selezionata.

Lo stato dell'ingresso dell'ingresso Aux A e B è mostrato anche tramite l'icona di un interruttore Aperto o Chiuso.

Le uscite possono essere attivate/disattivate manualmente premendo il tasto corrispondente sulla tastiera.

In tutti i menu, i tasti Star e Hash vengono utilizzati per navigare tra le diverse opzioni del programma. I tasti 0-9 servono per impostare le opzioni. Laddove sono disponibili più opzioni su una singola schermata o menu di programmazione, il tasto cancelletto viene utilizzato per scorrere le diverse opzioni. L'opzione attualmente selezionata sarà sempre indicata dal carattere “>” a sinistra dello schermo.

0-9 Immettere i valori dell'ora

1-8 Cambia selezione canale

14 36 Scorri i programmi, 1 passo indietro, 4 passi indietro 10 programmi, 3 passi avanti, 6 passi avanti 10

programmi

1-7 Imposta i giorni della settimana. 1=domenica, 2=lunedì, 3=martedì, 4=mercoledì, 5=giovedì, 6=venerdì, 7=sabato

0 Nella schermata principale, cancellare tutte le sostituzioni manuali e i timer Input A e Input B. In altri menu, modifiche

opzioni selezionate

# Nella schermata principale, disabiliterà tutti i comandi manuali, i timer degli ingressi A e degli ingressi B e le uscite dei programmi, fino a quando

il prossimo evento.

* e 1 Riavvia il timer

* e 2 Cancella tutti i programmi e le opzioni, ripristina le impostazioni predefinite.

* e 3 Mettere il timer in standby. Per riattivare il timer, premere un tasto qualsiasi.

Durante le immissioni errate di qualsiasi valore temporale, la retroilluminazione LCD lampeggerà 5 volte per indicare un errore. Allo stesso tempo, suonerà il cicalino. I comandi Esci e Avanti funzioneranno solo quando la voce corrente è corretta.

Retroilluminazione LCD

Al primo avvio, la retroilluminazione LCD si accenderà per 3 minuti, a meno che:

- Si è verificato un errore hardware (EEPROM o RTC non trovato)

- Orario non impostato nell'RTC

La retroilluminazione LCD si riaccenderà per 3 minuti su qualsiasi input dell'utente sulla tastiera. Se la retroilluminazione LCD è disattivata, qualsiasi comando della tastiera attiverà prima la retroilluminazione LCD e ignorerà il tasto premuto. Ciò garantisce che l'utente sarà in grado di leggere il display LCD prima di utilizzare la tastiera. Anche la retroilluminazione LCD si accenderà per 5 secondi se è attivato l'ingresso Aux A o l'ingresso Aux B.

Passaggio 6: schermate del menu

Schermate del menu
Schermate del menu
Schermate del menu
Schermate del menu
Schermate del menu
Schermate del menu

Utilizzando la tastiera, ciascuna delle opzioni può essere programmata facilmente. Le immagini danno alcune informazioni su cosa fa ogni schermata.

Passaggio 7: progettazione del sistema

Progettazione del sistema
Progettazione del sistema

Tutto lo sviluppo e i test sono stati eseguiti su breadboard. Guardando tutte le sezioni del sistema, ho suddiviso il sistema in tre moduli. Questa decisione è stata principalmente dovuta ai limiti delle dimensioni del PCB (80 x 100 mm) della versione gratuita di Eagle.

Modulo 1 - Alimentazione

Modulo 2 - Scheda CPU

Modulo 3 - Scheda relè

Ho deciso che tutti i componenti dovevano essere facilmente reperibili e che non volevo utilizzare componenti a montaggio superficiale.

Esaminiamo ciascuno di essi.

Passaggio 8: alimentazione

Alimentazione elettrica
Alimentazione elettrica
Alimentazione elettrica
Alimentazione elettrica
Alimentazione elettrica
Alimentazione elettrica
Alimentazione elettrica
Alimentazione elettrica

L'alimentazione è semplice e fornisce alla CPU e alle schede relè 12V e 5V.

Ho montato i regolatori di tensione su dissipatori di calore decenti e ho anche usato condensatori sopravvalutati per l'alimentazione.

Passaggio 9: scheda CPU

Scheda CPU
Scheda CPU
Scheda CPU
Scheda CPU
Scheda CPU
Scheda CPU
Scheda CPU
Scheda CPU

Tutti i componenti, ad eccezione dello schermo LCD, della tastiera e dei relè, sono montati sulla scheda CPU.

Sono state aggiunte morsettiere per semplificare i collegamenti tra l'alimentazione, due ingressi digitali e il sensore di luminosità.

I pin/prese dell'intestazione consentono di collegare facilmente lo schermo LCD e la tastiera.

Per le uscite ai relè ho utilizzato l'ULN2803. Contiene già tutte le resistenze di pilotaggio e i diodi flyback necessari. Ciò ha assicurato che la scheda CPU possa ancora essere realizzata utilizzando la versione gratuita di Eagle. I relè sono collegati ai due ULN2803. L'ULN2803 inferiore è utilizzato per le 8 uscite e l'ULN2803 superiore per le due uscite ausiliarie. Ogni uscita ausiliaria ha quattro transistor. Anche i collegamenti ai relè avvengono tramite pin/prese di intestazione.

Il PIC 18F4520 è stato dotato di una presa di programmazione, in modo da consentire una facile programmazione tramite il programmatore PicKit 3.

NOTA:

Noterai che la scheda contiene un circuito integrato a 8 pin aggiuntivo. Il circuito integrato superiore è un PIC 12F675 e collegato a un ingresso digitale. Questo è stato aggiunto durante la progettazione del PCB. Ciò semplifica la pre-elaborazione dell'ingresso digitale. Nella mia applicazione, uno degli ingressi digitali è collegato al mio sistema di allarme. Se suona la sveglia, in casa mia si accendono alcune luci. L'inserimento e il disinserimento del mio sistema di allarme emette diversi bip sulla sirena. Usando il PIC 12F675, ora posso distinguere tra inserimento/disinserimento e un vero allarme. Il 12F675 è inoltre dotato di una presa di programmazione.

Ho anche previsto una porta I2C tramite pin/presa dell'intestazione. Questo tornerà utile in seguito con le schede relè.

La scheda contiene alcuni ponticelli, che dovrebbero essere saldati prima di montare gli zoccoli IC.

Passaggio 10: conclusione del codice di flusso

Conclusione sul codice di flusso
Conclusione sul codice di flusso
Conclusione sul codice di flusso
Conclusione sul codice di flusso
Conclusione sul codice di flusso
Conclusione sul codice di flusso

Dato che sono abituato a lavorare a livello di registro in assembly, a volte è stato difficile e frustrante utilizzare le macro dei componenti. Ciò era dovuto principalmente alla mia mancanza di conoscenza della struttura di programmazione di Flowcode. Gli unici posti in cui ho usato i blocchi C o ASM sono stati per attivare le uscite all'interno di una routine di interruzione e nella routine Do_KeyPressed per disabilitare/abilitare l'interruzione della tastiera. Il PIC viene anche posto in SLEEP utilizzando un blocco ASM, quando l'EEPROM o l'RTC non vengono trovati.

Gli aiuti sull'uso dei diversi comandi I²C sono stati tutti ottenuti all'interno dei file di aiuto di Flowcode. È necessario sapere esattamente come funzionano i diversi dispositivi I²C, prima che i comandi possano essere utilizzati con successo. La progettazione di un circuito richiede che il progettista disponga di tutti i fogli dati pertinenti disponibili. Questo non è un difetto di Flowcode.

Flowcode ha davvero resistito alla prova ed è altamente raccomandato per le persone che desiderano iniziare a lavorare con la gamma di microprocessori Microchip.

La programmazione e la configurazione del codice di flusso per il PIC sono state impostate come da immagini

Passaggio 11: scheda relè I2C opzionale

Scheda relè I2C opzionale
Scheda relè I2C opzionale
Scheda relè I2C opzionale
Scheda relè I2C opzionale
Scheda relè I2C opzionale
Scheda relè I2C opzionale

La scheda CPU dispone già di collegamenti header per 16 relè. Queste uscite sono transistor a collettore aperto tramite i due chip ULN2803. Questo può essere utilizzato per alimentare direttamente i relè.

Dopo i primi test del sistema, non mi sono piaciuti tutti i fili tra la scheda CPU e i relè. Poiché includevo una porta I2C sulla scheda CPU, ho deciso di progettare la scheda relè per la connessione alla porta I2C. Utilizzando un chip I/O Port Expander MCP23017 a 16 canali e un array di transistor ULN2803, ho ridotto le connessioni tra CPU e relè a 4 fili.

Poiché non potevo inserire 16 relè su un PCB da 80 x 100 mm, ho deciso di realizzare due schede. Ogni MCP23017 utilizza solo 8 delle sue 16 porte. La scheda 1 gestisce le 8 uscite e la scheda 2 le due uscite ausiliarie. L'unica differenza sulle schede sono gli indirizzi di ciascuna scheda. Questo è facilmente impostabile con un mini jumper. Ogni scheda dispone di connettori per fornire alimentazione e dati I2C all'altra scheda.

NOTA:

Se richiesto, il software prevede una sola scheda in grado di utilizzare tutte e 16 le porte. Tutti i dati del relè di uscita sono disponibili sulla prima scheda.

Poiché il circuito è opzionale e molto semplice, non ho creato uno schema. Se c'è abbastanza richiesta, posso aggiungerla in seguito.

Passaggio 12: collegamento RF opzionale

Collegamento RF opzionale
Collegamento RF opzionale
Collegamento RF opzionale
Collegamento RF opzionale
Collegamento RF opzionale
Collegamento RF opzionale

Dopo il completamento del progetto, mi sono presto reso conto che dovevo collegare molti cavi a 220 V CA al timer. Ho sviluppato un collegamento RF utilizzando moduli standard a 315MHz che permettevano di posizionare il timer all'interno di un armadio, e le schede relè all'interno del tetto, vicino a tutti i cablaggi a 220V.

Il collegamento utilizza un AtMega328P funzionante a 16MHz. Il software sia per il trasmettitore che per il ricevitore è lo stesso e la modalità è selezionata da un mini jumper.

Trasmettitore

Il trasmettitore viene semplicemente collegato alla porta I2C della CPU. Non è necessaria alcuna configurazione aggiuntiva, poiché l'AtMega328P ascolta gli stessi dati delle schede relè I2C.

I dati vengono aggiornati una volta al secondo sulla porta I2C e il trasmettitore invia queste informazioni tramite il collegamento RF. Se il trasmettitore non riceve i dati I2C per circa 30 secondi, il trasmettitore trasmetterà continuamente i dati per disattivare tutti i relè all'unità ricevente.

L'alimentazione al modulo trasmettitore può essere selezionata tra 12V e 5V con un mini ponticello sulla scheda PC. Sto alimentando il mio trasmettitore usando 12V.

Ricevitore

Il ricevitore ascolta i dati codificati dal trasmettitore e inserisce i dati su una porta I2C. La scheda relè si collega semplicemente a questa porta e funziona allo stesso modo in cui è stata collegata alla scheda CPU.

Se il ricevitore non riceve dati validi per 30 secondi, il ricevitore invierà continuamente dati sulla porta I2C per disattivare tutti i relè sulle schede relè.

Schematico

Un giorno, se ce ne sarà bisogno. Lo schizzo Arduino contiene tutte le informazioni necessarie per costruire il circuito senza uno schema elettrico.

Gamma

Nella mia installazione, il trasmettitore e il ricevitore sono a circa 10 metri di distanza. Il timer è all'interno di un armadio e l'unità relè in cima al soffitto.

Passaggio 13: prodotto finale

Prodotto finale
Prodotto finale
Prodotto finale
Prodotto finale
Prodotto finale
Prodotto finale

L'unità principale è stata inserita in una vecchia scatola di progetto. Contiene quanto segue:

- Trasformatore 220V/12V

- Scheda di alimentazione

- Scheda CPU

- Display LCD

- Tastiera

- Trasmettitore di collegamento RF

- Unità ricevitore remota domestica aggiuntiva per consentirmi di accendere/spegnere le luci tramite il telecomando

L'unità relè è composta da:

- Trasformatore 220V/12V

- Scheda di alimentazione

- Ricevitore di collegamento RF

- 2 schede relè I2C

Tutte le schede sono state progettate con le stesse dimensioni, rendendo facile impilarle una sopra l'altra con distanziali da 3 mm.

Consigliato: