Содержание статьи
Содержание

Главная / Двигатели и Arduino / Мотор шилд для Arduino

Мотор шилд для Arduino

Данная статья посвящена Motor Shield V1 для Arduino.

Arduino - это отличный трамплин для начинающих увлекаться электроникой и автоматизацией. С использованием Motor Shield Arduino может стать не просто игрушкой, а и отличной платформой для реальных робототехнических и мехатронных проектов. Motor Shield может стать отличным дополнением во в многих простых проектах и проектах среднего уровня сложности на Arduino. Мотор Шилд предлагает вам следующее:

Motor Shield с моторами

Вопросы, которые могут возникнут при работе с Мотор шилдом

Сколько моторов можно использовать с этим шилдом?

Вы можете использовать 2 сервомотора, которые работают от 5 В и до 4 моторов постоянного тока или 2 шаговых двигателя (или 1 шаговик и до 2-х двигателей постоянного тока).

Можно ли подключить больше моторов?

Нет, подключить больше чем, например, 2 шаговых двигателя, не получится.

Помогите! Мой двигатель не работает! А серводвигатель работает!

Проверьте, горит ли светодиод на мотор шилде. Шаговые двигатели и двигатели и двигатели постоянного тока не будут работать, если светодиод не горит. В этом случае можете даже не пробовать подключать моторы заново или перезаливать скетч на Arduino. Работать все равно не будет.

Зачем нужен светодиод на мотор шилде?

Светодиод показывает, работает ли источник питания для двигателей постоянного тока/шаговиков. Контакты для сервомоторов питаются от 5 В и не используют источник питания двигателей постоянного тока.

Можно ли управлять маленькими 3 В моторами с помощью этого мотор шилда?

Не желательно. Motor Shield предназначен для моторов 6+ В. В принципе вы можете подключить мотор 3 В, но он будет перегреваться и гораздо быстрее выйдет из строя.

Arduino перезагружается и странно себя ведет при работе моторов! Мой Motor Shield поломан?

Моторы потребляют много тока, требуют большую мощность питания. Из-за этого Arduino может перезагружаться. Именно поэтому на мотор шилде предусмотрено раздельное питание моторов и логики. Если вы будете правильно использовать разделение питания, плата не будет перезагружаться. Почитайте user manual по поводу источников питания при работе с шилдом.

У меня стабильный источник питания, но двигатели постоянного тока иногда совершают странные рывки.

Попробуйте установить конденсатор на 0.1 мкФ. Это уменьшит шумы, которые возникают в электрической цепи и могут решить вашу проблему.

Какие пины не используются на мотор шилде?

