Cuprins:

Temporizator programabil pe 8 canale: 13 pași
Temporizator programabil pe 8 canale: 13 pași

Video: Temporizator programabil pe 8 canale: 13 pași

Video: Temporizator programabil pe 8 canale: 13 pași
Video: Home Automation: How to use 7 Program 0.1s to 9999 minutes Relay Timer XY-LJ02 2024, Iulie
Anonim
Temporizator programabil pe 8 canale
Temporizator programabil pe 8 canale
Temporizator programabil pe 8 canale
Temporizator programabil pe 8 canale
Temporizator programabil pe 8 canale
Temporizator programabil pe 8 canale

Introducere

Folosesc gama de microcontrolere PIC de la Microchip pentru proiectele mele din 1993 și mi-am făcut toată programarea în limbaj de asamblare, folosind IDE-ul Microchip MPLab. Proiectele mele au variat de la semafoare simple și LED-uri intermitente, până la interfețe cu joystick USB pentru modele R / C și analizoare de tablouri utilizate în industrie. Dezvoltarea a durat multe zile și, uneori, mii de linii de cod de asamblare.

După ce am primit Matrix Multimedia Flowcode 4 Professional, am fost destul de sceptic cu privire la software. Părea prea ușor de crezut. Am decis să încerc și am testat toate macrocomenzile componente, toate cu mare succes. Cea mai bună parte a utilizării Flowcode a fost că proiectele simple puteau fi codate într-o singură noapte. După ce m-am jucat cu I²C și un ceas DS1307 în timp real, am decis să proiectez temporizatorul cu 8 canale folosind Flowcode. Nefiind un proiect mic și ușor, am crezut că acesta ar fi un proiect minunat pentru a mă învăța pe mine Flowcode.

Selectarea unui microprocesor și a altor componente

Datorită numărului de pini I / O necesari, era clar că va fi nevoie de un dispozitiv cu 40 pini. PIC 18F4520 a fost ales, în principal pentru memoria de program de 32K și 1536 octeți de memorie de date. Toate componentele utilizate sunt dispozitive standard prin gaură, ceea ce face posibilă construirea circuitului pe placa Vero, dacă este necesar. Acest lucru a ajutat, de asemenea, la dezvoltarea pe o panou de testare.

Pasul 1: Obiectivele proiectului

Obiectivele proiectului
Obiectivele proiectului

Obiective

- Păstrarea precisă a timpului, cu baterie de rezervă.

- Toate programele și datele de păstrat, chiar și după pierderea de energie.

- Interfață de utilizator simplă.

- Flexibilitate de programare.

Păstrarea timpului

Locuind într-o zonă predispusă la întreruperi de curent, standardul de 50 / 60Hz de la liniile de alimentare nu va fi suficient pentru a menține timpul exact. Un ceas în timp real era esențial și, după ce am testat mai multe cipuri RTC, am decis DS1307 datorită configurării sale simple a oscilatorului și a bateriei. O păstrare a timpului destul de precisă a fost obținută folosind doar un cristal de 32,768 kHz conectat la DS1307. Precizia a fost în termen de 2 secunde pe o perioadă de încercare de 2 luni folosind 4 mărci diferite de cristale.

Păstrarea datelor

Toate datele programului cu temporizator trebuie păstrate, chiar și în cazul întreruperii alimentării. Cu până la 100 de programe diferite și diverse date de configurare, a devenit clar că cei 256 de octeți de EEPROM de la bordul PIC nu vor fi suficient de mari. O EEPROM 24LC256 I²C este utilizată pentru a stoca toate informațiile de programare.

Interfață de utilizator simplă

Interfața cu utilizatorul este formată din doar 2 articole, un ecran LCD de 16 x 4 linii cu lumină de fundal LED și o tastatură de 4 x 3. Toată programarea se poate face doar prin apăsarea a doar câteva butoane. Adăugările la interfață sunt un buzzer piezo-sonor și o lumină de fundal LCD intermitentă vizuală.

Pasul 2: flexibilitatea programării

