Мазмуну:

Arduino кондиционер модели: 6 кадам
Arduino кондиционер модели: 6 кадам

Video: Arduino кондиционер модели: 6 кадам

Video: Arduino кондиционер модели: 6 кадам
Video: Проблема Управление кондиционером с arduino 2024, Июль
Anonim
Arduino кондиционер модели
Arduino кондиционер модели

Биздин команданын маркетингдик максаттар үчүн акылдуу поезд түзүлүшүнүн моделин түзүү жөндөмдүүлүгүнүн бир бөлүгү катары, температура сенсору схемадан маалыматтарды окуй турган жана маалыматты температура маанисине айландырган системаны түзүү болгон. жарыктандырылган экранда көрсөтүлөт жана күйөрман күйүп же өчүп жатканына көңүл бурулат. Максаты - автоматташтырылган системаны колдонуп, жүргүнчүлөрдүн минүү шарттарын түзүүгө жардам берүү.

Arduino микроконтроллер комплектин жана MATLAB 2016b жана 2017b версияларын колдонуу менен биз бул жыйынтыктарды салыштырмалуу ийгилик менен көрсөтө алдык.

1 -кадам: жабдуулар

Жабдуулар
Жабдуулар

Микроконтроллер комплект төмөнкүлөр менен:

-Sparkfun Red Board

-Sparkfun Breadboard

-LCD Board

-Потенциометр

-Температура сенсору

-Серво

-USB/Arduino адаптери

-Jumper Wires (25, минималдуу)

USB киргизүү менен ноутбук (Windows 10)

3D Басылган Объект (милдеттүү эмес)

2 -кадам: Микроконтроллерди орнотуу

Микроконтроллерди орнотуу
Микроконтроллерди орнотуу
Микроконтроллерди орнотуу
Микроконтроллерди орнотуу
Микроконтроллерди орнотуу
Микроконтроллерди орнотуу
Микроконтроллерди орнотуу
Микроконтроллерди орнотуу

Муну ойлонуп көрүңүз: бүт система бирдиктүү бирдиктерден турат, алардын ар бири акыркы натыйжага карай олуттуу факторду колдонот. Ушул себептен улам, чыңалган башаламандыкта зымдарды бекитүүдөн мурун, чынжырдын сүрөтүн орнотуу сунушталат.

Ар бир моделдин сүрөттөрүн Микроконтроллер инструменттеринин колдонмосунан же https://learn.sparkfun.com/tutorials/tags/arduino?page=all дарегинен тапса болот.

Температура сенсорун, потенциометрди, servo коннекторлорун жана тактага LCD орнотуудан баштаңыз. Бул ЖКнын өлчөмүнө жана анын зымдардын санына болгон талабына байланыштуу, аны башка бөлүгүндө нан бөлүгүнүн жарымына жана потенциометрге кимдир бирөө үчүн болушу керек деп сунушталат. баскычын оңой буруңуз.

Маалымат үчүн:

ЖК: c1-16

Кызмат: i1-3 (GND + -)

Температура сенсору: i13-15 (- GND +)

Потенциометр: g24-26 (- GND +)

Кийинки, секирүүчү зымдарды микроконтроллердин ар бир пинине туташтыра баштаңыз; жалпы улуу схемада өзүм билемдикке карабастан, дизайн бул маанилүү байланыштар менен түзүлгөн:

ЖКга потенциометрди туташтыруу: f25 - e3

Servo GND зымы: j1 - Digital Input 9

Temp Sensor GND: j14 - Аналогдук киргизүү 0

ЖК киргизүү: e11-e15-Digital Input 2-5

e4 - Санарип киргизүү 7

e6 - Санарип киргизүү 6

(Эскертүү: Эгерде ийгиликтүү болсо, ЖКнын четиндеги эки жарык тең күйүп турушу керек жана потенциометр адаптерден кубат берилгенде анын жарыктыгын жөнгө салууга жардам берет.)

Кошумча: 3D басылган объект талаптын бир бөлүгү катары колдонулган. Дагы морт бөлүктөргө зыян келтирбөө үчүн, ЖКнын айланасында жең катары узартылган корпус жайгаштырылган. ЖКнын экранынын өлчөөлөрү болжол менен 2-13/16 "x 1-1/16" x 1/4 "болуп чыкты, ошондуктан бийиктиги гана олуттуу түрдө өзгөрдү. Эгерде 3D принтери жеткиликтүү болсо, жеке объектти кошууну ойлонуп көрүңүз. Ошондой эле, өлчөөлөр айырмаланышы мүмкүн экенин унутпаңыз.

