Talaan ng mga Nilalaman:
- Hakbang 1: Pag-configure
- Hakbang 2: Pag-configure ng Mga Relay
- Hakbang 3: Controller ng Hysteresis
- Hakbang 4: Controller ng PID
- Hakbang 5: Bus ng Mensahe
- Hakbang 6: Libs
Video: Thermostat Batay sa Arduino: 6 Mga Hakbang
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:14
Sa oras na ito ay magtatayo kami ng isang Therostat batay sa Arduino, sensor ng temperatura at relay. Maaari mong makita sa github
Hakbang 1: Pag-configure
Ang buong pagsasaayos ay nakaimbak sa Config.h. Maaari mong baguhin ang mga PIN na nagkokontrol sa mga relay, temperatura sa pagbabasa, mga threshold o oras.
Hakbang 2: Pag-configure ng Mga Relay
Ipagpalagay na nais nating magkaroon ng 3 relay:
- ID: 0, PIN: 1, Setpoint ng temperatura: 20
- ID: 1, PIN: 10, Setpoint ng temperatura: 30
- ID: 2, PIN: 11, Temperatura ng punto ng punto: 40
Una dapat mong tiyakin na ang PIN na iyong pinili ay hindi pa nakuha. Ang lahat ng mga pin ay matatagpuan sa Config.h, tinukoy ang mga ito sa pamamagitan ng mga variable na nagsisimula sa DIG_PIN.
Kailangan mong i-edit ang Config.h at i-configure ang mga PIN, threshold at dami ng mga relay. Malinaw na mayroon nang mga pag-aari, kaya kailangan mo lamang i-edit ang mga ito.
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;
Ngayon kailangan naming mag-setup ng mga relay at controller, nangyayari ito sa 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
Hakbang 3: Controller ng Hysteresis
Ito ang napili sa halimbawa sa itaas, mayroon itong ilang mga karagdagang pagsasaayos:
Const static uint32_t RELAY_DELAY_AFTER_SWITCH_MS = 300000; // 5 minutesconst static uint32_t RHC_RELAY_MIN_SWITCH_MS = 3600000;
Nagbibigay ang RELAY_DELAY_AFTER_SWITCH_MS ng oras ng paghihintay para sa paglipat ng susunod na relay. Isipin na ang pagsasaayos mula sa aming halimbawa ay magsisimulang magtrabaho sa 40 degree na kapaligiran. Magreresulta ito sa pagpapagana ng lahat ng tatlong mga relay nang sabay. Maaari itong humantong sa mataas na pagkonsumo ng kuryente - nakasalalay sa kung ano ang iyong kinokontrol, halimbawa, ang electric engine ay kumakain ng mas maraming lakas sa simula. Sa aming kaso ang paglipat ng mga relay ay may sumusunod na daloy: ang unang relay ay nagpapatuloy, maghintay ng 5 minuto, ang pangalawa ay nagpapatuloy, maghintay ng 5 minuto, ang pangatlo ay nagpapatuloy.
Tinutukoy ng RHC_RELAY_MIN_SWITCH_MS ang hysteresis, ito ang minimum na dalas para sa partikular na relay upang mabago ang estado nito. Kapag ito ay, ito ay mananatili sa para sa pinakamaliit sa panahong ito ng oras, hindi papansin ang mga pagbabago sa temperatura. Ito ay tahimik na kapaki-pakinabang ito ay iyong kinokontrol ang mga de-kuryenteng motor, dahil ang bawat switch ay may negatibong epekto sa live na oras.
Hakbang 4: Controller ng PID
Ito ay advanced na paksa. Ang pagpapatupad ng naturang controller ay simpleng gawain, ang paghahanap ng tamang mga setting ng amplitude ay ibang kuwento.
Upang magamit ang PID controller kailangan mong baguhin ang initRelayHysteresisController (…..) sa initRelayPiDController (….) At kailangan mong hanapin ang tamang mga setting para dito. Tulad ng dati makikita mo sila sa Config.h
Ipinatupad ko ang simpleng simulator sa Java, upang posible na mailarawan ang mga resulta. Maaari itong matagpuan sa folder: pidsimulator. Sa ibaba maaari mong makita ang mga simulation para sa dalawang mga tagakontrol PID isang P. PID ay hindi perpektong matatag dahil hindi ako naglapat ng anumang sopistikadong algorithm upang makahanap ng tamang mga halaga.
Sa parehong mga lagay ng lupa ang kinakailangang temperatura ay nakatakda sa 30 (asul). Ipinapahiwatig ng kasalukuyang temperatura ang nabasang linya. Ang relay ay may dalawang estado na ON at OFF. Kapag pinagana ang temperatura ay bumaba ng 1.5, kapag hindi ito pinagana ay tumataas ito ng 0.5.
Hakbang 5: Bus ng Mensahe
Ang magkakaibang mga module ng software ay kailangang makipag-usap sa bawat isa, sana ay hindi kapwa paraan;)
Halimbawa:
- kailangang malaman ng module ng istatistika kung kailan nagpapatuloy at patay ang isang partikular na relay,
- ang pagpindot sa isang pindutan ay kailangang baguhin ang nilalaman ng display at kailangan ding suspindihin ang mga serbisyo na gugugol ng maraming mga siklo ng CPU, halimbawa ng pagbabasa ng temperatura mula sa sensor,
- pagkatapos ng ilang oras na pagbabasa ng temperatura ay kailangang i-update,
- at iba pa….
Ang bawat module ay konektado sa Message Bus at maaaring magparehistro para sa mga partikular na kaganapan, at maaaring gumawa ng anumang mga kaganapan (unang diagram).
Sa pangalawang diagram makikita natin ang daloy ng kaganapan sa pagpindot sa pindutan.
Ang ilang mga sangkap ay may ilang mga gawain kaysa sa kailangang i-implement nang pana-panahon. Maaari naming tawagan ang kanilang kaukulang pamamaraan mula sa pangunahing loop, dahil mayroon kaming Message Bus kinakailangan lamang upang maipalaganap ang tamang kaganapan (pangatlong diagram)
Hakbang 6: Libs
- https://github.com/maciejmiklas/Thermostat
- https://github.com/milesburton/Arduino-Temperature…
- https://github.com/maciejmiklas/ArdLog.git
Inirerekumendang:
LDR Batay Sensor / Detector ng Batay: 3 Mga Hakbang
LDR Batay Sensor / Detector ng ilaw: Ang mga ilaw sensor at detektor ay lubos na kapaki-pakinabang para sa mga microcontroller at naka-embed na mga system at pagmamanman ng kasidhian ay dapat ding gawin. Ang isa sa pinakasimpleng at pinakamurang mga naturang sensor ay LDR. Ang LDR o Light Dependent Resistors ay maaaring madaling gamitin wit
Pamamahala ng Tanim na Batay sa Batay sa Solar Na May ESP32: 7 Mga Hakbang (na may Mga Larawan)
Pamamahala ng Tanim na Batay sa Batay ng Solar Sa ESP32: Ang paglaki ng mga halaman ay masaya at pagtutubig at pag-aalaga sa kanila ay hindi talaga isang abala. Ang mga aplikasyon ng Microcontroller upang subaybayan ang kanilang kalusugan ay nasa buong internet at ang inspirasyon para sa kanilang disenyo ay nagmula sa static na katangian ng halaman at ang kadalian ng moni
Batay sa Autonomous na Batay ng Arduino Gamit ang Ultrasonic Sensor: 5 Mga Hakbang (na may Mga Larawan)
Batay ng Autonomous na Batay ng Arduino Paggamit ng Ultrasonic Sensor: Lumikha ng iyong sariling Arduino based Autonomous Bot gamit ang Ultrasonic Sensor. Ang bot na ito ay maaaring lumipat sa sarili nitong walang pag-crash ng anumang mga hadlang. Karaniwan kung ano ang ginagawa nito ay nakita nito ang anumang uri ng mga hadlang sa paraan nito at nagpapasya ang pinakamahusay na pa
BeanBot - isang Batay sa Autonomous na Robot ng Batay sa Arduino !: 8 Mga Hakbang (na may Mga Larawan)
BeanBot - isang Arduino Batay sa Autonomous Paper Robot !: Mayroon bang anumang mas nakasisigla kaysa sa isang blangko na papel? Kung ikaw ay isang masugid na tinkerer o tagabuo pagkatapos ay walang alinlangan na simulan mo ang iyong mga proyekto sa pamamagitan ng pag-sketch ng mga ito sa papel. Nagkaroon ako ng ideya upang makita kung posible na bumuo ng isang frame ng robot na wala sa papel
Dispenser ng Batay sa Batay ng Arduino: 5 Hakbang (na may Mga Larawan)
Dispenser ng Batay sa Batay ng Arduino: Ito ay napakadaling gawin at sobrang kapaki-pakinabang