Inhoudsopgave:
- Stap 1: Configuratie
- Stap 2: Relais configureren
- Stap 3: Hysterese-controller
- Stap 4: PID-controller
- Stap 5: Berichtenbus
- Stap 6: Libs
Video: Thermostaat gebaseerd op Arduino: 6 stappen
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:18
Deze keer gaan we een thermostaat bouwen op basis van Arduino, temperatuursensor en relais. Je kunt vinden op github
Stap 1: Configuratie
De hele configuratie wordt opgeslagen in Config.h. U kunt pincodes wijzigen die relais, temperatuurmetingen, drempels of timings regelen.
Stap 2: Relais configureren
Laten we aannemen dat we 3 relais willen hebben:
- ID:0, PIN: 1, Temperatuurinstelpunt: 20
- ID:1, PIN: 10, Temperatuurinstelpunt: 30
- ID:2, PIN: 11, Temperatuurinstelpunt: 40
Eerst moet u ervoor zorgen dat de pincode van uw keuze niet al in gebruik is. Alle pinnen zijn te vinden in Config.h, ze worden gedefinieerd door variabelen die beginnen met DIG_PIN.
U moet Config.h bewerken en pincodes, drempels en het aantal relais configureren. Het is duidelijk dat sommige eigenschappen al bestaan, dus je hoeft ze alleen maar te bewerken.
const static uint8_t DIG_PIN_RELAY_0 = 1;const static uint8_t DIG_PIN_RELAY_1 = 10; const statisch uint8_t DIG_PIN_RELAY_2 = 11;
const statisch uint8_t RELAYS_AMOUNT = 3;
const statisch int16_t RELAY_TEMP_SET_POINT_0 = 20;
const statisch int16_t RELAY_TEMP_SET_POINT_1 = 30; const statisch int16_t RELAY_TEMP_SET_POINT_2 = 40;
Nu moeten we relais en controller instellen, dit gebeurt 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
Stap 3: Hysterese-controller
Het is degene die in het bovenstaande voorbeeld is gekozen, het heeft enkele extra configuraties:
const statisch uint32_t RELAY_DELAY_AFTER_SWITCH_MS = 300000; // 5 minutenconst statisch uint32_t RHC_RELAY_MIN_SWITCH_MS = 3600000;
RELAY_DELAY_AFTER_SWITCH_MS geeft wachttijd voor het schakelen van het volgende relais. Stel je voor dat de configuratie uit ons voorbeeld zou gaan werken in een omgeving van 40 graden. Dit zou ertoe leiden dat alle drie de relais tegelijkertijd worden ingeschakeld. Dit kan uiteindelijk leiden tot een hoog stroomverbruik - afhankelijk van wat u regelt, verbruikt een elektrische motor bijvoorbeeld meer stroom tijdens het starten. In ons geval heeft het schakelen van relais de volgende stroom: eerste relais gaat, wacht 5 minuten, tweede gaat aan, wacht 5 minuten, derde gaat aan.
RHC_RELAY_MIN_SWITCH_MS definieert hysteresis, het is de minimumfrequentie voor een bepaald relais om zijn status te veranderen. Als het eenmaal is ingeschakeld, blijft het gedurende ten minste deze periode aan, waarbij temperatuurveranderingen worden genegeerd. Dit is erg handig als u elektromotoren bedient, aangezien elke schakelaar een negatieve invloed heeft op de live-tijd.
Stap 4: PID-controller
Dit is een geavanceerd onderwerp. Het implementeren van een dergelijke controller is een eenvoudige taak, het vinden van de juiste amplitude-instellingen is een ander verhaal.
Om de PID-controller te gebruiken, moet u initRelayHysteresisController(…..) wijzigen in initRelayPiDController(….) en moet u de juiste instellingen ervoor vinden. Zoals gewoonlijk vind je ze in Config.h
Ik heb een eenvoudige simulator in Java geïmplementeerd, zodat het mogelijk is om de resultaten te visualiseren. Het is te vinden in de map: pidsimulator. Hieronder zie je simulaties voor twee controllers PID a P. PID is niet perfect stabiel omdat ik geen geavanceerd algoritme heb toegepast om de juiste waarden te vinden.
Op beide plots is de gewenste temperatuur ingesteld op 30 (blauw). De huidige temperatuur geeft de leesregel aan. Relais heeft twee standen AAN en UIT. Als het is ingeschakeld, daalt de temperatuur met 1,5, als het is uitgeschakeld, stijgt het met 0,5.
Stap 5: Berichtenbus
Verschillende softwaremodules moeten met elkaar communiceren, hopelijk niet in beide richtingen;)
Bijvoorbeeld:
- statistiekmodule moet weten wanneer een bepaald relais aan en uit gaat,
- door op een knop te drukken, moet de weergave-inhoud worden gewijzigd en moeten ook services worden onderbroken die veel CPU-cycli zouden verbruiken, bijvoorbeeld temperatuurmeting van een sensor,
- na enige tijd moet de temperatuurmeting worden vernieuwd,
- enzovoort….
Elke module is aangesloten op Message Bus en kan zich registreren voor bepaalde gebeurtenissen en kan elke gebeurtenis produceren (eerste diagram).
Op het tweede diagram kunnen we de gebeurtenisstroom zien door op de knop te drukken.
Sommige componenten hebben taken die periodiek moeten worden uitgevoerd. We zouden hun corresponderende methoden vanuit de hoofdlus kunnen aanroepen, aangezien we Message Bus hebben, het is alleen nodig om de juiste gebeurtenis te propageren (derde diagram)
Stap 6: Libs
- https://github.com/maciejmiklas/Thermostaat
- https://github.com/milesburton/Arduino-Temperature…
- https://github.com/maciejmiklas/ArdLog.git
Aanbevolen:
Smart Home-thermostaat: 4 stappen
Smart Home Thermostat: Onze Smart Home Thermostat is een programma waarmee een huishouden automatisch geld kan besparen op energierekeningen op basis van iemands voorkeuren
NEST je oude thermostaat: 4 stappen (met afbeeldingen)
NEST Je oude thermostaat: het verwarmingssysteem in mijn huis is waarschijnlijk zo oud als het huis zelf. Het is ongeveer 30 jaar oud, wat prima is in termen van huisjaren, maar qua technologie vrijwel vast in de ijstijd. Er zijn 2 hoofdproblemen met commerci
Arduino Kombucha-thermostaat - Ajarnpa
Arduino Kombucha Thermostaat: Ik heb altijd van Kombucha gehouden, maar in de winkel is het zo duur. Ongeveer $ 4 per 12 oz. er is geen manier waarop ik het me kon veroorloven om het zoveel te drinken als ik wilde. Ik heb gekeken naar het maken van mijn eigen kombucha en realiseerde me dat het helemaal niet zo moeilijk was, en niet nodig
Zelfgemaakte thermostaat: 6 stappen
Zelfgemaakte thermostaat: Hallo allemaal, het zijn mijn eerste instructables, het eerste doel zal zijn om een controller en temperatuurregelaar veilig, eenvoudig, efficiënt en betrouwbaar te maken. Om te beginnen ben ik een amateur die thuis kaas maakt, ik moest de temperatuur regelen en hu
Goedkope web-verbonden thermostaat: 12 stappen (met afbeeldingen)
Goedkope web-verbonden thermostaat: een van de eerste Internet of Things-producten die in veel huishoudens zijn weg vond, is de slimme thermostaat. Ze kunnen leren wanneer u wilt dat uw huis warm wordt en welke kamertemperatuur gewoonlijk vereist is. Het leuke is dat ze ook