Агуулгын хүснэгт:

Arduino дээр суурилсан термостат: 6 алхам
Arduino дээр суурилсан термостат: 6 алхам

Видео: Arduino дээр суурилсан термостат: 6 алхам

Видео: Arduino дээр суурилсан термостат: 6 алхам
Видео: Взломанное преобразование модуля передатчика Arduino 433 МГц в телевизионный передатчик 2024, Долдугаар сарын
Anonim
Arduino дээр суурилсан термостат
Arduino дээр суурилсан термостат
Arduino дээр суурилсан термостат
Arduino дээр суурилсан термостат
Arduino дээр суурилсан термостат
Arduino дээр суурилсан термостат

Энэ удаад бид Arduino, температур мэдрэгч, реле дээр суурилсан термостат бүтээх гэж байна.

Алхам 1: Тохиргоо

Тохиргоо
Тохиргоо

Бүх тохиргоог Config.h -д хадгалдаг. Та PIN кодыг хянах реле, унших температур, босго эсвэл цагийг өөрчлөх боломжтой.

Алхам 2: Реле тохируулах

Бид 3 буухиа хийхийг хүсч байна гэж бодъё.

  • ID: 0, ПИН: 1, Температурын тогтоосон цэг: 20
  • ID: 1, ПИН: 10, Температурын тогтоосон цэг: 30
  • ID: 2, ПИН: 11, Температурын тогтоосон цэг: 40

Эхлээд та хүссэн PIN кодоо аваагүй байгаа эсэхийг шалгах хэрэгтэй. Бүх тээглүүрийг Config.h дээрээс олж болно, тэдгээрийг DIG_PIN -ээс эхлэн хувьсагчуудаар тодорхойлдог.

Та Config.h -ийг засварлаж, ПИН код, босго болон реле хэмжээг тохируулах ёстой. Мэдээжийн хэрэг зарим шинж чанарууд аль хэдийн бий болсон тул та тэдгээрийг засах хэрэгтэй.

const статик uint8_t DIG_PIN_RELAY_0 = 1; const статик uint8_t DIG_PIN_RELAY_1 = 10; const статик uint8_t DIG_PIN_RELAY_2 = 11;

const статик uint8_t RELAYS_AMOUNT = 3;

const статик int16_t RELAY_TEMP_SET_POINT_0 = 20;

const статик int16_t RELAY_TEMP_SET_POINT_1 = 30; const статик int16_t RELAY_TEMP_SET_POINT_2 = 40;

Одоо бид реле болон хянагчийг тохируулах ёстой, энэ нь 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

Алхам 3: Гистерезис хянагч

Энэ нь дээр дурдсан жишээнд сонгогдсон бөгөөд цөөн хэдэн нэмэлт тохиргоотой байдаг.

const статик uint32_t RELAY_DELAY_AFTER_SWITCH_MS = 300000; // 5 минутын статик uint32_t RHC_RELAY_MIN_SWITCH_MS = 3600000;

RELAY_DELAY_AFTER_SWITCH_MS нь дараагийн релеийг солих хүлээх хугацааг өгдөг. Бидний жишээн дээрх тохиргоо 40 градусын орчинд ажиллаж эхэлнэ гэж төсөөлөөд үз дээ. Энэ нь бүх гурван релейг нэгэн зэрэг идэвхжүүлэх болно. Энэ нь эцэстээ өндөр эрчим хүчний хэрэглээнд хүргэж болзошгүй бөгөөд таны хянаж байгаа зүйлээс хамааран цахилгаан хөдөлгүүр асаахад илүү их эрчим хүч зарцуулдаг. Манай тохиолдолд сэлгэн залгах реле дараах урсгалтай байдаг: эхний буухиа явдаг, 5 минут хүлээдэг, хоёр дахь нь үргэлжилдэг, 5 минут хүлээдэг, гурав дахь нь үргэлжилдэг.

RHC_RELAY_MIN_SWITCH_MS нь гистерезийг тодорхойлдог бөгөөд энэ нь тухайн релений төлөв байдлыг өөрчлөх хамгийн бага давтамж юм. Үүнийг асаасны дараа температурын өөрчлөлтийг үл тоомсорлож, энэ хугацаанд хамгийн багадаа асах болно. Шилжүүлэгч бүр нь амьд цагт сөргөөр нөлөөлдөг тул энэ нь таны цахилгаан моторыг удирдахад маш тохиромжтой юм.

Алхам 4: PID хянагч

PID хянагч
PID хянагч
PID хянагч
PID хянагч

Энэ бол дэвшилтэт сэдэв юм. Ийм хянагчийг хэрэгжүүлэх нь энгийн ажил бөгөөд далайцын зөв тохиргоог олох нь өөр түүх юм.

PID хянагчийг ашиглахын тулд initRelayHysteresisController (…..) -ийг initRelayPiDController (….) Болгон өөрчлөх шаардлагатай бөгөөд үүний тулд та тохирох тохиргоог олох хэрэгтэй. Ердийнх шиг та тэдгээрийг Config.h дээрээс олох болно

Би Java дээр энгийн симулятор ашигласан бөгөөд ингэснээр үр дүнг нь төсөөлөх боломжтой болно. Үүнийг доорх хавтаснаас олж болно: pidsimulator. Доороос та PID a P. PID хоёр хянагчийн симуляцийг харж чадахгүй байна, учир нь би зөв утгыг олохын тулд ямар ч нарийн төвөгтэй алгоритм хэрэглээгүй.

Хоёр талбайн хувьд шаардлагатай температурыг 30 (цэнхэр) болгоно. Одоогийн температур нь уншсан мөрийг заана. Реле нь ON ба OFF гэсэн хоёр төлөвтэй. Идэвхжүүлсэн үед температур 1.5 -аар буурдаг, идэвхгүй бол 0.5 -аар нэмэгддэг.

Алхам 5: Зурвасын автобус

Зурвасын автобус
Зурвасын автобус
Зурвасын автобус
Зурвасын автобус
Зурвасын автобус
Зурвасын автобус
Зурвасын автобус
Зурвасын автобус

Програм хангамжийн өөр өөр модулиуд хоорондоо харилцах ёстой, гэхдээ хоёулаа биш гэж найдаж байна;)

Жишээлбэл:

  • Статистикийн модуль нь тухайн реле хэзээ асаж, унтрах ёстойг мэдэх ёстой.
  • товчлуур дарахад дэлгэцийн агуулга өөрчлөгдөх ёстой бөгөөд энэ нь процессорын олон мөчлөг, тухайлбал мэдрэгчийн температурыг унших гэх мэт үйлчилгээг зогсоох ёстой.
  • хэсэг хугацааны дараа температурын заалтыг шинэчлэх шаардлагатай болдог.
  • гэх мэт ….

Модуль бүр Message Bus -т холбогдсон бөгөөд тодорхой үйл явдлуудад бүртгүүлэх боломжтой бөгөөд аливаа үйл явдлыг гаргах боломжтой (эхний диаграм).

Хоёрдахь диаграм дээр бид товчлуур дээр дарснаар үйл явдлын урсгалыг харж болно.

Зарим бүрэлдэхүүн хэсгүүдэд үе үе гүйцэтгэх шаардлагатай зарим даалгавар байдаг. Бид тэдний холбогдох аргуудыг үндсэн давталтаас дуудаж болно, учир нь бидэнд Message Bus байгаа тул зөвхөн зөв үйл явдлыг сурталчлах шаардлагатай (гуравдахь диаграм)

Алхам 6: Либс

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

Зөвлөмж болгож буй: