Уроки arduino: основы управления двигателями роботов

Радиотехнический сайт RADIOTRACT

Это практическое руководство для тех, кто делает первые шаги в робототехнике на платформе Arduino.

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

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

Издательство: «Лаборатория знаний». Мягкая обложка, 320 стр.

ISBN 978-5-906828-99-6

Найти в магазинах со скидкой

Содержание

Об авторе …………………………………………………………………………………………………………………….. 8Посвящение ……………………………………………………………………………………………………………….. 8Благодарности …………………………………………………………….

…………………………………………….. 8Здравствуйте! ……………………………………………………………………………………………………………. 9Введение ……………………………………………………………………………………………………………………… 10О чем эта книга …………….

…………………………………………………………………………………………… 11Для кого эта книга …………………………………………………………………………………………………… 12Как пользоваться книгой ………………………………………………………………………………………

12

Глава 1. Знакомство с Arduino ………………………………………………………………………….. 15

Arduino UNO: микроконтроллер для начинающих ………………………………….. 15Другие продукты Arduino …………………………………………………………………………………….. 18Электроника ………………………………………………………………………………………………………………. 19Правила техники безопасности …………………………………………………………………………. 29В следующей главе ………………………………………………………………………………………………….. 30

Глава 2. Макетирование ………………………………………………………………………………………. 31

Cборка электрических схем с использованием макетных плат с гнездами, не требующих пайки … 31Проект: мигающий светодиод на макетной плате …………………………………. 34Проект: лазерная сигнализация ……………………………………………………………………. 37Проект: инфракрасный детектор ………………………………………………………………….. 49В следующей главе ………………………………………………………………………………………………….. 52

Глава 3. Работа с паяльником …………………………………………………………………………… 53

Паяльные принадлежности …………………………………………………………………………………. 55Паяние ………………………………………………………………………………………………………………………….. 62Распайка ………………..

…………………………………………………………………………………………………….. 65Уборка ……………………………………………………………………………………………………………………………

67Проект: кофейный столик со светодиодной лентой …………………………….. 68В следующей главе ………………………………………………………………………………………………….. 84

Глава 4. Настройка беспроводного соединения ……………..

……………………….. 85

Радиомодули XBee ………………………………………………………………………………………………….. 86Переходные платы для радиомодуля XBee …………………………………………………. 88Компоненты радиомодуля XBee …………………………………….

…………………………………. 88Альтернативные беспроводные модули …………………………………………………………. 90Проект: беспроводное включение светодиода ………………………………………… 91Проект: беспроводной дверной звонок ………………………..

……………………………. 95В следующей главе ………………………………………………………………………………………………….. 108

Глава 5. Программирование Arduino ……………………………………………………………..

109

Среда разработки Arduino ……………………………………………………………………………………. 110Скетч «Blink» …………………………………………………………………………………………………………….. 118Учимся на примере кода ………………………………………………………………………

……………….. 121Функции и синтаксис ……………………………………………………………………………………………. 126Отладка с помощью монитора последовательного интерфейса ………….. 131Все о библиотеках …………………………………………………………………………………………………….

133Ресурсы для изучения программирования …………………………………………………… 135В следующей главе ………………………………………………………………………………………………….. 136

Глава 6. Восприятие мира ………………………………………………………………………………

…… 137

Урок: датчики (сенсоры) ………………………………………………………………………………………. 138Знакомство с датчиками ……………………………………………………………………………………….. 140Проект: «Лампа настроения» ………………………………………………………………………….

146Проект: керфбэндинг …………………………………………………………………………………………. 154В следующей главе ………………………………………………………………………………………………….. 154

Глава 7. Управление жидкостью ………………………………………………………………

……… 155

Урок: управление потоком жидкости ……………………………………………………………… 156Проект: емкость под давлением ……………………………………………………………………. 159Проект: робот для полива растений ……………………………………..

…………………….. 162В следующей главе ………………………………………………………………………………………………….. 174

Глава 8. Ящик для инструментов ……………………………………………………………………..

175

Набор инструментов для начинающего мастера ………………………………………… 176Работа с деревом ………………………………………………………………………………………………………. 183Работа с пластиком ………………………………………………………………………

…………………………. 192Работа с металлом ……………………………………………………………………………………………………. 198Программное обеспечение …………………………………………………………………………………… 208Электронная техника и инструменты …….

………………………………………………………. 213В следующей главе ………………………………………………………………………………………………….. 222

Глава 9. Ультразвуковая эхолокация ……………………………………………………………..

223

Урок: ультразвуковая диагностика …………………………………………………………………… 224Проект: ультразвуковой ночник …………………………………………………………………… 226Проект: игрушка для кошки ………………………..

…………………………………………………. 228Токарный станок 101 ………………………………………………………………………………………………. 242Техника безопасности при работе с токарным станком ……………………………

244В следующей главе ………………………………………………………………………………………………….. 244

Глава 10. Генерация звука ……………………………………………………………………………………

245

Звуки электроники …………………………………………………………………………………………………. 246Проект: мелодичная кнопка ……………………………………………………………………………. 250Проект: звуковой генератор …………………………………………

…………………………………. 253В следующей главе ………………………………………………………………………………………………….. 262

Глава 11. Отсчет времени …………………………………………………………………………………….

263

Сервер точного времени ……………………………………………………………………………………….. 264Таймер Arduino ………………………………………………………………………………………………………….

265Модуль часов реального времени (RTC) ………………………………………………………. 266Проект: цифровые часы ……………………………………………………………………………………. 266Проект: китайские колокольчики «Музыка ветра» ……………………..

………. 270Станки с числовым программным управлением (ЧПУ) ………………………… 280В следующей главе ………………………………………………………………………………………………….. 281

Глава 12. Безопасная работа с высоким напряжением

……………………… 283

Урок: управление высоким напряжением …………………………………………………….. 284Проект: контроллер для вентилятора ………………………………………………………… 288Проект: лавовая лампа «Бадди» ……………………………………………

………………………. 291В следующей главе ………………………………………………………………………………………………….. 298

Глава 13. Управление электродвигателями …………………………………………………

299

Как управлять двигателями ………………………………………………………………………………… 300Включаем двигатель с помощью TIP-120 ……………………………………………………… 303Проект: шаговый поворотник ………………………………………………….

…………………….. 305Проект: «Баблбот» ……………………………………………………………………………………………… 308

Глоссарий …………………………………………………………………………………………………………………….

317

О чем эта книга

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

• В главе 1 «Знакомство с Arduino» вы найдете информацию об Arduino и электронике — именно то, что нужно для начала работы!
• В главе 2 «Макетирование» в рамках проекта по электронике вы сделаете лазерную сигнализацию с помощью макетной платы, не требующей пайки.

• В главе 3 «Работа с паяльником» вы научитесь соединять электронные детали с помощью паяльника. В рамках проекта вы сможете украсить кофейный столик светодиодной лентой.
• В главе 4 «Настройка беспроводного соединения» вы узнаете о трех различных способах управления проектом с помощью беспроводных сигналов.

На основе изученного материала вы сможете сделать беспроводной дверной звонок.
• В главе 5 «Программирование Arduino» изложены основы управления Arduino с помощью программ, загруженных на плату. Я проведу подробный обзор программы Arduino, чтобы вы смогли изучить принцип работы с ней.

• В главе 6 «Восприятие мира» вы познакомитесь с разнообразием датчиков и узнаете разницу между цифровыми и аналоговыми датчиками. Вы сделаете «Лампу настроения», которая меняет свой цвет в зависимости от уровня освещенности.

• В главе 7 «Управление жидкостью» вы узнаете о трех способах перекачивания жидкости, один из которых ляжет в основу создания робота для полива растений.
• В главе 8 «Ящик для инструментов» представлен широкий обзор инструментов, начиная с самых простых и привычных и заканчивая специальными инструментами для работ по дереву или металлу.

• В главе 9 «Ультразвуковая эхолокация» вы узнаете, как с помощью неслышных для человеческого уха импульсов можно обнаруживать препятствия и измерять расстояния. Глава включает проект по созданию игрушки для кошки.

• В главе 10 «Генерация звука» вы узнаете, как с помощью Arduino сочинить электронную музыку (также известную как «нойз»), и сделаете портативный звуковой генератор.