6 аналоговых пинов свободны. Они могут использоваться и в качестве цифровых пинов (пины #14 - 19).

- Цифровой пин 2 и 13 тоже не используются.

Следующие пины используются только если используются шаговые двигатели и двигатели постоянного тока:

- Цифровой пин 11: Двигатель постоянного тока #1 / шаговый двигатель #1 (активация/управление скоростью)

- Цифровой пин 3: Двигатель постоянного тока #2 / шаговый двигатель #1 (активация/управление скоростью)

- Цифровой пин 5: Двигатель постоянного тока #3 / шаговый двигатель #2 (активация/управление скоростью)

- Цифровой пин 6: Двигатель постоянного тока #4 / шаговый двигатель #2 (активация/управление скоростью)

Следующие пины используются, если подключены двигатели постоянного тока или шаговые двигатели

- Цифровые пины 4, 7, 8 и 12 используются для управления двигателями постоянного тока и шаговыми двигателями через 74HC595

Следующие пины используются только при использовании серводвигателей:

- Цифровой пин 9: Серва #1 управление

- Цифровой пин 10: Серва #2 управление

Какие пины Arduino подключены к двигателям постоянного тока или шаговым двигателям?

Двигатели постоянного тока и шаговые двигатели не подключаются напрямую к Arduino. Они подключаются к 74HC595, который передает данные на Arduino. Передавать данные непосредственно на моторы вы не сможете, вы должны использовать библиотеку Motor Shield library.

Как я могу подключиться к пинам на Arduino, которые не используются?

Аналоговые пины (аналоговые 0-5 также являются цифровыми 14-19) вынесены в нижнем правом углу.

Остальные пины не вынесены, так как они могут использоваться мотор шилдом. Если вы уверены, что не используются, можно их использовать и подключать необходимое периферийное оборудование.

При использовании скетча-примера, у меня появляется следующая ошибка: "error: AFMotor.h: No such file or directory...."

Убедитесь, что вы установили библиотеку AFMotor library

Как установить библиотеку?

Почитайте инструкцию по установке библиотек для Arduino.

У меня два шаговых двигателя и я хочу управлять ими одновременно, но в примере я могу управлять только одним, а потом вторым. То есть последовательно.

В библиотеке для шаговых двигателей (функция step ()) не предусмотрена возможность одновременного управления двумя моторами. Для реализации этой задачи вам надо 'interleave' запросы. Например, для того чтобы моторы совершили 100 шагов в одном направлении ("вперед"), пропишите в программе для Arduino следующее:

for (i=0; i<100; i++) {

motor1.step(1, FORWARD, SINGLE);

motor2.step(1, FORWARD, SINGLE);

}

Если вы хотите обеспечить более точное управление, воспользуйтесь Библиотекой AccelStepper library (in the Downloads section), в которой найдутся подходящие для вас примеры скетчей.

Какие моторы вы порекомендуете использовать?

Единого рецепта нет. Но вопрос этот возникает у многих, особенно начинающих разбираться с Arduino и Motor шилдом. Так что можем порекомендовать моторы от Pololu (DC Servos, DC motors) или Jameco (all sorts!). Ну и конечно же, серфите Китай! Aliexpress, eBay, Bankgood и т.п.

Motor Shield совместим с UNO R3 или Mega R3? На них ведь есть дополнительные пины...?

Мотор шилд совместим с R3 UNO и MEGA. На версиях R3 действительно есть два дополнительных пина. Но эти контакты являются дубликатами других пинов и шилд их просто не задействует.

Я использую робо-платформу 4WD и у меня ничего не работает...

Спидометр на Arduino

Моторы, которые используются в робо-платформе 4WD от Maker Shed, DF Robotics, Jameco и других очень сильно "шумят". Эти шумы возвращаются на Arduino и вызывают нестабильную работу. Проблему можно решить, установив по 3 шумоподавляющих конденсатора на мотор как это показано на рисунке ниже.

Но на моем моторе уже установлен конденсатор и он все равно не работает.

Эти моторы генерируют очень большие шумы. Поэтому обычно им надо минимум три конденсатора для подавления шумов.

Почему конденсаторы не предусмотрены на шилде?

На Мотор шилде конденсаторы не будут эффективными. Шумы надо подавлять непосредственно на контактах двигателя, неподалеку от источника.

Собираем Motor Shield

Мотор шилды продаются как в собранном так и в разобранном состоянии. Кроме того, по данной инструкции вы можете собрать шилд самостоятельно, если у вас есть необходимые радиодетали. Если вам достался собранный мотор шилд, можете смело пропустить этот раздел.

Поехали!

Необходимые инструменты

Ниже приведен перечень инструментов, которые понадобятся для сборки мотор шилда. По сути это стандартный набор, который вам пригодится и в дальнейшем, если вы начали увлекаться схемотехникой/электротехникой/Arduino.

Необходимые инструменты 1

Паяльник

Основной инструмент, который вы будете использовать. Причем не только при пайке мотор шилда, но и во многих дальнейших проектах на Arduino.

Очень облегчит вашу жизнь хорошее жало. Так что рекомендуем на этом не экономить.

Необходимые инструменты 2

Припой

Без него припаять ничего не получится. Так что при походе в магазин, не забудьте.

Необходимые инструменты 3

Мультиметр

Вам понадобится стандартный мультиметр для измерения напряжения и силы тока.

Необходимые инструменты 4

Кусачки

Опять таки очень сильно облегчат процесс прототипирования.

Необходимые инструменты 5

Держатель "Третья рука"

Не обязательная вещь, но очень полезный инструмент для пайки микросхем и небольших плат.

Необходимые компоненты

Необходимые компоненты 1

PCB Монтажная плата для распайки

1

Необходимые компоненты 2

IC1, IC2 - L293D

2

Необходимые компоненты 3

IC3 - 74HC595N

1

Необходимые компоненты 4

IC1' и IC2' - Сокет для 16 контактов

2

Необходимые компоненты 5

LED1 - 3 мм светодиод, любой цвет

Индикатор питания двигателя

1

Необходимые компоненты 6

R1 - 1.5 КОм резистор для светодиода 1

1

Необходимые компоненты 7

R2 - 10 КОм резистор

1

Необходимые компоненты 8

RN1 Цепочка резисторов на 10 контактов 10 Ком -100 КОм

1

Необходимые компоненты 9

C2, C4, C6 0.1 мкФ керамический конденсатор

3

Необходимые компоненты 10

C1, C3, C5 100 мкФ / 6В конденсатор (или больше)

3

Необходимые компоненты 11

C7, C8 47 мкФ / 25 В конденсатор (или больше)

2

Необходимые компоненты 12

X1 5-ти позиционный 3.5 мм блок для подключения (или 3 позиционный и 2 позиционный)

2

Необходимые компоненты 13

X2 2 позиционный 3.5 мм блок для подключения

1

Необходимые компоненты 14

Перезагрузка Тактильная кнопка 6 мм

1

Необходимые компоненты 15

PWR Коннекторы

1

Необходимые компоненты 16

Рельса папа-папа на 36 контактов

1

Паяем мотор шилд

Паяем мотор шилд 1

Для начала проверьте наличие всех необходимых компонентов!

Паяем мотор шилд 2

Удобно расположите вашу макетную плату и разогрейте паяльник

Паяем мотор шилд 3

Сначала припаиваем резисторы: R1 (Коричневый Зеленый Красный Золотой) и R2 (Коричневый Черный Оранжевый Золотой). Изогните ноги резисторов так как это показано на рисунке слева.

Паяем мотор шилд 4

Потом установите резисторы на плату таким образом, чтобы они плотно сели на макетку. Отогните ноги резисторов с другой стороны платы. Не перепутайте полярность.

Паяем мотор шилд 5

С помощью паяльника нагрейте ноги резистора и металлическое покрытие на плате. После этого подайте в место пайки немного припоя. Аналогично припаяйте 4 контакта от резисторов.

Паяем мотор шилд 6

Проверьте насколько хорошо получилось припаять.

Паяем мотор шилд 7

Откусите ненужную часть контактов с резисторов с помощью щипцов.

Паяем мотор шилд 8

Переходим к трем желтым керамическим конденсаторам C4, C2 и C6. Керамические конденсаторы не имеют полярности, так что располагать их можно как угодно. Паяем так же как и резисторы, обрезаем излишки контактов.

Паяем мотор шилд 9

Припаиваем 6 проводников.

Паяем мотор шилд 10

После этого устанавливаем 6 мм кнопку перезагрузки и цепочку резисторов RN1, которые используется для того, чтобы драйвера не подавали питание на моторы, пока не будет соответствующей команды от Arduino.

Паяем мотор шилд 11

Переверните плату и припаяйте цепочку резисторов и кнопку. Ноги у них и так короткие, так что отрезать их скорее всего не придется.

Паяем мотор шилд 12

Переходим к микросхемам (ICs) IC1, IC2 и IC3. Микросхемы поставляются с ногами, которые расположены немного под углом, поэтому установить их на макетную плату. Подготовьте их для установки, согнув ноги так, чтобы они стали прямыми.

Паяем мотор шилд 13

Очень удобная вещь - сокеты на 16 контактов для установки драйверов L293D.

Паяем мотор шилд 14

IC-микросхемы должны быть установлены с правильной ориентацией, чтобы они корректно работали. Для этого на плате и на чипах предусмотрены одинаковые U метки. Когда устанавливаете чипы, убедитесь, чтобы они совпадали.

Аккуратно установите три чипа. Проверьте, не сломаны ли ноги.

74HC595 устанавливается по центру, а два L293D по бокам.

Паяем мотор шилд 15

Припаяйте все контакты чипов.

Паяем мотор шилд 16

Переходим к электролитическим конденсаторам на 100 мкФ: C1, C3 и C5. Электролитические конденсаторы имеют полярность, которую надо соблюдать при их установке. Длинная нога конденсатора это + и припаивается к отверстию, возле которого стоит символ +.

Конденсаторы не маркируются разными цветами. Емкость конденсатора невозможно определить по цвету корпуса!

Паяем мотор шилд 16

Еще раз внимательно проверьте полярность и припаяйте три конденсатора.

Паяем мотор шилд 16

Установите два оставшихся электролитических конденсатора на 47 мкФ: C7 и C8.

Они тоже имеют полярность, так что проверьте ее во время установки. Напоминаем, что емкость конденсатора не зависит от цвета корпусной части.

Паяем мотор шилд 16

Припаяйте два конденсатора и откусите лишнее.

Паяем мотор шилд 16

Дальше - светодиод 3 мм, который отображает состояние питания моторов. Как и конденсаторы, светодиоды имеют полярность. Длинная нога - это +. Если не выдержать полярность, светодиод не будет работать.

Паяем мотор шилд 16

Припаяйте и уберите лишнее на ногах светодиода.

Паяем мотор шилд 16

Устанавливаем контакты для проводов, сервомоторов и Arduino.

Мы используем одну рельсу на 36 контактов, с которой отламываем необходимое нам количество для каждой рельсы.

Нам понадобятся 2 рельсы на 8 контактов, 2 рельсы на 6 контактов, 2 - на 3 контакта и 1 - на 2 контакта.

2 рельсы на 3 контакта используются для подключения серводвигателей в правом левом углу. Рельса на 2 контакта - к PWR контакту в центре снизу.

Паяем мотор шилд 16

Кроме этого, установите 3 больших больших терминала для подключения моторов и кабелей внешнего источника питания.

Паяем мотор шилд 16

Припаиваем 3 рельсы контактов и 3 блока терминалов.

Паяем мотор шилд 16

После этого установите рельсы на 8 и на 6 контактов на ваш Arduino. Это проверка насколько ровные рельсы. Перед этим убедитесь, что Arduino не подключен к компьютеру или внешнему источнику питания.

Установите мотор шилд на Arduino. Рельсы должны своими контактами попасть в отверстия на шилде.

Припаиваем все пины к мотор шилду.

Паяем мотор шилд 16

Все! Результат должен выглядеть примерно так, как показано на фото слева.

Используем Motor Shield!

Motor Shield - это отличный контроллер для двигателей, но использовать его надо предельно осторожно и корректно.

Установка библиотеки

Первая установка библиотеки Arduino

Перед тем как вы сможете использовать Motor shield, вам надо установить библиотеку AF_Motor Arduino library. Благодаря этой библиотеке ваш Arduino сможет "общаться" с мотор шилдом.

1. Скачайте файл библиотеки для мотор шилда с

Ginthub.

2. Распакуйте ZIP файл, который вы скачали

3. Переименуйте распакованную папку AFMotor

4. Проверьте, чтобы внутри AFMotor были файлы AFMotor.cpp и AFMotor.h. Если их там нет, значит вы что-то некорректно сделали в предыдущих пунктах.

5. Переместите папку AFMotor в папку arduinosketchfolder/libraries. В Windows это будет что-то вроде MY Documents/Arduino/libraries, для Mac - Documents/arduino/libraries. Если вы устанавливаете библиотеки впервые, вероятно, придется создать папку под названием libraries. Название папки должно быть именно libraries. Без капса, без каких-либо других изменений!

6. Убедитесь, что в папке libraries есть папка AFMotor, а внутри нее - файлы AFMotor.cpp, AFMotor.h

7. Перезагрузите Arduino IDE. После перезагрузки в меню должен появится файл File->Examples->AFMotor->MotorParty

Питание

Питание двигателей постоянного тока, требования по напряжению и силе тока

Для моторов нужны мощные источники питания. Особенно для дешевых моторов, так как у них очень низкий коэффициент полезного действия. Первое, с чем надо определиться - напряжение питания для вашего мотора. Если вам повезло и у вас есть спецификация на двигатель, этот параметр должен быть указан именно в спеке. Некоторые маленькие хобби-моторы питаются от 1.5 В, но в основном маломощные привода требуют напряжение питания 6-12 В. На мотор шилде контроллеры моторов рассчитаны на обеспечение питания в диапазоне от 4.5 до 25 В. То есть, запитать хобби-моторы с напряжением питания 1.5 В не получится

Требования по силе тока. Второе, с чем надо определится - сила тока, которая необходима для работы вашего мотора. Драйвера двигателей, которые входят в состав Motor Shield'а обеспечивают 600 мА на один мотор с максимальным значением до 1.2 А. Если вы работаете с токами, которые превышают 1 А, надо подумать об охлаждении драйверов, которые начинают очень сильно греться.

Про использование SN754410. Некоторые используют драйвер двигателя SN754410, потому что его можно легко установить в сокет для оригинальных драйверов и он обеспечивает силу тока 1 А на двигатель с максимально допустимым значением силы тока 2 А. Считается, что подобный "хак" вполне допустим, однако производители шилдов не рекомендуют производить такой апгрейд. А если и производить, то лишь на свой страх и риск, так как шилд может перегореть.

Надо больше мощности? Можно приобрести еще один набор драйверов L293D и установить их сверху на родные. И вуаля! Вы получаете вдвое большую силу тока! Можно установить еще 2 чипа сверху, дальнейшее нагромождение не даст значительного прироста силы тока.

Рекомендуется использовать два источника питания. Один для Areuino и второй для моторов. 99% 'загадочных проблем с моторами' возникают из-за шумов от цепи питания, которая распределяется на две и в результате ей может не хватить мощности на одну из цепей!

Как настроить Arduino + Motor Shield для питания моторов

Сервомоторы запитываются от 5 В, которые генерируются на Arduino. Это отличный вариант для небольших хобби-серв. Если вы хотите подключить другой источник питания, обрежьте контакт, который идет к + на серве и подключите ваш собственный источник питания 5-6 В.

Двигатели постоянного тока питаются от 'цепи питания с высоким напряжением', а не от 5 В регулируемого напряжения на Arduino. Не подключайте питание моторов постоянного тока к цепи 5 В, если вы не уверены на 100%, что вы все делаете верно!

'Цепь питания с высоким напряжением' доступна по двум цепям. Первый вариант - использовать DC джек на плате Arduino, а второй - использование 2-х контактного терминала, который отмечен EXT_PWR. DC джек на Arduino имеет встроенный предохранительный диод, так что вы можете особо не переживать, если даже подключите неподходящий источник питания. При этом на EXT_PWR терминалах мотор шилда нет предохранительного диода. Так что подключайте внимательно, чтобы не спалить мотор шилд или Arduino.

Motor Shield работает следующим образом:

Arduino + Motor Shield для питания моторов

Если вам нужен один источник питания дляArduino и всех моторов, просто подключите его в DC джек на Arduino или 2-х контактный терминал PWR_EXT на шилде и замкните контакт питания на мотор шилде (Motor shield power jumper на схеме выше).

Если у вас Diecimila Arduino, установите контакт питания на Arduino в EXT.

В таком режиме у вас могут возникнуть проблемы - Arduino может перезагружаться. Это происходит из-за того, что не обеспечивается постоянное питание. Вообще-то подобное питание проектов с мотор шилдом не очень хороший вариант. Лучше использовать раздельное питание моторов и микроконтроллера.

Если вы хотите запитать Arduino от USB, а двигатели от отдельного источника постоянного тока, подключите плату через USB. Потом подключите питание мотора к блоку контактов PWR_EXT на шилде. Не замыкайте контакты на шилде. Считается, что это оптимальный вариант питания ваших проектов (если у вас Arduino Diecimila, не забудьте переключить режим питания на плате USB. При использовании Diecimila, вы можете сделать следующее: подключите источник питания постоянного тока к Arduino и замкните контакт питания на мотор шилде).

Если вам надо 2 отдельных источника питания для Arduino и моторов, подключите питание к Arduino через DC джек, а второй - к мотор шилду с помощью контактов PWR_EXT. Убедитесь, что контакт питания на мотор шилде разомкнут.

Если у вас Arduino Diecimila, установите контакт в позицию EXT. Это второй предпочтительный вариант для обеспечения питания ваших проектов с использованием Motor Shield.

Мотор шилд и сервомоторы

Мотор шилд и сервомоторы

Хобби сервы - самый простой вариант для проверки шилда. На сервах предусмотрен 3-х контактный коннектор типа 'мама' на 0.1", на котором присутствуют контакты +5 В, земля (GND) и сигнал. На мотор шилде есть 2 рельсы с 3-мя контактами 16-ти битного ШИМ выхода. Для работы сервоприводов их достаточно подключить к подключить к указанным контактам.

ШИМ выходы на Arduino достаточно точные. При подключении серв к мотор шилду можно использовать встроенную библиотеку Servo library.

Питание серв обеспечивается встроенным на Arduino регулятором на 5 В, который питается непосредственно от USB или DC джека на Arduino.

Мотор шилд и шаговые двигатели

Мотор шилд и шаговые двигатели

Шаговые моторы - отличный выбор для управления вашими проектами. Они отлично вписываются в проекты манипуляторов, ЧПУ станков и т.п. на Arduino. Мотор шилд поддерживает работу двух шаговых двигателей одновременно. Библиотека работает одинаково для биполярных и униполярных моторов.

Для униполярных моторов: перед подключением моторов надо выяснить как соотносятся контакты и катушки. Если у мотора пять проводов, будет один, который будет расположен по центру обеих катушек. Центральный контакт должен быть подключен к контакту GND на мотор шилде. Потом надо подключить катушку 1 к одному из контактов для моторов (скажем, М1 или М3), а катушка 2 должна подключаться ко второму порту мотора (М2 или М4).

Для биполярных двигателей: то же самое, что и для униполярных, только нет пятого проводника, который подключен к земле. Скетч такой же.

Запустить шаговый двигатель немного сложнее, чем двигатель постоянного тока, но все равно это не так уж и сложно.

1. Убедитесь, что вы подключили библиотеку #include <AFMotor.h>

2. Создайте объект для шагового двигателя: AF_Stepper(steps, stepper#). Steps содержит информацию о том, сколько шагов на один оборот совершает мотор. В 7.5 degree/step моторе 360/7.5 = 48 steps. Stepper# отвечает за порт, к которому подключен шаговый двигатель. Если вы используете M1 и M2, это порт 1. Если вы используете М3 и М4 - это порт 2.

3. Установите скорость мотора, используя setSpeed(rpm), rpm - задаваемое количество оборотов в минуту на шаговом двигателе.

4. После этого каждый раз, когда вы хотите обеспечить вращение ротора мотора, надо вызывать процедуру step(#steps, direction, steptype).#steps - это то, сколько шагов вы хотите совершить. direction - это FORWARD или BACKWARD, а тип шага - это SINGLE, DOUBLE. INTERLEAVE или MICROSTEP.

"Single" означает активацию одной катушки, "double" означает одновременную активацию 2-х катушек (для большего крутящего момента), а 2 "interleave" - среднее между режимами 'single' и 'double' (в результате скорость будет в два раза меньше). "Microstepping" - метод, с помощью которого обеспечивается плавное перемещение между шагами. Вы можете использовать любой тип шага, менять методы "на лету" в зависимости от того, что вам необходимо - минимальная мощность, больший крутящий момент или большая точность.

5. По умолчанию мотор будет 'держать' позицию после того, как отработает заданный цикл шагов. Если вы хотите отключить катушки, чтобы обеспечить свободное вращение вала двигателя, можете использовать функцию release().

6. Команды шагов 'блокируются' и становятся доступными только после отработки заданных шагов.

Так как как команды шагов 'блокируются' - надо подавать новые команды каждый раз, когда вы хотите обеспечить вращение ротора. Если вы хотите расширить возможности шаговых приводов, попробуйте загрузить библиотеку AccelStepper library (устанавливается так же как и библиотека AFMotor), в которой есть интересные примеры управления двумя шаговыми двигателями одновременно с разными ускорениями.

#include <AFMotor.h>

AF_Stepper motor(48, 2);

void setup() {

Serial.begin(9600); // устанавливаем скорость обмена данными на 9600 bps

Serial.println("Stepper test!");

motor.setSpeed(10); // 10 rpm

motor.step(100, FORWARD, SINGLE);

motor.release();

delay(1000);

}

void loop() {

motor.step(100, FORWARD, SINGLE);

motor.step(100, BACKWARD, SINGLE);

motor.step(100, FORWARD, DOUBLE);

motor.step(100, BACKWARD, DOUBLE);

motor.step(100, FORWARD, INTERLEAVE);

motor.step(100, BACKWARD, INTERLEAVE);

motor.step(100, FORWARD, MICROSTEP);

motor.step(100, BACKWARD, MICROSTEP);

}

Мотор шилд и двигатели постоянного тока

Мотор шилд и двигатели постоянного тока

Двигатели постоянного тока (DC motors) используются во многих робототехнических проектах.

Motor Shield дает возможность управлять одновременно 4-ми двигателями постоянного тока, обеспечивая вращение роторов в двух направлениях. То есть, вал может вращаться и по часовой стрелке и против. Можно управлять скоростью вращения с инкрементом 0.5 %.

Не забывайте, что H-bridge чип не рассчитан на нагрузки больше 0.6 А при пиковых нагрузках 1.2 А. То есть, шилд рассчитан на маленькие моторы.

Для того, что бы подключить мотор, просто установите два контакта в терминалы, к контактам M1, M2, M3 или M4. После этого используйте скетч, пояснения к которому приведены ниже.

1. Убедитесь, что вы подключили библиотеку #include <AFMotor.h>

2. Создайте объект AF_DCMotor с такими свойствами: AF_DCMotor(motor#, frequency). У созданного объекта два аргумента.

Первый отвечает за порт, к которому подключен мотор 1, 2, 3 или 4.

frequency отвечает за частоту управляющего сигнала.

Для моторов 1 и 2 вы можете выбрать MOTOR12_64KHZ, MOTOR12_8KHZ, MOTOR12_2KHZ, или MOTOR12_1KHZ.

3. После этого вы можете настроить скорость мотора с использованием setSpeed(speed), где speed задается в диапазоне от 0 (остановка) до 255 (максимальная скорость).

4. Для ого, чтобы запустить мотор, необходимо вызвать функцию run(direction), где direction - это FORWARD, BACKWARD или RELEASE. Естественно, Arduino не знает, что такое "вперед", или "назад". Так что "вперед" - "назад" вы должны настроить на собственное усмотрение, поменяв контакты "+"/"-" от привода к клемам мотор шилда.

#include <AFMotor.h>

AF_DCMotor motor(2, MOTOR12_64KHZ); // создаем объект motor #2, 64 КГц ШИМ

void setup() {

Serial.begin(9600); // Устанавливаем скорость передачи данных 9600 bps

Serial.println("Motor test!");

motor.setSpeed(200); // устанавливаем скорость на 200 из 255 допустимых

}

void loop() {

Serial.print("tick");

motor.run(FORWARD); // ротор двигателя начинает вращаться "вперед"

delay(1000);

Serial.print("tock");

motor.run(BACKWARD); // вращается в противоположном направлении

delay(1000);

Serial.print("tack");

motor.run(RELEASE); // остановка

delay(1000);

}

Класс AF_DCMotor

Класс AF_DCMotor

Класс AF_DCMotor дает возможность управлять скоростью и направлением четырех двигателей постоянного тока с использованием Motor Shield. Для того, чтобы использовать эту возможность при программировании Arduino, надо в начале скетча добавить следующую строку:

#include <AFMotor.h>

AF_DCMotor motorname(portnum, freq)

Функция для двигателей постоянного тока. Функцию надо вызывать один раз для каждого мотора постоянного тока, который вы используете. Каждый мотор должен иметь различное имя (motorname).

Параметры:

Частоты для канала 1 и 2 следующие:

Частоты для канала 3 и 4:

Пример:

AF_DCMotor motor4(4); // Инициализируем мотор на канале 4 с частотой ШИМ-модуляции 1 КГц

AF_DCMotor left_motor(1, MOTOR12_64KHZ); // Инициализируем мотор на канале 1 с частотой ШИМ 64 КГц

Класс AF_DCMotor

setSpeed(speed)

Устанавливает скорость вращения ротора мотора.

Параметры:

Пример:

Примечание: ответ двигателей постоянного тока обычно не линейный, так что фактическая скорость вращения не обязательна будет пропорциональна скорости, которую вы указали при программировании.

run(cmd)

Устанавливает режим работы мотора.

Параметры:

Значения, которые может принимать аргумент cmd:

Пример:

motor.run(FORWARD);

delay(1000); // вращается "вперед" на протяжении 1 секунды

motor.run(RELEASE);

delay(100); // 'отпускаем ротор' на 1/10 секунды

motor.run(BACKWARDS); // вращение в противоположном направлении

Класс AF_Stepper

Класс AF_Stepper

Класс AF_Stepper управление одним и мульти-шагом двух шаговых двигателей с использованием Motor Shield. Для того, чтобы использовать это при программировании Arduino, надо подключить библиотеку в начале скетча:

#include <AFMotor.h>

AF_Stepper steppername(steps, portnumber)

Функция AF_Stepper инициализирует шаговый двигатель. Вызывается один раз в скетче для каждого шагового двигателя. Каждый шаговый двигатель должен получить уникальное имя как в примере ниже.

Параметры:

Значения для параметра 'num'1 (каналы 1 и 2) и 2 (каналы 3 и 4).

Пример:

AF_Stepper steppername(steps, portnumber)

AF_Stepper Stepper1(48, 1); // A 48 шагов за один полный оборот ротора на каналах 1 и 2

AF_Stepper Stepper2(200, 2); // 200 шагов за один полный оборот ротора на каналах 3 и 4

step(steps, direction, style)

Шаги двигателя.

Параметры:

Аргумент 'style' может принимать следующие значения:

Примечание: Step - это функция, которая не вернет значение на выходе, пока не будут отработаны все заданные шаги. Для одновременного вращения двух моторов, надо выдержать паузы между шагами. Для этого используется функция "onestep()", которая рассмотрена ниже.

Stepper1.step(100, FORWARD, DOUBLE); // 100 шагов вперед с использованием шага с аргументом double

Stepper2.step(100, BACKWARD, MICROSTEP); // 100 шагов в противоположном направлении с использованием микрошага

setSpeed(RPMspeed)

Устанавливаем скорость мотора

Параметры:

Пример:

Stepper1.setSpeed(10); // устанавливаем скорость мотора 1 на 10 рад/мин

Stepper2.setSpeed(30); // устанавливаем скорость мотора 2 на 30 рад/мин

onestep(direction, stepstyle)

Один шаг мотора.

Параметры:

'style' может принимать следующие значения:

Пример:

Stepper1.onestep(FORWARD, DOUBLE); // один шаг "вперед" с использованием аргумента double

release()

Убираем "держащий момент" на моторе. Благодаря этому уменьшается нагрев, но ротор шагового мотора не будет сопротивляться вращению.

Пример:

Stepper1.release(); // останавливаем вращение и снимаем "держащий момент" с ротора.

Оставляйте Ваши комментарии, вопросы и делитесь личным опытом ниже. В дискуссии часто рождаются новые идеи и проекты!