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

Arduino агааржуулагчийн загвар: 6 алхам
Arduino агааржуулагчийн загвар: 6 алхам

Видео: Arduino агааржуулагчийн загвар: 6 алхам

Видео: Arduino агааржуулагчийн загвар: 6 алхам
Видео: cara membuat saklar sentuh dengan alat sederhana 2024, Арваннэгдүгээр
Anonim
Arduino агааржуулагчийн загвар
Arduino агааржуулагчийн загвар

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

Arduino микроконтроллерийн иж бүрдэл, MATLAB 2016b, 2017b хувилбаруудыг ашигласнаар бид эдгээр үр дүнг харьцангуй амжилттай харуулж чадсан юм.

Алхам 1: Тоног төхөөрөмж

Тоног төхөөрөмж
Тоног төхөөрөмж

Дараахь зүйлийг агуулсан микроконтроллерийн иж бүрдэл.

-Sparkfun Улаан самбар

-Sparkfun талхны самбар

-LCD самбар

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

-Температур мэдрэгч

-Серво

-USB/Arduino адаптер

-Jumper утас (хамгийн багадаа 25)

USB оролттой зөөврийн компьютер (Windows 10)

3D хэвлэсэн объект (заавал биш)

Алхам 2: Микроконтроллерийн тохиргоо

Микроконтроллерийн тохиргоо
Микроконтроллерийн тохиргоо
Микроконтроллерийн тохиргоо
Микроконтроллерийн тохиргоо
Микроконтроллерийн тохиргоо
Микроконтроллерийн тохиргоо
Микроконтроллерийн тохиргоо
Микроконтроллерийн тохиргоо

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

Загвар тус бүрийн зургийг Микроконтроллерийн хэрэгслийн гарын авлагаас эсвэл https://learn.sparkfun.com/tutorials/tags/arduino?page=all вэбсайтаас үзэх боломжтой.

Температур мэдрэгч, потенциометр, servo холбогч, LCD -ийг самбар дээр холбож эхэл. LCD -ийн хэмжээ, утаснуудын тооны шаардлагыг харгалзан талхны тавцангийн хагасыг нөгөө талдаа нөгөө талдаа байрлуулж, потенциометрийг хэн нэгэнд зориулагдсан газарт байрлуулахыг зөвлөж байна. товчлуураа амархан эргүүлнэ.

Лавлагааны хувьд:

LCD: c1-16

Servo: i1-3 (GND + -)

Температур мэдрэгч: i13-15 (- GND +)

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

Дараа нь микроконтроллерийн зүү бүрт холбогч утсыг холбож эхлээрэй; ерөнхий схемд дур зоргоороо боловч дизайныг эдгээр чухал холболтоор бүтээсэн болно.

Потенциометрийг LCD дэлгэцтэй холбох: f25 - e3

Servo GND утас: j1 - Дижитал оролт 9

Температур мэдрэгч GND: j14 - Аналог оролт 0

LCD оролт: e11-e15-Дижитал оролт 2-5

e4 - Дижитал оролт 7

e6 - Дижитал оролт 6

(Тэмдэглэл: Хэрэв амжилттай болвол LCD -ийн ирмэг дээрх гэрэл хоёулаа асах ёстой бөгөөд адаптераас тэжээл авсны дараа потенциометр нь түүний гэрлийг тохируулахад тусална.)

Нэмэлт: 3D хэвлэсэн объектыг шаардлагын нэг хэсэг болгон ашигласан. Илүү эмзэг хэсгүүдэд гэмтэл учруулахаас зайлсхийхийн тулд LCD дэлгэцийг ханцуйвчаар өргөтгөсөн хайрцгийг байрлуулсан. LCD дэлгэцийн хэмжээс нь ойролцоогоор 2-13/16 "x 1-1/16" x 1/4 "хэмжээтэй байсан тул зөвхөн өндрийг нь л өөрчилсөн байна. Хэрэв 3D принтер бэлэн байгаа бол хувийн объект нэмж оруулаарай., шаардлагагүй боловч хэмжилт өөр байж болохыг анхаарна уу.

Алхам 3: MATLAB -ийн тохиргоо

MATLAB тохиргоо
MATLAB тохиргоо
MATLAB тохиргоо
MATLAB тохиргоо

MathWorks вэбсайт дахь https://www.mathworks.com/products/matlab.html?s_tid=srchtitle вэбсайтаас авах боломжтой MATLAB -ийн (2016a ба түүнээс дээш) илүү шинэчилсэн хувилбарыг суулгаарай Нээгдсэний дараа Home таб дээрх Нэмэлтүүд рүү очоод "Arduino Hardware-д зориулсан MATLAB Support Package" програмыг татаж аваарай.

Дууссаны дараа микроконтроллерийн компьютер/зөөврийн компьютерт холбогдох холболтыг олохын тулд тест хийж болно. Багаж хэрэгслээс USB адаптертай холбосны дараа "fopen (serial ('nada'))" командыг оруулна уу.

Алдааны мессеж гарч ирэх бөгөөд холбогчийг "COM#" гэж зааж өгөх бөгөөд энэ нь бүх цаг үед ижил оролттой байхад arduino объектыг үүсгэхэд шаардлагатай болно.

LCD нь Arduino номын сантай шууд холбогдоогүй тул зурвас харуулахын тулд шинэ номын сан бий болгох ёстой. Зөвлөмж нь "Arduino LCD" -ийг хайж, +arduinoioaddons фолдерт байрлуулсны дараа MATLAB тусламжийн цонхноос олдсон LCD жишээнээс LCDAddon.m файл үүсгэх, эсвэл хавсаргасан хавтасыг ашиглан дээр дурдсан бүх агуулгыг хуулбарлах явдал юм. хавтас.

