Электронный компонент:Кейп Motor Bridge Cape v1.0
Кейп Motor Bridge Cape v1.0[1]
Это кейп для плат 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-амперный предохранитель
Описание и расположение компонентов
- 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 следующим образом:
Функции
Здесь будет краткое описание функций библиотеки «MotorBridgeCapeforBBG_BBB», предназначенных для управления шаговыми моторами.
- StepperMotorAInit()
- Инициализирует порт шагового мотора А.
- StepperMotorAMove(MoveSteps,StepDelayTime)
- Управляет пошаговым мотором А. Аргумент MoveSteps отвечает за то, на сколько шагов передвигается шаговый мотор. Если указать в этом аргументе положительное значение, мотор будет двигаться по часовой стрелке, а если отрицательное – против часовой. Аргумент StepDelayTime отвечает за время простоя между шагами (исчисляется в микросекундах).
- StepperMotorBInit()
- Инициализирует порт шагового мотора В.
- StepperMotorBMove(MoveSteps,StepDelayTime)
- Управляет пошаговым мотором B. Аргумент MoveSteps отвечает за то, на сколько шагов передвинется шаговый мотор. Если указать в этом аргументе положительное значение, мотор будет двигаться по часовой стрелке, а если отрицательное – против часовой. Аргумент StepDelayTime отвечает за время простоя между шагами (исчисляется в микросекундах).
Демо-программа для шагового мотора
Скопируйте код ниже в свой проект и сохраните его в формате Python-файла:
import MotorBridge
import time
def StepperMotorATest():
print 'Hello From MotorBridge'
motor.StepperMotorAInit()
motor.StepperMotorAMove(1000,1000) # 1000 steppers 1000us every step
time.sleep(1)
motor.StepperMotorAMove(-1000,1000) #1000 steppers 1000us every step
time.sleep(1)
def StepperMotorBTest():
print 'Hello From MotorBridge'
motor.StepperMotorBInit()
motor.StepperMotorBMove(1000,1000) # 1000steppers 1000us every step
time.sleep(1)
motor.StepperMotorBMove(-1000,1000) # 1000 steppers 1000us every step
time.sleep(1)
if __name__=="__main__":
motor = MotorBridge.MotorBridgeCape()
StepperMotorATest()
StepperMotorBTest()
Электромотор постоянного тока
Интерфейсы для подключения электромоторов постоянного тока выглядят на кейпе Motor Bridge Cape v1.0 следующим образом:
Функции
Здесь будет краткое описание функций библиотеки «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-файла:
import MotorBridge
import time
MotorName = 1
ClockWise = 1
CounterClockWise = 2
PwmDuty = 90
Frequency = 1000
if __name__=="__main__":
motor = MotorBridge.MotorBridgeCape()
motor.DCMotorInit(MotorName,Frequency)
while True:
motor.DCMotorMove(MotorName,ClockWise,PwmDuty)
time.sleep(2)
motor.DCMotorMove(MotorName,CounterClockWise,PwmDuty)
time.sleep(2)
print "hello"
motor.DCMotorStop(MotorName)
time.sleep(2)
Сервомотор
Интерфейсы для подключения электромоторов постоянного тока выглядят на кейпе Motor Bridge Cape v1.0 следующим образом:
Функции
Здесь будет краткое описание функций библиотеки «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-файла:
import MotorBridge
import time
ServoName = 2
Frequency = 50
Angle1 = 20
Angle2 = 160
if __name__=="__main__":
motor = MotorBridge.MotorBridgeCape()
motor.ServoInit(ServoName,Frequency)
while True:
print 'Servo Test'
motor.ServoMoveAngle(ServoName,Angle1)
time.sleep(2)
motor.ServoMoveAngle(ServoName,Angle2)
time.sleep(2)
Обновление прошивки
Если с кейпом возникла какая-то проблема, попробуйте обновить его прошивку. Эта глава рассказывает, как обновить прошивку «моторного» кейпа при помощи BeagleBone Green, но данная инструкция также подходит для BBGW и BBB.
1. Подключите кейп Motor Bridge Cape v1.0 к плате BeagleBone (будь то BBG, BBB или BBGW). Затем подключите плату BeagleBone к компьютеру при помощи USB-кабеля.
2. Подождите, пока плата подключится к интернету. Затем получите к ней доступ через SSH, как показано на картинке ниже:
3. Загрузите код с GitHub, выполнив следующие команды:
git clone https://github.com/Seeed-Studio/MotorBridgeCapeFirmware
4. Пройдите к «MotorBridgeCapeFirmware» и выполните команду make flash, чтобы записать прошивку.
cd MotorBridgeCapeFirmware/ && make flash
Спустя несколько секунд в терминале появится сообщение «Verification OK».
5. Проверьте, записалась ли прошивка, выполнив следующую команду:
i2cdetect -y -r 1
Если в ответ будет показан адрес «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». Если кейп по-прежнему не работает, обратитесь за советом на форум.
Полезные ссылки
- Схема подключений и контактов в PDF-файле
- Схема платы в Eagle-файле
- Схема в Eagle-файле
- Библиотека «MotorBridgeCapeforBBG_BBB»
- Исходный код прошивки для кейпа Motor Bridge Cape