Электронный компонент:Плата Xadow с драйвером моторов: различия между версиями
Myagkij (обсуждение | вклад) Нет описания правки |
Нет описания правки |
||
Строка 49: | Строка 49: | ||
'''2.''' Кликните в [[IDE Arduino]] по '''Файл > Примеры > xadow_motor > motorCtrl (File > Examples > xadow_motor > motorCtrl)''', чтобы открыть вот такой скетч: | '''2.''' Кликните в [[IDE Arduino]] по '''Файл > Примеры > xadow_motor > motorCtrl (File > Examples > xadow_motor > motorCtrl)''', чтобы открыть вот такой скетч: | ||
<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS | <syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS"> | ||
/* | /* | ||
Для моторов доступны следующие состояния: | Для моторов доступны следующие состояния: |
Версия от 20:05, 23 мая 2023
Черновик |
Плата Xadow с драйвером моторов[1]
Плата Xadow с драйвером моторов предназначена для управления моторами. Ее основные компоненты – это чип LB1836M и микроконтроллер ATmega168. LB1836M – это 2-канальный драйвер моторов с низким напряжением насыщения и двумя направлениями вращения. ATmega168 – это микроконтроллер, который управляет чипом LB1836M через шину I2C. Плата Xadow с драйвером моторов поддерживает изменение I2C-адреса. Для работы моторов требуется дополнительное питание, которое обеспечивается за счет батареи (питания от главной платы Xadow будет недостаточно).
Характеристики
- Драйвер моторов – чип LB1836M
- Напряжение батареи – между 2.5 и 9 вольтами
- Макс. сила тока на одном канале – 300 мА
- Шина для передачи данных – I2C
- Возможность менять I2C-адрес
- Размеры – 25.43 мм х 20.35 мм
Описание и расположение компонентов
- 1 – Чип LB1836M. Это 2-канальный драйвер моторов с низким напряжением насыщения и двумя направлениями вращения.
- 2 – Порт для подключения батареи, питающей моторы.
- 3, 4 – Контакты для подключения моторов.
- 5, 6 – Перемычки для изменения I2C-адреса. По умолчанию A0 и A1 подключены к контактам H, но их также можно подключить к контактам L. Более подробно о смене I2C-адреса читайте ниже, в разделе «Изменение I2C-адреса».
- 7 – Интерфейс SPI. Используется для загрузки прошивки на ATmega168.
- 8 – Микроконтроллер ATmega168.
- 9 – Перемычка для переключения питания ATmega168. По умолчанию контакт DVCC подключен к VOUT, и это значит, что ATmega168 питается от батареи. Если подключить DVCC к 3.3V, ATmega168 начнет питаться от соединения с главной платой Xadow.
Демо-проект
Давайте разберем проект, с помощью которого плата Xadow с драйвером моторов будет одновременно управлять двумя моторами.
Подключение устройств
- Подключите DC-моторы к интерфейсам J5 и J6. Чтобы соединение держалось крепко, можно закрепить его пайкой.
- Подключите батарею. Без нее моторы не будут вращаться.
- Подключите плату Xadow с драйвером моторов к главной плате Xadow (имеется в виду плата Xadow Main Board; она не совместима с модулями Xadow версии 2 и RePhone).
Примечание: Подключая кабель, следите за тем, чтобы одна его сторона была подключена к порту, который находится на стороне со срезанными углами, а другая – к порту, который находится на стороне с целыми углами.
Загрузка прошивки
1. Загрузите библиотеку «Xadow Motor Driver», а затем установите ее в IDE Arduino. О том, как устанавливать в IDE Arduino новые библиотеки, читайте здесь или здесь. Для управления шаговыми моторами эта библиотека не подходит.
2. Кликните в IDE Arduino по Файл > Примеры > xadow_motor > motorCtrl (File > Examples > xadow_motor > motorCtrl), чтобы открыть вот такой скетч:
/*
Для моторов доступны следующие состояния:
-MSTOP -> остановка
-MFOR -> езда вперед
-MREV -> езда назад
-MHOLD -> закрепить предыдущее состояние
**ПРИМЕЧАНИЕ:
Для платы можно задать 4 разных адреса:
-MOTORADDRESS0 0x40 // A0 LOW, A1 LOW
-MOTORADDRESS1 0x41 // A0 HIGH, A1 LOW
-MOTORADDRESS2 0x42 // A0 LOW, A1 HIGH
-MOTORADDRESS3 0x43 // A0 HIGH, A1 HIGH
Вот эта функция позволяет управлять сразу двумя моторами:
setMotorRun(unsigned char sMotorA, unsigned char sMotorB);
*/
#include <Wire.h>
#include "XadowMotor.h"
void setup()
{
Serial.begin(38400);
xadowMotor.begin(MOTORADDRESS3);
}
void loop()
{
Serial.print("bat vol :"); // "Напряжение батареи: "
Serial.println(xadowMotor.getBatVol());
xadowMotor.setMotorRun(MFOR, MFOR);
delay(2000);
xadowMotor.setMotorRun(MSTOP, MSTOP);
delay(500);
xadowMotor.setMotorRun(MREV, MREV);
delay(2000);
xadowMotor.setPwrDown();
delay(1000);
xadowMotor.setWakeUp();
}
Примечание: В этом коде функция xadowMotor.begin(MOTORADDRESS3) используется, чтобы задать I2C-адрес платы Xadow с драйвером моторов. Параметр MOTORADDRESS3 меняет состояние контактов A0 и A1. Более подробно читайте ниже, в разделе «Изменение I2C-адреса».
3. Загрузите скетч на плату Xadow с драйвером моторов. Не забудьте выбрать в IDE Arduino правильную плату, кликнув на Инструменты > Плата > Seeeduino Xadow (Tools > Board > Seeeduino Xadow), а также правильный COM-порт в меню Инструменты > Порт (Tools > Port).
В результате моторы, подключенные к плате, должны начать периодически крутиться то вперед, то назад. Кроме того, в мониторе порта IDE Arduino можно наблюдать напряжение батареи, питающей электромоторы.
Изменение I2C-адреса
I2C-адрес платы Xadow с драйвером моторов можно менять, и доступных вариантов – четыре. Они задаются при помощи контактов A0 и A1. По умолчанию контакты A0 и A1 подключены к H внутри платы. Но это можно изменить. Например, паяльником разрушив соединение между H и A0, а затем припаяв A0 к L. В результате контакт A0 получит значение LOW. Кроме того, I2C-адрес можно менять в коде с помощью функции xadowMotor.begin(). Более подробно смотрите в таблице ниже.
I2C-адрес | Состояние контакта A0 | Состояние контакта A1 | Параметр для функции xadowMotor.begin() |
---|---|---|---|
0x40 | L | L | MOTORADDRESS0 |
0x41 | L | H | MOTORADDRESS1 |
0x42 | H | L | MOTORADDRESS2 |
0x43 | H | H | MOTORADDRESS3 |
Полезные ссылки
- Схемы для платы Xadow с драйвером моторов в формате Eagle
- Схемы для платы Xadow с драйвером моторов в формате DPF
- [https://github.com/Seeed-Studio/Xadow_Motor_Driver Библиотека «Xadow Motor Driver» для IDE Arduino
- Техническая документация для LB1836