Სარჩევი:

თერმოსტატი არდუინოს საფუძველზე: 6 ნაბიჯი
თერმოსტატი არდუინოს საფუძველზე: 6 ნაბიჯი

ვიდეო: თერმოსტატი არდუინოს საფუძველზე: 6 ნაბიჯი

ვიდეო: თერმოსტატი არდუინოს საფუძველზე: 6 ნაბიჯი
ვიდეო: ATmega644 termostat with ds18b20 temperature sensors(თერმოსტატი) 2024, ივლისი
Anonim
თერმოსტატი დაფუძნებულია არდუინოზე
თერმოსტატი დაფუძნებულია არდუინოზე
თერმოსტატი დაფუძნებულია არდუინოზე
თერმოსტატი დაფუძნებულია არდუინოზე
თერმოსტატი დაფუძნებულია არდუინოზე
თერმოსტატი დაფუძნებულია არდუინოზე

ამჯერად ჩვენ ვაპირებთ ავაშენოთ თერმოსტატი არდუინოზე, ტემპერატურის სენსორზე და სარელეოზე. თქვენ შეგიძლიათ ნახოთ github– ზე

ნაბიჯი 1: კონფიგურაცია

კონფიგურაცია
კონფიგურაცია

მთელი კონფიგურაცია ინახება Config.h. თქვენ შეგიძლიათ შეცვალოთ PIN- ები მაკონტროლებელი რელეები, კითხვის ტემპერატურა, ზღურბლები ან ვადები.

ნაბიჯი 2: რელეების კონფიგურაცია

დავუშვათ, რომ ჩვენ გვსურს გვქონდეს 3 რელე:

  • ID: 0, PIN: 1, ტემპერატურის მითითებული წერტილი: 20
  • ID: 1, PIN: 10, ტემპერატურის მითითებული წერტილი: 30
  • ID: 2, PIN: 11, ტემპერატურის მითითებული წერტილი: 40

პირველი თქვენ უნდა დარწმუნდეთ, რომ თქვენი არჩევანის PIN უკვე არ არის მიღებული. ყველა ქინძისთავის პოვნა შესაძლებელია Config.h– ში, ისინი განისაზღვრება ცვლადებით დაწყებული DIG_PIN– ით.

თქვენ უნდა შეცვალოთ Config.h და დააკონფიგურიროთ PIN- ები, ზღურბლები და რელეების რაოდენობა. ცხადია, ზოგიერთი თვისება უკვე არსებობს, ასე რომ თქვენ უბრალოდ უნდა შეცვალოთ ისინი.

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

მე განვახორციელე მარტივი სიმულატორი ჯავაში, რათა შესაძლებელი იყოს შედეგების ვიზუალიზაცია. ის შეიძლება მოიძებნოს საქაღალდეში: pidsimulator. ქვემოთ შეგიძლიათ ნახოთ სიმულაციები ორი კონტროლერისთვის PID a P. PID არ არის სრულყოფილად სტაბილური, რადგან მე არ გამოვიყენე რაიმე დახვეწილი ალგორითმი სწორი მნიშვნელობების მოსაძებნად.

ორივე ნაკვეთზე საჭირო ტემპერატურაა 30 (ლურჯი). მიმდინარე ტემპერატურა მიუთითებს წაკითხვის ხაზს. რელეს აქვს ორი მდგომარეობა ჩართული და გამორთული. როდესაც ის ჩართულია, ტემპერატურა მცირდება 1.5 -ით, როდესაც ის გამორთულია, ის იზრდება 0.5 -ით.

ნაბიჯი 5: შეტყობინებების ავტობუსი

შეტყობინებების ავტობუსი
შეტყობინებების ავტობუსი
შეტყობინებების ავტობუსი
შეტყობინებების ავტობუსი
შეტყობინებების ავტობუსი
შეტყობინებების ავტობუსი
შეტყობინებების ავტობუსი
შეტყობინებების ავტობუსი

სხვადასხვა პროგრამული მოდული უნდა დაუკავშირდეს ერთმანეთს, იმედია ორივე გზით არა;)

Მაგალითად:

  • სტატისტიკის მოდულმა უნდა იცოდეს, როდესაც კონკრეტული სარელეო ჩართულია და გამორთულია,
  • ღილაკზე დაჭერით უნდა შეიცვალოს ჩვენების შინაარსი და ასევე უნდა შეწყდეს მომსახურება, რომელიც მოიხმარს პროცესორის ბევრ ციკლს, მაგალითად ტემპერატურის კითხვას სენსორიდან,
  • გარკვეული დროის შემდეგ ტემპერატურის მაჩვენებელი უნდა განახლდეს,
  • და ასე შემდეგ….

ყველა მოდული დაკავშირებულია შეტყობინებების ავტობუსთან და შეუძლია დარეგისტრირდეს კონკრეტულ მოვლენებზე და შეუძლია შექმნას ნებისმიერი მოვლენა (პირველი დიაგრამა).

მეორე დიაგრამაზე ჩვენ ვხედავთ მოვლენების მიმდინარეობას ღილაკზე დაჭერით.

ზოგიერთ კომპონენტს აქვს გარკვეული ამოცანები, ვიდრე პერიოდულად უნდა შესრულდეს. ჩვენ შეგვიძლია ვუწოდოთ მათ შესაბამის მეთოდებს ძირითადი მარყუჟიდან, რადგან ჩვენ გვაქვს შეტყობინების ავტობუსი, საჭიროა მხოლოდ სწორი მოვლენის პროპაგანდა (მესამე დიაგრამა)

ნაბიჯი 6: Libs

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

გირჩევთ: