Innehållsförteckning:
- Steg 1: Konfiguration
- Steg 2: Konfigurera reläer
- Steg 3: Hysteres Controller
- Steg 4: PID -styrenhet
- Steg 5: Meddelandebuss
- Steg 6: Libs
Video: Termostat baserad på Arduino: 6 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:46
Den här gången ska vi bygga en termostat baserad på Arduino, temperaturgivare och relä. Du kan hitta på github
Steg 1: Konfiguration
Hela konfigurationen lagras i Config.h. Du kan ändra PIN -koder som styr reläer, avläsningstemperatur, trösklar eller tidpunkter.
Steg 2: Konfigurera reläer
Låt oss anta att vi skulle vilja ha tre reläer:
- ID: 0, PIN: 1, Temperatur börvärde: 20
- ID: 1, PIN: 10, Temperatur börvärde: 30
- ID: 2, PIN: 11, börvärde för temperatur: 40
Först måste du se till att den valda PIN -koden inte redan har tagits. Alla stift kan hittas i Config.h, de definieras av variabler som börjar med DIG_PIN.
Du måste redigera Config.h och konfigurera PIN -koder, trösklar och antal reläer. Uppenbarligen finns det redan några egenskaper, så du måste bara redigera 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;
Nu måste vi konfigurera reläer och kontroller, detta händer 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
Steg 3: Hysteres Controller
Det är den som valts i exemplet ovan, den har några ytterligare konfigurationer:
const static uint32_t RELAY_DELAY_AFTER_SWITCH_MS = 300000; // 5 minuterkonst statisk uint32_t RHC_RELAY_MIN_SWITCH_MS = 3600000;
RELAY_DELAY_AFTER_SWITCH_MS ger väntetid för att byta nästa relä. Föreställ dig att konfigurationen från vårt exempel skulle börja fungera i 40 graders miljö. Detta skulle resultera i att alla tre reläer kan aktiveras samtidigt. Detta kan så småningom leda till hög strömförbrukning - beroende på vad du styr, förbrukar elmotorn till exempel mer kraft under start. I vårt fall har kopplingsreläer följande flöde: första reläet går, väntar 5 minuter, det andra fortsätter, väntar 5 minuter, det tredje fortsätter.
RHC_RELAY_MIN_SWITCH_MS definierar hysteres, det är minimifrekvensen för ett visst relä för att ändra dess tillstånd. När den väl är på, kommer den att vara på under åtminstone denna period, utan att ignorera temperaturförändringar. Detta är tyst användbart, det är du som styr elmotorer, eftersom varje omkopplare har en negativ inverkan på livstid.
Steg 4: PID -styrenhet
Detta är ett avancerat ämne. Att implementera en sådan styrenhet är en enkel uppgift, att hitta rätt amplitudinställningar är en annan historia.
För att använda PID -styrenheten måste du ändra initRelayHysteresisController (…..) till initRelayPiDController (….) Och du måste hitta rätt inställningar för den. Som vanligt hittar du dem i Config.h
Jag har implementerat en enkel simulator i Java, så att det är möjligt att visualisera resultaten. Det finns i mappen: pidsimulator. Nedan kan du se simuleringar för två kontroller PID a P. PID är inte helt stabil eftersom jag inte använde någon sofistikerad algoritm för att hitta rätt värden.
På båda tomterna krävs önskad temperatur till 30 (blå). Aktuell temperatur indikerar läsrad. Reläet har två tillstånd PÅ och AV. När den är aktiverad sjunker temperaturen med 1,5, när den är inaktiverad stiger den med 0,5.
Steg 5: Meddelandebuss
Olika programvarumoduler måste kommunicera med varandra, förhoppningsvis inte båda sätten;)
Till exempel:
- statistikmodulen måste veta när ett visst relä går av och på,
- att trycka på en knapp måste ändra visningsinnehåll och det måste också stänga av tjänster som skulle förbruka många CPU -cykler, till exempel temperaturavläsning från sensorn,
- efter en tid måste temperaturavläsningen förnyas,
- och så vidare….
Varje modul är ansluten till Message Bus och kan registrera sig för specifika händelser och kan producera eventuella händelser (första diagrammet).
På det andra diagrammet kan vi se händelseflödet när du trycker på knappen.
Vissa komponenter har vissa uppgifter än som behöver utföras regelbundet. Vi kan kalla deras motsvarande metoder från huvudslingan, eftersom vi har Message Bus är det bara nödvändigt att sprida rätt händelse (tredje diagram)
Steg 6: Libs
- https://github.com/maciejmiklas/Termostat
- https://github.com/milesburton/Arduino-Temperature…
- https://github.com/maciejmiklas/ArdLog.git
Rekommenderad:
Arduino -baserad telefon (prototyp): 7 steg
Arduino -baserad telefon (prototyp): Hej alla, Idag kommer vi att se om arduino -baserad telefon i denna instruerbara. Detta är telefonen är en prototyp som den fortfarande är under utveckling. Källkoden är opensource alla kan ändra koden. Funktioner i telefonen: 1. Musik 2. Videor 3.
Arduino & MPU6050 -baserad digital vattenpass: 3 steg
Arduino & MPU6050 -baserad digital vattenpass: Välkommen till min första instruerbara någonsin! Jag hoppas att du tycker att det är informativt. Lämna gärna feedback om det är positivt eller negativt. Detta projekt är att göra en arduino & MPU6050 -baserad digital vattenpass. Medan den färdiga designen och
Arduino-baserad röststyrd IOT-reläbrytare (Google Home och Alexa stöds): 11 steg
Arduino-baserad röststyrd IOT-reläbrytare (Google Home & Alexa stöds): Detta projekt beskriver hur man gör en Arduino-baserad, röststyrd IOT-reläomkopplare. Detta är ett relä som du kan slå på och av på distans med hjälp av en app för iOS och Android, samt koppla den till IFTTT och styra den med din röst med Goog
Arduino -baserad DIY -spelkontroller - Arduino PS2 Game Controller - Spela Tekken med DIY Arduino Gamepad: 7 steg
Arduino -baserad DIY -spelkontroller | Arduino PS2 Game Controller | Spela Tekken med DIY Arduino Gamepad: Hej killar, att spela spel är alltid roligt, men att spela med din egen DIY -spelkontroll är roligare.Så vi kommer att göra en spelkontroller med arduino pro micro i denna instruktioner
Arduino -baserad icke -kontakt infraröd termometer - IR -baserad termometer med Arduino: 4 steg
Arduino -baserad icke -kontakt infraröd termometer | IR -baserad termometer med Arduino: Hej killar i dessa instruktioner kommer vi att göra en kontaktfri termometer med hjälp av arduino. Eftersom temperaturen på vätskan/fastämnet ibland är för hög eller för låg och då är det svårt att komma i kontakt med den och läsa dess temperaturen då i den scen