В този урок ще свържем DC мотор с Arduino UNO и ще контролираме неговата скорост, използвайки концепцията PWM (Pulse Width Modulation). Тази функция е активирана в UNO за получаване на променливо напрежение спрямо постоянно напрежение. Тук е обяснен методът на ШИМ; помислете за проста схема, както е показано на фигурата.
Ако бутонът е натиснат, ако фигурата, тогава двигателят ще започне да се върти и ще бъде в движение, докато бутонът не бъде натиснат. Това натискане е непрекъснато и е представено в първата вълна от фигурата. Ако за даден случай разгледате бутона, натиснат за 8 ms и отворен за 2 ms за цикъл от 10 ms, в този случай двигателят няма да изпитва пълното напрежение на батерията 9V, тъй като бутонът е натиснат само за 8 ms, така че RMS напрежението на клемата двигателят ще бъде около 7V. Поради това намалено RMS напрежение двигателят ще се върти, но с намалена скорост. Сега средното включване за период от 10 ms = Време за включване / (Време за включване + Време за изключване), това се нарича работен цикъл и е от 80% (8 / (8 + 2)).
Във втори и трети случай бутонът се натиска още по-малко време в сравнение с първия случай. Поради това RMS напрежението на клемите на клемите на двигателя дори намалява допълнително. Поради това намалено напрежение скоростта на двигателя дори намалява допълнително. Това намаляване на скоростта с непрекъснат работен цикъл се случва до точка, в която напрежението на клемата на двигателя няма да бъде достатъчно за завъртане на двигателя.
Така че от това можем да заключим, че ШИМ може да се използва за промяна на скоростта на двигателя.
Преди да продължим по-нататък, трябва да обсъдим H-BRIDGE. Сега тази схема има предимно две функции, първата е да задвижва DC мотор от управляващи сигнали с ниска мощност, а другата е да променя посоката на въртене на DC мотора.
Фигура 1
Фигура 2
Всички знаем, че за двигател с постоянен ток, за да променим посоката на въртене, трябва да променим полярностите на захранващото напрежение на двигателя. За да променим полярностите, използваме H-мост. Сега на фигура 1 имаме четворки. Както е показано на фигура2, за да се въртят двигателите А1 и А2 са затворени. Поради това токът протича през двигателя отдясно наляво, както е показано на 2- ра част на фигура 3. За сега помислете, че двигателят се върти по посока на часовниковата стрелка. Сега, ако ключовете A1 и A2 са отворени, B1 и B2 са затворени. Токът през двигателя тече отляво надясно, както е показано на 1 ст част от фигура3. Тази посока на текущия поток е противоположна на първата и така виждаме противоположен потенциал на клемата на двигателя на първия, така че двигателят се върти в посока против часовниковата стрелка. Ето как работи H-BRIDGE. Въпреки това двигателите с ниска мощност могат да бъдат задвижвани от H-BRIDGE IC L293D.
L293D е H-BRIDGE IC, предназначен за задвижване на двигатели с постоянен ток с ниска мощност и е показан на фигура. Тази интегрална схема се състои от два h-моста и така може да задвижва два постояннотокови мотора. Така че тази интегрална схема може да се използва за задвижване на двигателите на робота от сигналите на микроконтролера.
Както вече беше обсъдено по-рано, тази интегрална схема има способността да променя посоката на въртене на DC мотора. Това се постига чрез контролиране на нивата на напрежение при INPUT1 и INPUT2.
Активиране на ПИН |
Входен щифт 1 |
Входен щифт 2 |
Посока на двигателя |
Високо |
Ниска |
Високо |
Обърни се на дясно |
Високо |
Високо |
Ниска |
Завийте наляво |
Високо |
Ниска |
Ниска |
Спри се |
Високо |
Високо |
Високо |
Спри се |
Така както е показано на фигурата по-горе, за въртене по посока на часовниковата стрелка 2A трябва да е висока, а 1A да е ниска. По същия начин за обратно на часовниковата стрелка 1A трябва да бъде висока и 2A трябва да бъде ниска.
Както е показано на фигурата, Arduino UNO има 6PWM канали, така че можем да получим PWM (променливо напрежение) на всеки от тези шест щифта. В този урок ще използваме PIN3 като PWM изход.
Хардуер: ARDUINO UNO, захранване (5v), кондензатор 100uF, LED, бутони (два броя), 10KΩ резистор (два броя).
Софтуер: arduino IDE (Arduino всяка вечер).
Електрическа схема
Веригата е свързана в макет, както е показано на схемата, показана по-горе. Въпреки това трябва да се обърне внимание по време на свързването на LED клемите. Въпреки че бутоните показват подскачащ ефект, в този случай това не причинява значителни грешки, така че не е нужно да се притесняваме този път.
PWM от UNO е лесен, при нормални случаи настройването на ATMEGA контролер за PWM сигнал не е лесно, трябва да дефинираме много регистри и настройки за точен сигнал, но в ARDUINO не е нужно да се занимаваме с всички тези неща.
По подразбиране всички заглавни файлове и регистри са предварително дефинирани от ARDUINO IDE, просто трябва да ги извикаме и това е, ще имаме PWM изход на подходящ пин.
Сега, за да получим PWM изход на подходящ щифт, трябва да работим по три неща,
|
Първо трябва да изберем PWM изходния щифт от шест извода, след това трябва да зададем този извод като изход.
След това трябва да активираме функцията PWM на UNO, като извикаме функцията „analogWrite (пин, стойност)“. Тук 'pin' представлява номера на пина, където се нуждаем от PWM изход, ние го поставяме като '3'. Така че при PIN3 получаваме PWM изход.
Стойността е работен цикъл на включване, между 0 (винаги изключен) и 255 (винаги включен). Ще увеличим и намалим това число чрез натискане на бутон.
UNO има максимална разделителна способност „8“, не може да се стигне по-далеч, следователно стойностите от 0-255. Въпреки това може да се намали разделителната способност на ШИМ, като се използва команда „analogWriteResolution ()“, като се въведе стойност от 4-8 в скоби, можем да променим стойността й от четирибитова ШИМ на осем битова ШИМ.
Превключвателят е за промяна на посоката на въртене на DC мотора.