3 -кадам: MATLAB орнотуусу

MATLAB орнотуу
MATLAB орнотуу
MATLAB орнотуу
MATLAB орнотуу

MathWorks веб -сайтында жеткиликтүү болгон MATLAB (2016а жана андан ары) версиясын орнотуңуз https://www.mathworks.com/products/matlab.html?s_tid=srchtitle. Ачылгандан кийин, Башкы өтмөктөгү кошумча жөндөөлөргө өтүп, микроконтроллердин жеткиликтүү болушу үчүн "Arduino жабдыктары үчүн MATLAB колдоо пакетин" жүктөп алыңыз.

Аяктагандан кийин, микроконтроллердин компьютерге/ноутбукка туташуусун табуу үчүн тест жүргүзүлүшү мүмкүн. Куралдар топтомунан аларды USB адаптери менен туташтыргандан кийин, "fopen (serial ('nada'))" командасын киргизиңиз.

Катышуу билдирүүсү калкып чыгат, бул туташтыргыч "COM#", ал ардуино объектисин түзүү үчүн керек болот, эгерде ал ар дайым бир эле учурда.

ЖКнын Arduino китепканасы менен түз байланышы жок болгондуктан, билдирүүлөрдү көрсөтүү үчүн жаңы китепкана түзүлүшү керек. Сунуш MATLAB жардам терезесинен табылган LCD мисалынан LCDAddon.m файлын түзүү болуп саналат "Arduino LCD" издеп, аны +arduinoioaddons папкасына койгондон кийин, же тиркелген кысылган папканы колдонуп, анын мазмунун баарын жогоруда көчүрүңүз. папка.

Эгер ийгиликтүү болсо, анда MATLABта Arduino объектисин түзүү коду төмөндө көрсөтүлгөндөй.

a = arduino ('com#', 'uno', 'Китепканалар', 'ExampleLCD/LCDAddon');

4 -кадам: Функциялар

Функциялар
Функциялар
Функциялар
Функциялар

MATLAB функциясын түзүү. Кириштер үчүн биз "eff" жана "T_min" өзгөрмөлөрүн колдонобуз; жыйынтыктар үчүн, жалпы дизайнда керексиз болсо да, биз "В" өзгөрмөсүн натыйжалардан маалыматтарды камтуунун жолу катары колдондук. "Эфф" киргизүү сервонун максималдуу ылдамдыгын башкарууга мүмкүндүк берет жана "T_min" кириши каалаган минималдуу температураны көзөмөлдөйт. "В" мааниси ушинтип убакыт, температура жана желдеткичтин эффективдүүлүгү үчүн үч мамычаны камтыган матрицаны чыгарышы керек. Ошондой эле, майда-чүйдөсүнө чейин бонус катары, төмөндө көрсөтүлгөн коддо if-билдирүүсү бар, ал каалаган минималдуу температурага жакындаганда күйөрман ылдамдыгы элүү пайызга төмөндөйт.

Эгерде бардык кириштер жана секиргич зымдар так жайгаштырылган жана arduino туташуу порту COM4 деп эсептелсе жана функция аты "fanread" болсо, анда төмөнкү код жетиштүү болушу керек:

функция [B] = fanread (Tmin, eff)

ачык а; тазалоо lcd; a = arduino ('com4', 'uno', 'Китепканалар', 'ExampleLCD/LCDAddon');

t = 0; t_max = 15; % убакыт секундада

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

initializeLCD (lcd, 'Rows', 2, 'Columns', 2);

эгер эфф> = 1 || e <0

ката ('eff 0 менен 1дин ортосунда коюлбаса күйөрман иштебейт.')

аяктоо

t = 1 үчүн: циклдердин/интервалдардын 10 % саны

ачык в; % катаны кайталоодон сактайт

v = readVoltage (a, 'A0');

TempC = (v-0.5)*100; 2.7-5.5 В чыңалуу диапазондору үчүн % баалоо

if TempC> Tmin if TempC

c = ['Temp', num2str (TempC, 3), 'C On'];

writePWMDutyCycle (a, 'D9', eff/2); % сервону жарым ылдамдыкта күйгүзүү

spd = 50;

башка

c = ['Temp', num2str (TempC, 3), 'C On'];