Flexibilitate de programare
Flexibilitate de programare

Pentru a asigura suficientă flexibilitate a programului, cronometrul are 100 de programe care pot fi setate individual. Pentru fiecare program, pot fi setate timpul de pornire, timpul de oprire, canalele de ieșire și ziua săptămânii. Fiecare program are trei moduri:

- Automat: Timpul de pornire, timpul oprit, canalul de ieșire și ziua săptămânii sunt setate.

- Off: Programul individual poate fi dezactivat, fără a șterge setările. Pentru a activa programul din nou, pur și simplu selectați un alt mod.

- Ziua / Noaptea: este setată ora de pornire, ora oprită, canalul de ieșire și ziua săptămânii. Funcționează la fel ca modul Auto, dar va

porniți ieșirile numai între orele de pornire și oprire când este întuneric. Aceasta permite, de asemenea, controlul complet pe zi / noapte

ca flexibilitate suplimentară pentru a aprinde luminile la apusul soarelui și pentru a le stinge la răsărit.

Exemplul 1: Se va aprinde lumina după ora 20:00 și se va stinge la răsărit:

Pe: 20:00, Off: 12:00, Exemplul 2: Se va aprinde lumina la apus și se va stinge la 23:00.

Pe: 12:00

Off: 23:00

Exemplul 3: Se va aprinde lumina la apus și se va stinge la răsărit.

Pe: 12:01

Off: 12:00

Opțiuni suplimentare disponibile, toate funcționând independent de cele 100 de programe On / Off.

Canale de programe active: În loc să opriți mai multe programe, canalele de ieșire individuale pot fi dezactivate fără a fi nevoie să schimbați programele.

Intrări auxiliare: sunt disponibile două intrări digitale, pentru a permite activarea anumitor canale de ieșire pentru un anumit timp. Poate fi folosit, de exemplu, pentru a aprinde anumite lumini când ajungeți acasă noaptea târziu, când este apăsat un buton de pe telecomandă sau pentru a activa un alt număr de lumini atunci când este declanșată alarma casei.

Ieșiri auxiliare: sunt disponibile două ieșiri suplimentare (în afară de cele 8 canale de ieșire). Ele pot fi programate pentru a porni cu anumite canale de ieșire sau cu intrările digitale. În instalația mea, am ieșiri 6-8 care îmi controlează irigarea, care funcționează pe 24V. Folosesc canalele 6-8 pentru a porni una dintre ieșirile auxiliare, pentru a porni o sursă de alimentare de 24V pentru sistemul de irigare.

Manual On: Când se află în ecranul principal, butoanele 1-8 pot fi utilizate pentru a activa sau dezactiva manual canalele.

Pasul 3: Hardware

Hardware
Hardware

Sursa de alimentare: Sursa de alimentare constă dintr-un redresor, condensator de netezire și o siguranță de 1 Amp pentru protecția la suprasarcină. Această alimentare este apoi reglementată de un regulator 7812 și 7805. Alimentarea de 12V este utilizată pentru acționarea releelor de ieșire, iar toate celelalte circuite sunt alimentate de la alimentarea de 5V. Deoarece regulatorul 7805 este conectat la ieșirea regulatorului 7812, curentul total trebuie să fie limitat la 1 amp prin regulatorul 7812. Este recomandabil să montați aceste regulatoare pe un radiator adecvat.

I²C Bus: Deși Flowcode permite controlul hardware I²C, am decis să folosesc configurația software I²C. Acest lucru permite o mai mare flexibilitate în atribuirea pinilor. Deși este mai lent (50 kHz), acesta funcționează în continuare excelent în comparație cu magistrala I²C hardware. Atât DS1307, cât și 24LC256 sunt conectate la această magistrală I²C.