Хэрэв амжилттай бол MATLAB дээр Arduino объект үүсгэх код нь доор үзүүлсэн шиг байна.

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

Алхам 4: Чиг үүрэг

Чиг үүрэг
Чиг үүрэг
Чиг үүрэг
Чиг үүрэг

MATLAB функцийг бий болгох. Оролтын хувьд бид "eff" ба "T_min" хувьсагчдыг ашигладаг; Гаралтын хувьд ерөнхий загварт шаардлагагүй боловч бид "B" хувьсагчийг үр дүнгээс мэдээлэл оруулах арга болгон ашигласан. "Eff" оролт нь servo -ийн хамгийн дээд хурдыг удирдах боломжийг олгодог бөгөөд "T_min" оролт нь хүссэн хамгийн бага температурыг хянадаг. "B" утга нь сэнсний цаг, температур, үр ашгийн гурван баганыг агуулсан матрицыг гаргах ёстой. Мөн дэлгэрэнгүй мэдээлэл өгөх урамшууллын хувьд доор жагсаасан код нь хэрэв хүссэн хамгийн бага температурт ойртох юм бол сэнсний хурд тавин хувиар буурах if-мэдэгдэлтэй байна.

Хэрэв бүх оролт, холбогч утсыг яг байрлуулж, arduino холболтын порт нь COM4 бөгөөд функцийн нэрийг "fanread" гэж үзвэл дараах код хангалттай байх ёстой.

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

тодорхой a; цэвэр 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);

хэрэв eff> = 1 || e <0

алдаа ('eff 0 -ээс 1 -ийн хооронд тохируулаагүй бол фен идэвхжихгүй.')

Төгсгөл

t = 1: 10 % давталт/интервалын тоо

тодорхой c; % алдаа давтагдахаас сэргийлнэ

v = унших хүчдэл (a, 'A0');

TempC = (v-0.5)*100; 2.7-5.5 В хүчдэлийн хязгаарын тооцоолол

if TempC> Tmin бол TempC

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

writePWMDutyCycle (a, 'D9', eff/2); % нь servo -ийг хагас хурдтай асаана

spd = 50;

өөр

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

writePWMDutyCycle (a, 'D9', eff); % servo асаах хурд

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;

үйлдэл (t) = spd;

дэд хэсэг (2, 1, 1)

plot (time, tempplot, '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 = шилжүүлэн суулгах ([цаг; tempplot; үйлдэл]);

Төгсгөл

Одоо функц дууссан тул тест хийх цаг болжээ.

Алхам 5: Туршилт

Туршилт
Туршилт
Туршилт
Туршилт

Одоо командын цонхонд "function_name (input_value_1, input_value_2)" оруулаад функцийг туршиж үзээрэй. Arduino ямар ч объект байхгүй байгаа эсэхийг шалгаарай; Хэрэв тийм бол түүнийг арилгахын тулд "clear a" командыг ашиглана уу. Алдаа гарсан тохиолдолд ямар нэгэн холбогч буруу байрласан, эсвэл буруу дижитал эсвэл аналог оролт ашиглаж байгаа эсэхийг шалгаарай. Үр дүн нь өөр өөр байх болно, гэхдээ энэ нь зарим холбогч утас, температур мэдрэгчийг байрлуулснаас үүдэлтэй байж магадгүй юм.

Үр дүнгийн хүлээлт нь servo -ийн гүйцэтгэл болон LCD дээрх өгөгдөлд өөрчлөлт оруулах ёстой. Гурван секундын интервал тутамд текстийн мөр нь температурыг Цельсийн температурт харуулах ёстой бөгөөд сэнс бүрэн хурдтай, хагас хурдтай эсвэл огт хурдгүй ажиллаж байхад сэнс идэвхтэй байгаа эсэх. Өгөгдөл нь уялдаа холбоотой биш байх магадлалтай боловч илүү олон янзын үр дүнд хүрэхийг хүсч байвал "Tmin" утгыг хэлхээний үйлдвэрлэсэн дундаж температуртай ойролцоо байрлуулна.

Алхам 6: Дүгнэлт

Дүгнэлт
Дүгнэлт

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

Эцсийн төслийн загварыг маш энгийн байдлаар хийсний ачаар түүний гүйцэтгэлийг сайжруулах сонирхолтой хүмүүс төслийг эцсийн байдлаар илүү сайн, боловсронгуй болгохын тулд тохируулга, өөрчлөлт хийж болно. Гэсэн хэдий ч энэ нь хэлхээний сул талыг илтгэдэг, тухайлбал servo -ийн идэвхжүүлэлт нь хэлхээний хүчдэлийн уналтын үе үе хэлбэлзэлд хүргэдэг бөгөөд энэ нь системийг хэзээ ч ижил үр дүнд хүргэхгүй байх шалтгаан болдог. Мөн "eff" -ийг 0.4 ба түүнээс дээш түвшинд тохируулах үед servo хурдны өөрчлөлтийг харахтай холбоотой асуудлууд гарч байсан. Хэрэв температур, чийгшлийн мэдрэгчийг ашигласан бол эцсийн загвар нь илүү төвөгтэй боловч илүү тогтвортой утгыг харуулах болно. Гэсэн хэдий ч энэ бол нарийн төвөгтэй машин нь түүний энгийн хэсгүүдийн нэгдэл болж ажиллах боломжтой болохыг харуулсан туршлага юм.

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