Raspberry Pi - це плата на основі процесора ARM, розроблена для інженерів-електронників та любителів. PI - одна з найбільш надійних платформ для розробки проектів, що існують зараз. Завдяки вищій швидкості процесора та 1 ГБ оперативної пам'яті, PI можна використовувати для багатьох важливих проектів, таких як обробка зображень та Інтернет речей.
Для виконання будь-якого з важливих проектів потрібно розуміти основні функції PI. У цих підручниках ми розглянемо всі основні функціональні можливості Raspberry Pi. У кожному підручнику ми обговоримо одну з функцій PI. До кінця цієї серії підручників Raspberry Pi ви зможете самостійно виконувати гучні проекти. Пройдіть нижче підручники:
- Початок роботи з Raspberry Pi
- Конфігурація Raspberry Pi
- Світлодіод блимає
- Інтерфейс кнопки Raspberry Pi
- Покоління ШІМ Raspberry Pi
- Керування двигуном постійного струму за допомогою Raspberry Pi
У цьому підручнику ми контролюватимемо швидкість крокового двигуна за допомогою Raspberry Pi. Як сказано в самій назві, у кроковому двигуні обертання вала відбувається у формі ступеня. Існують різні типи крокових двигунів; тут ми будемо використовувати найпопулярніший - уніполярний кроковий двигун. На відміну від двигуна постійного струму, ми можемо повертати кроковий двигун на будь-який конкретний кут, даючи йому відповідні інструкції.
Для обертання цього чотириступеневого крокового двигуна ми будемо подавати імпульси потужності, використовуючи схему драйвера крокового двигуна. Схема драйвера приймає логічні тригери від PI. Якщо ми управляємо логічними тригерами, ми контролюємо імпульси потужності, а отже, і швидкість крокового двигуна.
У Raspberry Pi 2 є 40 вихідних штифтів GPIO. Але з 40 можна запрограмувати лише 26 штифтів GPIO (від GPIO2 до GPIO27). Деякі з цих штифтів виконують деякі спеціальні функції. Якщо відкласти спеціальний GPIO, у нас залишилось лише 17 GPIO. Кожен з цих 17 контактів GPIO може подавати максимум 15 мА струму. А сума струмів від усіх контактів GPIO не може перевищувати 50 мА. Щоб дізнатись більше про шпильки GPIO, перейдіть за посиланням: Світлодіод блимає з Raspberry Pi
На платі є штирі вихідної потужності + 5 В (Pin 2 і 4) та + 3,3 В (Pin 1 & 17) для підключення інших модулів та датчиків. Ці силові рейки не можна використовувати для приводу крокового двигуна, оскільки нам потрібно більше потужності для його обертання. Отже, ми маємо подавати потужність на кроковий двигун від іншого джерела живлення. Мій кроковий двигун має напругу 9 В, тому я використовую батарею 9 В як друге джерело живлення. Шукайте номер моделі крокового двигуна, щоб дізнатися номінальну напругу. Залежно від рейтингу відповідно вибирайте вторинне джерело.
Як було сказано раніше, нам потрібна схема драйвера для керування кроковим двигуном. Ми також розробимо тут просту схему драйвера транзистора.
Необхідні компоненти:
Тут ми використовуємо Raspberry Pi 2 Model B з ОС Raspbian Jessie. Усі основні вимоги до обладнання та програмного забезпечення обговорювались раніше, ви можете переглянути їх у Вступі про Raspberry Pi, крім того, що нам потрібно:
- З'єднувальні штифти
- Резистор 220 Ом або 1 КОм (3)
- Кроковий двигун
- Кнопки (2)
- Транзистор 2N2222 (4)
- 1N4007 Діод (4)
- Конденсатор - 1000 мкФ
- Хлібна дошка
Пояснення схеми:
Кроковий двигун використовує 200 кроків для повороту на 360 градусів, означає його обертання на 1,8 градуса за крок. Оскільки ми керуємо чотириступеневим кроковим двигуном, нам потрібно подати чотири імпульси для завершення єдиного логічного циклу. Кожен крок цього двигуна завершує 1,8 ступеня обертання, тому для завершення циклу нам потрібно 200 імпульсів. Отже, 200/4 = 50 логічних циклів, необхідних для завершення одного обертання. Перевірте це, щоб дізнатися більше про Steppers Motors та його режими руху.
Ми будемо керувати кожною з цих чотирьох котушок транзистором NPN (2N2222), цей транзистор NPN приймає логічний імпульс від PI і веде відповідну котушку. Чотири транзистори беруть чотири логіки від PI для керування чотирма ступенями крокового двигуна.
Схема драйвера транзистора є хитрою установкою; тут слід звернути увагу, що неправильно підключений транзистор може сильно навантажити плату і пошкодити її. Перевірте це, щоб правильно зрозуміти схему драйвера крокового двигуна.
Двигун є індукційним, і тому, перемикаючи двигун, ми відчуваємо індуктивний підйом. Цей стрибок буде сильно нагрівати транзистор, тому ми будемо використовувати діод (1N4007), щоб забезпечити захист транзистора від індуктивного спайку.
Для того, щоб зменшити коливання напруги, ми підключимо конденсатор 1000 мкФ через блок живлення, як показано на схемі.
Робоче пояснення:
Як тільки все буде підключено згідно з принциповою схемою, ми можемо увімкнути PI, щоб написати програму на PYHTON.
Ми поговоримо про декілька команд, які ми будемо використовувати в програмі PYHTON, Ми збираємось імпортувати файл GPIO з бібліотеки, функція нижче дозволяє програмувати GPIO штифти PI. Ми також перейменовуємо “GPIO” на “IO”, тому в програмі, коли ми хочемо посилатися на шпильки GPIO, ми будемо використовувати слово “IO”.
імпортувати RPi.GPIO як IO
Іноді, коли шпильки GPIO, які ми намагаємось використовувати, можуть виконувати деякі інші функції. У такому випадку ми отримаємо попередження під час виконання програми. Команда нижче вказує PI ігнорувати попередження та продовжувати роботу з програмою.
IO.setwarnings (False)
Ми можемо вказати шпильки GPIO PI або за номером контакту на борту, або за номером їх функції. Як і "PIN 35" на платі, це "GPIO19". Отже, ми говоримо тут, або ми будемо представляти шпильку тут за допомогою «35» або «19».
IO.setmode (IO.BCM)
Ми встановлюємо чотири штиря GPIO як вихід для чотирьох котушок крокового двигуна.
IO.setup (5, IO.OUT) IO.setup (17, IO.OUT) IO.setup (27, IO.OUT) IO.setup (22, IO.OUT)
Ми встановлюємо GPIO26 та GPIO19 як вхідні штифти. Ми виявимо натискання кнопки за цими шпильками.
IO.setup (19, IO.IN) IO.setup (26, IO.IN)
У випадку, якщо Умова в дужках істинна, оператори всередині циклу виконуються один раз. Отже, якщо штифт 26 GPIO низький, тоді оператори всередині циклу IF виконуються один раз. Якщо штифт 26 GPIO не йде низько, тоді оператори всередині циклу IF не будуть виконуватися.
if (IO.input (26) == False):
Ця команда виконує цикл 100 разів, х збільшуючи від 0 до 99.
для x в діапазоні (100):
У той час як 1: використовується для нескінченності циклу. За допомогою цієї команди оператори всередині цього циклу будуть виконуватися безперервно.
У нас є всі команди, необхідні для досягнення цього регулювання швидкості крокового двигуна.
Після написання програми та її виконання залишається лише керування. У нас дві кнопки підключені до PI. Один для збільшення затримки між чотирма імпульсами, а інший для зменшення затримки між чотирма імпульсами. Сама затримка говорить про швидкість; якщо затримка більша, двигун гальмує між кожним кроком, і тому обертання повільне. Якщо затримка близько нуля, тоді двигун обертається з максимальною швидкістю.
Тут слід пам’ятати, що між імпульсами має бути деяка затримка. Після подачі імпульсу кроковому двигуну потрібно кілька мілісекунд часу, щоб досягти своєї кінцевої стадії. Якщо між імпульсами немає затримки, кроковий двигун взагалі не рухатиметься. Зазвичай затримка 50 мс є прекрасною між імпульсами. Щоб отримати більш точну інформацію, загляньте в техпаспорт.
Тож за допомогою двох кнопок ми можемо контролювати затримку, яка по черзі регулює швидкість крокового двигуна.