Ceas în timp real (DS1307): În timpul pornirii, registrul RTC 0 și 7 este citit pentru a determina dacă conține date valide de timp și de configurare. Odată ce setarea este corectă, timpul RTC este citit și timpul încărcat în PIC. Aceasta este singura dată când timpul este citit de la RTC. După pornire, un impuls de 1Hz va fi prezent pe pinul 7 al RTC. Acest semnal de 1Hz este conectat la RB0 / INT0 și, printr-o rutină de service de întrerupere, timpul PIC este actualizat în fiecare secundă.

EEPROM externă: Toate datele și opțiunile programului sunt stocate pe EEPROM externă. Datele EEPROM sunt încărcate la pornire și o copie a datelor este stocată în memoria PIC. Datele EEPROM sunt actualizate numai atunci când sunt modificate setările programului.

Senzor zi / noapte: un senzor standard dependent de lumină (LDR) este utilizat ca senzor zi / noapte. Deoarece LDR-urile au multe forme și varietăți, toate cu valori de rezistență diferite în aceleași condiții de lumină, am folosit un canal de intrare analogic pentru a citi nivelul de lumină. Nivelurile de zi, precum și de noapte sunt reglabile și permit o anumită flexibilitate pentru diferiți senzori. Pentru a configura o histerezis, se pot seta valori individuale pentru Ziua și Noaptea. Starea se va schimba numai dacă nivelul de lumină este sub Ziua sau peste punctele setate Noapte, pentru mai mult de 60 de secunde.

Afișaj LCD: este utilizat un afișaj cu 4 linii, 16 caractere, deoarece toate datele nu au putut fi afișate pe un afișaj cu 2 linii. Proiectul include câteva caractere personalizate, care sunt definite în macro-ul LCD_Custom_Char.

Intrări auxiliare: Ambele intrări sunt tamponate cu un tranzistor NPN. + 12v și 0V sunt, de asemenea, disponibile pe conector, permițând conexiuni mai flexibile la conexiunile externe. De exemplu, un receptor de telecomandă poate fi conectat la sursă.

Ieșiri: Toate ieșirile sunt izolate electric de circuit prin intermediul unui releu de 12V. Releele utilizate sunt nominalizate pentru 250V AC, la 10 amperi. Contactele normal deschise și închise în mod normal sunt scoase la terminale.

Tastatura: Tastatura utilizată este o tastatură matricială 3 x 4 și este conectată PORTB: 2..7.

Pasul 4: întreruperile tastaturii

Întreruperea tastaturii
Întreruperea tastaturii
Întreruperea tastaturii
Întreruperea tastaturii
Întreruperea tastaturii
Întreruperea tastaturii

Am vrut să folosesc întreruperea PORTB la întreruperea schimbării la orice apăsare de tastă. Pentru aceasta, a trebuit creată o întrerupere personalizată în Flowcode, pentru a se asigura că direcția și datele PORTB sunt configurate corect înainte și după fiecare întrerupere a tastaturii. O întrerupere este generată de fiecare dată când un buton este apăsat sau eliberat. Rutina de întrerupere răspunde numai atunci când este apăsată o tastă.

INTERRUPȚIE PERSONALIZATĂ

Activați codul

portb = 0b00001110; trisb = 0b11110001;

intcon. RBIE = 1;

intcon2. RBIP = 1;

intcon2. RBPU = 1;

rcon. IPEN = 0;

Codul de manipulare

if (intcon & (1 << RBIF))

{FCM_% n ();

portb = 0b00001110;

trisb = 0b11110001;

wreg = portb;

clear_bit (intcon, RBIF);

}

Probleme găsite

În timpul unei întreruperi, rutina serviciului de întrerupere trebuie să apeleze în nici o condiție la orice altă macro care ar putea fi utilizată undeva în restul programului. Acest lucru va duce în cele din urmă la probleme de depășire a stivei, deoarece întreruperea poate apărea în același timp în care programul principal este, de asemenea, în același subrutină. Aceasta este, de asemenea, identificată ca o EROARE GRAVĂ de către Flowcode atunci când codul este compilat.

