Raspberry Pi - это плата на базе процессора с архитектурой ARM, разработанная для инженеров-электронщиков и любителей. PI сейчас является одной из самых надежных платформ для разработки проектов. Благодаря более высокой скорости процессора и 1 ГБ оперативной памяти PI может использоваться для многих крупных проектов, таких как обработка изображений и Интернет вещей.
Для выполнения любого из громких проектов необходимо понимать основные функции PI. В этих уроках мы рассмотрим все основные функции Raspberry Pi. В каждом туториале мы обсудим одну из функций PI. К концу этой серии руководств по Raspberry Pi вы сможете самостоятельно выполнять громкие проекты. Пройдите следующие руководства:
- Начало работы с Raspberry Pi
- Конфигурация Raspberry Pi
- Светодиод мигает
- Интерфейс кнопок Raspberry Pi
- Поколение Raspberry Pi PWM
- Управление двигателем постоянного тока с помощью 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 В (контакты 2 и 4) и + 3,3 В (контакты 1 и 17) для подключения других модулей и датчиков. Эти силовые шины нельзя использовать для привода шагового двигателя, потому что нам нужно больше мощности для его вращения. Таким образом, мы должны подавать питание на шаговый двигатель от другого источника питания. Мой шаговый двигатель имеет номинальное напряжение 9 В, поэтому я использую батарею 9 В в качестве второго источника питания. Найдите номер модели шагового двигателя, чтобы узнать номинальное напряжение. В зависимости от рейтинга выберите соответствующий вторичный источник.
Как указывалось ранее, нам нужна схема драйвера для управления шаговым двигателем. Здесь мы также будем проектировать простую схему транзисторного драйвера.
Необходимые компоненты:
Здесь мы используем Raspberry Pi 2 Model B с Raspbian Jessie OS. Все основные требования к оборудованию и программному обеспечению обсуждаются ранее, вы можете найти их во введении Raspberry Pi, кроме того, что нам нужно:
- Соединительные штифты
- Резистор 220 Ом или 1 кОм (3)
- Шаговый двигатель
- Пуговицы (2)
- 2Н2222 Транзистор (4)
- 1N4007 Диод (4)
- Конденсатор - 1000 мкФ
- Хлебная доска
Описание схемы:
Шаговый двигатель использует 200 шагов для полного вращения на 360 градусов, что означает его вращение на 1,8 градуса за шаг. Поскольку мы управляем четырехступенчатым шаговым двигателем, нам нужно подать четыре импульса для завершения одного логического цикла. Каждый шаг этого двигателя совершает 1,8 градуса вращения, поэтому для завершения цикла нам нужно 200 импульсов. Таким образом, 200/4 = 50 логических циклов, необходимых для выполнения одного вращения. Проверьте это, чтобы узнать больше о шаговых двигателях и их режимах движения.
Мы будем управлять каждой из этих четырех катушек с помощью транзистора NPN (2N2222), этот транзистор NPN принимает логический импульс от PI и управляет соответствующей катушкой. Четыре транзистора принимают четыре логики от PI для управления четырьмя ступенями шагового двигателя.
Схема драйвера транзистора представляет собой сложную настройку; Здесь следует обратить внимание, что неправильное подключение транзистора может сильно загрузить плату и повредить ее. Проверьте это, чтобы правильно понять схему драйвера шагового двигателя.
Двигатель является индукционным, поэтому при переключении двигателя мы испытываем индукционные всплески. Этот выброс сильно нагревает транзистор, поэтому мы будем использовать диод (1N4007) для защиты транзистора от индуктивных выбросов.
Чтобы уменьшить колебания напряжения, мы подключим к источнику питания конденсатор емкостью 1000 мкФ, как показано на принципиальной схеме.
Рабочее объяснение:
Как только все будет подключено в соответствии с принципиальной схемой, мы можем включить PI, чтобы написать программу в PYHTON.
Мы поговорим о нескольких командах, которые мы собираемся использовать в программе PYHTON, Мы собираемся импортировать файл GPIO из библиотеки, функция ниже позволяет нам программировать контакты GPIO PI. Мы также переименовали «GPIO» в «IO», поэтому в программе всякий раз, когда мы хотим обратиться к контактам GPIO, мы будем использовать слово «IO».
импортировать RPi.GPIO как IO
Иногда, когда контакты GPIO, которые мы пытаемся использовать, могут выполнять другие функции. В этом случае мы будем получать предупреждения при выполнении программы. Команда ниже указывает PI игнорировать предупреждения и продолжить выполнение программы.
IO.setwarnings (Ложь)
Мы можем ссылаться на контакты 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 выполняться не будут.
если (IO.input (26) == False):
Эта команда выполняет цикл 100 раз, причем x увеличивается от 0 до 99.
для x в диапазоне (100):
Пока 1: используется для бесконечного цикла. С помощью этой команды операторы внутри этого цикла будут выполняться непрерывно.
У нас есть все команды, необходимые для управления скоростью шагового двигателя.
После написания программы и ее выполнения остается только работать с элементом управления. У нас есть две кнопки, подключенные к PI. Один для увеличения задержки между четырьмя импульсами, а другой для уменьшения задержки между четырьмя импульсами. Сама задержка говорит о скорости; если задержка больше, двигатель тормозит между каждым шагом, поэтому вращение будет медленным. Если задержка близка к нулю, то двигатель вращается с максимальной скоростью.
Здесь следует помнить, что между импульсами должна быть некоторая задержка. После подачи импульса шаговый двигатель достигает своей конечной стадии за несколько миллисекунд. Если между импульсами не задана задержка, шаговый двигатель вообще не будет двигаться. Обычно между импульсами допустима задержка 50 мс. Для более точной информации загляните в технический паспорт.
Таким образом, с помощью двух кнопок мы можем управлять задержкой, которая, в свою очередь, регулирует скорость шагового двигателя.