Mundarija:

Arduino konditsioner modeli: 6 qadam
Arduino konditsioner modeli: 6 qadam

Video: Arduino konditsioner modeli: 6 qadam

Video: Arduino konditsioner modeli: 6 qadam
Video: Как сделать настольный вентилятор из картона 2024, Noyabr
Anonim
Arduino konditsioner modeli
Arduino konditsioner modeli

Bizning jamoamiz marketing maqsadlari uchun aqlli poezd qurilmasi modelini yaratish qobiliyatining namoyishi sifatida, harorat sensori sxemadagi ma'lumotlarni o'qiydigan va ma'lumotni harorat qiymatiga aylantiradigan tizimni yaratish edi. yoritilgan ekranda ko'rsatiladi va fan yoqilishi yoki o'chishiga e'tibor qaratiladi. Maqsad, avtomatlashtirilgan tizim yordamida yo'lovchilarning haydash sharoitlarini eng yaqin atrofdagi haroratni ko'rsatishga yordam berish.

Arduino mikrokontrollerlar to'plami va MATLAB 2016b va 2017b versiyalari yordamida biz bu natijalarni nisbatan muvaffaqiyat bilan namoyish qila oldik.

1 -qadam: uskunalar

Uskunalar
Uskunalar

Mikrokontroller to'plami quyidagilar bilan:

-Sparkfun Qizil Kengashi

-Sparkfun elektron paneli

-LCD displey paneli

-Potentsiometr

-Harorat sensori

-Xizmat

USB/Arduino adapteri

-o'tish simlari (25, minimal)

USB kirish bilan noutbuk (Windows 10)

3D bosilgan ob'ekt (ixtiyoriy)

2 -qadam: Mikrokontrollerni sozlash

Mikrokontrollerni sozlash
Mikrokontrollerni sozlash
Mikrokontrollerni sozlash
Mikrokontrollerni sozlash
Mikrokontrollerni sozlash
Mikrokontrollerni sozlash
Mikrokontrollerni sozlash
Mikrokontrollerni sozlash

Buni o'ylab ko'ring: butun tizim yakka birliklardan iborat bo'lib, ularning har biri yakuniy natijaga muhim omilni qo'llaydi. Shu sababli, simlarni o'ralgan chalkashliklarga ulashdan oldin, sxemaning tasvirini o'rnatish juda tavsiya etiladi.

Har bir alohida modelning rasmlarini Microcontroller asboblar to'plamida yoki uning veb -saytida https://learn.sparkfun.com/tutorials/tags/arduino?page=all da topish mumkin.

Harorat sensori, potansiyometr, servo ulagichlar va LCD -ni taxtaga ulashdan boshlang. LCD displeyining o'lchami va uning simlar soniga bo'lgan talabiga qarab, uni boshqa qismining yarmi bilan, taxtaning yarmiga qo'yish va potentsiometrni kimdir ko'rishi mumkin bo'lgan joyda joylashtirish tavsiya etiladi. tugmachasini osongina aylantiring.

Malumot uchun:

LCD: c1-16

Servo: i1-3 (GND + -)

Harorat sensori: i13-15 (- GND +)

Potentsiometr: g24-26 (- GND +)

Keyin, mikrokontroller birliklarining har bir piniga o'tish simlarini ulashni boshlang; umumiy sxemada o'zboshimchalik bilan bo'lsa ham, dizayn quyidagi muhim aloqalar yordamida yaratilgan:

Potentsiometrni LCD ga ulash: f25 - e3

Servo GND sim: j1 - raqamli kirish 9

Harorat sensori GND: j14 - Analog kirish 0

LCD kirish: e11-e15-raqamli kirish 2-5

e4 - raqamli kirish 7

e6 - raqamli kirish 6

(Eslatma: Muvaffaqiyatli bo'lsa, LCD chetidagi ikkala chiroq ham yonib -o'chib turishi kerak va potentsiometr adapterdan quvvat olgandan keyin uning yorqinligini sozlashda yordam beradi.)

Majburiy emas: 3D bosilgan ob'ekt talabning bir qismi sifatida ishlatilgan. Mo'rtroq qismlarga zarar etkazmaslik uchun, LCD displey atrofiga qisma o'rnatilgan. LCD displeyining o'lchami taxminan 2-13/16 "x 1-1/16" x 1/4 "bo'lib chiqdi va shuning uchun faqat balandlik sezilarli darajada o'zgardi. Agar 3D printer mavjud bo'lsa, shaxsiy ob'ektni qo'shishni o'ylab ko'ring. O'lchovlar farq qilishi mumkinligini ham biling.

3 -qadam: MATLAB -ni sozlash

MATLAB sozlamalari
MATLAB sozlamalari
MATLAB sozlamalari
MATLAB sozlamalari

MathWorks veb -saytida https://www.mathworks.com/products/matlab.html?s_tid=srchtitle mavjud MATLAB (2016a va undan keyingi) yangilangan versiyasini o'rnating. Ochgandan so'ng, "Uy" yorlig'idagi qo'shimchalarga o'ting va mikrokontroller buyruqlariga kirish uchun "Arduino uskunalari uchun MATLAB qo'llab-quvvatlash to'plami" ni yuklab oling.

Tugatgandan so'ng, mikrokontrollerning kompyuter/noutbukga ulanishini aniqlash uchun test o'tkazish mumkin. Ularni asboblar to'plamidan USB adapter bilan ulaganingizdan so'ng, "fopen (serial ('nada'))" buyrug'ini kiriting.

Ulagichni "COM#" deb ko'rsatadigan xato xabari paydo bo'ladi, u har doim bir xil kirish bo'lsa, arduino ob'ektini yaratish uchun kerak bo'ladi.

LCD displey Arduino kutubxonasiga to'g'ridan -to'g'ri ulanmaganligi sababli, xabarlarni ko'rsatish uchun yangi kutubxona yaratish kerak. "Arduino LCD" ni qidirib, uni +arduinoioaddons papkasida joylashtirgandan so'ng, MATLAB yordam oynasida joylashgan LCD misolidan LCDAddon.m faylini yaratish yoki biriktirilgan siqilgan papkadan foydalanib, uning tarkibini yuqorida aytilganlarga nusxalash tavsiya etiladi. jild

Agar muvaffaqiyatli bo'lsa, MATLAB -da Arduino ob'ektini yaratish kodi quyida ko'rsatilgan.

a = arduino ('com#', 'uno', 'kutubxonalar', 'ExampleLCD/LCDAddon');

4 -qadam: funktsiyalar

Vazifalar
Vazifalar
Vazifalar
Vazifalar

MATLAB funktsiyasini yarating. Kirish uchun biz "eff" va "T_min" o'zgaruvchilaridan foydalanamiz; Chiqish uchun, umumiy dizaynda kerak bo'lmasa -da, biz "B" o'zgaruvchisidan natijalar ma'lumotlarini saqlash usuli sifatida foydalanganmiz. "Eff" usuli servoning maksimal tezligini boshqarishga imkon beradi va "T_min" usuli kerakli minimal haroratni boshqaradi. Shunday qilib, "B" qiymati vaqt, harorat va fan samaradorligi uchun uchta ustunni o'z ichiga olgan matritsani ishlab chiqarishi kerak. Shuningdek, tafsilotlarga bonus sifatida, quyida keltirilgan kodda if-iborasi mavjud bo'lib, u kerakli minimal haroratga yaqinlashganda fan tezligi ellik foizga kamayadi.

Agar barcha kirish va o'tish simlari aniq joylashtirilsa va arduino ulanish porti COM4 bo'lsa va funktsiya nomi "fanread" bo'lsa, quyidagi kod etarli bo'lishi kerak:

funktsiya [B] = fan o'qish (Tmin, eff)

aniq a; aniq lcd; a = arduino ('com4', 'uno', 'kutubxonalar', 'ExampleLCD/LCDAddon');

t = 0; t_max = 15; soniyalarda % vaqt

lcd = addon (a, 'ExampleLCD/LCDAddon', {'D7', 'D6', 'D5', 'D4', 'D3', 'D2'});

initializeLCD (LCD, "Qatorlar", 2, "Ustunlar", 2);

agar eff> = 1 || bo'lsa e <0

