Записки начинающего роболюба. 3. Моторы semionenkov's blog / 28.09.2015 Моторы, как оказалось, очень важная и относительно сложная часть робота: решение вопроса об управлении моторами оказывает влияние на всю конструкцию, начиная с выбора контроллера, поэтому стоит разобраться с этим вопросом в первую очередь. Немного о терминологии, субъективно. В русском языке "мотор" и "двигатель" - синонимы. Синонимы обогащают язык, если имеют индивидуальные оттенки, и, скорее, замусоривают его, если такой индивидуальной окраски нет. В этих словах я индивидуальной окраски не вижу, и предпочёл бы употреблять слово "двигатель" с родным корнем. Но уже сложилась традиция употребления в роботехническом контексте термина "мотор", и приходится плыть в общем русле. По моему ощущению, в английском языке motor и engine также синонимы и также не нагружены особой окраской, однако именно в робототехническом контектсте проглядывается намерение эти термины нагрузить, понимая под motor электрический двигатель, а под engine - двигатель внутреннего сгорания. Бороться, очевидно, особого смысла нет - пусть это будем маленькой причудой робототехники, подобно компАсу у моряков. В робототехнике мы будем иметь дело прежде всего с моторами постоянного тока (DC motors - об английских терминах - в следующих сериях).Моторы бывают разные: моторы-редукторы (gear motors), шаговые (stepper motors) и сервомоторы (servo). Мотор-редуктор - это электрический мотор без электронной начинки, предназначенный для кругового движения.Самый простой электрический мотор (без редуктора) обладает высокой скоростью вращения вала, но при этом - низким вращающим моментом: маломальски тяжёлую конструкцию мотор просто не потянет. Редуктор ("сократитель") выполняет роль коробки передач автомобиля, которая вращает колеса с меньшим числом оборотов, чем вал двигателя, взамен получая больший вращающий момент. Базовый вариант мотора-редуктора - мотор с единственной "скоростью", которая не меняется. Шаговый мотор - мотор, который обладает высокой точностью вращения вала. Например, оборот вала может быть разбит на 200 шагов (потому и шаговый), то есть всего 1,8 градуса на шаг, или порядка 0,5 мм для колеса диаметром 60 мм. Наконец, Серво-моторы совсем другой категории: они, вообще говоря, не предназначены для кругового движения. Назначение сервомоторов - поворачивать и удерживать в некотором положении детали конструкции: киль судна, закрылки самолёта и т.п. Угол, внутри которого может поворачиваться вал серводвигателя, обычно составляет порядка 200 градусов (хотя есть серво, способные совершить полный оборот). Ясно, что на первый движущийся робот нам нужен простой мотор-редуктор с единственной скоростью. Если мы будем делать робота для гонок - надо знакомиться с моторами-редукторами с несколькими скоростями. Танцующему роботу, наверное, понадобится шаговый мотор. Колеса и моторы лучше приобретать парой. При приобретении порознь нужно учитывать диаметр вала мотора и подбирать подходящие колёса. Нам приходится иметь деле с источниками постоянного тока. У источников, соответственно, есть 2 полюса: "+" и "-". И это важно! Если электромеханическое устройство (мотор) при смене полюсов работает, только крутится в противоположную сторону, то электронные компоненты, начиная с контроллера, могут отреагировать очень болезненно, если их подключить не так, как положено. При подключении контроллера к источнику питания и при подключении устройств к контроллеру, нужно внимательно следить, чтобы "земля", которая соответствует минусу и обычно маркируется G (Ground - земля), соединялась с "землёй", и питание (V) - cо входом для питания. Обычно для "земли" используется чёрный (или тёмный) провод, для питания - красный (для сигналов в ходу жёлтые, синие, зелёные провода).Надо помнить, что каждая электрическая цепь имеет свой предел тока, который она может пропускать.КОНТРОЛЛЕР РАССЧИТАН НА ПОДКЛЮЧЕНИЕ МАЛОМОЩНОЙ ЭЛЕКТРОНИКИ, поэтому к вопросу подключения электромеханических устройств (моторов), которые обычно потребляют существенно больше энергии, нужно подходить предельно аккуратно. Некоторые "умельцы", например, заметив, что порты ввода-вывода контроллера могут рассматриваться как источник питания, подключают моторы непосредственно к портам контроллера. Хуже того, они публикуют свои "остроумные" открытия в интернете. Хотя да, формально порт может рассматриваться как источник энергии, он предполагает небольшой рабочий ток: 20-50 mA. Даже небольшие моторы потребляют больший ток, а для двигателей помощнее потребляемый ток многократно выше номинальных рабочих токов портов ввода-вывода. Я бы не стал искать запас прочности портов таким способом. Замечу, что даже при "нормальном" подключении мотора (через 5-вольтный источник питания на контроллере) мы должны считаться с тем, что цепь контроллера будет перегружена. Я бы рискнул, пожалуй, подсоединить к цепи контроллера мотор, потребляемый ток которого не слишком превышает рабочий ток на на портах ввода-вывода контроллера, скажем 70mA, но к более мощным потребителям стоит отнестись консервативнее и выделить для них свой источник питания без включения в цепь контроллера. Хотя мотор-редуктор - достаточно простое электромеханическое устройство, управление им - не столь простая задача. При включении мотора в конструкцию, нужно определиться с двумя ключевыми вопросами: нужно ли выделять отдельный источник питания для моторов, как, собственно, управлять мотором. Соображение об источнике приведены выше: чем мощнее мотор и консервативнее автор модели, тем больше шансов, что будет выбран отдельный источник питания.Второй вопрос - как управлять мотором. Для управления мотором необходимо периодически включать и выключать питание мотора. Питание на мотор должно поступать импульсами, длительность которых составляет часть всего времени: половина времени двигатель под напряжением, четверть, и т.д. Нужна специальная схема, которая будет замыкать и размыкать цепь мотора. Устройство управления моторами называется драйвер мотора (motor driver). Его можно приобрести как отдельную плату (и за отдельную плату - чтобы не было ощущения опечатки). Дальнейшая последовательность шагов будет такова: присоединяем провода мотора к соответствующим контактам на драйвере - так замыкание-размыкание цепи попадает под контроль драйвера; выбираем на ардуино порты, которые будут отвечать за контроль моторов (пока мы не касаемся деталей, речь только о принципиальной схеме работы) и соединяем эти порты с соответствующими контактами на драйвере - схема управления моторами создана; подключаем питание к драйверу (драйвер будет, в свою очередь, источником питания для моторов). Драйвер может быть запитан от независимого источника питания. В случае маломощных моторов есть, пожалуй, смысл рассмотреть подключение драйвера к питанию контроллера (за последствия экспериментов автор ответственности не несёт :-)). Вот и всё. Осталось загрузить в контроллер программу управления моторами и запустить её.Надо заметить, что плата драйвера может быть реализована в виде shield ("модуль расширения" представляется подходящим термином, но не уверен в общепринятости, буду пока пользоваться таким образом). Модуль расширения устанавливается непосредственно на контроллер: это избавляет от необходимости искать конструктивное решение о месте и креплении платы драйвера, а также необходимости выбирать порты ввода-вывода на контроллере и соединять их с контактами на драйвере - при установке модуля расширения драйвер автоматом присоединяется к определённым портам ввода-вывода контроллера, обращаясь к которым программа может управлять моторами. Но это ещё не всё. Кроме драйвера, как отдельной платы или модуля расширения, драйвер может быть встроен в контроллер. Естественно ожидать, что контроллер со встроенным драйвером будет больше по размерам и дороже, чем базовый контроллер, плюс специализированное решение уменьшает выбор на рынке. В конце концов, энтузиасты электроники могут собрать собственный драйвер из радиодеталей. На эту тему появился не так давно материал Сергея Косаченко (увы, ссылки у меня под рукой не оказалось: если Сергей заглянет, надеюсь, добавит ссылку).Окончательное решение об использовании драйвера будем искать по конкретным обстоятельствам, исходя из требований к простоте сборки, бюджету, габаритам модели, эстетических критериев и учебных целей. К программированию двигателей мы в будущем вернёмся, а в следующем выпуске подумаем о подключении датчиков. Arduino Ардуино драйвер мотор робототехника