Cuprins:
- Pasul 1: Configurare
- Pasul 2: Configurarea releelor
- Pasul 3: Controler de histerezis
- Pasul 4: Controler PID
- Pasul 5: Autobuz de mesaje
- Pasul 6: Libs
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:45
De data aceasta vom construi un termostat bazat pe Arduino, senzor de temperatură și releu. Puteți găsi pe github
Pasul 1: Configurare
Întreaga configurație este stocată în Config.h. Puteți schimba codurile PIN care controlează releele, temperatura de citire, pragurile sau temporizările.
Pasul 2: Configurarea releelor
Să presupunem că am dori să avem 3 relee:
- ID: 0, PIN: 1, temperatura setată: 20
- ID: 1, PIN: 10, temperatura setată: 30
- ID: 2, PIN: 11, temperatura setată: 40
Mai întâi trebuie să vă asigurați că PIN-ul ales de dvs. nu este deja luat. Toți pinii pot fi găsiți în Config.h, sunt definiți de variabile care încep cu DIG_PIN.
Trebuie să editați Config.h și să configurați codurile PIN, pragurile și cantitatea de relee. Evident, unele proprietăți există deja, deci trebuie doar să le editați.
const static uint8_t DIG_PIN_RELAY_0 = 1; const static uint8_t DIG_PIN_RELAY_1 = 10; const static uint8_t DIG_PIN_RELAY_2 = 11;
const static uint8_t RELAYS_AMOUNT = 3;
const static int16_t RELAY_TEMP_SET_POINT_0 = 20;
const static int16_t RELAY_TEMP_SET_POINT_1 = 30; const static int16_t RELAY_TEMP_SET_POINT_2 = 40;
Acum trebuie să configurăm relee și controler, acest lucru se întâmplă în RelayDriver.cpp
initRelayHysteresisController (0, DIG_PIN_RELAY_0, RELAY_TEMP_SET_POINT_0); initRelayHysteresisController (1, DIG_PIN_RELAY_1, RELAY_TEMP_SET_POINT_1); initRelayHysteresisController (2, DIG_PIN_RELAY_2, RELAY_TEMP_SET_POINT_2);
xxx
Pasul 3: Controler de histerezis
Este cea aleasă în exemplul de mai sus, are puține configurații suplimentare:
const static uint32_t RELAY_DELAY_AFTER_SWITCH_MS = 300000; // 5 minuteesconst static uint32_t RHC_RELAY_MIN_SWITCH_MS = 3600000;
RELAY_DELAY_AFTER_SWITCH_MS oferă timp de așteptare pentru comutarea următorului releu. Imaginați-vă că configurația din exemplul nostru ar începe să funcționeze într-un mediu de 40 de grade. Acest lucru ar duce la activarea tuturor celor trei relee în același timp. Acest lucru ar putea duce în cele din urmă la un consum mare de energie - în funcție de ceea ce controlați, motorul electric, de exemplu, consumă mai multă putere în timpul pornirii. În cazul nostru, releele de comutare au următorul flux: primul releu merge, așteptați 5 minute, al doilea merge, așteptați 5 minute, al treilea merge.
RHC_RELAY_MIN_SWITCH_MS definește histerezisul, este frecvența minimă pentru un anumit releu pentru a-și schimba starea. Odată pornit, va rămâne aprins cel puțin această perioadă de timp, ignorând schimbările de temperatură. Acest lucru este liniștit util dacă controlați motoarele electrice, deoarece fiecare comutator are un impact negativ asupra timpului live.
Pasul 4: Controler PID
Acesta este un subiect avansat. Implementarea unui astfel de controler este o sarcină simplă, găsirea unor setări de amplitudine corecte este o poveste diferită.
Pentru a utiliza controlerul PID trebuie să schimbați initRelayHysteresisController (…..) în initRelayPiDController (….) și trebuie să găsiți setările corecte pentru acesta. Ca de obicei, le veți găsi în Config.h
Am implementat un simulator simplu în Java, astfel încât să fie posibil să vizualizez rezultatele. Poate fi găsit în folderul: pidsimulator. Mai jos puteți vedea simulări pentru două controlere PID un P. PID nu este perfect stabil deoarece nu am aplicat niciun algoritm sofisticat pentru a găsi valori corecte.
Pe ambele parcele temperatura necesară este setată la 30 (albastru). Temperatura actuală indică linia citită. Releul are două stări ON și OFF. Când este activată temperatura scade cu 1,5, când este dezactivată crește cu 0,5.
Pasul 5: Autobuz de mesaje
Diferite module software trebuie să comunice între ele, sperăm că nu în ambele sensuri;)
De exemplu:
- modulul de statistici trebuie să știe când un anumit releu pornește și se oprește,
- apăsarea unui buton trebuie să schimbe conținutul afișat și, de asemenea, trebuie să suspende serviciile care ar consuma multe cicluri de procesor, de exemplu citirea temperaturii de la senzor,
- după un timp, citirea temperaturii trebuie reînnoită,
- si asa mai departe….
Fiecare modul este conectat la Message Bus și se poate înregistra pentru anumite evenimente și poate produce orice evenimente (prima diagramă).
Pe a doua diagramă putem vedea fluxul evenimentelor apăsând butonul.
Unele componente au anumite sarcini decât trebuie executate periodic. Le-am putea apela metodele corespunzătoare din bucla principală, deoarece avem Autobuz de mesaje este necesar doar să propagăm evenimentul corect (a treia diagramă)
Pasul 6: Libs
- https://github.com/maciejmiklas/Termostat
- https://github.com/milesburton/Arduino-Temperature…
- https://github.com/maciejmiklas/ArdLog.git
Recomandat:
Simulator Arduino bazat pe web de la Wokwi-2020 ?: 5 pași
Web? Arduino Simulator bazat pe Wokwi-2020 ?: Wokwi Arduino Simulator rulează pe platforma AVR8js. Este un simulator Arduino bazat pe web. Simulatorul Arduino rulează pe browserul web. prin urmare, acest lucru atrage mai multă atenție și, sincer, are multe puncte pozitive în comparație cu alte simulatoare disponibile
Telefon bazat pe Arduino (prototip): 7 pași
Telefon bazat pe Arduino (prototip): Bună ziua tuturor, Astăzi, în acest instructiv, vom vedea despre telefonul bazat pe arduino. Acesta este telefonul este un prototip care este încă în curs de dezvoltare. Codul sursă este open source, oricine poate modifica codul. Caracteristici în telefon: 1. Muzică 2. Videoclipuri 3
Nivel de spirit digital bazat pe Arduino și MPU6050: 3 pași
Nivel de spirit digital bazat pe Arduino și MPU6050: Bine ați venit la primul meu instructiv! Sper că vi se pare informativ. Vă rugăm să nu ezitați să lăsați feedback pozitiv sau negativ. Acest proiect este de a crea un arduino & Nivel de spirit digital bazat pe MPU6050. În timp ce designul finit și
Controler de joc DIY bazat pe Arduino - Controler de joc Arduino PS2 - Jucând Tekken cu DIY Arduino Gamepad: 7 pași
Controler de joc DIY bazat pe Arduino | Controler de joc Arduino PS2 | Jucând Tekken cu DIY Arduino Gamepad: Bună, băieți, jocul este întotdeauna distractiv, dar jocul cu propriul controler personalizat DIY este mai distractiv
Generator de muzică bazat pe vreme (Generator Midi bazat pe ESP8266): 4 pași (cu imagini)
Generator de muzică bazat pe vreme (Generator midi bazat pe ESP8266): Bună, astăzi vă voi explica cum să vă creați propriul generator de muzică bazat pe vreme. Se bazează pe un ESP8266, care este un fel ca un Arduino și răspunde la temperatură, ploaie și intensitatea luminii. Nu vă așteptați să producă melodii întregi sau programe de acord