- ШИМ (широтно-импульсная модуляция):
- Серводвигатель и ШИМ:
- Необходимые компоненты:
- Принципиальная электрическая схема:
- Объяснение работы и программирования:
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
- Взаимодействие с регистром сдвига с Raspberry Pi
- Учебник Raspberry Pi ADC
В этом уроке мы будем управлять серводвигателем с помощью Raspberry Pi. Прежде чем перейти к сервомотору, давайте поговорим о ШИМ, потому что концепция управления серводвигателем исходит из него.
ШИМ (широтно-импульсная модуляция):
Ранее мы много раз говорили о ШИМ в следующих разделах: широтно-импульсная модуляция с ATmega32, ШИМ с Arduino Uno, ШИМ с таймером 555 IC и ШИМ с Arduino Due. ШИМ означает «широтно-импульсная модуляция». ШИМ - это метод, используемый для получения переменного напряжения от стабильного источника питания. Для лучшего понимания ШИМ рассмотрим схему ниже,
На приведенном выше рисунке, если переключатель постоянно замкнут в течение определенного периода времени, светодиод будет постоянно гореть в это время. Если переключатель замкнут на полсекунды и разомкнут в течение следующих полсекунды, то светодиод будет гореть только в первой половине секунды. Теперь пропорция, в которой светодиод горит в течение всего времени, называется рабочим циклом и может быть рассчитана следующим образом:
Рабочий цикл = время включения / (время включения + время выключения)
Рабочий цикл = (0,5 / (0,5 + 0,5)) = 50%
Таким образом, среднее выходное напряжение будет составлять 50% от напряжения батареи.
Когда мы увеличиваем скорость включения и выключения до уровня, мы увидим, что светодиод гаснет, а не включается и выключается. Это потому, что наши глаза не могут четко уловить частоты выше 25 Гц. Рассмотрим цикл 100 мс, светодиод выключен на 30 мс и включен на 70 мс. У нас на выходе будет 70% стабильного напряжения, поэтому светодиод будет непрерывно светиться с интенсивностью 70%.
Коэффициент заполнения изменяется от 0 до 100. «0» означает полное выключение, а «100» - полное включение. Этот коэффициент нагрузки очень важен для серводвигателя. Положение серводвигателя определяется этим коэффициентом нагрузки. Проверьте это для демонстрации ШИМ с LED и Raspberry Pi.
Серводвигатель и ШИМ:
Серводвигатель - это комбинация двигателя постоянного тока, системы управления положением и шестерен. Сервоприводы имеют множество применений в современном мире, и поэтому они доступны в различных формах и размерах. В этом уроке мы будем использовать серводвигатель SG90, он один из самых популярных и дешевых. SG90 - сервопривод на 180 градусов. Таким образом, с помощью этого сервопривода мы можем позиционировать ось от 0 до 180 градусов.
Серводвигатель в основном имеет три провода: один для положительного напряжения, другой - для заземления, а последний - для установки положения. Красный провод подключен к источнику питания, коричневый провод соединяется с землей, и Желтый провод (или белый) подключен к сигналу.
В сервоприводе у нас есть система управления, которая принимает сигнал ШИМ от сигнального контакта. Он декодирует сигнал и получает из него коэффициент заполнения. После этого он сравнивает соотношение с заранее заданными значениями позиций. Если есть разница в значениях, он соответственно регулирует положение сервопривода. Таким образом, положение оси серводвигателя зависит от продолжительности включения сигнала ШИМ на выводе сигнала.
Частота сигнала ШИМ (широтно-импульсная модуляция) может варьироваться в зависимости от типа серводвигателя. Для SG90 частота сигнала ШИМ составляет 50 Гц. Чтобы узнать частоту работы вашего сервопривода, проверьте техническое описание конкретной модели. Итак, как только частота выбрана, другая важная вещь - это ДОЛЖНОСТЬ ШИМ-сигнала.
В таблице ниже показано положение сервопривода для этого конкретного отношения нагрузки. Вы можете получить любой промежуточный угол, выбрав соответствующее значение. Таким образом, для сервопривода под углом 45 ° коэффициент нагрузки должен быть «5» или 5%.
ДОЛЖНОСТЬ |
СООТНОШЕНИЕ ОБЯЗАННОСТИ |
0º |
2,5 |
90º |
7,5 |
180º |
12,5 |
Перед подключением серводвигателя к Raspberry Pi вы можете проверить свой сервопривод с помощью этой схемы тестера серводвигателя. Также проверьте наши проекты сервоприводов ниже:
- Управление серводвигателем с помощью Arduino
- Управление серводвигателем с помощью Arduino Due
- Сервомотор, взаимодействующий с микроконтроллером 8051
- Управление серводвигателем с использованием MATLAB
- Управление серводвигателем с помощью гибкого датчика
- Сервоуправление положением с весом (датчик силы)
Необходимые компоненты:
Здесь мы используем Raspberry Pi 2 Model B с Raspbian Jessie OS. Все основные требования к оборудованию и программному обеспечению обсуждаются ранее, вы можете найти их во введении Raspberry Pi, кроме того, что нам нужно:
- Соединительные штифты
- Конденсатор 1000 мкФ
- Серводвигатель SG90
- Макетная плата
Принципиальная электрическая схема:
A1000 мкФ необходимо подключить к шине питания + 5 В, иначе ИП может произвольно отключиться во время управления сервоприводом.
Объяснение работы и программирования:
Как только все будет подключено в соответствии с принципиальной схемой, мы можем включить PI, чтобы написать программу в PYHTON.
Мы поговорим о нескольких командах, которые мы собираемся использовать в программе PYHTON, Мы собираемся импортировать файл GPIO из библиотеки, функция ниже позволяет нам программировать контакты GPIO PI. Мы также переименовали «GPIO» в «IO», поэтому в программе всякий раз, когда мы хотим обратиться к контактам GPIO, мы будем использовать слово «IO».
импортировать RPi.GPIO как IO
Иногда, когда контакты GPIO, которые мы пытаемся использовать, могут выполнять другие функции. В этом случае мы будем получать предупреждения при выполнении программы. Команда ниже указывает PI игнорировать предупреждения и продолжить выполнение программы.
IO.setwarnings (Ложь)
Мы можем ссылаться на контакты GPIO PI, либо по номеру контакта на плате, либо по номеру их функции. Как и «PIN 29» на плате, это «GPIO5». Итак, мы говорим здесь, что будем обозначать булавку цифрой 29 или 5.
IO.setmode (IO.BCM)
Мы устанавливаем PIN39 или GPIO19 как выходной контакт. Мы получим вывод ШИМ с этого вывода.
IO.setup (19, IO.OUT)
После настройки выходного контакта нам нужно настроить его как выходной контакт ШИМ, p = IO.PWM (выходной канал, частота сигнала ШИМ)
Вышеупомянутая команда предназначена для настройки канала, а также для настройки частоты канала ». 'p' здесь переменная, это может быть что угодно. Мы используем GPIO19 в качестве выходного канала ШИМ. «Частоту сигнала ШИМ» выберем 50, так как рабочая частота SG90 - 50 Гц.
Команда ниже используется для запуска генерации сигнала ШИМ. ' DUTYCYCLE ' предназначен для установки коэффициента включения, как объяснялось ранее, p.start (DUTYCYCLE)
Команда ниже используется как бесконечный цикл, с этой командой операторы внутри этого цикла будут выполняться непрерывно.
Пока 1:
Здесь программа для управления сервоприводом с помощью Raspberry Pi предоставляет сигнал ШИМ на GPIO19. Коэффициент заполнения сигнала ШИМ изменяется между тремя значениями в течение трех секунд. Таким образом, каждую секунду сервопривод вращается в положение, определяемое коэффициентом заполнения. Сервопривод непрерывно поворачивается на 0º, 90º и 180º за три секунды.