Электронный компонент:Моторный кейп v1.0 для Raspberry Pi

Материал из Онлайн справочника
Перейти к: навигация, поиск

Перевод: Максим Кузьмин (Cubewriter)
Перевел 1874 статей для сайта.

Контакты:

Проверка/Оформление/Редактирование: Мякишев Е.А.


Ambox content.png Черновик


Моторный кейп v1.0 для Raspberry Pi [1]

Raspberry Pi Motor Board v1.0 1.jpg

Моторный кейп 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 Миллиметры

Описание и расположение компонентов

Raspberry Pi Motor Board v1.0 p3 2.jpg
  • 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 для управления электродвигателями постоянного тока, двигая их вперед и назад.

Подключение компонентов

  1. Подключите Raspberry Pi и моторный кейп v1.0 друг к другу
  2. Подключите получившуюся сборку к сети и питанию
Raspberry Pi Motor Board v1.0 p6 3.jpg

Программа

1. Скопируйте код ниже:

  1. #!/usr/bin/python
  2.     import RPi.GPIO as GPIO
  3.     import time
  4.     import signal  
  5.  
  6.     from PiSoftPwm import *
  7.  
  8.     #print 'Go_1...'
  9.     #frequency = 1.0 / self.sc_1.GetValue()
  10.     #speed = self.sc_2.GetValue()
  11.  
  12.     class Motor():
  13.         def __init__(self):
  14.         # MC33932 pins
  15.         self.PWMA = 25  
  16.         self.PWMB = 22
  17.         self._IN1 = 23  
  18.         self._IN2 = 24
  19.         self._IN3 = 17
  20.         self._IN4 = 27
  21.  
  22.         # Инициализируем PWMA и PWMB.
  23.         GPIO.setmode(GPIO.BCM)
  24.         GPIO.setup(self.PWMA, GPIO.OUT)
  25.         GPIO.setup(self.PWMB, GPIO.OUT)
  26.         GPIO.output(self.PWMA, True)
  27.         GPIO.output(self.PWMB, True)
  28.  
  29.         # Инициализируем выходные каналы ШИМ.
  30.         self.OUT_1  = PiSoftPwm(0.1, 100, self._IN1, GPIO.BCM)
  31.         self.OUT_2  = PiSoftPwm(0.1, 100, self._IN2, GPIO.BCM)
  32.         self.OUT_3  = PiSoftPwm(0.1, 100, self._IN3, GPIO.BCM)
  33.         self.OUT_4  = PiSoftPwm(0.1, 100, self._IN4, GPIO.BCM)
  34.  
  35.             # Закрываем выходные каналы ШИМ.
  36.         self.OUT_1.start(0)
  37.         self.OUT_2.start(0)
  38.         self.OUT_3.start(0)
  39.         self.OUT_4.start(0)
  40.  
  41.             self.frequency = 0.01
  42.             self.duty = 60
  43.  
  44.         def Setting(self, frequency, duty):
  45.             self.frequency = frequency
  46.             self.duty = duty
  47.  
  48.         def Go_1(self):
  49.         self.OUT_1.changeBaseTime(self.frequency)
  50.         self.OUT_2.changeBaseTime(self.frequency)
  51.         self.OUT_1.changeNbSlicesOn(self.duty)
  52.         self.OUT_2.changeNbSlicesOn(0)
  53.  
  54.         def Back_1(self):
  55.         self.OUT_1.changeBaseTime(self.frequency)
  56.         self.OUT_2.changeBaseTime(self.frequency)
  57.         self.OUT_1.changeNbSlicesOn(0)
  58.         self.OUT_2.changeNbSlicesOn(self.duty)
  59.  
  60.         def Go_2(self):
  61.         self.OUT_3.changeBaseTime(self.frequency)
  62.         self.OUT_4.changeBaseTime(self.frequency)
  63.         self.OUT_3.changeNbSlicesOn(0)
  64.         self.OUT_4.changeNbSlicesOn(self.duty)
  65.  
  66.         def Back_2(self):
  67.         self.OUT_3.changeBaseTime(self.frequency)
  68.         self.OUT_4.changeBaseTime(self.frequency)
  69.         self.OUT_3.changeNbSlicesOn(self.duty)
  70.         self.OUT_4.changeNbSlicesOn(0)
  71.  
  72.         def Stop():
  73.         self.OUT_1.changeNbSlicesOn(0)
  74.         self.OUT_2.changeNbSlicesOn(0)
  75.         self.OUT_3.changeNbSlicesOn(0)
  76.         self.OUT_4.changeNbSlicesOn(0)
  77.  
  78.     if __name__=="__main__":
  79.         motor=Motor()
  80.         # Прерывание процесса.
  81.         # Выставляет все контакты в режим «Input».
  82.         def endProcess(signalnum = None, handler = None):
  83.             motor.OUT_1.stop()
  84.             motor.OUT_2.stop()
  85.             motor.OUT_3.stop()
  86.             motor.OUT_4.stop()
  87.             motor.GPIO.cleanup()
  88.             exit(0)
  89.  
  90.         # Подготавливаем обработчики к обработке выхода.
  91.         signal.signal(signal.SIGTERM, endProcess)
  92.         signal.signal(signal.SIGINT, endProcess)
  93.         signal.signal(signal.SIGHUP, endProcess)
  94.         signal.signal (signal.SIGQUIT, endProcess)
  95.  
  96.         motor.Setting(0.01, 60)
  97.         print 'motor start...'
  98.            #  'Запуск мотора...'
  99.         while True:
  100.             print 'turning direction...'
  101.                #  'Смена направления...'
  102.             motor.Go_1()
  103.             time.sleep(1)
  104.             motor.Back_1()
  105.             time.sleep(1)
  106.             motor.Go_2()
  107.             time.sleep(1)
  108.             motor.Back_2()
  109.             time.sleep(1)

2. Сохраните программу в нужную папку на Raspberry Pi

3. Запустите программу. На кейпе начнут поочередно зажигаться светодиоды LED1 и LED2, а также LED3 и LED4. Это значит, что моторы A и B поочередно движутся то вперед, то назад

Консоль начнет показывать примерно следующее:

Raspberry Pi Motor Board v1.0 p4 4.jpg

Поочередно загорающиеся синий и зеленый светодиоды на моторном кейпе v1.0:

Raspberry Pi Motor Board v1.0 p5 5.jpg

Полезные ссылки

См.также

Внешние ссылки

  1. wiki.seeed.cc - Raspberry Pi Motor Driver Board v1.0