Электронный компонент:Кейп Motor Bridge Cape v1.0

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

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

Контакты:

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


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


Кейп Motor Bridge Cape v1.0[1]

Motor bridge driver.jpg

Это кейп для плат BeagleBone, предназначенный для двунаправленного управления моторами. Он оснащен двумя двойными Н-мостами TB6612FNG, благодаря которым может управлять двумя шаговыми моторами или четырьмя коллекторными электромоторами постоянного тока, требующими постоянный ток с 6-15 вольтами и 1 ампером на мотор. Кейп обеспечивает плату BeagleBone регулируемым 5-вольтовым питанием, но входное напряжение не должно превышать 15 вольт. Кроме того, кейп оснащен 6 гребешками для управления сервомоторами и 6 дополнительными GPIO-контактами. Все функции обеспечиваются сопроцессором STM32F0, и этот микроконтроллер может «общаться» с BeagleBone при помощи I2C или UART.

Купить этот кейп можно по этой ссылке.

Особенности

  • Возможность управлять 2 шаговыми моторами или 4 электромоторами постоянного тока
  • Возможность управлять 6 сервомоторами
  • Платформа Mbed
  • Сопроцессор STM32F0
  • Два TB6612FNG
  • 6 дополнительных GPIO-контактов
  • Коммуникация с BBG/BBB через I2C или UART

Характеристики

  • Входное напряжение батареи – 6-15 вольт
  • Рабочее напряжение Н-моста – 6-15 вольт
  • Сила выходного 5-вольтового (DC/DC) тока – не более 2 ампер
  • Сила выходного 3.3-вольтового тока – не более 35 миллиампер (мА)
  • Сила тока одного канала Н-моста – 1.2 ампер (не более 3.2 ампер)
  • Рабочее напряжение драйвера сервомоторов – 5 вольт (суммарная сила тока – не более 1.5 ампер)
  • Защита от обратного тока – присутствует
  • Защита от избыточного тока – одноразовый быстродействующий 3-амперный предохранитель

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

Motor Bridge Hardware overview.jpg
  • 3-амперный одноразовый предохранитель – защита от избыточного тока
  • Кнопка сброса – сбрасывает сопроцессор
  • Интерфейс SWD (Serial Wire Debug) – отладочный интерфейс
  • GPIO-контакты – для расширения проекта
  • Сервомоторы - интерфейсы для подключения сервомоторов
  • STM32F030R8сопроцессор
  • DC/DC – Цепь для преобразования напряжения
  • TB6612FNGН-мосты, управляющие моторами
  • Индикаторысветодиоды, указывающие направление движения моторов
  • Переключатель режима работы – переключение между нормальным режимом и режимом ожидания
  • Защита от обратных токов – защитная цепь
  • Мотор3/Мотор4 – контакты для управления двумя моторами постоянного тока или одним шаговым мотором
  • Мотор1/Мотор2 – контакты для управления двумя моторами постоянного тока или одним шаговым мотором
  • Батарея – источник питания для моторов

С чего начать

Эта глава расскажет о функциях библиотеки «MotorBridgeCapeforBBG_BBB», а также о том, как ими пользоваться на практике. Скачать библиотеку можно по этой ссылке.

Чтобы использовать библиотеку «MotorBridgeCapeforBBG_BBB», просто импортируйте в свой проект файл «MotorBridge.py», а затем создайте объект MotorBridgeCape.

import MotorBridge
motor = MotorBridge.MotorBridgeCape()

Шаговый мотор

Интерфейсы для подключения шаговых моторов выглядят на кейпе Motor Bridge Cape v1.0 следующим образом:

Motor Bridge Cape v1.0 StepperMotor.jpg

Функции

Здесь будет краткое описание функций библиотеки «MotorBridgeCapeforBBG_BBB», предназначенных для управления шаговыми моторами.

  • StepperMotorAInit()
    • Инициализирует порт шагового мотора А.
  • StepperMotorAMove(MoveSteps,StepDelayTime)
    • Управляет пошаговым мотором А. Аргумент MoveSteps отвечает за то, на сколько шагов передвигается шаговый мотор. Если указать в этом аргументе положительное значение, мотор будет двигаться по часовой стрелке, а если отрицательное – против часовой. Аргумент StepDelayTime отвечает за время простоя между шагами (исчисляется в микросекундах).
  • StepperMotorBInit()
    • Инициализирует порт шагового мотора В.
  • StepperMotorBMove(MoveSteps,StepDelayTime)
    • Управляет пошаговым мотором B. Аргумент MoveSteps отвечает за то, на сколько шагов передвинется шаговый мотор. Если указать в этом аргументе положительное значение, мотор будет двигаться по часовой стрелке, а если отрицательное – против часовой. Аргумент StepDelayTime отвечает за время простоя между шагами (исчисляется в микросекундах).

