Эта страница только для чтения. Вы можете посмотреть исходный текст, но не можете его изменить. Сообщите администратору, если считаете, что это неправильно. ====== Motor Shield (SmartElements) ====== ===== Описание ===== Плата расширения Motor Sheld, выполненная на базе микросхемы L298P, позволяет управлять моторами и дополнительными устройствами. Является незаменимой платой при конструировании и сборке роботов, а также других устройств, использующих коллекторные и шаговые моторы. Motor Shield совместим со всеми типами контроллеров Arduino, совпадающих по форм-фактору (в том числе совместим с контроллерами Smart Uno, Smart Mega и Smart Leonardo). Плата имеет два канала для управления моторами и позволяет подключить два коллекторных мотора или один шаговый. Допускается параллельное подключение нескольких моторов в один канал. Такой вариант подключения будет удобен, например, для четырехколесных роботов. Motor Shield позволяет подключать моторы мощностью до 2 А на каждый канал. При необходимости использования более мощного мотора - каналы можно объединить, получив при этом суммарно до 4 А. Обратите внимание, при работе платы с моторами потребляющими большой ток, микросхема сильно нагревается. Во избежании ожога, не прикасайтесь к микросхеме в процессе работы. Для управления направлением вращения моторов используются выводы М1 и М2, по умолчанию с помощью перемычек использующие выводы 7 и 4 контроллера и шилда. Для управления скоростью вращения моторов используются выводы Е1 и Е2, по умолчанию с помощью перемычек использующие выводы 6 и 5 контроллера и шилда. Вы можете использовать другие выводы контроллера и шилда для управления моторами - для этого соедините выводы шилда М1, М2, Е1 и Е2 с другими цифровыми выводами посредством гибких проводов "мама-мама" (обратите внимание, для регулировки скорости вращения моторв выводы Е1 и Е2 должны подключаться к выводам, поддерживающим ШИМ). Плата совмещает в себе возможности Motor Shield и Sensor Shield. Для подключения периферии на плату выведены трехконтактные разъемы для подключения модулей и датчиков (13 цифровых и 6 аналоговых). Кроме того, на плате предусмотрены следующие дополнительные разъемы: UART, I2C, а также DIST и INDICATOR. Разъем DIST позволяет подключить ультразвуковой дальномер (HC-SR04 или US-015) или другой датчик или модуль, использующий аналогичную распиновку. Для работы данный разъем использует цифровые выводы 8 и 9 контрллера и шилда. Разъем INDICATOR позволяет подключить модуль 4-х разрядного индикатора или другой модуль или датчик, использующий аналогичную распиновку. Для работы данный разъем использует цифровые выводы 12 и 13 контрллера и шилда. Светодиод на плате отображает состояние питания Motor Shield: если светодиод горит - шилд получает питание, если не горит - питание на шилд не поступает. Перемычка JOIN на плате отвечает за режим питания. Если перемычка установлена - внешнее питание от разъема PWR поступает и на контроллер через пин Vin, и на питание моторов. Рекомендуемое напряжение в таком случае должно быть 7-12 В. Если перемычка снята - внешнее питание поступает только на Motor Shield для питания моторов (для питания контроллера и периферии требуется дополнительный источник питания, подключаемый к контроллеру). Рекомендуемое напряжение в таком случае может быть 5-24 В. В качестве внешнего питания можно использовать Power Shield, установив его между контроллером и Motor Shield. ==== Схема платы ==== {{ :главная:шилды:motor_shield_map.png?nolink |}} На схеме обозначены: - Цифровые выводы (D0 - D13) - Выводы управления направлением движения (М1 и М2) и скоростью (Е1 и Е2) - Клеммные колодки для подключения моторов - Клеммные колодки для подключения внешнего питания - Перемычка управления режимом питания - Аналоговые выводы (A0 - A5) - Выводы для подключения дальномера - Выводы для подключения по интерфейсу I2C - Выводы для подключения индикатора - Выводы для подключения по интерфейсу UART ==== Физические размеры ==== * Шилд (Д х Ш х В): 60 х 53 х 20 мм ==== Плюсы использования ==== * Удобное подключение устройств * Имеет отдельные выводы для подключения по интерфейсам I²C и UART * Разъём для внешнего питания (со светодиодом-индикатором) * Совмещает в себе два шилда - шилд для управления моторами и сенсор шилд ==== Библиотеки ==== * [[https://files.smartelements.ru/know_libs/robotSE.zip|Библиотека robotSE]] ==== Описание библиотеки ==== Для более удобной работы с шилдом предусмотрена библиотека robotSE. Ниже приведено описание работы с библиотекой. === Инициализация === Инициализация и создание объекта для управления движением происходит с помощью типа robotSE. Простейший способ создания объекта робота: <file> robotSE myRobot; </file> При таком вызове выводы шилда назначены по-умолчанию. Если требуется указать явно номера выводов, используйте создание объекта с параметрами: <file> robotSE myRobot(E1, E2, M1, M2, speed) </file> где: - **E1** - вывод подключения пина мотор-шилда Е1 - **E2** - вывод подключения пина мотор-шилда E2 - **M1** - вывод подключения пина мотор-шилда M1 - **M2** - вывод подключения пина мотор-шилда M2 - **speed** - скорость вращения моторов (задаётся значением от 0 до 255, где 0 - колёса вращаться не будут). По-умолчанию скорость равна 150. === Установка скорости === Для управления скоростью предусмотрен метод **setSpeed(speed)**, имеющий единственный параметр - скорость, от 0 до 255. === Движение === Для управления движением предусмотрены следующие методы (движение происходит со скоростью, указанной при изначальном создании объекта робота или установленной с помощью метода setSpeed(speed)): * **move_forward()** - робот движется вперед * **move_right()** - робот движется вправо * **move_left()** - робот движется влево * **move_back()** - робот движется назад * **move_stop()** - робот останавливается * **randomMove()** - робот движется в случайном направлении. Техника движения следующая: сначала случайным образом робот поворачивает с заданной выше скоростью в течении 200 мс, затем движется вперёд. ===== Пример подключения и использования ===== **Пример:** Для демонстрации работы шилда используется простейший робот, который движется по четырём направлениям (вперед, назад, вправо и влево). Робот собирается очень просто - берётся трёхколёсное шасси с двумя моторами, на платформу шасси крепится контроллер Smart Uno, на контроллер прикрепляется Power Shield, в свою очередь на Power shield прикрепляется Motor shield. Для этого нам понадобится: ^ Что нужно: ^ Кол-во, шт ^ | [[https://smartelements.ru/collection/kontrollery/product/kontroller-smart-uno|Контроллер SmartUno]]| 1 | | [[https://smartelements.ru/product/shassi-2wd-smartelements|Шасси 2WD SmartElements]]| 1 | | [[https://smartelements.ru/product/motor-shield|Motor Shield]] | 1 | | [[https://smartelements.ru/product/power-shield|Power Shield]] | 1 | **Подключение:** - Закрепите на верхней площадке шасси контроллер Smart Uno с помощью винтов и гаек M2, как указано в инструкции к шасси. - На контроллере закрепите плату Power Shield, путём совмещения контактов платы расширения с контактами конроллера. - Сверху, на Power Shield закрепите плату Motor shield, путём совмещения контактов Motor shield с контактами платы Power Shield. - Подключите моторы к плате расширения Motor shield, к клеммным колодкам М1 и М2 (на схеме сверху выделены оранжевым прямоугольником с номером 3). Правый мотор подключите к клеммной колодке M1, красный провод к контакту "+", чёрный к контакту "-". Аналогично подключите левый мотор к клеммной колодке М2. **Скетч для загрузки:** <file Arduino> #include <robotSE.h> //подключение библиотеки robotSE myRobot; //создание объекта робота int delay_time = 1500; //время задержки для движения void setup() // Задание начальных параметров системы. { } void loop() //Основной цикл { myRobot.move_forward(); //движение вперёд delay(delay_time); //задержка myRobot.move_right(); //движение вправо delay(delay_time); //задержка myRobot.move_left(); //движение влево delay(delay_time); //задержка myRobot.move_back(); //движение назад delay(delay_time); //задержка myRobot.move_stop(); //остановка delay(delay_time); //задержка } </file>