writePWMDutyCycle (a, 'D9', eff); % берилген ылдамдыкта сервону күйгүзөт

spd = 100;

аяктоо

башка

c = ['Temp', num2str (TempC, 3), 'C Off'];

writePWMDutyCycle (a, 'D9', 0); мурунтан күйгүзүлгөн болсо % жабылат

spd = 0;

аяктоо

printLCD (lcd, c);

тыныгуу (3); Бир циклге % үч секунд өтөт

убакыт (t) = t.*3;

tempplot (t) = TempC;

act (t) = spd;

кошумча план (2, 1, 1)

участок (убакыт, темплот, 'b-o') % сызык графиги

огу ([0 33 0 40])

xlabel ('Убакыт (секунд)')

ylabel ('Температура (C)')

токто

сюжет ([0 33], [Tmin Tmin], 'r-')

токто

сюжет ([0 33], [Tmin+2 Tmin+2], 'g-')

кошумча план (2, 1, 2)

бар (убакыт, аракет) % тилкесинин графиги

xlabel ('Убакыт (секунд)')

ylabel ('Натыйжалуулук (%)')

аяктоо

B = которуу ([убакыт; темплот; аракет]);

аяктоо

Эми функция бүткөндөн кийин, тестирлөө убактысы келди.

5 -кадам: Тестирлөө

Тестирлөө
Тестирлөө
Тестирлөө
Тестирлөө

Эми функцияны буйрук терезесинде "function_name (input_value_1, input_value_2)" жана саатты киргизүү менен текшериңиз. Ардуино объектиси жок экенине ишениңиз; болсо, аны алып салуу үчүн "тазалоо а" буйругун колдонуңуз. Эгерде каталар пайда болсо, текшериңиз жана кандайдыр бир туташтыргычтар туура эмес жерде же туура эмес санарип же аналогдук кирүүлөр колдонулганын текшериңиз. Натыйжалар ар кандай болушу күтүлүүдө, бирок бул айрым секиргич зымдардын жана температура сенсорунун жайгашуусунан келип чыгышы мүмкүн.

Жыйынтыктардын күтүүлөрү сервонун иштөөсүндө жана ЖКдагы маалыматтарда өзгөрүүлөрдү жаратышы керек. Ар бир үч секунддук интервьюда, тексттин сапы Цельсийдеги температураны жана желдеткичтин активдүү же активдүү эмес экенин көрсөтүшү керек, ал эми күйөрман толук ылдамдыкта, жарым ылдамдыкта же эч кандай ылдамдыкта иштейт. Маалыматтар, сыягы, ырааттуу болбошу керек, бирок ар кандай жыйынтыктарды кааласаңыз, "Tmin" мааниси чынжыр чыгарган орточо температурага жакын.

6 -кадам: Жыйынтык

Жыйынтык
Жыйынтык

Сыноо жана ката аркылуу аткаруу татаал иш болсо да, акыркы жыйынтыктар абдан кызыктуу жана канааттандырарлык болуп чыкты. Мындай система канча татаал машиналарды, ал тургай алардын айрым бөлүктөрүн белгилүү бир максатка жетүү үчүн чогуу жайгаштырылган көз карандысыз бөлүктөрдүн жыйындысы катары кароого болорун көрсөтүүгө жардам берет.

Акыркы долбоордун өтө жөнөкөй дизайнынан улам, анын иштешин жакшыртууга кызыккандар долбоорду жакшыртып жана өркүндөтө ала турган акыркы продуктка өзгөртүүлөрдү жана өзгөртүүлөрдү киргизе алышат. Бирок, бул системанын эч качан бирдей натыйжаларга алып келбеши мүмкүн болгон чынжырдын чыңалуусунун бир аз өзгөрүүсүнө алып келген сервонун активдешүүсү сыяктуу схеманын алсыз жактарын көрсөтөт. Ошондой эле, "eff" 0,4 жана андан жогору орнотулганда, servo ылдамдыгынын өзгөрүшүн көрүү менен көйгөйлөр болгон. Эгер температура жана нымдуулук сенсору колдонулганда, акыркы модель татаалыраак болмок, бирок ырааттуу баалуулуктарды көрсөтмөк. Ошентсе да, бул татаал машинанын жөнөкөй бөлүктөрүнүн жыйындысы катары иштей аларын көрсөткөн тажрыйба.

Сунушталууда: