вторник, 26 июля 2016 г.

5.3. Драйвер двигателей

Урок: 5.3. Драйвер двигателей

Транскрибация урока: Как всегда, приступая к работе с новым компонентом, желательно изучить его документацию. Давайте поищем data sheet от нашей новой микросхемы. Возьмем, например, вот этот, немного увеличим и рассмотрим микросхему. Напомню, что сориентироваться в номерах контактов нам поможет вот эта выемка, начиная с которой против часовой стрелки контакты нумеруются. Как мы уже поняли, данная микросхема предназначена для управления мощным питанием, подаваемым на моторы с помощью сигнала с Arduino. То есть нам нужно подключить силовое питание вот к этому контакту. Обозначу это вот так вот. А «минус» силового питания мы подключим к одному из выводов «земля», которых здесь целых 4 штуки. Ну, допустим, вот. Затем нам нужно для управления всей логикой подключить вот этот вот вывод, —логическое питание, — к 5 вольтам Arduino. И, естественно, не забываем соединить это с «землей» Arduino. Затем мы управляем моторами, причем микросхема позволяет управлять сразу двумя. Для подключения моторов служат вот эти вот выводы output, помеченные в данном data sheet буквой Y. Это будут выводы одного мотора, а вот это — выводы второго мотора. [РИСУЕТ] Нам остается подключить управляющую логику. Как мы уже выяснили, мы можем управлять скоростью и направлением движения, вращением моторов. Для управления скоростью используются пины, которые называются enable: вот этот вот и вот этот вот. Мы будем регулировать скорость, как мы, например, регулировали яркость светодиодов. То есть нам нужно использовать те выводы Arduino, которые поддерживают широтно-импульсную модуляцию. Помечу знакомой нам тильдой. [РИСУЕТ] И нам остается задать мотору направление вращения. Когда вы посмотрите устройство микросхемы, вы поймете, почему здесь используются два пина, помеченные буквой А. Они идут просто к любым цифровым пинам Arduino для одного мотора и для второго мотора. Подавая на эти 2 пина комбинацию логических нулей и единиц, мы можем менять направление вращения. То есть 01 — это вращение в одну сторону, 10 — вращение в другую сторону. Кроме этого, посмотрите, что будет, если подать комбинацию 11. При 00, естественно, ничего происходить не будет. Итак, мы теперь знаем как подключать мотор к контроллеру посредством драйвера двигателей. Теперь проделаем все это в натуре. Мы взяли силовое питание и через клеммник привели его на макетную плату. Затем двумя проводами соединили с микросхемой: красный провод, «плюс», идет в восьмой вход, и синий провод, «минус», — в «землю». Затем мы подключили сам мотор. Оба его вывода подходят к output с одной стороны микросхемы. После чего мы взяли контроллер, взяли 5 вольт, привели к выводу для логического питания микросхемы и взяли «землю», соединили с «землей» L293. После чего соединили 3 пина Iskra с микросхемой: зеленый провод идет из пятого пина в enable для данного мотора, и оставшиеся два провода на контроллере подключены к третьему и четвертому пинам цифровым, а у микросхемы соединены с выводами input. Итак, мы подключили один мотор. Второй подключается аналогично, согласно документации. А сейчас давайте проверим, как это работает. Давайте посмотрим, что у нас в тестовом скетче. Во-первых, сделаны 3 макроопределения для управляющих пинов: enable мы подключили к пятому и 2 input — к третьему, четвертому. Затем мы сделали их выходами. А затем сама суть: для того чтобы запустить мотор, нам нужно подать комбинацию высокого и низкого уровней на input — IN1 и IN2. В данном случае мы сделали HIGH и LOW. А затем с помощью analogWrite задали скорость, в данном случае максимальную — 255. После чего мы хотим увидеть эффект с помощью задержки на 2 секунды. Затем мы изменим направление. На input 1 вместо HIGH подадим LOW, а на input 2 вместо LOW — HIGH. А скорость оставим прежней — 255. Мы снова хотим увидеть, как это работает: задержка. А после этого мы хотим остановить моторы: на оба input мы подаем низкий логический уровень — LOW/LOW. Обратите внимание, что несмотря на то, что скорость мы оставили максимальной, мотор перестанет крутиться. Ну и чтобы мы это увидели, снова задержка. Посмотрим, как работает. [ШУМ] [ШУМ] Работает правильно: 2 секунды вращается в одном направлении, 2 секунды вращается в обратном направлении и 2 секунды не вращается никуда. А еще давайте проведем эксперимент с управлением скоростью. Давайте немного изменим наш прежний скетч. Начало у него остается то же, потому что подключение осталось прежним. Затем на input подаем комбинацию для вращения в одном из направлений, а скорость мы будем наращивать в цикле от 0 до максимума, до 255, по единичке. Затем с помощью analogWrite передавать счетчик на enable и делать небольшую задержку, чтобы увидеть эффект. Теперь поменяем направление на противоположное и сделаем еще один цикл, где скорость будем уменьшать от максимума до минимума также по единичке и таким же образом смотреть, что из этого получается. [ЗВУКИ] [ШУМ] [ШУМ] [ШУМ] Как мы и ожидали, мотор плавно разгоняется, а затем начинает крутиться в обратную сторону, плавно замедляясь. Наверняка вы обратили внимание, что вращаться он начал не сразу. Дело в том, что поначалу мотору не хватает малых напряжений для преодоления силы трения покоя. Зато в обратном направлении, когда он от максимальной скорости идет к 0, он демонстрирует и более медленное вращение. Не забывайте о том, что на скорость вращения моторов влияет множество разных факторов: например, передаточное число редуктора, используемого с данным с мотором. Также помните о том, что даже при одном и том же уровне скорости, который мы задаем, мы можем увидеть разное поведение мотора в зависимости от уровня заряда батарей.

Часть: Видео

Модуль: Мобильный робот

Описание модуля: Сначала крутим одно колесо, затем крутим два колеса и тележка едет, затем тележка едет по линии или под управлением или просто дразнит вашу руку.

Курс: Строим роботов и другие устройства на Arduino. От светофора до 3D-принтера

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

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

Пройдя этот курс, вы сможете создавать устройства, которые считывают данные о внешнем мире с разнообразных датчиков, обрабатывают информацию, получают и отправляют данные на ПК, в Интернет, на мобильные устройства, управляют индикацией и движением. Создание устройств будет включать проектирование, изучение компонентов, сборку схем, написание программ, диагностику. Попутно с созданием самих устройств вы сделаете визуализацию на ПК, создадите веб-страницу, которую будет демонстрировать одно из ваших устройств, а также разберетесь с устройством и работой FDM 3D-принтера.

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

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

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

Программа:
  • Неделя 1 Один старый и много новых знакомых
  • Неделя 2 Контроллер изучает мир
  • Неделя 3 Цель обнаружена
  • Неделя 4 Как полить цветок из другого города
  • Неделя 5 Мобильный робот
  • Неделя 6 Как создать новый предмет за час
Преподаватель: Алексей Перепелкин (1), Дмитрий Савицкий (2)

Описание преподавателя: (1) Алексей Перепёлкин занимается развитием робототехники на базе ЛИОТ МФТИ. В 2012 году открыл для себя новое захватывающее чувство – когда устройство, которое сам построил и запрограммировал, работает. Свернул с финансовой дорожки и создал кружок робототехники для подростков. Готовил их к соревнованиям. Стал посещать конференции, а затем проводил мастер-классы для тех, кто тоже хочет организовать занятия. Совместно с коллегами в 2013 году разработал новые соревнования – Робопрофи – для конкурса Робот для жизни и провел их. В 2014 году впервые провел Arduino-номинацию на фестивале Робофест, а для российского финала Russian Robot Olympiad 2014 сделал творческую категорию. С тех пор эти соревнования стали регулярными. Летом 2014 провел двухнедельную мастерскую в детском лагере Никола-Ленивца, а затем преподавал в выездной школе, посвященной программированию и робототехнике, которую провели ABBYY и Яндекс. В 2015 году стал руководителем направления робототехники в GoTo Camp, выездных школах, где участники создали десятки проектов, от прототипов умных домов и операторских тележек до робота-бубниста и принтера для незрячих. В 2014 году с коллегами начал проект Роболабы: мероприятия для школьников и студентов, где участники параллельно решают усложненные задачи, а затем проводят рефлексию сделанной работы и оценивают чужие в ходе серии мероприятий.

(2) Физик, научный сотрудник, выпускник МФТИ. Запустил кружок робототехники в 2011 году. Рассказал Алексею Перепелкину о том, как здорово вести кружок робототехники. Рассказал об этом еще целому ряду людей. Побеждал со своими командами на соревнованиях. Проводил проектную работу с участниками исследовательской выездной школы МКШ с 2013 года, где руководил реализацией физических и робототехнических проектов, например, «Вслед за солнцем», в котором изучалась эффективность динамической ориентации солнечных батарей на солнце. Вместе с коллегами разрабатывал и был судьей Робопрофи. Участвовал в подготовке проекта Роболабы. Вновь пришел в МФТИ для проведения факультативного курса «Основы создания киберфизических устройств»

Организатор: Лаборатория инновационных образовательных технологий МФТИ (1), Лаборатория инновационных образовательных технологий МФТИ (2)

Описание организатора: (2) Московский физико-технический институт (неофициально известный как МФТИ или Физтех) является одним из самых престижных в мире учебных и научно-исследовательских институтов. Он готовит высококвалифицированных специалистов в области теоретической и прикладной физики, прикладной математики, информатики, биотехнологии и смежных дисциплин. Физтех был основан в 1951 году Нобелевской премии лауреатами Петром Капицей, Николаем Семеновым, Левом Ландау и Сергеем Христиановичем. Основой образования в МФТИ является уникальная «система Физтеха»: кропотливое воспитание и отбор самых талантливых абитуриентов, фундаментальное образование высшего класса и раннее вовлечение студентов в реальную научно-исследовательскую работу. Среди выпускников МФТИ есть Нобелевские лауреаты, основатели всемирно известных компаний, известные космонавты, изобретатели, инженеры.

Категория: Компьютерные науки

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

Тематика: Разработка ПО

Материал:



Практика
Программы
Скетчи, показанные на этой неделе, лежат в архиве w5_sketches.zip https://drive.google.com/open?id=0B6zopUwNtrV0VHFWLS1qRUttaVE
Сборка устройств
Собрать все варианты роботов можно с использованием дополнения Киберфизика.Мобильный робот к набору Киберфизика.Фундамент
В съемке видео этой недели использовались колеса и некоторые прототипы деталей корпуса, которые в дополнении Мобильный робот были заменены детали другого вида но с тем же функционалом.

Ссылки на материалы
Коллекторные моторы: кратко http://wiki.amperka.ru/%D0%BA%D0%BE%D0%BD%D1%81%D0%BF%D0%B5%D0%BA%D1%82-arduino:%D0%BC%D0%BE%D1%82%D0%BE%D1%80, подробнее http://wiki.amperka.ru/%D1%80%D0%BE%D0%B1%D0%BE%D1%82%D0%BE%D1%82%D0%B5%D1%85%D0%BD%D0%B8%D0%BA%D0%B0:%D0%BC%D0%BE%D1%82%D0%BE%D1%80%D1%8B
Фильм Электрические двигатели http://www.youtube.com/watch?v=l7lx9-c3Po0
Принцип работы и классификация электродвигателей http://engineering-solutions.ru/motorcontrol/motor/
Редукторы http://cncnc.ru/documentation/detalimashin_lecture/book/book9.htm
Драйвер двигателей L293D http://www.myrobot.ru/stepbystep/el_driver.php datasheet http://www.ti.com/lit/ds/symlink/l293.pdf
Описание Motor Shield http://wiki.amperka.ru/%D0%BF%D1%80%D0%BE%D0%B4%D1%83%D0%BA%D1%82%D1%8B:motor-shield
Вариант списка необходимого для проверки устройства https://drive.google.com/open?id=0B6zopUwNtrV0NUpmdGVmZWI0RDQ
Макет трассы для робота, показанной в видео https://drive.google.com/open?id=0B6zopUwNtrV0UkQzVFctQklZUFk
ПИД-регулятор http://www.bookasutp.ru/Chapter5_2.aspx
Приложения-"джойстик" ArduinoRC https://play.google.com/store/apps/details?id=eu.jahnestacado.arduinorc
RemoteXY: приложение https://play.google.com/store/search?q=remotexy, сайт http://remotexy.com/
Внешние прерывания http://www.arduino.cc/en/Reference/AttachInterrupt