Taula de continguts:
- Pas 1: configuració
- Pas 2: Configuració de relés
- Pas 3: controlador de la histèresi
- Pas 4: controlador PID
- Pas 5: Bus de missatges
- Pas 6: Libs
Vídeo: Termòstat basat en Arduino: 6 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:15
Aquesta vegada construirem un termòstat basat en Arduino, sensor de temperatura i relé. Podeu trobar-lo a github
Pas 1: configuració
La configuració completa s’emmagatzema a Config.h. Podeu canviar els PIN que controlen els relés, la temperatura de lectura, els llindars o els temps.
Pas 2: Configuració de relés
Suposem que ens agradaria tenir 3 relés:
- Identificador: 0, PIN: 1, temperatura nominal: 20
- Identificador: 1, PIN: 10, temperatura nominal: 30
- ID: 2, PIN: 11, temperatura nominal: 40
Primer heu d'assegurar-vos que el PIN que trieu no estigui ja pres. Tots els pins es poden trobar a Config.h, estan definits per variables que comencen per DIG_PIN.
Heu d’editar Config.h i configurar PIN, llindars i quantitat de relés. Viouslybviament, algunes propietats ja existeixen, de manera que només cal que les editeu.
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;
Ara hem de configurar els relés i el controlador, això passa a 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
Pas 3: controlador de la histèresi
És l’escollit a l’exemple anterior, té poques configuracions addicionals:
const static uint32_t RELAY_DELAY_AFTER_SWITCH_MS = 300000; // 5 minutesconst static uint32_t RHC_RELAY_MIN_SWITCH_MS = 3600000;
RELAY_DELAY_AFTER_SWITCH_MS dóna temps d'espera per canviar el següent relé. Imagineu que la configuració del nostre exemple començaria a funcionar en un entorn de 40 graus. Això resultaria en habilitar els tres relés al mateix temps. Això podria acabar provocant un elevat consum d’energia: segons el que controleu, per exemple, el motor elèctric consumeix més energia durant l’arrencada. En el nostre cas, el canvi de relés té el següent flux: el primer relé va, espereu 5 minuts, el segon continua, espereu 5 minuts, el tercer continua.
RHC_RELAY_MIN_SWITCH_MS defineix la histèresi, és la freqüència mínima perquè un relé concret canviï el seu estat. Un cop activat, romandrà encès durant aquest període de temps com a mínim, ignorant els canvis de temperatura. Això és útil si controles els motors elèctrics, ja que cada interruptor té un impacte negatiu en el temps en directe.
Pas 4: controlador PID
Aquest és un tema avançat. Implementar aquest controlador és una tasca senzilla, trobar una configuració d’amplitud adequada és una història diferent.
Per utilitzar el controlador PID, heu de canviar initRelayHysteresisController (…..) a initRelayPiDController (…) i heu de trobar la configuració adequada per a ell. Com és habitual, els trobareu a Config.h
He implementat un simulador senzill a Java, de manera que és possible visualitzar els resultats. Es pot trobar a la carpeta: pidsimulator. A continuació podeu veure simulacions per a dos controladors PID, un P. PID no és perfectament estable perquè no he aplicat cap algorisme sofisticat per trobar valors adequats.
A les dues parcel·les, la temperatura necessària s'estableix en 30 (blava). La temperatura actual indica la línia de lectura. El relé té dos estats ON i OFF. Quan està habilitat, la temperatura baixa 1,5 i, quan està desactivada, augmenta 0,5.
Pas 5: Bus de missatges
Diferents mòduls de programari han de comunicar-se entre ells, esperem que no siguin les dues maneres;)
Per exemple:
- el mòdul d'estadístiques ha de saber quan s'activa i s'apaga un relé concret,
- prement un botó ha de canviar el contingut de la pantalla i també ha de suspendre els serveis que consumeixen molts cicles de CPU, per exemple, la lectura de temperatura del sensor,
- després d'un temps s'ha de renovar la lectura de la temperatura,
- etcètera….
Tots els mòduls estan connectats al Message Bus i es poden registrar per a esdeveniments concrets i poden produir qualsevol esdeveniment (primer diagrama).
Al segon diagrama podem veure el flux d'esdeveniments prement el botó.
Alguns components tenen algunes tasques de les que cal executar periòdicament. Podríem trucar als seus mètodes corresponents des del bucle principal, ja que tenim Message Bus només és necessari propagar l’esdeveniment correcte (tercer diagrama)
Pas 6: Libs
- https://github.com/maciejmiklas/Termostat
- https://github.com/milesburton/Arduino-Temperature…
- https://github.com/maciejmiklas/ArdLog.git
Recomanat:
Simulador Arduino basat en web a partir de Wokwi-2020 ?: 5 passos
Simulador d'Arduino basat en web a partir de Wokwi-2020 ?: Wokwi Arduino Simulator s'executa a la plataforma AVR8js. És un simulador Arduino basat en web. Arduino Simulator s’executa al navegador web. per tant, això està cridant més l'atenció i, sincerament, té molts punts positius en comparació amb altres simuladors disponibles
Control remot basat en el navegador Arduino (Linux): 9 passos (amb imatges)
Control remot basat en el navegador Arduino (Linux): tenim fills. M’encanten a trossos, però segueixen ocultant el comandament a distància del satèl·lit i del televisor quan posen els canals infantils. Després d’això diàriament durant diversos anys, i després que la meva estimada dona em permetés tenir un
Controlador de jocs DIY basat en Arduino - Controlador de jocs Arduino PS2 - Jugar a Tekken amb el bricolatge Arduino Gamepad: 7 passos
Controlador de jocs DIY basat en Arduino | Controlador de jocs Arduino PS2 | Jugar a Tekken amb el bricolatge Arduino Gamepad: Hola nois, jugar sempre és divertit, però jugar amb el vostre propi controlador de jocs de bricolatge és més divertit
Termòmetre infraroig sense contacte basat en Arduino - Termòmetre basat en IR mitjançant Arduino: 4 passos
Termòmetre infraroig sense contacte basat en Arduino | Termòmetre basat en IR que utilitza Arduino: Hola nois, en aquest instructable farem un termòmetre sense contacte amb arduino, ja que de vegades la temperatura del líquid / sòlid és massa alta o baixa a la temperatura i és difícil fer-hi contacte i llegir-ne temperatura llavors en aquell escenari
Generador de música basat en el temps (generador de midi basat en ESP8266): 4 passos (amb imatges)
Generador de música basat en el temps (generador de midi basat en ESP8266): Hola, avui explicaré com fer el vostre propi generador de música basat en el temps. Es basa en un ESP8266, que és com un Arduino, i respon a la temperatura, a la pluja i intensitat lumínica. No espereu que faci cançons senceres o progrés d’acords