- Модулация на широчината на импулса (PWM)
- Програмиране на ATtiny13 с помощта на Arduino
- Необходими компоненти
- Електрическа схема и работа
Серво моторът работи върху главната част на модулацията на широчината на импулса (PWM) и ъгълът му на въртене се контролира от продължителността на импулса, приложен към неговия контролен щифт. Тук в този урок ще управляваме серво мотор с микроконтролер ATtiny13, използвайки ШИМ техника. Така че, преди да продължим напред, първо ще научим за ШИМ, серво мотор и как да програмираме ATtiny13 с Arduino Board.
Модулация на широчината на импулса (PWM)
Модулацията на широчината на импулса (PWM) се определя като метод за генериране на аналогов сигнал с помощта на цифров източник. PWM сигналът се състои от два основни компонента - работен цикъл и честота. Тези компоненти определят поведението му. Работният цикъл описва времето, в което сигналът е във високо състояние. Той се обозначава като процент от общото време, необходимо за завършване на един цикъл.
Работен цикъл = Време за включване / (Време за включване + Време за изключване)
Честотата определя колко бързо ШИМ завършва цикъл и колко бързо сигналът превключва между високо и ниско състояние. Честота от 100Hz означава 100 цикъла в секунда. Чрез включване и изключване на цифров сигнал с бърза скорост и с определен работен цикъл, изходът ще изглежда като аналогов сигнал с постоянно напрежение. Едно от мощните предимства на ШИМ е, че загубата на мощност е много минимална.
Всички серво мотори работят директно с + 5V захранване, но трябва да внимаваме с количеството ток, което двигателят би консумирал. Ако използваме повече от два серво мотора, трябва да се проектира подходящ серво щит.
Преди да свържете серво с Attiny13, можете да тествате серво с помощта на тази верига за тестер на серво мотор. Тук имаме свързан серво мотор с много микроконтролери:
- Свързващ серво мотор с ARM7-LPC2148
- Взаимодействие на серво мотор с MSP430G2
- Управление на множество серво мотори с Arduino
- Взаимодействие на серво мотор с PIC микроконтролер с помощта на MPLAB и XC8
- Серво моторно управление с Raspberry Pi
- Серво моторно управление с Arduino Due
- Взаимодействие на серво мотор с AVR микроконтролер Atmega16
Програмиране на ATtiny13 с помощта на Arduino
Attiny13 може да бъде програмиран с помощта на Arduino Uno или друга Arduino платка. Свържете Attiny13 към Arduino Uno, както е показано на фигурата по-долу.
- Arduino 5V - ATtiny13 щифт 8
- Arduino GND - ATtiny13 пин 4
- Arduino щифт 13 - ATtiny13 щифт 7
- Arduino щифт 12 - ATtiny13 щифт 6
- Arduino pin 11 - ATtiny13 pin 5
- Arduino pin 10 - ATtiny13 pin 1
Arduino е настроен като програмист за програмиране на ATtiny13. Това става чрез качване на скица на ArduinoISP в Arduino. Тази скица на Arduino е достъпна в примерите в Arduino IDE. Отворете IDE на Arduino и отидете на Файлове> Примери> ArduinoISP .
Сега програмата за ArduinoISP ще се появи. Качете програмата в Arduino Uno.
Arduino Uno вече е готов да програмира Attiny13. Но трябва да настроим Attiny, като инсталираме основните му файлове. За целта отидете на Файл >> Предпочитания в Arduino IDE
След това ще се появи нов прозорец. И в „ Допълнителни URL адреси на диспечера на борда “ добавете връзката по-долу и кликнете върху „OK“.
“Https://raw.githubusercontent.com/sleemanj/optiboot/master/dists/package_gogo_diy_attiny_index.json”
Сега във вашата Arduino IDE отидете на Инструменти >> Дъска >> Мениджър на платки
След това ще се появи нов прозорец, където в полето за търсене напишете „Attiny“, след което ще получите „DIY ATtiny“, след това щракнете върху бутона „install“ (вече го инсталирах, затова бутонът за инсталиране е в сив цвят)
За да започнем програмирането на ATtiny 13, трябва да изгорим Bootloader към него. За това отидете на Tools> Board> ATtiny13.
Сега отидете на Инструменти> Версия на процесора и проверете дали е избрана правилната версия на ATtiny. Изберете ATtiny13 или ATtiny13a в зависимост от вашия чип.
След това щракнете върху бутона Burn bootloader в долната част на менюто Tools.
След изгаряне на буутлоудъра, ATtiny вече е готов за програмиране. Сега можете да качите вашата програма.
Необходими компоненти
- Микроконтролер ATtiny13
- Серво мотор
- Потенциометър
- + 5V батерия
- IDE на Arduino
- Свързващи проводници
Електрическа схема и работа
Схема за управление на серво мотор с помощта на пот с ATtiny13 е дадена по-долу.
По-долу са връзките
- Свържете щифта за управление на серво мотора към щифт 5 на ATtiny13
- Свържете масата на серво мотора към щифт 4 на ATtiny13
- Свържете VCC на серво мотора към щифт 8 на ATtiny13
- Свържете средния щифт на потенциометъра към щифт 7 на ATtiny13
- Свържете първия и третия щифт на потенциометъра към VCC и GND.
- Свържете положителното на + 5V батерия към щифт 8 на ATtiny13
- Свържете минуса на + 5V батерия към щифт 4 на ATtiny13
Потенциометър е свързан към щифт 7 (PB2) на ATtiny13 и управляващият проводник на серво мотора е свързан към щифт 5 (PB0).
Тук се отчита стойността на потенциометъра и тя се преобразува в стойност между 0 и 180. Тогава тази стойност на ъгъла се преобразува в микросекунди и се дава импулс на управляващия щифт на серво мотора с изчисленото закъснение в микросекунди. Сега сервомоторът ще се завърти според стойността на потенциометъра, както е показано във видеото, дадено по-долу.