Raspberry Pi - это плата на базе процессора с архитектурой ARM, разработанная для инженеров-электронщиков и любителей. PI сейчас является одной из самых надежных платформ для разработки проектов. Благодаря более высокой скорости процессора и 1 ГБ оперативной памяти PI может использоваться для многих крупных проектов, таких как обработка изображений и Интернет вещей.
Для выполнения любого из громких проектов необходимо понимать основные функции PI. В этих уроках мы рассмотрим все основные функции Raspberry Pi. В каждом туториале мы обсудим одну из функций PI. К концу серии руководств вы сможете самостоятельно выполнять громкие проекты. Проверьте их, чтобы начать работу с Raspberry Pi и конфигурацией Raspberry Pi.
Мы обсуждали мигание светодиода, взаимодействие кнопок и генерацию ШИМ в предыдущих уроках. В этом уроке мы будем управлять скоростью двигателя постоянного тока с помощью Raspberry Pi и техники PWM. ШИМ (широтно-импульсная модуляция) - это метод, используемый для получения переменного напряжения от источника постоянного питания. Мы обсуждали ШИМ в предыдущем уроке.
В Raspberry Pi 2 имеется 40 выходных контактов GPIO. Но из 40 можно запрограммировать только 26 контактов GPIO (от GPIO2 до GPIO27). Некоторые из этих контактов выполняют некоторые специальные функции. Если оставить в стороне специальный GPIO, у нас осталось 17 GPIO. Чтобы узнать больше о выводах GPIO, пройдите: Мигание светодиода с Raspberry Pi
Каждый из этих 17 выводов GPIO может выдавать максимум 15 мА. И сумма токов со всех выводов GPIO не может превышать 50 мА. Таким образом, мы можем потреблять максимум 3 мА в среднем с каждого из этих контактов GPIO. Так что не следует вмешиваться в эти вещи, если вы не знаете, что делаете.
На плате имеются контакты вывода питания + 5 В (контакты 2 и 4) и + 3,3 В (контакты 1 и 17) для подключения других модулей и датчиков. Эта шина питания подключается параллельно к процессору. Таким образом, получение высокого тока от этой шины питания влияет на процессор. На плате PI есть предохранитель, который срабатывает при приложении высокой нагрузки. Вы можете безопасно потреблять 100 мА от шины + 3,3 В. Мы говорим об этом здесь, потому что; подключаем двигатель постоянного тока к + 3,3 В. Помня об ограничении мощности, мы можем подключить сюда только двигатель малой мощности, если вы хотите управлять двигателем большой мощности, рассмотрите возможность питания его от отдельного источника питания.
Необходимые компоненты:
Здесь мы используем Raspberry Pi 2 Model B с Raspbian Jessie OS. Все основные требования к оборудованию и программному обеспечению обсуждаются ранее, вы можете найти их во введении Raspberry Pi, кроме того, что нам нужно:
- Соединительные штифты
- Резистор 220 Ом или 1 кОм (3)
- Малый двигатель постоянного тока
- Пуговицы (2)
- 2Н2222 Транзистор
- 1N4007 Диод
- Конденсатор - 1000 мкФ
- Хлебная доска
Описание схемы:
Как было сказано ранее, мы не можем потреблять более 15 мА от любых контактов GPIO, а двигатель постоянного тока потребляет более 15 мА, поэтому ШИМ, генерируемый Raspberry Pi, не может напрямую подаваться на двигатель постоянного тока. Поэтому, если мы подключим двигатель напрямую к PI для регулирования скорости, плата может быть безвозвратно повреждена.
Итак, мы собираемся использовать транзистор NPN (2N2222) в качестве переключающего устройства. Этот транзистор управляет двигателем постоянного тока большой мощности, принимая сигнал ШИМ от 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)
Мы устанавливаем GPIO19 (или PIN35) как выходной контакт. Мы получим вывод ШИМ с этого вывода.
IO.setup (19, IO.IN)
После установки контакта в качестве выхода нам нужно настроить контакт как выходной контакт PWM, p = IO.PWM (выходной канал, частота сигнала ШИМ)
Вышеупомянутая команда предназначена для настройки канала, а также для настройки частоты сигнала ШИМ. 'p' здесь переменная, это может быть что угодно. Мы используем GPIO19 в качестве выходного канала ШИМ. « частота сигнала ШИМ » была выбрана равной 100, так как мы не хотим видеть мигание светодиода.
Команда ниже используется для запуска генерации ШИМ-сигнала, « DUTYCYCLE » - для установки коэффициента включения, 0 означает, что светодиод будет включен в течение 0% времени, 30 означает, что светодиод будет включен в течение 30% времени, а 100 означает полностью включен.
p.start (DUTYCYCLE)
Если условие в фигурных скобках истинно, операторы внутри цикла будут выполнены один раз. Таким образом, если на контакте 26 GPIO будет низкий уровень, то операторы внутри цикла IF будут выполнены один раз. Если на выводе 26 GPIO нет низкого уровня, то операторы внутри цикла IF выполняться не будут.
если (IO.input (26) == False):
Пока 1: используется для бесконечного цикла. С помощью этой команды операторы внутри этого цикла будут выполняться непрерывно.
У нас есть все команды, необходимые для управления скоростью.
После написания программы и ее выполнения остается только работать с элементом управления. У нас есть две кнопки, подключенные к PI; один для увеличения рабочего цикла сигнала ШИМ, а другой для уменьшения рабочего цикла сигнала ШИМ. При нажатии одной кнопки скорость двигателя постоянного тока увеличивается, а при нажатии другой кнопки скорость двигателя постоянного тока уменьшается. Благодаря этому мы достигли контроля скорости двигателя постоянного тока от Raspberry Pi.
Также проверьте:
- Контроль скорости двигателя постоянного тока
- Управление двигателем постоянного тока с использованием Arduino