- ШИМ (модулация на широчината на импулса):
- Серво мотор и ШИМ:
- Необходими компоненти:
- Електрическа схема:
- Обяснение на работата и програмирането:
Raspberry Pi е ARM архитектура базирана на процесор платка, предназначена за електронни инженери и любители. PI е една от най-надеждните платформи за разработване на проекти в момента. С по-висока скорост на процесора и 1 GB RAM, PI може да се използва за много високопрофилни проекти като Обработка на изображения и Интернет на нещата.
За да направите някой от високопрофилните проекти, трябва да разберете основните функции на PI. В тези уроци ще разгледаме всички основни функционалности на Raspberry Pi. Във всеки урок ще обсъдим една от функциите на PI. До края на тази серия с уроци за Raspberry Pi ще можете сами да правите проекти с висок профил. Преминете през уроци по-долу:
- Първи стъпки с Raspberry Pi
- Конфигурация на Raspberry Pi
- LED мигащ
- Интерфейс на бутон Raspberry Pi
- Raspberry Pi PWM поколение
- Управление на DC мотор с помощта на Raspberry Pi
- Управление на стъпков двигател с Raspberry Pi
- Взаимодействие с Shift регистър с Raspberry Pi
- Raspberry Pi ADC Урок
В този урок ще контролираме сервомотора с Raspberry Pi. Преди да отидем на серво, нека поговорим за ШИМ, защото концепцията за управление на серво мотора идва от него.
ШИМ (модулация на широчината на импулса):
Преди това сме говорили за ШИМ много пъти в: Модулация с широчина на импулса с ATmega32, ШИМ с Arduino Uno, ШИМ с 555 IC таймер и ШИМ с Arduino Due. PWM означава „Модулация на широчината на импулса“. ШИМ е метод, използван за получаване на променливо напрежение от стабилно захранване. За по-добро разбиране на ШИМ разгледайте схемата по-долу,
На горната фигура, ако превключвателят е затворен непрекъснато за определен период от време, светодиодът непрекъснато ще бъде включен. Ако ключът е затворен за половин секунда и отворен за следващата половина секунда, тогава светодиодът ще свети само през първата половина секунда. Сега пропорцията, за която светодиодът е включен през цялото време, се нарича цикъл на задействане и може да се изчисли, както следва:
Работен цикъл = Време за включване / (Време за включване + Време за изключване)
Работен цикъл = (0,5 / (0,5 + 0,5)) = 50%
Така че средното изходно напрежение ще бъде 50% от напрежението на батерията.
Когато увеличим скоростта на включване и изключване до ниво, ще видим, че светодиодът се затъмнява, вместо да се включва и изключва. Това е така, защото очите ни не могат да улавят ясно честоти по-високи от 25Hz. Помислете за цикъл от 100 ms, като светодиодът е изключен за 30msec и ON за 70msec. Ще имаме 70% от стабилното напрежение на изхода, така че LED ще свети непрекъснато със 70% от интензивността.
Коефициентът на мито преминава от 0 до 100. „0“ означава напълно ИЗКЛЮЧЕН, а „100“ е напълно ВКЛЮЧЕН. Това съотношение на задълженията е много важно за серво мотора. Позицията на серво мотора се определя от този коефициент на дежурство. Проверете това за демонстрация на ШИМ с LED и Raspberry Pi.
Серво мотор и ШИМ:
Серво мотор е комбинация от DC мотор, система за управление на позицията и предавки. Серво системите имат много приложения в съвременния свят и с това се предлагат в различни форми и размери. В този урок ще използваме серво мотор SG90, той е един от най-популярните и най-евтините. SG90 е серво на 180 градуса. Така че с това серво може да позиционираме оста от 0-180 градуса.
Серво мотор има основно три проводника, единият е за положително напрежение, друг е за заземяване и последният е за настройка на позицията. The Red проводник е свързан с властта, Кафяв проводник е свързан към земята и Жълт тел (или бяло) е свързан към сигнала.
В серво, имаме система за управление, която приема ШИМ сигнала от сигналния щифт. Той декодира сигнала и получава коефициента на мито от него. След това той сравнява съотношението с предварително дефинираните стойности на позициите. Ако има разлика в стойностите, той коригира съответно позицията на серво. Така че позицията на оста на серво мотора се основава на коефициента на запълване на ШИМ сигнала на сигналния щифт.
Честотата на сигнала PWM (Pulse Width Modulated) може да варира в зависимост от типа на серво мотора. За SG90 честотата на ШИМ сигнала е 50Hz. За да разберете честотата на работа на вашия серво, проверете листа с данни за конкретния модел. Така че след като честотата е избрана, другото важно нещо тук е ДЪЛЖИННОТО СЪОТНОШЕНИЕ на ШИМ сигнала.
Таблицата по-долу показва серво позицията за конкретния коефициент на мито. Можете да получите всеки ъгъл между тях, като изберете стойността съответно. Така че за 45 ° серво, коефициентът на мито трябва да бъде „5“ или 5%.
ПОЗИЦИЯ |
СЪОТНОШЕНИЕ НА МИТА |
0º |
2.5 |
90º |
7.5 |
180º |
12.5 |
Преди да свържете серво мотора с Raspberry Pi, можете да тествате серво с помощта на тази верига за тестер на серво мотор. Също така проверете нашите серво проекти по-долу:
- Серво моторно управление с помощта на Arduino
- Серво моторно управление с Arduino Due
- Интерфейс на серво мотора с микроконтролер 8051
- Управление на серво мотора с помощта на MATLAB
- Управление на серво мотора чрез Flex сензор
- Контрол на позицията на серво с тегло (сензор за сила)
Необходими компоненти:
Тук използваме Raspberry Pi 2 Model B с Raspbian Jessie OS. Всички основни хардуерни и софтуерни изисквания са обсъдени преди това, можете да ги потърсите във въведението на Raspberry Pi, различно от това, от което се нуждаем:
- Свързващи щифтове
- Кондензатор 1000uF
- Серво мотор SG90
- Макет
Електрическа схема:
A1000µF трябва да бъде свързан през захранващата шина + 5V, в противен случай PI може да се изключи произволно, докато контролира серво.
Обяснение на работата и програмирането:
След като всичко е свързано според схемата, можем да включим PI, за да напишем програмата в PYHTON.
Ще говорим за няколко команди, които ще използваме в програмата PYHTON, Ще импортираме GPIO файл от библиотеката, функцията по-долу ни позволява да програмираме GPIO пинове на PI. Преименуваме също „GPIO“ на „IO“, така че в програмата, когато искаме да се позовем на GPIO щифтове, ще използваме думата „IO“.
импортирайте RPi.GPIO като IO
Понякога, когато GPIO щифтовете, които се опитваме да използваме, може да изпълняват някои други функции. В този случай ще получим предупреждения, докато изпълняваме програмата. Командата по-долу казва на PI да игнорира предупрежденията и да продължи с програмата.
IO.setwarnings (False)
Можем да отнесем GPIO пиновете на PI, или чрез пинов номер на борда, или чрез номера на тяхната функция. Подобно на „ПИН 29“ на платката е „GPIO5“. Така че ние казваме тук, или ще представим щифта тук с '29' или '5'.
IO.setmode (IO.BCM)
Задаваме PIN39 или GPIO19 като изходен щифт. Ще получим ШИМ изход от този щифт.
IO.setup (19, IO.OUT)
След като зададем изходния щифт, трябва да настроим щифта като ШИМ изходен щифт, p = IO.PWM (изходен канал, честота на PWM сигнал)
Горната команда е за настройка на канала, а също и за настройка на честотата на канала ”. 'p' тук е променлива, тя може да бъде всичко. Използваме GPIO19 като ШИМ „изходен канал. “Честота на ШИМ сигнала” ще изберем 50, тъй като работната честота на SG90 е 50Hz.
Командата по-долу се използва за стартиране на генериране на ШИМ сигнал. „ DUTYCYCLE “ е за задаване на съотношението „Turn On“, както е обяснено по-горе, стр. старт (DUTYCYCLE)
Командата отдолу се използва като цикъл завинаги, с тази команда операторите вътре в този цикъл ще се изпълняват непрекъснато.
Докато 1:
Тук програмата за управление на серво с помощта на Raspberry Pi осигурява ШИМ сигнал на GPIO19. Коефициентът на дежурство на ШИМ сигнала се променя между три стойности за три секунди. Така за всяка секунда сервомеханизмът се завърта до позиция, определена от коефициента на мито. Серво серво непрекъснато се върти на 0º, 90º и 180º за три секунди.