Innholdsfortegnelse:
- Trinn 1: Konfigurasjon
- Trinn 2: Konfigurering av reléer
- Trinn 3: Hysteresis Controller
- Trinn 4: PID -kontrolleren
- Trinn 5: Meldingsbuss
- Trinn 6: Libs
Video: Termostat basert på Arduino: 6 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:25
Denne gangen skal vi bygge en termostat basert på Arduino, temperatursensor og relé. Du finner på github
Trinn 1: Konfigurasjon
Hele konfigurasjonen er lagret i Config.h. Du kan endre PIN -koder som styrer reléer, lesetemperatur, terskler eller tidspunkter.
Trinn 2: Konfigurering av reléer
La oss anta at vi gjerne vil ha 3 reléer:
- ID: 0, PIN: 1, Temperatur settpunkt: 20
- ID: 1, PIN: 10, Temperatur settpunkt: 30
- ID: 2, PIN: 11, Temperatur settpunkt: 40
Først må du sørge for at PIN -koden du har valgt ikke allerede er tatt. Alle pinnene kan bli funnet i Config.h, de er definert av variabler som starter med DIG_PIN.
Du må redigere Config.h og konfigurere PIN -koder, terskler og mengde reléer. Det er åpenbart at noen eiendommer allerede eksisterer, så du må bare redigere dem.
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;
Nå må vi sette opp reléer og kontroller, dette skjer 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
Trinn 3: Hysteresis Controller
Det er den som er valgt i eksemplet ovenfor, den har få tilleggskonfigurasjoner:
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 gir ventetid for å bytte neste relé. Tenk deg at konfigurasjonen fra vårt eksempel ville begynne å fungere i et miljø på 40 grader. Dette vil resultere i at alle tre reléene kan aktiveres samtidig. Dette kan til slutt føre til høyt strømforbruk - avhengig av hva du styrer, bruker for eksempel elektrisk motor mer strøm under start. I vårt tilfelle bytter reléer følgende strømning: første relé går, vent 5 minutter, andre går på, vent 5 minutter, tredje fortsetter.
RHC_RELAY_MIN_SWITCH_MS definerer hysterese, det er minimumsfrekvensen for et bestemt relé for å endre tilstanden. Når den er på, vil den forbli på i minst denne perioden, uten å se på temperaturendringer. Dette er stille nyttig, det er du som styrer elektriske motorer, siden hver bryter har en negativ innvirkning på levetid.
Trinn 4: PID -kontrolleren
Dette er et avansert tema. Å implementere en slik kontroller er en enkel oppgave, å finne riktige amplitudeinnstillinger er en annen historie.
For å bruke PID -kontrolleren må du endre initRelayHysteresisController (…..) til initRelayPiDController (….), Og du må finne riktige innstillinger for den. Som vanlig finner du dem i Config.h
Jeg har implementert enkel simulator i Java, slik at det er mulig å visualisere resultatene. Den finner du i mappen: pidsimulator. Nedenfor kan du se simuleringer for to kontrollere PID a P. PID er ikke helt stabil fordi jeg ikke brukte noen sofistikert algoritme for å finne riktige verdier.
På begge tomter er nødvendig temperatur satt til 30 (blå). Gjeldende temperatur indikerer leselinje. Reléet har to tilstander PÅ og AV. Når den er aktivert, synker temperaturen med 1,5, når den er deaktivert, stiger den med 0,5.
Trinn 5: Meldingsbuss
Ulike programvaremoduler må kommunisere med hverandre, forhåpentligvis ikke begge veier;)
For eksempel:
- statistikkmodulen må vite når et bestemt relé går av og på,
- å trykke på en knapp må endre visningsinnhold, og det må også suspendere tjenester som vil bruke mange CPU -sykluser, for eksempel temperaturavlesning fra sensor,
- etter en tid må temperaturavlesningen fornyes,
- og så videre….
Hver modul er koblet til Message Bus og kan registrere seg for bestemte hendelser, og kan produsere alle hendelser (første diagram).
På det andre diagrammet kan vi se hendelsesflyt ved å trykke på knappen.
Noen komponenter har noen oppgaver enn det som må utføres med jevne mellomrom. Vi kan kalle de tilhørende metodene fra hovedsløyfen, siden vi har Message Bus er det bare nødvendig å spre riktig hendelse (tredje diagram)
Trinn 6: Libs
- https://github.com/maciejmiklas/Thermostat
- https://github.com/milesburton/Arduino-Temperature…
- https://github.com/maciejmiklas/ArdLog.git
Anbefalt:
Arduino -basert telefon (prototype): 7 trinn
Arduino -basert telefon (prototype): Hei alle sammen, I dag i denne instruksjonsrike skal vi se om arduino -basert telefon. Dette er telefonen er en prototype den er fortsatt under utvikling. Kildekoden er åpen kildekode alle kan endre koden. Funksjoner i telefonen: 1. Musikk 2. Videoer 3
Arduino og MPU6050 basert digitalt vater: 3 trinn
Arduino og MPU6050 basert digitalt vater: Velkommen til min første instruerbare noensinne! Jeg håper du finner det informativt. Gi gjerne tilbakemelding om det er positivt eller negativt. Dette prosjektet er å lage en arduino & MPU6050 -basert digitalt vaterpas. Mens det ferdige designet og
Arduino-basert talekontrollert IOT-relébryter (Google Home og Alexa støttes): 11 trinn
Arduino-basert talekontrollert IOT-relébryter (Google Home og Alexa støttes): Dette prosjektet beskriver hvordan du lager en Arduino-basert, stemmestyrt, IOT-relébryter. Dette er et relé som du kan slå på og av eksternt ved hjelp av en app for iOS og Android, samt knytte den til IFTTT og kontrollere den med stemmen din ved hjelp av Goog
Arduino -basert DIY spillkontroller - Arduino PS2 Game Controller - Spiller Tekken med DIY Arduino Gamepad: 7 trinn
Arduino -basert DIY spillkontroller | Arduino PS2 Game Controller | Å spille Tekken med DIY Arduino Gamepad: Hei folkens, det er alltid morsomt å spille spill, men det er morsommere å spille med din egen DIY tilpassede spillkontroller. Så vi lager en spillkontroller som bruker arduino pro micro i denne instruksjonene
Arduino -basert ikke -kontakt infrarødt termometer - IR -basert termometer ved bruk av Arduino: 4 trinn
Arduino -basert ikke -kontakt infrarødt termometer | IR -basert termometer ved bruk av Arduino: Hei folkens i denne instruksjonsboken vil vi lage et kontaktfritt termometer ved hjelp av arduino. Siden noen ganger temperaturen på væsken/faststoffet er for høy eller for lav, og da er det vanskelig å få kontakt med det og lese dets temperaturen da i den situasjonen