În codul personalizat al tastaturii de sub GetKeyPadNumber, există un astfel de apel către macro-ul Delay_us, ceea ce va provoca o revărsare a stivei. Pentru a depăși acest lucru, am eliminat comanda Delay_us (10) și am înlocuit-o cu 25 de linii de „wreg = porta;” comenzi. Această comandă citește PORTA și își plasează valoarea în registrul W, doar pentru a obține o anumită întârziere. Această comandă va fi compilată într-o singură instrucțiune similară cu asamblorul movf porta, 0. Pentru ceasul de 10 MHz utilizat în proiect, fiecare instrucțiune va fi de 400ns, iar pentru a obține o întârziere de 10us, aveam nevoie de 25 dintre aceste instrucțiuni.

Notă pe a doua linie din Figura 3: Cod personalizat GetKeypadNumber, că comanda originală delay_us (10) a fost dezactivată cu „//”. Mai jos, am adăugat cele 25 de „wreg = porta;” comenzi pentru a obține o nouă întârziere de 10us. Fără apeluri către nicio macrocomandă din codul personalizat Keypad_ReadKeypadNumber, macrocomanda Keypad poate fi utilizată acum în cadrul unei rutine de servicii de întrerupere.

Trebuie remarcat faptul că componentele Flowcode Keypad și eBlocks nu utilizează rezistențe standard de tragere pe liniile de intrare. În schimb, folosește rezistențe pull-down de 100K. Datorită unor interferențe găsite pe tastatură în timpul dezvoltării, rezistențele de 100K au fost înlocuite cu 10K și toate rezistențele de 10K au fost înlocuite cu 1K5. Tastatura a fost testată pentru a funcționa corect cu cabluri de 200 mm.

Pasul 5: Utilizarea temporizatorului

Folosind cronometrul
Folosind cronometrul
Folosind cronometrul
Folosind cronometrul
Folosind cronometrul
Folosind cronometrul

Toate ecranele sunt configurate pentru a indica toate informațiile necesare pentru ca utilizatorul să facă modificări rapide la setări. Linia 4 este utilizată pentru a ajuta la navigarea prin meniuri și opțiuni de program. Un total de 22 de ecrane sunt disponibile în timpul funcționării normale.

LINIA 1: Timp și stare

Afișează ziua și ora curentă, urmate de pictograme de stare:

A - Indică faptul că intrarea auxiliară A a fost declanșată și că temporizatorul de intrare A funcționează.

B - Indică faptul că intrarea Aux B a fost declanșată și că temporizatorul de intrare Aux B este în funcțiune.

C - Indică faptul că ieșirea Aux C este activată.

D - Indică faptul că ieșirea Aux D este activată.

} - Starea senzorului zi / noapte. Dacă este prezent, indică faptul că este noapte.

LINIA 2: Ieșiri de program

Afișează canalele care au fost activate de diferite programe. Canalele sunt afișate în numerele lor de ieșire, iar un „-“indică faptul că ieșirea specifică nu este pornită. Canalele care au fost dezactivate în „Program Outputs Active” vor fi în continuare indicate aici, dar ieșirile reale nu vor fi setate.

LINIA 3: Iesiri reale

Afișează ce canale sunt activate de diferite programe, intrări auxiliare A & B sau ieșiri manuale setate de utilizator. Apăsând 0, toate ieșirile activate manual vor fi dezactivate și vor reseta temporizatoarele de ieșire Aux și A.

LINIA 4: Opțiuni de meniu și tastă (pe toate meniurile)

Indică funcția tastelor „*” și „#”.

Partea centrală indică ce taste numerice (0-9) sunt active pentru ecranul selectat.

Starea de intrare a intrării auxiliare A & B este, de asemenea, afișată prin intermediul unei pictograme de comutare deschisă sau închisă.

Ieșirile pot fi pornite / oprite manual apăsând tasta corespunzătoare de pe tastatură.

De-a lungul meniurilor, tastele Star și Hash sunt utilizate pentru a naviga prin diferitele opțiuni ale programului. Tastele 0-9 sunt folosite pentru a seta opțiunile. În cazul în care sunt disponibile mai multe opțiuni pe un singur ecran sau meniu de programare, tasta Hash este utilizată pentru a parcurge diferitele opțiuni. Opțiunea curentă selectată va fi întotdeauna indicată de caracterul „>” din stânga ecranului.

