Სარჩევი:
- ნაბიჯი 1: კონფიგურაცია
- ნაბიჯი 2: რელეების კონფიგურაცია
- ნაბიჯი 3: ჰისტერეზისის კონტროლერი
- ნაბიჯი 4: PID კონტროლერი
- ნაბიჯი 5: შეტყობინებების ავტობუსი
- ნაბიჯი 6: Libs
ვიდეო: თერმოსტატი არდუინოს საფუძველზე: 6 ნაბიჯი
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:20
ამჯერად ჩვენ ვაპირებთ ავაშენოთ თერმოსტატი არდუინოზე, ტემპერატურის სენსორზე და სარელეოზე. თქვენ შეგიძლიათ ნახოთ 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 კონტროლერის გამოსაყენებლად თქვენ უნდა შეცვალოთ 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
გირჩევთ:
როგორ გავაკეთოთ RADAR არდუინოს გამოყენებით სამეცნიერო პროექტისათვის არდუინოს საუკეთესო პროექტები: 5 ნაბიჯი
როგორ გავაკეთოთ RADAR არდუინოს გამოყენებით სამეცნიერო პროექტისათვის საუკეთესო Arduino პროექტები: გამარჯობა მეგობრებო, ამ სასწავლო ინსტრუქციაში მე გაჩვენებთ თუ როგორ უნდა გააკეთოთ arduino nano– ს გამოყენებით აშენებული საოცარი სარადარო სისტემა
ინტელექტუალური რომო მანქანა არდუინოს საფუძველზე: 5 ნაბიჯი
ინტელექტუალური რომო მანქანა დაფუძნებულია არდუინოზე: ეს პროექტი დაფუძნებულია არდუინოს გაეროს განვითარების დაფაზე ჭკვიანი მანქანის შესაქმნელად. მანქანას აქვს Bluetooth უკაბელო კონტროლი, დაბრკოლებების თავიდან აცილება, ზუზუნის სიგნალიზაცია და სხვა ფუნქციები და არის ოთხბორბლიანი მანქანა, მოსახვევი ადვილია
არდუინოს საფუძველზე არაკონტაქტური ინფრაწითელი თერმომეტრი - IR დაფუძნებული თერმომეტრი არდუინოს გამოყენებით: 4 ნაბიჯი
არდუინოს საფუძველზე არაკონტაქტური ინფრაწითელი თერმომეტრი | IR დაფუძნებული თერმომეტრი Arduino– ს გამოყენებით: გამარჯობა ბიჭებო ამ ინსტრუქციებში ჩვენ გავაკეთებთ უკონტაქტო თერმომეტრს arduino– ს გამოყენებით. ვინაიდან ზოგჯერ თხევადი/მყარი ტემპერატურა ძალიან მაღალია ან დაბალია და შემდეგ ძნელია მასთან კონტაქტის დამყარება და მისი წაკითხვა ტემპერატურა მაშინ ამ სცენარში
3 ფაზის სინუსური ტალღის გენერატორი არდუინოს საფუძველზე: 5 ნაბიჯი
3 ფაზის სინუსური ტალღის გენერატორი Arduino due- ს საფუძველზე: ამ წილი მიზანია დაეხმაროს ვინმეს, ვინც ცდილობს გამოიყენოს Due- ს უფრო დიდი შესრულება + მითითების ნაკლებობა + არასასურველი მონაცემთა ცხრილი. ამ პროექტს შეუძლია 3 ფაზის სინუსური ტალღის გენერირება @ 256 ნიმუშები / ციკლი დაბალი სიხშირით (< 1 კჰც) და 16 წმ
ხელმისაწვდომი ხედვის გადაწყვეტა რობოტის მკლავით არდუინოს საფუძველზე: 19 ნაბიჯი (სურათებით)
ხელმისაწვდომი ხედვის გადაწყვეტა Robot Arm– ით დაფუძნებული Arduino– ზე: როდესაც ვსაუბრობთ მანქანების ხედვაზე, ის ყოველთვის ჩვენთვის ასე მიუწვდომელია. მიუხედავად იმისა, რომ ჩვენ გავაკეთეთ ღია ხედვის დემო, რომლის გაკეთება ყველასთვის ძალიან ადვილი იქნებოდა. ამ ვიდეოში, OpenMV კამერით, სადაც არ უნდა იყოს წითელი კუბი, რობოტი