• В главе 11 «Отсчет времени» вы познакомитесь с тремя способами, которые использует Arduino, чтобы следить за временем, а также сконструируете колокольчики «Музыка ветра», которые звонят в определенный час.
• В главе 12 «Безопасная работа с высоким напряжением» вы узнаете о трех способах безопасной работы с комнатной проводкой. Вы сделаете контроллер для лавовой лампы, с помощью которого лампа будет включаться и выключаться либо по расписанию, либо дистанционно.
• В главе 13 «Управление электродвигателями» вы узнаете о способах управления электродвигателями и затем на основе полученных навыков сконструируете робота, пускающего мыльные пузыри.

Источник: https://radiotract.ru/info_mc_arduino_009_konstruiruem_robotov_na_arduino.html

Создание робота-гонщика на платформе Arduino

Библиографическое описание: Страковский Д. А., Симаков Е. Е. Создание робота-гонщика на платформе Arduino // Юный ученый. — 2016. — №3. — С. 120-124. URL: http://yun.moluch.ru/archive/6/412/ (дата обращения: 31.01.2019).



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

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

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

Ключевые слова: робототехника, программирование, искусственный интеллект.

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

Задачи работы:

  1. Изучить особенности построения роботов на базе плат Arduino и их модулей.
  2. Изучить особенности среды программирования роботов на базе платформы Arduino.
  3. Создать модель робота-гонщика. Разработать алгоритм движения робота на базе анализа входной информации.
  4. Проанализировать работу робота.

Введение. Основы робототехники на платформе Arduino

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

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

Контроллер, являясь «уменьшенной копией» компьютера, содержит все присущие ему основные модули: центральный процессор, оперативную память, flash-память, внешние устройства.

Рис. 1. Структура микроконтроллера

Для построения роботов используются различные платформы. В рамках проводимого исследования для разработки робота-гонщика была выбрана платформа Arduino. Первый прототип Arduino был разработан в 2005 году программистом Массимо Банци.

На сегодняшний день платформа Arduino представлена не одной платой, а целым их семейством. Такой подход позволяет собирать всевозможные электронные устройства, работающие работать как автономно, так и в связке с компьютером.

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

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

Самой популярной и наиболее универсальной платформой семейства является плата ArduinoUno.

Она выполнена на базе процессора с тактовой частотой 16 МГц, обладает памятью 32кБ, два из которых выделено под загрузчик, позволяющий прошивать Arduino с обычного компьютера через USB.

Также имеется 2 кБ SRAM-памяти, которые используются для хранения временных данных (это оперативная память платформы) и 1кБ EEPROM-памяти для долговременного хранения данных (аналог жёсткого диска).

На платформе расположены 14 контактов, которые могут быть использованы для цифрового ввода и вывода. Какую роль исполняет каждый контакт, зависит от программы. Некоторые контакты обладают дополнительными ролями.

Например, Serial 0-й и 1-й — используются для приёма и передачи данных по USB; LED 13-й — к этому контакту подключен встроенный в плату светодиод.

Также имеется 6 контактов аналогового ввода и входной контакт Reset для сброса.

Рис. 2. Плата ArduinoUno

Отличительной особенностью Arduino является наличие плат расширения, так называемых, «шилдов». Это дополнительные платы, которые ставятся подобно «слоям бутерброда» поверх Arduino, чтобы дать ему новые возможности. Shield подключаются к Arduino с помощью имеющихся на них штыревых разъемов. Рассмотрим подробнее Shield, которые использовались при проведении исследования:

‒ MotorShield — обеспечивает управление двигателями постоянного тока. Выводы микроконтроллера являются слаботочными, поэтому ток мотора, при подключении его напрямую, выведет их из строя. Эту проблему решает так называемый H-мост. Он позволяет управлять скоростью и направлением вращения мотора.

Читайте также:  Топ-10 квадрокоптеров до 3000 рублей (50$) в 2017 - arduino+

‒ TroykaShield — помогает подключать большое количество периферии вроде сенсоров через стандартные 3-проводные шлейфы.

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

Выходом является простой цифровой сигнал: логический 0 или 1 в зависимости от цвета, который он видит перед собой. Единица — чёрный или пустота, ноль — не чёрный.

Рис. 3. Motor Shield и Troyka Shield

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

Базовая структура программы для Arduino состоит из двух обязательных частей: функций setup() и loop(). Перед функцией setup() идет объявление переменных, подключение вспомогательных библиотек. Функция setup() запускается один раз после каждого включения питания или сброса платы.

Она используется для инициализации переменных, установки режима работы портов и т. д. Функция loop() в бесконечном цикле последовательно исполняет описанные команды.

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

Сборка робота-гонщика на платформе Arduino

Рассмотрим практическую часть проекта — создание робота гонщика. Для этого использовались плата ArduinoUno, «шилды», описанные выше, датчики линии, микромоторы с редуктором, колеса, балансировочные шары. Процесс построения модели робота можно разделить на несколько этапов.

Этап I. Сборка платформы. Вначале необходимо собрать основу робота — подвижную платформу. Колеса крепятся к моторам, а затем к установочной платформе.

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

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

Этап II. Установка платы Arduino иподключение моторов. Плата ArduinoUno крепится с тыльной стороны. Такое расположение позволит обеспечить корректное расположение платформы при движении. Сверху на плату устанавливается MotorShield, к которому подключаются моторы.

Этап III. Установка TroykaShield иподключение датчиков. Следующий «шилд» устанавливается поверх предыдущего, образуя своеобразный «бутерброд». Цифровые датчики линии подключается к 8 и 9 контактам «шилда»

Этап IV. Балансировка. На заключительном этапе сборки необходимо закрепить провода на платформе, чтобы они не мешали движению робота. Также можно установить дополнительные балансировочные шары, учитывая при этом вес всех плат и батареи.

Рис. 4. Робот гонщик в сборке

Разработка алгоритма поведения робота

Далее необходимо разработать алгоритм движения робота на основании показаний датчиков. Основная идея заключается в следующем. Пусть у нас есть белое поле и на нём чёрным нарисован «дорога» для робота (трек).

Используемые датчики линии выдают логический ноль, когда «видят» чёрное и единицу, когда «видят» белое. На прямой робот должен пропускать трек между сенсоров, т. е. оба сенсора должны показывать «1».

При повороте траектории направо правый сенсор наезжает на трек и начинает показывать логический ноль. При повороте налево ноль показывает левый сенсор.

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

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

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

Однако, роботу не обязательно останавливаться перед каждым поворотом — на маленькой скорости он прекрасно вписывается в поворот и без дополнительных действий. Кроме того, чтобы ускорить процесс поворота, «сдавать назад» можно не по прямой, а под некоторым углом.

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

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

Рис. 5. Поиск зависимости пройденного расстояния при заднем ходе от времени

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

Заключение

В данном исследовании были рассмотрены основы проектирования роботов на базе платформ семейства Arduino, а также построена действующая модель робота на основе платы ArduinoUno.

В ходе тестирования были выявлены и устранены некоторые недостатки как технической части, так и алгоритма движения.

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

‒ Можно поэкспериментировать с системой грузов и добиться идеального равновесия.

‒ Расположение и количество сенсоров также являются значительными параметрами в данной конструкции. От этого напрямую зависит не только та скорость, с которой робот будет реагировать на повороты, но и конструкции треков, по которым он сможет корректно передвигаться.

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

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

Литература:

  1. Блум Д. Изучаем Arduino. — СПб.: БХВ-Петербург, 2015.
  2. Петин В. А. Проекты с использованием контроллера Arduino. — СПб.: БХВ-Петербург, 2014.
  3. Соммер У. Программирование микроконтроллерных плат Arduino/Freeduino. — СПб.: БХВ-Петербург, 2012.
  4. Терехов С. А. Лекции по теории и приложениям искусственных нейронных сетей. — Снежинск: ВНИИТФ, 2003.
  5. Уоссермен Ф. Нейрокомпьютерная техника: Теория и практика. — М.: Мир, 1992.
  6. Амперка. Вики [Электронный ресурс].
  7. URL: http://wiki.amperka.ru/ (Дата обращения: 3.10.2015г.)
  8. Информационный портал RoboCraft [Электронный ресурс].

Источник: http://yun.moluch.ru/archive/6/412/

Arduino и использование двигателей. Подключение двигателя постоянного тока и управление им

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

Этот проект раскроет вам основную логику в управлении электродвигателем; однако, это не является стандартным способом подключения двигателей к Arduino. Мы рекомендуем, вам изучить данный способ, а затем перейти на следующую ступень — заняться управлением двигателями при помощи транзисторов.

Подключим миниатюрный вибромоторчик к нашему Arduino.

Миниатюрный вибромоторчик (можно найти в старой ненужной мобилке, или в магазине электроники)

1. У вибромоторчика есть два провода питания. Соедините один его провод с нулевым выводом (GND) питания контроллера. Не имеет значения какой из двух проводов.

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

Приводим схему, где для мотора выбран второй дискретный вывод платы контроллера:

А вот примеры, как всё можно соединить при помощи макетной платы:

Следующий скетч запустит моторчик на 1 секунду, и остановит его на такое же время и так далее по кругу:

// Декларируем номер дискретного выхода

int motorPin = 2;

void setup() {

//Назначаем второй дискретный вывод как выход

pinMode(motorPin, OUTPUT);

}

void loop(){

// Включить мотор

digitalWrite(motorPin, HIGH);

// Подождать 1000 мс

delay(1000);

// Выключить мотор

digitalWrite(motorPin, LOW);

// Подождать 1000 мс

delay(1000);

}

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

Каждый дискретный выход Arduino рассчитан на ток только до 40 мА, при чем рекомендуется не превышать 20 мА. Выбранное значение резистора 220 Ом ограничит ток до 22 мА, и потому, что М включен с ним последовательно, ток будет даже меньше.

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

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

Несколько двигателей могут быть подключены на разные цифровые выводы платы контроллера. Например, выходы 2, 3, и 4 могут независимо управлять различными тремя электродвигателями.

Каждый дискретный вывод, на Arduino может управлять отдельным движком. Хотя вообщето, так делать не рекомендуется, так как это увеличит ток, проходящий через Arduino.

Давайте пока ограничимся одним двигателем в данной реализации.

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

Чтобы избежать этого, мы можем подключить диод между дискретным выходом и выводом питания 5В. Всякий раз, когда М будет отдавать паразитное обратное напряжение, диод будет соединять его с плюсом питания. К счастью, Ардуино имеет встроенный защитный диод на каждом выводе.

И нам нет необходимости его дублировать внешним диодом.

Мы конечно можем управлять миниатюрным электродвигателем непосредственно подключив его к выходу Arduino; однако, дискретный выход не потянет двигатели, потребляющие больше 40 мА.

Читайте также:  Распиновка контроллера esp32 wroom-32 1.0 - arduino+

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

Рассмотрим на примере, как управлять большими электродвигателями, используя два транзистора npn и pnp структуры.

Для этого проекта нам понадобятся следующие электронные компонеты:

  1. Плата Arduino, подключенная к USB-порту компьютера
  2. Моторчик постоянного тока
  3. Резистор сопротивлением между 220 Ом и 10 кОм
  4. npn транзистор(BC547, 2N3904, N2222A, TIP120)
  5. Диод (1N4148, 1N4001)

Ниже приведены шаги, при подключении двигателей с помощью транзистора:

  1. Подключите ноль питания Arduino GND к минусовой шине макетной платы.
  2. Подключите один из проводов двигателя к плюсу питания +5В платы контроллера. Мы будем использовать 5В питания USB-порта.

    Если нужна большая мощность, то нужно использовать внешний источник питания, такой как например батарея. Пока рассмотрим питание именно от USB.

  3. Другой провод двигателя соединяем с коллектором транзистора npn.

     По спецификации на ваш транзистор определите какой из трех его выводов коллектор, какой база и какой эмиттер.

  4. Подключите эмиттер транзистора к минусу питания GND, используя минусовую шину питания макетной платы.

  5. Установите резистор между базой транзистора и дискретным выходом платы Arduino.
  6. Включите защитный диод параллельно с движком. Минус диода должен быть подключен к плюсу питания 5В.

Это одна из возможных реализаций с использованием девятого цифрового выхода. Arduino может быть запитан от внешнего источника питания. А если нет, мы можем подключить движок отдельно к внешнему питанию 5В, а Ардуино к своему питанию. Но ноль питания у них должен быть объединен.

А вот один из способов соединения элементов схемы на макетной плате:

Этот скетч ничем не отличается от предыдущего. Всё так же программа запускает движок на секунду, потом останавливает его на секунду и так далее:

// Декларируем номер дискретного управляющего выхода

int motorPin = 2;

void setup() {

// Назначаем второй дискретный канал как выход

pinMode(motorPin, OUTPUT);

}

void loop(){

// Включаем мотор

digitalWrite(motorPin, HIGH);

// Ждем 1000 мс

delay(1000);

// выключаем мотор

digitalWrite(motorPin, LOW);

// Ждем 1000 мс

delay(1000);

}

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

То же самое происходит с транзистором, только вместо воды течет ток. Если мы подадим ток на базу транзистора, пропорциональный ток потечет от коллектора к эмиттеру, в случае транзистора типа npn.

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

Когда мы подаем логическую единицу на выход Arduino, ток проходит от вывода через базу транзистора NPN, что заставляет ток проходить и через другие две ноги транзистора. Когда мы выставляем ноль на выходе, ток не идет через базу и не будет проходить через остальные две ноги.

Транзисторы интересны в том, что с очень малым током базы, мы можем контролировать очень большой ток через коллектор к эмиттеру. Обычный коэффициент усиления обозначается hб для транзистора составляет порядка 200. Это означает, что для тока базы 1 мА, транзистор через коллектор к эмиттеру пропустит 200 мА.

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

База транзистора очень чувствительна. Даже касание ее пальцем может провернуть электродвигатель. Во избежание нежелательных шумов и непредсказуемого запуска двигателей является подключение подтягивающего резистора на базе, как показано на рисунке. Значение его сопротивления около 10K. Он будет предохранять транзистор от случайного запуска.

pnp транзистор понять еще труднее. Он использует тот же принцип, но в обратном направлении.

Ток течет от базы к цифровому выводу Arduino; если допустить, что протекание тока базы заставляет ток проходить от эмиттера к коллектору (противоположно направлению тока в транзисторе npn).

Другое важное отличие в том, что pnp-транзистор установлен между плюсом источника питания и контролируемой нами нагрузкой. Нагрузка же, в данном случае, это двигатель, будет подключена между коллектором pnp-транзистора и землей.

Ключевой момент на заметку разработчикам ещё и в том, что при использовании транзисторов pnp с Arduino максимальное напряжение на эмиттер 5 В, и при этом мы на двигатель не сможем подать больше, чем 5 В.

Если использовать внешний источник питания для питания двигателей с большим напряжением чем 5В, на базе появится потенциал выше пяти вольт и Arduino подгорит.

Одно из возможных решений, которое усложнит схему на 3 элемента, показано показано на следующей схеме.

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

Люди просто называют их мосфетами. База, коллектор и эмиттер у MOSFETа называются так затвор, сток и исток. Функционально их используют точно так же, как и обычные транзисторы. При подаче напряжения на натвор, ток будет проходить с истока на сток в случае N-канального МОП-транзистора.

P-канал является эквивалентом транзистора pnp. 

Тем не менее, есть некоторые важные различия в работе MOSFET по сравнению с обычным транзистором. Не все MOSFET-транзисторы могут должным образом работать с Arduino. Обычно дискретные транзисторы работают нормально.

Некоторые из известных N-канальных MOSFET имеют маркировку: FQP30N06, IRF510 и IRF520. Первый может выдерживать до 30 А и 60 В то время как следующие два могут отдавать 5,6 А и 10 А, соответственно, при 100 В.

Вот пример схемы управления мотором с помощью N-канального MOSFET:

Мы также можем использовать следующий вариант монтажа проекта на макетной плате:

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

Источник: http://www.electronica52.in.ua/proekty-arduino/arduino-i-ispolzovanie-dvigatelej-podkluchenie-dvigatelya-postoyannogo-toka-i-upravlenie-im

Arduino и двигатели

Одно из самых интересных в хобби-электронике – это использование двигателей для «оживления» ваших проектов.

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

Данная статья даст вам понимание принципов работы двигателей различных типов и пояснит многие необходимые нюансы и их особенности.

Принцип работы двигателей

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

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

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

То есть, противоположные полюса притягиваются друг к другу.

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

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

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

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

Основные узлы электродвигателя:

— Постоянный магнит (магниты), в случае, когда он установлен неподвижно, называется статором;

— внутри статора есть катушка, которая установлена на оси и вращается, называется ротором.

Двигатели постоянного тока

Двигатели постоянного тока (DC motor) во многом являются самыми простыми электродвигателями. Большинство «щеточных» двигателей работают одинаково. Есть ротор и статор. Есть магниты на статоре и катушка на роторе с магнитным полем, которое генерируется с помощью подачи на нее силы тока. Есть щетки внутри мотора, которые заставляют двигаться ротор.

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

Для вращения оси двигателя в противоположном направлении, достаточно подключить контакты от источника питания к двигателю наоборот.

Шаговые двигатели

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

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

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

Шаговые двигатели являются отличным выбором для проектов на Arduino (и не только) по нескольким причинам.

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

Шаговые двигатели будут обеспечивать заданное положение ротора исключительно в зависимости от поданной силы тока.

Эти двигатели предназначены для вращения в одном и противоположном направлении. Если вы подключите источник питания к контактам шагового двигателя, вал начнет вращаться.

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

Перед его запуском, уточняйте этот момент.

Серводвигатели

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

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

В серводвигателях, которые, например, используются в системах управления радиоуправляемых машин, электродвигатель подключен к потенциометру. Стандартный приемник/передатчик посылает ШИМ-сигналы на серву.

Электроника (небольшая плата-контроллер) внутри серводвигателя, переводит ширину импульса в положение.

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

Сигнал управления является цифровым ШИМ сигналом с частотой 50 Гц. Каждые 20 миллисекунд подается цифровой импульс управления. Продолжительность (ширина) импульса находится в диапазоне от 1.0 миллисекунды до 2.0 миллисекунд. 1.

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

ШИМ (широтно-импульсная модуляция) сигнал иногда называют ШПМ (широтно-позиционная модуляция), хотя это не корректно.

Импульс шириной 1.5 миллисекунды обычно устанавливает серводвигатель в «нейтральное» положение или 90 градусов. Импульс шириной 1.25 миллисекунд может установить его в 0 градусов, а импульс 1.75 миллисекунды в 180 градусов. Физические ограничения и время для различных серводвигателей могут отличаться, но его нейтральное положение всегда соответствует 1.5 миллисекундам.

Вибрационные двигатели

Вибрационные двигатели часто используются в мобильных устройствах для регистрации наличия движения.

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

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

Как выбрать двигатель для проекта

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

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

Дальше в статье приведена информация о том, как можно быстро «оживить» выбранный вами предварительно двигатель с использованием платы Arduino.

Использование шагового двигателя с Arduino

Стоит отметить, что «оживлять» свои проекты с помощью плат Arduino и оболочки Arduino IDE для их программирования очень легко из-за наличия большого количества уже готовых библиотек.

Подключение шагового двигателя к плате Arduino отличается от подключения двигателя постоянного тока. Существует специальная библиотека и функция, встроенные в Arduino IDE.

Более детально об этом вы можете почитать здесь.

После открытия Arduino IDE, перейдите в меню во вкладку

File -> Examples -> Stepper -> stepper_oneRevolution

Данная программа дает возможность управлять уни- или биполярным шаговым двигателем после его подключения к цифровым пинам 8-11 на плате Arduino. После загрузки скетча на плату Arduino, шаговый двигатель должен сделать один оборот по часовой стрелке, после этого – один поворот против часовой стрелки.

Данный пример – отличное начало. Естественно, вы можете вносить свои коррективы в программу, подстраивая ее под свои задачи. Задержка указывается в миллисекундах, так что если вы не хотите выдерживать паузу между оборотами, можете выставить задержку delay(10). Или, для того, чтобы замедлить вращение можете изменить stepsPerRevolution и присвоить ему значение, например, (1000000).

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

Использование двигателя постоянного тока / вибрационного двигателя с Arduino

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

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

Использование серводвигателя с Arduino

Так же как и шаговые двигатели, для работы серводвигателей в оболочке Arduino IDE есть встроенная библиотека.

После открытия Arduino IDE, перейдите в меню во вкладку

File -> Examples -> Servo -> Knob

Данная программа обеспечивает управление серводвигателем, который подключен к 9-му ШИМ пину платы Arduino.

Потенциометр, в свою очередь, подключен к аналоговому пину 0 и обеспечивает управление положением серводвигателя, посылая напряжение, пропорциональное сопротивлению на пин А0 платы Arduino.

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

Источник: http://arduino-diy.com/arduino-dvigateli

Видеоурок 5. Моторы и транзисторы | РОБОТОША

Очередной видеоурок, посвященный Arduino. В этом уроке рассмотрено использование транзисторов, моторов постоянного тока и сервоприводов в схемах на базе Arduino. В конце урока приводится пример управления сервой, используя инфракрасный дальномер. Но прежде чем перейти к уроку, я хотел бы рассказать чем отличаются моторы постоянного тока и сервоприводы.

Чем сервы отличаются от моторов

В англоязычной литературе двигатель постоянного тока пишется как DC-motor.

Двигатель постоянного тока имеет двухпроводное подключение. Вся мощность, потребляемая мотором передается по этим двум проводам.

Мысленно можно представить его в виде лампочки (просто как нагрузка, подключенная к источнику питания). При включении двигателя постоянного тока он просто начинает вращаться.

Большинство двигателей постоянного тока имеют достаточно большие скорости вращения — порядка 5000 об/мин (английская абревиатура — RPM, rounds per minute).

Двигатель постоянного тока

Скоростью двигателя постоянного тока, можно управлять (или, точнее, управлять уровнем мощности) используя метод широтно-импульсной модуляции, или просто ШИМ.

Это идея управлением уровня мощности мотора заключается во включении и выключении его на короткие промежутки времени.

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

Если включать-выключать питание достаточно быстро, то будет казаться, что двигатель просто вращается с меньшей скоростью — без рывков. Меньшая скорость вращения обусловлена тем, что двигатель получает питание только часть общего времени работы. Это то, как используется ШИМ для управления мощностью двигателей постоянного тока.

Широтно-импульсная модуляция в Arduino

Серводвигатель (сервомотор, серва, сервопривод)  — это совершенно другая история. Серводвигатель фактически состоит из четырех элементов — это двигатель постоянного тока, зубчатый редуктор, позиционно-чувствительный элемент (аналог потенциометра — регулятора громкости), и схемы управления.

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

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

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

Сервомотор

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

Сигнал управления, как и в случае с двигателем постоянного тока, представляет собой ШИМ-сигнал, но продолжительность положительного перепада определяет положение вала сервопривода (в случае двигателя постоянного тока мы управляем скоростью).

Например, импульс, продолжительностью 1.520 мс определяет центральное положение для сервы Futaba S148.

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

Cервопривод повторяет управляющий импульс каждые 20 миллисекунд. В сущности, каждые 20 миллисекунд мы говорим сервомотору встать в определенное положение.

Есть два важных различия между управляющими импульсами для серводвигателя и двигателя постоянного тока.

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

Сравните это с двигателем постоянного тока. Двигатель постоянного тока как лампочка, он не имеет собственной управляющей электроники и требует большого тока управления. Это функция реализована в драйвере L293D, который выступает в качестве переключателя большого тока для управления электродвигателями постоянного тока.

Видеоурок

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

Приводятся примеры управления двигателем постоянного тока и сервоприводом при помощи Arduino. Показано, как управлять положением сервопривода, используя инфракрасный дальномер.

Термин «рельса», употребляемый переводчиком следует слышать как «шина».

Смотрим видео.

Часть 1

 

Часть 2

 

Возникнут вопросы — рад буду ответить.

Источник: http://robotosha.ru/arduino/videolesson5-transistor-servo-dc-motor.html

Ссылка на основную публикацию