0-9 Introduceți valorile timpului

1-8 Schimbați selecția canalului

14 36 Pas prin programe, 1 pas înapoi, 4 pași înapoi 10 programe, 3 pași înainte, 6 pași înainte 10

programe

1-7 Setează zile din săptămână. 1 = duminică, 2 = luni, 3 = marți, 4 = miercuri, 5 = joi, 6 = vineri, 7 = sâmbătă

0 În ecranul principal, ștergeți toate modificările manuale și temporizatoarele de intrare A și de intrare B. În alte meniuri, modificări

opțiunile selectate

# În ecranul principal, va dezactiva toate modificările manuale, cronometrele de intrare A și de intrare B și ieșirile de program, până

următorul eveniment.

* și 1 Reporniți temporizatorul

* și 2 Ștergeți toate programele și opțiunile, restaurați setările la valorile implicite.

* și 3 Puneți temporizatorul în standby. Pentru a porni din nou cronometrul, apăsați orice tastă.

În timpul introducerilor incorecte ale oricărei valori de timp, lumina de fundal LCD va clipi de 5 ori pentru a indica o eroare. În același timp, buzzerul va suna. Comenzile Exit și Next vor funcționa numai atunci când intrarea curentă este corectă.

Lumina de fundal LCD

La pornirea inițială, lumina de fundal LCD va fi aprinsă timp de 3 minute, cu excepția cazului în care:

- Există o eroare hardware (EEPROM sau RTC nu au fost găsite)

- Ora nu este setată în RTC

Lumina de fundal LCD se va aprinde din nou timp de 3 minute la orice intrare de utilizator de pe tastatură. Dacă lumina de fundal LCD este oprită, orice comandă de pe tastatură va porni mai întâi lumina de fundal LCD și va ignora tasta care a fost apăsată. Acest lucru asigură faptul că utilizatorul va putea citi afișajul LCD înainte de a utiliza tastatura. Lumina de fundal LCD va fi, de asemenea, pornită timp de 5 secunde dacă intrarea auxiliară A sau intrarea auxiliară B este activată.

Pasul 6: Meniu Capturi de ecran

Capturi de ecran din meniu
Capturi de ecran din meniu
Capturi de ecran din meniu
Capturi de ecran din meniu
Capturi de ecran din meniu
Capturi de ecran din meniu

Folosind tastatura, fiecare dintre opțiuni poate fi programată cu ușurință. Imaginile oferă câteva informații despre ceea ce face fiecare ecran.

Pasul 7: Proiectarea sistemului

Proiectarea sistemului
Proiectarea sistemului

Toată dezvoltarea și testarea s-au făcut pe panou de testare. Privind toate secțiunile sistemului, am descompus sistemul în trei module. Această decizie s-a datorat în principal limitărilor dimensiunii PCB (80 x 100mm) ale versiunii gratuite a Eagle.

Modulul 1 - Alimentare

Modulul 2 - placa CPU

Modulul 3 - Placă de releu

Am decis că toate componentele trebuie să fie ușor de obținut și că nu doresc să folosesc componente de montare la suprafață.

Să trecem prin fiecare dintre ele.

Pasul 8: Alimentare

Alimentare electrică
Alimentare electrică
Alimentare electrică
Alimentare electrică
Alimentare electrică
Alimentare electrică
Alimentare electrică
Alimentare electrică

Sursa de alimentare este directă și alimentează plăcile CPU și releu cu 12V și 5V.

Am montat regulatoarele de tensiune pe radiatoare decente și am folosit și condensatoare supraevaluate pentru alimentare.

Pasul 9: placa CPU

Placă CPU
Placă CPU
Placă CPU
Placă CPU
Placă CPU
Placă CPU
Placă CPU
Placă CPU

Toate componentele, cu excepția ecranului LCD, tastaturii și releelor, sunt montate pe placa CPU.

