Sommario:
- Passaggio 1: configurazione
- Passaggio 2: configurazione dei relè
- Passaggio 3: controllore di isteresi
- Passaggio 4: controller PID
- Passaggio 5: bus messaggi
- Passaggio 6: Libs
Video: Termostato basato su Arduino: 6 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:04
Questa volta costruiremo un termostato basato su Arduino, sensore di temperatura e relè. Puoi trovare su github
Passaggio 1: configurazione
L'intera configurazione è memorizzata in Config.h. È possibile modificare i PIN di controllo relè, lettura temperatura, soglie o temporizzazioni.
Passaggio 2: configurazione dei relè
Supponiamo di volere 3 relè:
- ID: 0, PIN: 1, setpoint di temperatura: 20
- ID:1, PIN: 10, Setpoint temperatura: 30
- ID: 2, PIN: 11, Setpoint temperatura: 40
Per prima cosa devi assicurarti che il PIN di tua scelta non sia già stato preso. Tutti i pin si trovano in Config.h, sono definiti da variabili che iniziano con DIG_PIN.
Devi modificare Config.he configurare PIN, soglie e quantità di relè. Ovviamente alcune proprietà esistono già, quindi devi solo modificarle.
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 statico int16_t RELAY_TEMP_SET_POINT_0 = 20;
const statico int16_t RELAY_TEMP_SET_POINT_1 = 30; const statico int16_t RELAY_TEMP_SET_POINT_2 = 40;
Ora dobbiamo impostare relè e controller, questo accade in 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
Passaggio 3: controllore di isteresi
È quello scelto nell'esempio sopra, ha poche configurazioni aggiuntive:
const static uint32_t RELAY_DELAY_AFTER_SWITCH_MS = 300000; // 5 minuticonst static uint32_t RHC_RELAY_MIN_SWITCH_MS = 3600000;
RELAY_DELAY_AFTER_SWITCH_MS fornisce il tempo di attesa per la commutazione del relè successivo. Immagina che la configurazione del nostro esempio inizi a funzionare in un ambiente di 40 gradi. Ciò comporterebbe l'abilitazione di tutti e tre i relè contemporaneamente. Ciò potrebbe eventualmente portare a un elevato consumo di energia: a seconda di cosa si sta controllando, il motore elettrico, ad esempio, consuma più energia durante l'avvio. Nel nostro caso la commutazione dei relè ha il seguente flusso: il primo relè si accende, aspetta 5 minuti, il secondo si accende, aspetta 5 minuti, il terzo si accende.
RHC_RELAY_MIN_SWITCH_MS definisce l'isteresi, è la frequenza minima per un particolare relè per cambiare il suo stato. Una volta acceso, rimarrà acceso almeno per questo periodo di tempo, ignorando i cambiamenti di temperatura. Questo è molto utile se stai controllando i motori elettrici, poiché ogni interruttore ha un impatto negativo sul tempo di vita.
Passaggio 4: controller PID
Questo è un argomento avanzato. L'implementazione di tale controller è un compito semplice, trovare le giuste impostazioni di ampiezza è una storia diversa.
Per utilizzare il controller PID devi cambiare initRelayHysteresisController(…..) in initRelayPiDController(….) e devi trovare le impostazioni giuste per questo. Come al solito li troverai in Config.h
Ho implementato un semplice simulatore in Java, in modo che sia possibile visualizzare i risultati. Si trova nella cartella: pidsimulator. Di seguito puoi vedere le simulazioni per due controller PID e P. Il PID non è perfettamente stabile perché non ho applicato alcun algoritmo sofisticato per trovare i valori corretti.
Su entrambi i grafici la temperatura richiesta è impostata su 30 (blu). La temperatura attuale indica la riga di lettura. Il relè ha due stati ON e OFF. Quando è abilitato la temperatura scende di 1,5, quando è disabilitato aumenta di 0,5.
Passaggio 5: bus messaggi
Diversi moduli software devono comunicare tra loro, si spera non in entrambi i modi;)
Per esempio:
- il modulo statistiche deve sapere quando un particolare relè si accende e si spegne,
- la pressione di un pulsante deve cambiare il contenuto del display e deve anche sospendere i servizi che consumerebbero molti cicli della CPU, ad esempio la lettura della temperatura dal sensore,
- dopo un po' di tempo occorre rinnovare la lettura della temperatura,
- e così via….
Ogni modulo è connesso al Message Bus e può registrarsi per eventi particolari, e può produrre qualsiasi evento (primo diagramma).
Sul secondo diagramma possiamo vedere il flusso degli eventi alla pressione del pulsante.
Alcuni componenti hanno alcune attività che devono essere eseguite periodicamente. Potremmo chiamare i loro metodi corrispondenti dal ciclo principale, poiché abbiamo Message Bus è solo necessario propagare l'evento giusto (terzo diagramma)
Passaggio 6: Libs
- https://github.com/maciejmiklas/Thermostat
- https://github.com/milesburton/Arduino-Temperature…
- https://github.com/maciejmiklas/ArdLog.git
Consigliato:
Termostato Ambiente - Arduino + Ethernet: 3 passaggi
Termostato Ambiente - Arduino + Ethernet: In termini di hardware, il progetto utilizza: Arduino Uno / Mega 2560 Schermo Ethernet Wiznet W5100 / Modulo Ethernet Wiznet W5200-W5500 Sensore di temperatura DS18B20 sul bus OneWire Relè SRD-5VDC-SL-C utilizzato per la caldaia commutazione
Telecomando IR automatico basato su Arduino basato sulla temperatura: 7 passaggi
Telecomando IR automatico basato su Arduino basato sulla temperatura: Ehi, come va, ragazzi! Akarsh qui da CETech. Stanco di svegliarti nel bel mezzo di un sonno profondo solo perché la temperatura della tua stanza è troppo bassa o troppo alta a causa del tuo stupido condizionatore. Allora questo progetto è per te. In questo progetto, faremo il nostro
Generatore musicale basato sulle condizioni meteorologiche (generatore MIDI basato su ESP8266): 4 passaggi (con immagini)
Generatore di musica basato sul tempo (Generatore MIDI basato su ESP8266): Ciao, oggi spiegherò come creare il tuo piccolo generatore di musica basato sul tempo. È basato su un ESP8266, che è un po' come un Arduino, e risponde alla temperatura, alla pioggia e l'intensità della luce. Non aspettarti che produca intere canzoni o programmi di accordi
Termostato Arduino Kombucha: 3 passaggi (con immagini)
Termostato Arduino Kombucha: Ho sempre amato Kombucha, ma in negozio è così costoso. A circa $ 4 per 12 once. non potevo permettermi di berlo quanto volevo. Ho cercato di creare il mio kombucha e mi sono reso conto che non era affatto difficile e non richiedeva
Servo termostato/regolatore Arduino HVAC: 5 passaggi (con immagini)
Servo termostato/regolatore Arduino HVAC: benvenuto nel mio istruttore "verde"! Ti mostrerò come utilizzare un Arduino, due servomotori, un sensore di temperatura e del metallo (o legno) per realizzare un termostato digitale per un'unità HVAC a parete. Secondo CB Richard Ellis (un grande vero