xato ('eff 0 dan 1 gacha o'rnatilmasa, fan yoqilmaydi')

oxiri

t = 1 uchun: 10 % looplar/intervallar soni

aniq v; % xato takrorlanishining oldini oladi

v = o'qish voltaji (a, 'A0');

TempC = (v-0,5)*100; 2,7-5,5 V kuchlanish diapazonlari uchun % bahosi

agar TempC> Tmin bo'lsa TempC

c = ['Harorat', num2str (TempC, 3), 'C Yoqilgan'];

writePWMDutyCycle (a, 'D9', eff/2); % servo rejimini yarim tezlikda yoqadi

spd = 50;

boshqa

c = ['Harorat', num2str (TempC, 3), 'C Yoqilgan'];

writePWMDutyCycle (a, 'D9', eff); % berilgan tezlikda servo rejimini yoqadi

spd = 100;

oxiri

boshqa

c = ['Harorat', num2str (TempC, 3), 'C O'chirilgan'];

writePWMDutyCycle (a, 'D9', 0); % yoqilgan bo'lsa o'chiriladi

spd = 0;

oxiri

printLCD (lcd, c);

pauza (3); Har bir tsiklda % uch soniya o'tadi

vaqt (t) = t.*3;

tempplot (t) = TempC;

harakat (t) = spd;

kichik reja (2, 1, 1)

uchastka (vaqt, tempplot, 'b-o') % chiziqli grafik

o'q ([0 33 0 40])

xlabel ('Vaqt (soniya)')

ylabel ("Harorat (C)")

to'xtab tur

syujet ([0 33], [Tmin Tmin], 'r-')

to'xtab tur

syujet ([0 33], [Tmin+2 Tmin+2], 'g-')

kichik reja (2, 1, 2)

bar (vaqt, harakat) % chiziqli grafik

xlabel ('Vaqt (soniya)')

ylabel ('Samaradorlik (%)')

oxiri

B = transpozitsiya ([vaqt; tempplot; harakat]);

oxiri

Endi funktsiya tugadi, sinov vaqti keldi.

5 -qadam: Sinov

Sinov
Sinov
Sinov
Sinov

Endi funktsiyani buyruq oynasida "function_name (input_value_1, input_value_2)" qo'shib tekshiring. Hech qanday Arduino obyekti mavjud emasligiga ishonch hosil qiling; agar shunday bo'lsa, uni o'chirish uchun "tozalash a" buyrug'idan foydalaning. Agar xatolar yuzaga kelsa, tekshiring va ulagichlarning noto'g'ri joyida yoki noto'g'ri raqamli yoki analogli kirishlar ishlatilganligini tekshiring. Natijalar turlicha bo'lishi kutilmoqda, lekin bunga ba'zi o'tish simlari va harorat sensori joylashishi sabab bo'lishi mumkin.

Natijalarni kutish, servo va LCD displeyidagi ko'rsatkichlarning o'zgarishiga olib kelishi kerak. Har uch soniya oralig'ida matn satrida harorat Selsiy bo'yicha ko'rsatilishi kerak va fan to'liq ishlayotganda, yarim tezlikda yoki hech qanday tezlikda ishlayotganida fan faol yoki yo'q. Ma'lumotlar izchil bo'lmasligi kerak, lekin har xil natijalarga erishmoqchi bo'lsangiz, "Tmin" qiymatini kontaktlarning zanglashiga olib keladigan o'rtacha haroratiga yaqin joylashtiring.

6 -qadam: Xulosa

Xulosa
Xulosa

Sinov va xato yo'li bilan bajarish qiyin vazifa bo'lsa -da, yakuniy natijalar ancha qiziqarli va qoniqarli bo'lib chiqdi. Bunday tizim qancha murakkab mashinalarni, hatto ularning ba'zi qismlarini ham aniq maqsadga erishish uchun birlashtirilgan mustaqil qismlar yig'indisi sifatida ko'rish mumkinligini ko'rsatishga yordam beradi.

Yakuniy loyihaning sodda dizayni tufayli, uning ishlashini yaxshilashga qiziquvchilar loyihani yaxshilab va batafsilroq qilish uchun yakuniy mahsulotga o'zgartirishlar va o'zgartirishlar kiritishlari mumkin. Biroq, bu tizimning zaif tomonlarini aniqlaydi, masalan, servo faollashuvi, davriy voltaj o'qishining vaqti -vaqti bilan o'zgarishiga olib keladi, bu tizim hech qachon bir xil natijalarga olib kelmasligi mumkin. Shuningdek, "eff" 0,4 va undan yuqori o'rnatilganida servo tezligining o'zgarishini ko'rish bilan bog'liq muammolar bo'lgan. Agar harorat va namlik sensori ishlatilsa, yakuniy model yanada murakkab, lekin izchilroq qiymatlarga ega bo'lar edi. Shunga qaramay, bu tajriba shuni ko'rsatadiki, murakkab mashina uning oddiy qismlarining kombinatsiyasi sifatida ishlay oladi.

Tavsiya: