Както беше обсъдено по-рано, Arduino Due е платка, базирана на ARM контролер, предназначена за електронни инженери и любители. Тази DUE платка може да се използва за изработване на машини с ЦПУ, 3D принтери, роботизирани рамена и др. Всички тези проекти имат обща характеристика, която е Контрол на позицията. Всеки от тези проекти се нуждае от точност спрямо позицията си. Точните позиции в тези машини могат да бъдат постигнати от Servo Motors. В тази сесия ще контролираме позицията на серво мотор с Arduino Due. Вече покрихме взаимодействието на серво мотора с Arduino Uno и взаимодействието на серво мотора с микроконтролер 8051.
Серво мотори:
Сервомоторите са известни с точното си движение или положение на вала. Те не се предлагат за високоскоростни приложения. Те се предлагат за ниска скорост, среден въртящ момент и точно приложение на позицията. Тези двигатели се използват в роботизирани машини за управление, полет и системи за управление. Серво мотори се използват и в някои от принтерите и факс машините.
Серво двигателите се предлагат в различни форми и размери. В този урок ще използваме сервомотор SG90. SG90 е серво мотор на 180 градуса. Така че с това серво може да позиционираме оста от 0 до 180 градуса.
Серво мотор има основно три проводника, единият е за положително напрежение, друг е за заземяване и последният е за настройка на позицията. ЧЕРВЕНИЯТ проводник е свързан към захранването, Кафявият проводник е свързан към земята и ЖЪЛТИЯ проводник (или БЯЛ) е свързан към сигнала.
Серво мотор е комбинация от DC мотор, система за управление на позицията и предавки. В серво, имаме система за управление, която приема ШИМ сигнала от сигналния щифт. Той декодира сигнала и получава коефициента на мито от него. След това сравнява съотношението с предварително дефинираните стойности на позициите. Ако има разлика в стойностите, той коригира съответно позицията на серво. Така че позицията на оста на серво мотора се основава на коефициента на запълване на ШИМ сигнала към щифта СИГНАЛ.
Честотата на сигнала PWM (Pulse Width Modulated) може да варира в зависимост от типа на серво мотора. Важното тук е DUTY RATIO на PWM сигнала. Проверете това за ШИМ с Arduino Due. В този случай обаче не е нужно дори да се притесняваме от избора на мито. В Arduino имаме специална функция; при извикване можем да регулираме позицията на серво, просто като посочим ъгъла. Ще говорим за това в работната секция по-долу.
Преди да свържете серво мотора с Arduino Due, можете да тествате серво с помощта на тази верига за тестер на серво мотор. Също така проверете тези проекти за Control Servo чрез Flex Sensor или от Force Sensor.
Компоненти:
Хардуер: Arduino Due, захранване (5v), серво мотор.
Софтуер: Arduino всяка вечер, изтеглете го от връзката по-долу (https://www.arduino.cc/en/Main/Software)
За подробности относно Как да изтеглите и инсталирате този софтуер, посетете първия урок Първи стъпки с Arduino Due.
Електрическа схема и работно обяснение:
Както беше казано по-рано в ARDUINO, имаме предварително дефинирани библиотеки, които ще задават честотите и коефициентите на запълване съответно, след като заглавният файл бъде извикан или включен. В ARDUINO просто трябва да посочим необходимата позиция на серво и DUE генерира подходящ PWM сигнал за серво. Нещата, които трябва да направим, за да получим точна позиция на серво, са,
#include
Серво мисерво;
myservo.attach (servo_signal_pin_attached_to);
myservo.write (необходим_позиционен_ ъгъл);
Заглавният файл „#include
На второ място, името трябва да бъде избрано за серво, като се използва „Servo myservo“ , тук myservo е избраното име, така че докато пишем за позиция, ще използваме това име, тази функция е полезна, когато имаме много серво за управление, ние можем да контролираме до 12 серво с това.
Тъй като Arduino Due има 12 ШИМ канала, трябва да кажем на DUE къде е свързан сигналният щифт на серво или къде трябва да генерира ШИМ сигнал. За целта имаме „myservo.attach (2);“ , тук казваме на DUE, че сме свързали сигналния щифт на серво при PIN2.
Остава само да зададем позицията, ще зададем позицията на серво, като използваме „ myservo.write (45);“ , чрез тази команда серво стрелката се движи на 45 градуса. Ако променим "45" на "175", сервоосната ос се ъгли на 175 градуса и остава там. След това, когато трябва да сменим позицията на серво, просто трябва да извикаме командата „ myservo.write (needed_position_angle);“ .
В програмата ще увеличим и намалим ъглите, като използваме цикли. Така сервометалото се изчиства от 0 до 180, след това от 180 до 0 и така нататък. Управлението на серво мотора от Arduino Due е най-добре обяснено в стъпка по стъпка от C код долу.