Электронный компонент:Моторный кейп v1.0 для Raspberry Pi
Черновик |
Моторный кейп v1.0 для Raspberry Pi [1]
Моторный кейп v1.0 для Raspberry Pi (в оригинале – «Raspberry Pi Motor Driver Board v1.0») основан на чипе Freescale MC33932 (это драйвер моторов, выполненный в виде двойного Н-моста), который может управлять индуктивной нагрузкой с максимальной силой тока 0,5 ампер на один мост. Это позволяет управлять двумя DC-моторами при помощи Raspberry Pi Model B/B+/A+ или Raspberry Pi 2 Model B, причем скоростью и направлением движения каждого мотора можно управлять отдельно.
Моторный кейп v1.0 для Raspberry Pi поддерживает широкий диапазон входного напряжения – между 6 и 28 вольтами. Кроме того, плата оснащена встроенным DC/DC преобразователем, который трансформирует это напряжение и в результате выдает для Raspberry Pi 5-вольтовое питание с максимальной силой тока 1 ампер. Следовательно, для питания Raspberry Pi и двух моторов требуется всего один источник питания.
Купить моторный кейп v1.0 для Raspberry Pi можно по этой ссылке.
Особенности
- Защита от внешнего короткого замыкания (на контактах VPWR и GND)
- Ограничение сверхтоков (при помощи ШИМ-регулирования с фиксированным интервалом выключенного состояния)
- Снижение ограничения тока, зависящее от температуры
- Совместимость с Raspberry Pi
Характеристики
Параметр | Минимальное значение | Стандартное значение | Максимальное значение | Единица измерения |
---|---|---|---|---|
Входное напряжение | 6 | - | 28 | Вольты (постоянный ток) |
Выходной ток (DC/DC) | - | 5 вольт и 1 ампер | - | - |
Выходной ток (для каждого канала) | - | 2 (непрерывная работа) | 5 (максимум) | Амперы |
Частота ШИМ | - | - | 11 | кГц |
Коэффициент заполнения ШИМ | 0 | - | 100 | % |
Логические уровни входного напряжения | -0.3 | - | 7 | Вольты |
Рабочая температура | -40 | - | 120 | ℃ |
Размеры | 91.2 х 56.15 х 32 | Миллиметры |
Описание и расположение компонентов
- J1 – Входной коннектор для постоянного тока. Используется для питания кейпа. Входное напряжение варьируется между 6 и 28 вольтами (постоянный ток). Встроенный преобразователь DC/DC может трансформировать это входное напряжение в 5 вольт постоянного тока, с помощью которых и будет питаться цепь кейпа. Кроме того, этот преобразователь можно использовать для питания микроконтроллерной платы (Arduino/Seeeduino) от контакта 5V (максимальная сила тока – 100 мА)
- J2 – Выходной коннектор для управления моторами. Контакты Out 1 и Out 2 – для первого мотора, а Out 3 и Out 4 – для второго
- EN, FT – Перемычки для управления сигналом EN (от «enable», что значит «включение») и обнаружения флага FT (от «fault», что значит «неисправность»). Если замкнуть перемычку EN, сигнал EN будет привязан к контакту D4, а вы сможете с его помощью управлять выключением Н-моста или сбрасывать флаг FT. Если замкнуть перемычку FT, сигнал FT будет привязан к контакту D3, и в результате сигнал FT можно будет считывать при помощи контакта D3
- GPIO – входные/выходные контакты общего пользования
Внимание! Запустив проект, не касайтесь моторного чипа (имеется в виду Freescale MC33932) и платы кейпа. При полной нагрузке их температура может достигать 100 градусов.
Пример использования
Эта глава расскажет о том, как использовать Raspberry Pi Model B и моторный кейп v1.0 для управления электродвигателями постоянного тока, двигая их вперед и назад.
Подключение компонентов
- Подключите Raspberry Pi и моторный кейп v1.0 друг к другу
- Подключите получившуюся сборку к сети и питанию
Программа
1. Скопируйте код ниже:
#!/usr/bin/python
import RPi.GPIO as GPIO
import time
import signal
from PiSoftPwm import *
#print 'Go_1...'
#frequency = 1.0 / self.sc_1.GetValue()
#speed = self.sc_2.GetValue()
class Motor():
def __init__(self):
# MC33932 pins
self.PWMA = 25
self.PWMB = 22
self._IN1 = 23
self._IN2 = 24
self._IN3 = 17
self._IN4 = 27
# Инициализируем PWMA и PWMB.
GPIO.setmode(GPIO.BCM)
GPIO.setup(self.PWMA, GPIO.OUT)
GPIO.setup(self.PWMB, GPIO.OUT)
GPIO.output(self.PWMA, True)
GPIO.output(self.PWMB, True)
# Инициализируем выходные каналы ШИМ.
self.OUT_1 = PiSoftPwm(0.1, 100, self._IN1, GPIO.BCM)
self.OUT_2 = PiSoftPwm(0.1, 100, self._IN2, GPIO.BCM)
self.OUT_3 = PiSoftPwm(0.1, 100, self._IN3, GPIO.BCM)
self.OUT_4 = PiSoftPwm(0.1, 100, self._IN4, GPIO.BCM)
# Закрываем выходные каналы ШИМ.
self.OUT_1.start(0)
self.OUT_2.start(0)
self.OUT_3.start(0)
self.OUT_4.start(0)
self.frequency = 0.01
self.duty = 60
def Setting(self, frequency, duty):
self.frequency = frequency
self.duty = duty
def Go_1(self):
self.OUT_1.changeBaseTime(self.frequency)
self.OUT_2.changeBaseTime(self.frequency)
self.OUT_1.changeNbSlicesOn(self.duty)
self.OUT_2.changeNbSlicesOn(0)
def Back_1(self):
self.OUT_1.changeBaseTime(self.frequency)
self.OUT_2.changeBaseTime(self.frequency)
self.OUT_1.changeNbSlicesOn(0)
self.OUT_2.changeNbSlicesOn(self.duty)
def Go_2(self):
self.OUT_3.changeBaseTime(self.frequency)
self.OUT_4.changeBaseTime(self.frequency)
self.OUT_3.changeNbSlicesOn(0)
self.OUT_4.changeNbSlicesOn(self.duty)
def Back_2(self):
self.OUT_3.changeBaseTime(self.frequency)
self.OUT_4.changeBaseTime(self.frequency)
self.OUT_3.changeNbSlicesOn(self.duty)
self.OUT_4.changeNbSlicesOn(0)
def Stop():
self.OUT_1.changeNbSlicesOn(0)
self.OUT_2.changeNbSlicesOn(0)
self.OUT_3.changeNbSlicesOn(0)
self.OUT_4.changeNbSlicesOn(0)
if __name__=="__main__":
motor=Motor()
# Прерывание процесса.
# Выставляет все контакты в режим «Input».
def endProcess(signalnum = None, handler = None):
motor.OUT_1.stop()
motor.OUT_2.stop()
motor.OUT_3.stop()
motor.OUT_4.stop()
motor.GPIO.cleanup()
exit(0)
# Подготавливаем обработчики к обработке выхода.
signal.signal(signal.SIGTERM, endProcess)
signal.signal(signal.SIGINT, endProcess)
signal.signal(signal.SIGHUP, endProcess)
signal.signal (signal.SIGQUIT, endProcess)
motor.Setting(0.01, 60)
print 'motor start...'
# 'Запуск мотора...'
while True:
print 'turning direction...'
# 'Смена направления...'
motor.Go_1()
time.sleep(1)
motor.Back_1()
time.sleep(1)
motor.Go_2()
time.sleep(1)
motor.Back_2()
time.sleep(1)
2. Сохраните программу в нужную папку на Raspberry Pi
3. Запустите программу. На кейпе начнут поочередно зажигаться светодиоды LED1 и LED2, а также LED3 и LED4. Это значит, что моторы A и B поочередно движутся то вперед, то назад
Консоль начнет показывать примерно следующее:
Поочередно загорающиеся синий и зеленый светодиоды на моторном кейпе v1.0:
Полезные ссылки
- Eagle-файл со схемой моторного кейпа v1.0 для Raspberry Pi
- PDF-файл со схемой моторного кейпа v1.0 для Raspberry Pi
- Даташит MC33932VW
- Даташит TD1519A