S-au adăugat blocuri de borne pentru a simplifica conexiunile dintre sursă, două intrări digitale și senzorul de lumină.

Pinii / prizele antetului asigură conexiuni ușoare la ecranul LCD și tastatură.

Pentru ieșirile la relee, am folosit ULN2803. Conține deja toate rezistențele de conducere necesare și diodele flyback. Acest lucru a asigurat că placa CPU poate fi realizată în continuare utilizând versiunea gratuită a Eagle. Releele sunt conectate la cele două ULN2803. ULN2803 inferior este utilizat pentru cele 8 ieșiri, iar ULN2803 superior pentru cele două ieșiri auxiliare. Fiecare ieșire auxiliară are patru tranzistoare. Conexiunile la relee sunt, de asemenea, prin știfturi / prize de antet.

PIC 18F4520 a fost echipat cu o priză de programare, pentru a permite o programare ușoară prin intermediul programatorului PicKit 3.

NOTĂ:

Veți observa că placa conține un IC suplimentar cu 8 pini. IC de sus este un PIC 12F675 și este conectat la o intrare digitală. Acest lucru a fost adăugat în timpul proiectării PCB. Acest lucru face mai ușoară pre-procesarea intrării digitale. În aplicația mea, una dintre intrările digitale este conectată la sistemul meu de alarmă. Dacă sună alarma, anumite lumini sunt aprinse în casa mea. Înarmarea și dezarmarea sistemului meu de alarmă dă bipuri diferite la sirena. Prin utilizarea PIC 12F675, pot distinge acum între armare / dezarmare și o alarmă reală. 12F675 este, de asemenea, echipat cu o priză de programare.

De asemenea, am prevăzut un port I2C prin pin / soclu antet. Acest lucru va fi util mai târziu cu plăcile de releu.

Placa conține câteva jumperi, care ar trebui lipite înainte de montarea prizelor IC.

Pasul 10: Concluzia Flowcode

Concluzia Flowcode
Concluzia Flowcode
Concluzia Flowcode
Concluzia Flowcode
Concluzia Flowcode
Concluzia Flowcode

Deoarece obișnuiesc să lucrez la nivel de registru în asamblare, uneori a fost dificil și frustrant să folosesc macro-urile componente. Acest lucru s-a datorat în principal lipsei mele de cunoștințe despre structura de programare Flowcode. Singurele locuri în care am folosit blocurile C sau ASM a fost să pornesc ieșirile într-o rutină de întrerupere, iar în rutina Do_KeyPressed să dezactivăm / să activăm întreruperea tastaturii. PIC este plasat și în SLEEP folosind un bloc ASM, atunci când EEPROM sau RTC nu sunt găsite.

Ajutor pentru utilizarea diferitelor comenzi I²C, au fost obținute din fișierele de ajutor Flowcode. Este necesar să știți exact cum funcționează diferitele dispozitive I²C, înainte ca comenzile să poată fi utilizate cu succes. Proiectarea unui circuit necesită ca proiectantul să aibă la dispoziție toate fișele tehnice relevante. Acesta nu este un neajuns al Flowcode-ului.

Flowcode a rezistat cu adevărat testului și este foarte recomandat persoanelor care doresc să înceapă să lucreze cu gama de microprocesoare Microchip.

Programarea și configurarea Flowcode-ului pentru PIC au fost setate conform imaginilor

Pasul 11: Placă de releu I2C opțională

Placă de releu I2C opțională
Placă de releu I2C opțională
Placă de releu I2C opțională
Placă de releu I2C opțională
Placă de releu I2C opțională
Placă de releu I2C opțională

Placa CPU are deja conexiuni antet pentru 16 relee. Aceste ieșiri sunt tranzistori cu colector deschis prin intermediul celor două cipuri ULN2803, care pot fi utilizate pentru alimentarea directă a releelor.