Демо-программа для шагового мотора

Скопируйте код ниже в свой проект и сохраните его в формате Python-файла:

  1. import MotorBridge
  2. import time
  3.  
  4. def StepperMotorATest():
  5.     print 'Hello From MotorBridge'
  6.     motor.StepperMotorAInit()
  7.     motor.StepperMotorAMove(1000,1000) # 1000 steppers  1000us every step
  8.     time.sleep(1)
  9.     motor.StepperMotorAMove(-1000,1000) #1000 steppers  1000us every step
  10.     time.sleep(1)
  11.  
  12. def StepperMotorBTest():
  13.     print 'Hello From MotorBridge'
  14.     motor.StepperMotorBInit()
  15.     motor.StepperMotorBMove(1000,1000) # 1000steppers  1000us every step
  16.     time.sleep(1)
  17.     motor.StepperMotorBMove(-1000,1000) # 1000 steppers  1000us every step
  18.     time.sleep(1)
  19.  
  20. if __name__=="__main__":
  21.     motor = MotorBridge.MotorBridgeCape()
  22.     StepperMotorATest()
  23.     StepperMotorBTest()

Электромотор постоянного тока

Интерфейсы для подключения электромоторов постоянного тока выглядят на кейпе Motor Bridge Cape v1.0 следующим образом:

DCMotorBBG.jpg

Функции

Здесь будет краткое описание функций библиотеки «MotorBridgeCapeforBBG_BBB», предназначенных для управления электромоторами постоянного тока.

  • DCMotorInit(MotorName,Frequency)
    • Инициализирует электромотор постоянного тока и задает частоту. Аргумент MotorName отвечает за номер мотора; допустимые значения – от «1» до «4» (соответственно, для моторов от 1-ого до 4-ого). Аргумент Frequency отвечает за частоту электромотора.
    • Примечание: Если изменить частоту одного мотора, частота других моторов изменится тоже.
  • DCMotorMove(MotorName,Direction,PWMDuty)
    • Управляет электромотором постоянного тока, а если точнее – задает направление и коэффициент заполнения ШИМ. Аргумент MotorName отвечает за номер мотора; допустимые значения – от «1» до «4» (соответственно, для моторов от 1-ого до 4-ого). Аргумент Direction отвечает за направление движения мотора; если указать «1», мотор будет двигаться по часовой стрелке, если «2» – против часовой, если «3» – мотор остановится. Аргумент PWMDuty отвечает за коэффициент заполнения; допустимые значения варьируются между «0» и «100».
  • motor.DCMotorStop(Motorname)
    • Останавливает электромотор постоянного тока. Аргумент MotorName отвечает за номер мотора; допустимые значения – между «1» и «4» (соответственно, для моторов от 1-ого до 4-ого).

Демо-программа для электромотора постоянного тока

Скопируйте код ниже в свой проект и сохраните его в формате Python-файла:

  1. import MotorBridge
  2. import time
  3.  
  4. MotorName        = 1
  5. ClockWise        = 1
  6. CounterClockWise = 2
  7. PwmDuty          = 90
  8. Frequency        = 1000
  9.  
  10. if __name__=="__main__":
  11.     motor = MotorBridge.MotorBridgeCape()
  12.     motor.DCMotorInit(MotorName,Frequency)
  13.     while True:
  14.         motor.DCMotorMove(MotorName,ClockWise,PwmDuty)
  15.         time.sleep(2)
  16.         motor.DCMotorMove(MotorName,CounterClockWise,PwmDuty)
  17.         time.sleep(2)
  18.         print "hello"
  19.         motor.DCMotorStop(MotorName)
  20.         time.sleep(2)

Сервомотор

Интерфейсы для подключения электромоторов постоянного тока выглядят на кейпе Motor Bridge Cape v1.0 следующим образом:

ServoBBG.jpg

Функции

Здесь будет краткое описание функций библиотеки «MotorBridgeCapeforBBG_BBB», предназначенных для управления сервомоторами.

  • ServoInit(ServoName,Frequency)
    • Инициализирует сервомотор и задает его частоту. Аргумент ServoName отвечает за номер мотора сервомотора; допустимые значения – между «1» и «6» (соответственно, для сервомоторов от 1-ого до 6-ого). Аргумент Frequency задает частоту сервомотора (значение по умолчанию – 50 Гц).
  • ServoMoveAngle(ServoName,Angle)
    • Управляет сервомотором (задает угол его поворота). Аргумент ServoName отвечает за номер сервомотора; допустимые значения – между «1» и «6» (соответственно, для сервомоторов от 1-ого до 6-ого). Аргумент Angle отвечает за градус поворота; допустимые значения – между «0» и «180» (т.е. от 0 до 180 градусов).

Демо-программа для сервомотора

Скопируйте код ниже в свой проект и сохраните его в формате Python-файла:

  1. import MotorBridge
  2. import time
  3. ServoName   =  2
  4. Frequency   =  50
  5. Angle1      =  20
  6. Angle2      =  160
  7.  
  8. if __name__=="__main__":
  9.     motor = MotorBridge.MotorBridgeCape()
  10.     motor.ServoInit(ServoName,Frequency)
  11.  
  12.     while True:
  13.         print 'Servo Test'
  14.         motor.ServoMoveAngle(ServoName,Angle1)
  15.         time.sleep(2)
  16.         motor.ServoMoveAngle(ServoName,Angle2)
  17.         time.sleep(2)

Обновление прошивки

Если с кейпом возникла какая-то проблема, попробуйте обновить его прошивку. Эта глава рассказывает, как обновить прошивку «моторного» кейпа при помощи BeagleBone Green, но данная инструкция также подходит для BBGW и BBB.

1. Подключите кейп Motor Bridge Cape v1.0 к плате BeagleBone (будь то BBG, BBB или BBGW). Затем подключите плату BeagleBone к компьютеру при помощи USB-кабеля.

2. Подождите, пока плата подключится к интернету. Затем получите к ней доступ через SSH, как показано на картинке ниже:

Motor Bridge Cape v1.0 BBG1.PNG

3. Загрузите код с GitHub, выполнив следующие команды:

git clone https://github.com/Seeed-Studio/MotorBridgeCapeFirmware
Motor Bridge Cape v1.0 BBG2.PNG

4. Пройдите к «MotorBridgeCapeFirmware» и выполните команду make flash, чтобы записать прошивку.

cd MotorBridgeCapeFirmware/ && make flash

Спустя несколько секунд в терминале появится сообщение «Verification OK».

5. Проверьте, записалась ли прошивка, выполнив следующую команду:

i2cdetect -y -r 1
Motor Bridge Cape v1.0 BBG3.PNG

Если в ответ будет показан адрес «0x4b», это значит, что прошивка была записана успешно.

Возможные проблемы и их решение

Проблема 1: Я обновил прошивку, но не могу найти I2C-адрес. Что делать?

Убедитесь, что значением для P9_23 является HIGH, поскольку P9_23 подключен к контакту Reset на STM32. Я задаю контакту P9_23 значение HIGH в инициализирующей функции класса MotorBridgeCape.

Проблема 2: Я не могу обновить прошивку. Когда я пытаюсь сделать это, появляется сообщение об ошибке, которое говорит, что UART2 не найден. Помогите.

Вам нужно включить BB-UART2, потому что BBG прошивает кейп Motor Bridge Cape через UART2.

vi /boot/uEnv.txt

Затем уберите знак комментария у строчки

cape_enable=capemgr.enable_partno=BB-UART2

Сохраните изменения в файле, выйдите из редактора и перезапустите плату.

Проблема 3: Я успешно обновил прошивку и нашел I2C-адрес, но кейп по-прежнему не работает.

Обратите внимание, что на плате есть переключатель, позволяющий менять режим работы платы. Убедитесь, что этот переключатель стоит в положении «WORKING». Если кейп по-прежнему не работает, обратитесь за советом на форум.

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

См.также

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

  1. wiki.seeed.cc - Motor Bridge Cape v1.0