Raspberry Pi е ARM архитектура базирана на процесор платка, предназначена за електронни инженери и любители. PI е една от най-надеждните платформи за разработване на проекти в момента. С по-висока скорост на процесора и 1 GB RAM, PI може да се използва за много високопрофилни проекти като Обработка на изображения и Интернет на нещата.
За да направите някой от високопрофилните проекти, трябва да разберете основните функции на PI. В тези уроци ще разгледаме всички основни функционалности на Raspberry Pi. Във всеки урок ще обсъдим една от функциите на PI. До края на поредицата уроци ще можете сами да правите проекти с висок профил. Проверете ги за Първи стъпки с конфигурацията на Raspberry Pi и Raspberry Pi.
Ние обсъждахме LED Blinky, Button Interfacing и PWM поколение в предишни уроци. В този урок ще контролираме скоростта на постояннотоков двигател, използвайки Raspberry Pi и PWM техника. PWM (Pulse Width Modulation) е метод, използван за извличане на променливо напрежение от постоянен източник на енергия. Обсъждахме за ШИМ в предишния урок.
В Raspberry Pi 2 има 40 изходни щифта GPIO. Но от 40 само 26 GPIO пина (GPIO2 до GPIO27) могат да бъдат програмирани. Някои от тези щифтове изпълняват някои специални функции. Със специалния GPIO, оставен настрана, остават 17 GPIO. За да научите повече за GPIO щифтовете, преминете през: LED мига с Raspberry Pi
Всеки от тези 17 GPIO щифта може да достави максимум 15 mA. И сумата от токове от всички GPIO пинове не може да надвишава 50mA. Така че можем да изтеглим максимум 3 mA средно от всеки от тези GPIO щифтове. Така че не бива да се подправяте с тези неща, освен ако не знаете какво правите.
На платката има + 5V (Pin 2 & 4) и + 3.3V (Pin 1 & 17) изходни щифтове за захранване за свързване на други модули и сензори. Тази захранваща шина е свързана паралелно на мощността на процесора. Така че изтеглянето на висок ток от тази захранваща шина засяга процесора. На платката PI има предпазител, който ще се изключи, след като приложите голямо натоварване. Можете да изтеглите 100mA безопасно от + 3.3V релса. Тук говорим за това, защото; свързваме постояннотоковия мотор към + 3.3V. Имайки предвид ограничението на мощността, тук можем да свържем само двигател с ниска мощност, ако искате да задвижвате двигател с висока мощност, помислете за захранването му от отделен източник на захранване.
Необходими компоненти:
Тук използваме Raspberry Pi 2 Model B с Raspbian Jessie OS. Всички основни хардуерни и софтуерни изисквания са обсъдени преди това, можете да ги потърсите във въведението на Raspberry Pi, различно от това, от което се нуждаем:
- Свързващи щифтове
- 220Ω или 1KΩ резистор (3)
- Малък мотор с постоянен ток
- Бутони (2)
- 2N2222 транзистор
- 1N4007 Диод
- Кондензатор - 1000uF
- Дъска за хляб
Обяснение на веригата:
Както беше казано по-рано, не можем да изтеглим повече от 15 mA от никой GPIO щифт и DC двигателят изтегля повече от 15 mA, така че PWM, генериран от Raspberry Pi, не може да се подава директно към DC мотора. Така че, ако свържем двигателя директно към PI за контрол на скоростта, платката може да се повреди трайно.
Така че ще използваме NPN транзистор (2N2222) като превключващо устройство. Този транзистор задвижва мотора с висока мощност, като взема PWM сигнал от PI. Тук трябва да се обърне внимание, че неправилно свързване на транзистора може да натовари платката силно.
Двигателят е индукционен и затова, докато превключваме двигателя, изпитваме индуктивни пикове. Този пик ще нагрее силно транзистора, така че ще използваме диод (1N4007), за да осигурим защита на транзистора срещу индуктивен пик.
За да намалим колебанията на напрежението, ще свържем кондензатор 1000uF през захранването, както е показано в схемата.
Работно обяснение:
След като всичко е свързано според схемата, можем да включим PI, за да напишем програмата в PYHTON.
Ще говорим за няколко команди, които ще използваме в програмата PYHTON.
Ще импортираме GPIO файл от библиотеката, функцията по-долу ни позволява да програмираме GPIO пинове на PI. Преименуваме също „GPIO“ на „IO“, така че в програмата, когато искаме да се позовем на GPIO щифтове, ще използваме думата „IO“.
импортирайте RPi.GPIO като IO
Понякога, когато GPIO щифтовете, които се опитваме да използваме, може да изпълняват някои други функции. В този случай ще получим предупреждения, докато изпълняваме програмата. Командата по-долу казва на PI да игнорира предупрежденията и да продължи с програмата.
IO.setwarnings (False)
Можем да отнесем GPIO пиновете на PI, или чрез пинов номер на борда, или чрез номера на тяхната функция. Подобно на „ПИН 35“ на дъската е „GPIO19“. Така че ние казваме тук, или ще представим щифта тук с '35' или '19'.
IO.setmode (IO.BCM)
Задаваме GPIO19 (или PIN35) като изходен щифт. Ще получим ШИМ изход от този щифт.
IO.setup (19, IO.IN)
След като зададем щифта като изход, трябва да настроим щифта като ШИМ изходен щифт, p = IO.PWM (изходен канал, честота на PWM сигнал)
Горната команда е за настройка на канала, а също и за настройка на честотата на ШИМ сигнала. 'p' тук е променлива, тя може да бъде всичко. Използваме GPIO19 като PWM изходен канал . „ честота на ШИМ сигнала “ е избрана 100, тъй като не искаме да виждаме мигащ светодиод.
Командата отдолу се използва за стартиране на генериране на ШИМ сигнал, „ DUTYCYCLE “ е за настройка на коефициента на включване, 0 означава, че светодиодът ще бъде включен за 0% от времето, 30 означава, че светодиодът ще бъде включен за 30% от времето и 100 означава напълно включен.
стр. старт (DUTYCYCLE)
В случай, че условието в скобите е вярно, изразите вътре в цикъла ще бъдат изпълнени веднъж. Така че, ако GPIO пин 26 отива ниско, тогава инструкциите вътре в контура IF ще бъдат изпълнени веднъж. Ако GPIO пин 26 не отиде ниско, тогава операторите вътре в контура IF няма да бъдат изпълнени.
if (IO.input (26) == False):
Докато 1: се използва за безкрайност. С тази команда операторите в този цикъл ще се изпълняват непрекъснато.
Разполагаме с всички команди, необходими за постигане на контрол на скоростта с това.
След като напишете програмата и я изпълните, остава само да управлявате контрола. Имаме два бутона, свързани към PI; една за увеличаване на работния цикъл на ШИМ сигнала и друга за намаляване на работния цикъл на ШИМ сигнала. При натискане на единия бутон скоростта на DC мотора се увеличава, а чрез натискане на другия бутон скоростта на DC мотора намалява. С това постигнахме DC контрол на скоростта на двигателя от Raspberry Pi.
Също така проверете:
- DC контрол на скоростта на двигателя
- DC управление на двигателя с помощта на Arduino