După primele teste ale sistemului, nu mi-au plăcut toate firele dintre placa CPU și relee. Deoarece am inclus un port I2C pe placa CPU, am decis să proiectez placa releu pentru a mă conecta la portul I2C. Folosind un chip MCP23017 I / O Port Expander și un array de tranzistori ULN2803, am redus conexiunile dintre CPU și relee la 4 fire.

Deoarece nu puteam monta 16 relee pe un PCB de 80 x 100mm, am decis să fac două plăci. Fiecare MCP23017 folosește doar 8 dintre cele 16 porturi. Placa 1 gestionează cele 8 ieșiri, iar placa 2 cele două ieșiri auxiliare. Singura diferență pe tablouri este adresa fiecărei plăci. Acest lucru este setat cu ușurință cu un mini jumper. Fiecare placă are conectori pentru a furniza date I2C de energie și cealaltă placă.

NOTĂ:

Dacă este necesar, software-ul prevede o singură placă care poate utiliza toate cele 16 porturi. Toate datele de releu de ieșire sunt disponibile pe prima placă.

Deoarece circuitul este opțional și foarte simplu, nu am creat o schemă. Dacă există o cerere suficientă, o pot adăuga mai târziu.

Pasul 12: Link RF opțional

Link RF opțional
Link RF opțional
Link RF opțional
Link RF opțional
Link RF opțional
Link RF opțional

După finalizarea proiectului, mi-am dat seama curând că trebuie să trag o mulțime de cabluri de curent alternativ de 220V la cronometru. Am dezvoltat o legătură RF folosind module standard de 315 MHz care permiteau temporizatorul să fie plasat în interiorul unui dulap și plăcile de relee din interiorul acoperișului, aproape de toate cablurile de 220V.

Link-ul folosește un AtMega328P care rulează la 16 MHz. Software-ul pentru emițător și receptor este același, iar modul este selectat de un mini jumper.

Transmiţător

Transmițătorul este pur și simplu conectat la portul CPU I2C. Nu este necesară nicio configurare suplimentară, deoarece AtMega328P ascultă aceleași date ca plăcile de releu I2C.

Datele sunt actualizate o dată pe secundă pe portul I2C, iar emițătorul trimite aceste informații prin legătura RF. În cazul în care transmițătorul nu primește date I2C timp de aproximativ 30 de secunde, transmițătorul va transmite continuu date pentru a opri toate relele către unitatea receptor.

Puterea modulului transmițător poate fi selectată între 12V și 5V cu un mini jumper pe placa PC. Alimentez transmițătorul folosind 12V.

Receptor

Receptorul ascultă datele codate de la transmițător și plasează datele pe un port I2C. Placa de releu se conectează pur și simplu la acest port și funcționează la fel cum a fost conectată la placa CPU.

În cazul în care receptorul nu primește date valabile timp de 30 de secunde, receptorul va trimite în mod continuu date pe portul I2C pentru a opri toate relele de pe plăcile de relee.

Scheme

Într-o zi, dacă există o cerere pentru aceasta. Schița Arduino conține toate informațiile necesare pentru a construi circuitul fără o diagramă a circuitului.

Gamă

În instalația mea, emițătorul și receptorul sunt la aproximativ 10 metri distanță. Cronometrul se află în interiorul unui dulap, iar unitatea de releu de deasupra tavanului.

Pasul 13: Produsul final

Produs final
Produs final
Produs final
Produs final
Produs final
Produs final

Unitatea principală a fost montată într-o cutie de proiect veche. Conține următoarele:

- Transformator 220V / 12V

- Placă de alimentare

- Placă CPU

- Ecran LCD

- Tastatura

- Transmițător de legături RF

- Unitate suplimentară de recepție la distanță pentru acasă pentru a-mi permite să aprind / opri luminile prin telecomandă

Unitatea de releu constă din următoarele:

- Transformator 220V / 12V

- Placă de alimentare

- Receptor RF Link

- 2 x plăci de releu I2C

Toate plăcile au fost proiectate cu aceeași dimensiune, ceea ce face mai ușor stivuirea lor una peste alta cu distanțiere de 3 mm.

Recomandat: