Sisällysluettelo:

Arduinoon perustuva termostaatti: 6 vaihetta
Arduinoon perustuva termostaatti: 6 vaihetta

Video: Arduinoon perustuva termostaatti: 6 vaihetta

Video: Arduinoon perustuva termostaatti: 6 vaihetta
Video: Ohjaa hehkulamppu Arduino AC-himmentimellä 2024, Heinäkuu
Anonim
Arduinoon perustuva termostaatti
Arduinoon perustuva termostaatti
Arduinoon perustuva termostaatti
Arduinoon perustuva termostaatti
Arduinoon perustuva termostaatti
Arduinoon perustuva termostaatti

Tällä kertaa aiomme rakentaa termostaatin, joka perustuu Arduinoon, lämpötila -anturiin ja releeseen.

Vaihe 1: Määritykset

Asetukset
Asetukset

Koko kokoonpano on tallennettu Config.h. Voit muuttaa releitä, lukulämpötilaa, kynnysarvoja tai ajoituksia ohjaavia PIN -koodeja.

Vaihe 2: Releiden määrittäminen

Oletetaan, että haluaisimme saada 3 relettä:

  • ID: 0, PIN: 1, Lämpötilan asetusarvo: 20
  • ID: 1, PIN: 10, Lämpötilan asetusarvo: 30
  • ID: 2, PIN: 11, Lämpötilan asetusarvo: 40

Varmista ensin, että valitsemasi PIN -koodi ei ole jo otettu. Kaikki nastat löytyvät Config.h: sta, ne määritellään muuttujilla, jotka alkavat DIG_PIN.

Sinun on muokattava Config.h ja määritettävä PIN -koodit, kynnysarvot ja releiden määrä. Tietenkin jotkut ominaisuudet ovat jo olemassa, joten sinun on vain muokattava niitä.

const staattinen uint8_t DIG_PIN_RELAY_0 = 1; const staattinen uint8_t DIG_PIN_RELAY_1 = 10; const staattinen uint8_t DIG_PIN_RELAY_2 = 11;

const staattinen uint8_t RELAYS_AMOUNT = 3;

const staattinen int16_t RELAY_TEMP_SET_POINT_0 = 20;

const staattinen int16_t RELAY_TEMP_SET_POINT_1 = 30; const staattinen int16_t RELAY_TEMP_SET_POINT_2 = 40;

Nyt meidän on asennettava releet ja ohjain, tämä tapahtuu RelayDriver.cpp -tiedostossa

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

Vaihe 3: Hystereesisäädin

Se on edellä esimerkissä valittu, sillä on vain muutamia muita kokoonpanoja:

const staattinen uint32_t RELAY_DELAY_AFTER_SWITCH_MS = 300000; // 5 minuuttiapysyvä staattinen uint32_t RHC_RELAY_MIN_SWITCH_MS = 3600000;

RELAY_DELAY_AFTER_SWITCH_MS antaa odotusaikaa seuraavan releen kytkemiseen. Kuvittele, että esimerkin mukainen kokoonpano alkaisi toimia 40 asteen ympäristössä. Tämä johtaisi kaikkien kolmen releen käyttöönottoon samanaikaisesti. Tämä voi lopulta johtaa suureen virrankulutukseen - riippuen siitä, mitä ohjaat, esimerkiksi sähkömoottori kuluttaa enemmän virtaa käynnistyksen aikana. Meidän tapauksessamme kytkentäreleillä on seuraava virtaus: ensimmäinen rele menee, odota 5 minuuttia, toinen jatkaa, odota 5 minuuttia, kolmas jatkaa.

RHC_RELAY_MIN_SWITCH_MS määrittää hystereesin, se on tietyn releen minimi taajuus sen tilan muuttamiseksi. Kun se on päällä, se pysyy päällä vähintään tämän ajan ilman lämpötilan muutoksia. Tämä on hiljaista hyötyä, kun ohjaat sähkömoottoreita, koska jokaisella kytkimellä on negatiivinen vaikutus elinaikaan.

Vaihe 4: PID -säädin

PID -säädin
PID -säädin
PID -säädin
PID -säädin

Tämä on edistynyt aihe. Tällaisen ohjaimen käyttöönotto on yksinkertainen tehtävä, oikeiden amplitudiasetusten löytäminen on eri tarina.

Jotta voit käyttää PID -ohjainta, sinun on vaihdettava initRelayHysteresisController (…..) muotoon initRelayPiDController (…) ja sinun on löydettävä sille oikeat asetukset. Löydät ne normaalisti Config.h -sivustosta

Olen ottanut käyttöön yksinkertaisen simulaattorin Javassa, jotta tulokset voidaan visualisoida. Se löytyy kansiosta: pidsimulator. Alla näet simulaatioita kahdelle ohjaimelle PID P.

Molemmilla käyrillä vaadittu lämpötila on 30 (sininen). Nykyinen lämpötila osoittaa lukurivin. Releellä on kaksi tilaa ON ja OFF. Kun se on käytössä, lämpötila laskee 1,5, kun se on pois käytöstä, se nousee 0,5.

Vaihe 5: Viestiväylä

Viesti Bus
Viesti Bus
Viesti Bus
Viesti Bus
Viesti Bus
Viesti Bus
Viesti Bus
Viesti Bus

Eri ohjelmistomoduulien on kommunikoitava keskenään, toivottavasti ei molempiin suuntiin;)

Esimerkiksi:

  • tilastomoduulin on tiedettävä, milloin tietty rele syttyy ja sammuu,
  • painikkeen painamisen on muutettava näytön sisältöä ja sen on myös keskeytettävä palvelut, jotka kuluttavat monia suoritinjaksoja, esimerkiksi lämpötilan lukeminen anturista,
  • jonkin ajan kuluttua lämpötilan lukema on uusittava,
  • ja niin edelleen….

Jokainen moduuli on kytketty Message Busiin ja voi rekisteröityä tiettyihin tapahtumiin ja tuottaa mitä tahansa tapahtumia (ensimmäinen kaavio).

Toisessa kaaviossa näemme tapahtumavirran painamalla painiketta.

Joillakin komponenteilla on joitakin tehtäviä kuin ne on suoritettava määräajoin. Voisimme kutsua niiden vastaavat menetelmät pääsilmukasta, koska meillä on sanomaväylä, tarvitaan vain oikean tapahtuman levittäminen (kolmas kaavio)

Vaihe 6: Libs

  • https://github.com/maciejmiklas/Thermostat
  • https://github.com/milesburton/Arduino-Temperature…
  • https://github.com/maciejmiklas/ArdLog.git

Suositeltava: