Indholdsfortegnelse:
- Trin 1: Konfiguration
- Trin 2: Konfiguration af relæer
- Trin 3: Hysteresis Controller
- Trin 4: PID -controller
- Trin 5: Besked Bus
- Trin 6: Libs
Video: Termostat baseret på Arduino: 6 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:29
Denne gang skal vi bygge en termostat baseret på Arduino, temperatursensor og relæ. Du kan finde på github
Trin 1: Konfiguration
Hele konfigurationen er gemt i Config.h. Du kan ændre PIN -koder, der styrer relæer, læsetemperatur, tærskler eller tidspunkter.
Trin 2: Konfiguration af relæer
Lad os antage, at vi gerne vil have 3 relæer:
- ID: 0, PIN: 1, Temperatur setpunkt: 20
- ID: 1, PIN: 10, temperatur setpunkt: 30
- ID: 2, PIN: 11, temperatur setpunkt: 40
Først skal du sørge for, at PIN efter eget valg ikke allerede er taget. Alle pins kan findes i Config.h, de er defineret af variabler, der starter med DIG_PIN.
Du skal redigere Config.h og konfigurere PIN -koder, tærskler og mængde relæer. Der findes naturligvis allerede nogle egenskaber, så du skal bare redigere dem.
const static uint8_t DIG_PIN_RELAY_0 = 1; const static uint8_t DIG_PIN_RELAY_1 = 10; const statisk 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;
Nu skal vi opsætte relæer og controller, dette sker i 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
Trin 3: Hysteresis Controller
Det er den, der er valgt i eksemplet ovenfor, den har få ekstra konfigurationer:
const static uint32_t RELAY_DELAY_AFTER_SWITCH_MS = 300000; // 5 minutter konstant statisk uint32_t RHC_RELAY_MIN_SWITCH_MS = 3600000;
RELAY_DELAY_AFTER_SWITCH_MS giver ventetid på at skifte næste relæ. Forestil dig, at konfigurationen fra vores eksempel ville begynde at fungere i et miljø på 40 grader. Dette ville resultere i aktivering af alle tre relæer på samme tid. Dette kan i sidste ende føre til et højt strømforbrug - afhængigt af hvad du styrer, bruger elektrisk motor f.eks. Mere strøm under start. I vores tilfælde har switch -relæer følgende flow: første relæ går, vent 5 minutter, andet fortsætter, vent 5 minutter, tredje fortsætter.
RHC_RELAY_MIN_SWITCH_MS definerer hysterese, det er minimumsfrekvensen for et bestemt relæ for at ændre dets tilstand. Når den er tændt, forbliver den tændt i mindst denne periode og ignorerer temperaturændringer. Dette er stille nyttigt, hvis du styrer elektriske motorer, da hver switch har en negativ indvirkning på levetid.
Trin 4: PID -controller
Dette er et avanceret emne. Implementering af en sådan controller er en simpel opgave, at finde de rigtige amplitudeindstillinger er en anden historie.
For at bruge PID -controller skal du ændre initRelayHysteresisController (…..) til initRelayPiDController (….), Og du skal finde de rigtige indstillinger for det. Som sædvanlig finder du dem i Config.h
Jeg har implementeret en simpel simulator i Java, så det er muligt at visualisere resultaterne. Det kan findes i mappen: pidsimulator. Herunder kan du se simuleringer for to controllere PID a P. PID er ikke helt stabil, fordi jeg ikke anvendte nogen sofistikeret algoritme til at finde de rigtige værdier.
På begge parceller er den nødvendige temperatur indstillet til 30 (blå). Aktuel temperatur angiver læselinje. Relæet har to tilstande ON og OFF. Når den er aktiveret, falder temperaturen med 1,5, når den er deaktiveret, stiger den med 0,5.
Trin 5: Besked Bus
Forskellige softwaremoduler skal kommunikere med hinanden, forhåbentlig ikke begge veje;)
For eksempel:
- statistikmodul skal vide, hvornår et bestemt relæ tændes og slukkes,
- at trykke på en knap skal ændre visningsindholdet, og det skal også suspendere tjenester, der ville forbruge mange CPU -cyklusser, for eksempel temperaturaflæsning fra sensor,
- efter et stykke tid skal temperaturaflæsning fornyes,
- og så videre….
Hvert modul er forbundet til Message Bus og kan registrere sig for bestemte begivenheder og kan producere enhver begivenhed (første diagram).
På det andet diagram kan vi se hændelsesforløbet ved at trykke på knappen.
Nogle komponenter har nogle opgaver, end der skal udføres med jævne mellemrum. Vi kunne kalde deres tilsvarende metoder fra hovedsløjfen, da vi har Message Bus, er det kun nødvendigt at udbrede den rigtige begivenhed (tredje diagram)
Trin 6: Libs
- https://github.com/maciejmiklas/Thermostat
- https://github.com/milesburton/Arduino-Temperature…
- https://github.com/maciejmiklas/ArdLog.git
Anbefalede:
Arduino -baseret telefon (prototype): 7 trin
Arduino -baseret telefon (prototype): Hej alle sammen, I dag i denne instruktive vil vi se om arduino -baseret telefon. Dette er telefonen er en prototype, den er stadig under udvikling. Kildekoden er opensource, alle kan ændre koden. Funktioner i telefonen: 1. Musik 2. Videoer 3
Arduino & MPU6050 baseret digitalt vaterpas: 3 trin
Arduino & MPU6050 baseret digitalt vaterpas: Velkommen til min første nogensinde instruerbare! Jeg håber, at du finder det informativt. Du er velkommen til at give feedback, uanset om det er positivt eller negativt. Dette projekt er at lave en arduino & MPU6050 baseret digitalt vaterpas. Mens det færdige design og
ATTiny84-baseret 3A trin-ned LED-driver: 7 trin (med billeder)
ATTiny84-baseret 3A trin-ned LED-driver: Hvis du vil drive 10W LED'er, kan du bruge denne 3A LED-driver. Med 3 Cree XPL LED'er kan du opnå 3000 lumen
Arduino -baseret DIY -spilcontroller - Arduino PS2 Game Controller - Spil Tekken med DIY Arduino Gamepad: 7 trin
Arduino -baseret DIY -spilcontroller | Arduino PS2 Game Controller | At spille Tekken med DIY Arduino Gamepad: Hej fyre, det er altid sjovt at spille spil, men det er sjovere at spille med din egen brugerdefinerede spilcontroller. Så vi laver en spilcontroller ved hjælp af arduino pro micro i denne instruktør
Arduino -baseret ikke -kontakt infrarødt termometer - IR -baseret termometer ved hjælp af Arduino: 4 trin
Arduino -baseret ikke -kontakt infrarødt termometer | IR -baseret termometer ved hjælp af Arduino: Hej fyre i denne instruktion vil vi lave et kontaktfrit termometer ved hjælp af arduino. Da nogle gange temperaturen på væsken/faststoffet er alt for høj eller for lav, og så er det svært at komme i kontakt med det og læse dets temperaturen derefter i den scene