Курс arduino – моторы

Код программы к уроку 12. arduino и электродвигатель

/* * * Набор для экспериментов ArduinoKit * Код программы для опыта №12: sketch 12 * * Крутись мотор * * Написано для сайта http://arduinokit.ru * * * Помощь сообщества Arduino. * Посетите сайт http://www.arduino.cc * * * * КРУТИСЬ МОТОР. ARDUINO И ЭЛЕКТРОДВИГАТЕЛЬ. * * Использование транзистора для управления скоростью мотора.

* Мы также покажем вам, как вводить данные через последовательный порт * (см функцию serialSpeed() ниже). * * Двигатели одна из многочисленных вещей из нашей повседневной жизни, * и Arduino может ими управлять. Мы будем использовать Широтно * Импульсную Модуляцию (PWM) для управления скоростью двигателя.

* * Порты Arduino способны выдержать работу нескольких светодиодов * (до 40 мА), но они не достаточно мощны, чтобы справиться с нагрузкой * от двигателя и других прожорливых потребителей энергии. Двигатель * идущий в наборе потребляет приблизительно от 50 до 100 mA, а это * значительно больше чем может дать Arduino.

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

* * Вы можете управлять транзистором с помощью функции digitalWrite() * («включать» и «выключать»), а с помощью функцию analogWrite() * изменять скорость вращения двигателя, для этого Arduino использует * Широтно Импульсную Модуляцию (PWM), подавая импульсы напряжения * изменяя их ширину от 0% до 100%.

* * Имейте в виду, для уменьшения скорости, вы уменьшаете ее с помощью * ШИМ (делая паузы «СТОП» длиннее). Если в начале, длительность паузы * будет 50% и более, двигатель, просто не сможет раскрутиться, * поэтому при старте необходимо немного добавить скорости. * * Подсоединяем оборудование: * * Транзистор: * * У транзистора имеются три вывода.

Если повернуть его скошенной * стороной (с надписями) к себе, а выводами вниз, то назначения * выводов будут следующими (слева на пр.): КОЛЛЕКТОР, БАЗА, ЭМИТЕР. * * Подсоедините минусовой вывод мотора к КОЛЛЕКТОРУ транзистора. * Подсоедините БАЗУ через резистор 330 Ом к цифровому порту 9. *Подсоедините ЭМИТЕР к GND (минусовой шине).

* * Мотор: * * Вы уже должны были подсоединить минусовой вывод мотора к *КОЛЛЕКТОРУ транзистора.

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

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

Чтобы этого не * случилось, мы и будем использовать диод, который не пропустит * этот всплеск через себя. * * На импортных диодах, почти всегда, КАТОД, отмечен полоской — * кольцом, расположенным, как раз у этого вывода. * * Подключите один вывод диода (КАТОД) к +5 Вольт, а другой * вывод (АНОД) к минусовому контакту на двигателе. * * В данном опыте не имеет большого значения плюс или минус * двигателя, если их перепутать двигатель просто будет крутиться в * обратном направлении, это будет иметь значение если двигатель * установлен в машинке, и вместо того, чтобы ехать вперед, она * поедет назад. * * * Комментарий к программе написан * 23 ноября 2014

* специально для http://arduinokit.ru

*
*/

// Будем управлять двигателем используя цифровой порт 9 (pin 9).
// Это должен быть любой ШИМ порт Arduino

const int motorPin = 9; void setup() {

// Установим порт мотора как выходной:

pinMode(motorPin, OUTPUT);

// Активируем «Монитор порта»:

Serial.begin(9600); } void loop() { // Здесь мы использовали комментарии для отключения некоторых // примеров. Чтобы испробовать другой пример, раскомментируйте // одну из следующих строк и закомментируйте другие. См функции,

// для того чтобы узнать что они делают и как работают.

// motorOnThenOff(); // motorOnThenOffWithSpeed(); // motorAcceleration(); serialSpeed();

}

// Попробуйте разные значения.

void motorOnThenOff() { int onTime = 3000; // миллисекунд для вращения мотора

int offTime = 3000; // миллисекунд для простаивания мотора

digitalWrite(motorPin, HIGH); // включить мотор — максимальная скорость delay(onTime); // задержка, для продолжения вращения digitalWrite(motorPin, LOW); // выключить мотор delay(offTime); // задержка, для простаивания мотора

}

// Функция «motorOnThenOffWithSpeed» переключает работу мотора между
// двумя скоростями. Пробуйте разные значения, если интересно.

void motorOnThenOffWithSpeed() { int Speed1 = 200; // скорость «Speed1» 0 (остановка), 255 (полный ход)

int Time1 = 3000; // время «Time1» в миллисекундах

int Speed2 = 50; // скорость «Speed2» 0 (остановка), 255 (полный ход)
int Time2 = 3000; // время «Time2» в миллисекундах

analogWrite(motorPin, Speed1); // включаем мотор на скорости «Speed1» delay(Time1); // продолжаем вращение заданное время analogWrite(motorPin, Speed2); // включаем мотор на скорость «Speed2» delay(Time2); // продолжаем, заданное время «Time2» } // Функция «motorAcceleration» раскручивает двигатель от нуля до

// максимума, и обратно до полной остановки.

void motorAcceleration() { int speed;

int delayTime = 20; // пауза в миллисекундах

// будем раскручивать мотор, увеличивая скорости от 0 до 255 с паузой в
// 20 миллисекунд меду каждым шагом (1, пауза, 2, пауза, 3, пауза и.т.д)

for(speed = 0; speed = 0; speed—) { analogWrite(motorPin,speed); // установка новой скорости delay(delayTime); // пауза «delayTime», т.е 20 миллисекунд } } // Следующая функция позволит вам изменять скорость прямо в окне // «Монитора порта».

Для этого откройте Монитор порта, используя // значок увеличительного стекла в Arduino IDE, в правом верхнем // углу окна.

Затем введите желаемую скорость в специальном месте // для ввода текста «Type a speed (0-255) into the box above,», в // верхней части окна, и нажмите кнопку «Send» (отправить) или // «return» (возврат). Двигатель будет работать на заданной вами

// скорости. Допустимый диапазон от 0 до 255.

void serialSpeed() {

int speed;

Serial.println(«Type a speed (0-255) into the box above,»); // Т.к. с русским языком в «мониторе порта» существуют некоторые // сложности, надписи будут на английском. Serial.println(«then click [send] or press [return]»);

Serial.println(); // Распечатать пустую строку

// In order to type out the above message only once, // we’ll run the rest of this function in an infinite loop: // Для того, чтобы вывести сообщение (выше) лишь один раз, // Мы будем запускать остальную часть этой функции в // бесконечном цикле: // Вывод запроса данных осуществляется лишь раз, после этого // Функция будет проверять правильность ввода данных по кругу, пока

// данные не изменятся.

while(true) {

// Сначала мы проверяем, доступны ли входные данные:

while (Serial.available() > 0) {

// Если данные есть, выполняем parseInt() для считывания цифр:

speed = Serial.parseInt();

// Поскольку analogWrite() работает с числами от 0 до 255, // мы обязательно должны быть уверенны, что число входит в // заданный диапазон. Для этого воспользуемся функцией «constrain».

// об этой функции мы говорили в опыте №6 «Arduino и Фоторезистор»:

speed = constrain(speed, 0, 255);

// Напечатать сообщение для того, чтобы вы знали что число
// было получено:

Serial.print(«Setting speed to «);
Serial.println(speed);

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

analogWrite(motorPin, speed); } }

}

Источник: http://arduinokit.ru/arduino/lessons-arduino/sketch-lesson-12-arduino-motor.html

Делаем на основе Arduino двигатель своими руками

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

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

Ниже мы подробно расскажем читателю о моторе, сконструированном на микропроцессоре Aрдуино, и поможем построить прибор правильно.

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

Поэтому, в зависимости от размера прибора, мы можем просто подключить выход PWM Arduino к базе транзистора или к затвору MOSFET и управлять скоростью двигателя, контролируя выход PWM. Сигнал PWM с низким уровнем мощности Arduino включает и выключает затвор на MOSFET, через который приводится прибор высокой мощности. Ардуино GND и источник питания двигателя GND должны быть соединены вместе.

Сборка двигателя

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

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

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

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

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

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

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

  1. Arduino Uno.
  2. Макет.
  3. Транзистор.
  4. Двигатель постоянного тока.
  5. Диод.
  6. Резистор 2,2 кОм.
  7. Переходные провода.

Для питания прибора подается 5V через него, а затем на землю. Это напряжение вращает устройства, но пользователь контролирует его. Чтобы передать Arduino управление мощностью прибора и, следовательно, вращение, устанавливается транзистор сразу после мотора.

Значения драйвера в составе устройства и работа с ним

L298N – это двойной драйвер H-Bridge, который позволяет одновременно управлять скоростью и направлением двух приспособлений постоянного тока. Модуль может приводить в действие приборы постоянного тока с напряжением от 5 до 35 В с пиковым током до 2А.

Давайте подробнее рассмотрим распиновку модуля L298N и объясним, как это работает. Модуль имеет два винтовых клеммных блока для A и B и еще одну винтовую клеммную колодку для заземляющего контакта, VCC для двигателя и вывод 5 В, который может быть либо входом, либо выходом.

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

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

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

Здесь можно отметить, что эта ИС уменьшает падение напряжения примерно на 2 В. Так, например, если мы используем источник питания 12 В, напряжение на клеммах двигателей будет составлять около 10 В, а это означает, что мы не сможем получить максимальную скорость от нашего 12-вольтового двигателя постоянного тока.

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

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

Затем штифты Input 1 и Input 2 используются для управления направлением вращения двигателя A, а входы 3 и 4 – для двигателя B. Используя эти контакты, мы фактически управляем переключателями H-Bridge внутри IC L298N.

Если вход 1 LOW, а вход 2 – HIGH, приспособление будет двигаться вперед, и наоборот, если вход 1 HIGH, а вход 2 LOW, агрегат будет двигаться назад. Если оба входа одинаковы, либо LOW, либо HIGH, прибор остановится.

То же самое относится ко входам 3,4 прибора B.

Установка программного обеспечения

Постройте схему, как показано на рисунке, и откройте новый эскиз Arduino. Выберите кнопку «Сохранить» и сохраните эскиз с запоминающимся именем, например myMotor; введите следующий код:

int motorPin = 9;void setup (){pinMode (motorPin, OUTPUT );}void loop () {digitalWrite (motorPin, HIGH);delay(1000);digitalWrite (motorPin, LOW );delay(1000);}

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

Если эскиз скомпилирован правильно, нажмите «Загрузить», чтобы загрузить эскиз на микропроцессор. Вы должны видеть, что ваш двигатель вращается в течение одной секунды и останавливается в течение одной секунды.

Если это не так, вам следует дважды проверить свою проводку:

  1. Убедитесь, что вы используете вывод № 9.
  2. Убедитесь, что ваш диод обращен правильно, при этом лента обращена к соединению 5v.
  3. Проверьте соединения на макете. Если провода или компоненты не подключены с использованием правильных строк в макете, они не будут работать.

Запуск и настройка устройства

Для начала соединяем провода для питания и земли. На иллюстрации красный означает мощность, а черный означает заземление; они соединяются с двумя длинными вертикальными рядами на стороне макета. Это обеспечивает доступ к источнику питания и напряжению на 5 вольт.

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

Подключаем контакт или пин 9 на Arduino к базовому выходу TIP120 . Если смотрите на транзистор, чтобы металлический язычок был обращен от вас, базовый штифт находится на левой стороне транзистора. Это контакт, который управляет открытием или закрытием. Транзисторный коллектор соединяется с одним выводом двигателя.

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

Тестирование

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

В этом примере используется TIP120, который может переключаться до 60 В на 5 А.

Источник: https://ArduinoPlus.ru/arduino-dvigatel/

Ардуино: управление двигателем постоянного тока, L293D

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

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

На этом уроке мы разберем, как управлять двигателем постоянного тока (DC Motor). Двигатели этого типа части применяются в роботах на колесных и гусеничных платформах. И начнем мы с самого простого способа управления.

1. Транзистор

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

 Даже небольшой двигатель, часто используемый в разного рода игрушках, для своей работы требует ток силой от 200 мА до 1 Ампера. А цифровой выход Arduino может дать нам только 20мА. Большинству мощных двигателей требуется напряжение более 5 Вольт, привычных для Ардуино. Распространены двигатели на 12, на 24 и на 48 Вольт.

 Другими словами, Ардуино очень слаба для прямого управления двигателями. Нужен какой-то мощный посредник!

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

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

В цепи обязательно нужно поставить защитный диод, например 1N4001 или 1N4007. Этот диод не даст сгореть транзистору и контроллеру в момент остановки двигателя, когда ЭДС самоиндукции создаст на обмотках скачок напряжения.

В этой схеме можем использовать NPN транзистор 2N2222A. Этот биполярный транзистор может управлять током до 1А и напряжением до 40В, так что его можно вполне использовать для небольших моторов. Российский аналог данного транзистора — КТ315.

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

2. H-мост

Составив транзисторы определенным образом, мы получим устройство для управления вращением двигателя в обе стороны. Такое устройство называется H-мост. Вот так выглядит H-мост на биполярных транзисторах:

INA и INB на рисунке — это вход слабых управляющих сигналов. В случае Ардуино, на них необходимо подавать либо 0 (земля) либо +5В. VCC — это питание двигателей, оно может быть во много раз выше напряжения управляющего сигнала. GND — это земля, общая для Ардуино и H-моста.

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

3. Микросхема драйвера L293D

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

Микросхема представляет собой два H-моста, а значит можно управлять сразу двумя двигателями. Каждый мост снабжен четырьмя защитными диодами и защитой от перегрева. Максимальный ток, который может передать L293D на двигатель — 1.2А. Рабочий ток — 600мА. Максимальное напряжение — 36 В.

4. Подключение

Микросхема L293D имеет DIP корпус с 16-ю выводами. Схема выводов ниже.

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

  • +V — питание микросхема, 5В;
  • +Vmotor — питание двигателей, до 36В;
  • 0V — земля;
  • En1, En2 — выводы включения/выключения H-мостов;
  • In1, In2 — управляющие выводы первого H-моста;
  • Out1, Out2 — выводы для подключения первого двигателя;
  • In3, In4 — управляющие выводы второго H-моста;
  • Out3, Out4 — выводы для подключения второго двигателя.

Выводы En1 и En2 служат для отключения или включения мостов. Если мы подаем 0 на En, соответствующий мост полностью выключается и двигатель перестает вращаться. Эти сигналы пригодятся нам для управления тягой двигателя при помощи ШИМ сигнала.

Схема подключения к Ардуино Уно

Драйвер L293D In1 In2 In3 In4 En1 En2 V+ Vmotor+ 0V
Arduino Uno 7 8 2 3 6 5 +5V +5V GND

Для пример, подключим по этой схеме всего один двигатель. Задействуем выводы драйвера In3, In4 и En2. Принципиальная схема подключения будет выглядеть следующим образом:

Внешний вид макета

5. Программа

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

const int in3 = 2; const int in4 = 3; const int en2 = 5; void setup() { pinMode(in3, OUTPUT); pinMode(in4, OUTPUT); pinMode(en2, OUTPUT); analogWrite(en2, 255); } void loop() { digitalWrite(in3, LOW); digitalWrite(in4, HIGH); delay(1000); digitalWrite(in3, HIGH); digitalWrite(in4, LOW); delay(1000); }

Функция analogWrite с помощью ШИМ сигнала управляет мощностью двигателя.

В этой программе мы командуем драйверу вращать двигатель с максимальной скоростью, что соответствует ШИМ сигналу — 255.

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

Теперь усложним программу. Будем кроме направления менять еще и мощность.

const int in3 = 2; const int in4 = 3; const int en2 = 5; void setup() { pinMode(in3, OUTPUT); pinMode(in4, OUTPUT); pinMode(en2, OUTPUT); } void loop() { digitalWrite(in3, HIGH); digitalWrite(in4, LOW); analogWrite(en2, 150); delay(2000); analogWrite(en2, 255); delay(2000); digitalWrite(in3, LOW); digitalWrite(in4, HIGH); analogWrite(en2, 150); delay(2000); analogWrite(en2, 255); delay(2000); }

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

Задания

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

  1. Собрать драйвер на основе одного NPN транзистора, и вращать с помощью него мотор.
  2. Управлять сразу двумя моторами при помощи L293D, передавая на них разную мощность.
  3. Собрать колесного робота, и заставить его двигаться по окружности.
  4. Заставить колесного робота двигаться по спирали.

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

Источник: http://robotclass.ru/tutorials/arduino-dc-motor-driver/

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

Ардуино для начинающих. Урок 9. Моторы и транзисторы

Сегодня мы поговорим о транзисторах и подключении нагрузки к Arduino. Сама Ардуино не может выдать напряжение выше 5 вольт и ток больше 40 мА с одного пина.

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

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

В этом уроке используется:

Arduino Uno:
Инфракрасный дальномер:
Высокоточный лазерный дальномер с I2C:
Набор резисторов из 100 штук на все случаи:
Небольшой моторчик:
Слабенький сервопривод:
Мощный сервопривод:
Мосфет транзистор для управления переменным током высокого напряжения:
Набор npn транзисторов из 100 штук:

Подключение мотора к Arduino

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

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

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

Теперь давайте подключим мотор к ардуино по следующей схеме:

Подключение мотора к ардуино

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

В видео к схеме добавлены диод и конденсатор, но они не обязательны. Так же можно добавить резистор на 10 — 100 кОм между эмиттером и коллектором для стабильности работы нашей схемы.

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

12345678910111213141516171819202122232425 // Обозначаем пин к которому у нас подключена база транзистораint motorPin = 9;void setup () {// Устанавливаем пин в качестве выходаpinMode (motorPin, OUTPUT);}void loop () {// Перебор значений от 0 до 255 в циклеfor (int i = 0; i = 0; i–) {analogWrite(motorPin, i);delay(10);}delay(500);}

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

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

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

Источник: https://all-arduino.ru/arduino-dlya-nachinayushhih-urok-9-motory-i-tranzistory/

Как подключить коллекторный двигатель к Arduino

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

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

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

Драйверы двигателей имеют выводы подачи питания, выводы для подключения электродвигателей, а также управляющие выводы.

Различные варианты исполнения драйверов двигателей

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

2Схема подключения коллекторного двигателяи драйвера двигателей к Arduino

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

Давайте подключим двигатель по приложенной схеме. Питание драйвера двигателя – 5 В от Arduino, для управления скоростью вращения ротора мотора управляющие контакты подключаем к выводам Ардуино, поддерживающим ШИМ (широтно-импульсную модуляцию).

Схема подключения коллекторного двигателя к Arduino с помощью драйвера двигателей

Должно получиться что-то подобное:

Двигатель подключён к драйверу двигателей и Arduino

3Скетч для управления коллекторным двигателем

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

int Speed = 0; const int IA1 = 5; // Управляющий вывод 1 const int IA2 = 6; // Управляющий вывод 2 void setup() { pinMode(IA1, OUTPUT); pinMode(IA2, OUTPUT); Serial.begin(9600); } void loop() { if (Serial.available() > 0) { String s = Serial.readString(); Speed = s.toInt(); // преобразуем считанную строку в число } if (Speed > 0) { // если число положительное, вращаем в одну сторону analogWrite(IA1, Speed); analogWrite(IA2, LOW); } else { // иначе вращаем ротор в другую сторону analogWrite(IA1, LOW); analogWrite(IA2, -Speed); } }

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

Так как мы используем цифровые ножки с ШИМ, напряжение на них регулируется командой analogWtirte(pin, value), где pin – номер вывода, на котором мы хотим задать напряжение, а аргумент value – коэффициент, пропорциональный значению напряжения, принимающий значения в диапазоне от 0 (напряжение на выводе равно нулю) до 255 (напряжение на выводе равно 5 В).

4Управление коллекторным двигателем с помощью Arduino

Загрузим скетч в память Arduino. Запустим его. Вал двигателя не вращается. Чтобы задать скорость вращения, нужно передать в последовательный порт значение от 0 до 255. Направление вращения определяется знаком числа.

Подключимся с помощью любой терминалки к порту, передадим число «100» – двигатель начнёт вращаться со средней скоростью. Если подадим «минус 100», то он начнёт вращаться с той же скоростью в противоположном направлении.

Управление электромотором с помощью драйвера двигателей и Arduino

Источник: https://soltau.ru/index.php/arduino/item/415-arduino

Подключение Motor Shield L293D к плате Arduino и управление электромоторами

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

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

Чем эта статья может быть вам полезна

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

Технические характеристики Motor Shield L293D

Motor Shield L293D имеет следующие характеристики :

  • Максимальный продолжительный ток в каждом канале: 0,6 А;
  • Допустимый ток нагрузки 600мА на канал, пиковый ток — 1.2A
  • Питание моторов от 4.5 В до 36 В
  • 4-х канальное управление
  • Присутствует защита от перегрева
  • Присутствует контакт для дополнительного питания платы

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

1. Под цифрой “1” на плате находятся микросхемы, обеспечивающие работу шилда. Две крайние микросхемы называются L293D, они позволяют управлять слаботочными двигателями с током потребления до 600 мА на канал. По центру же находится микросхема, которая уменьшает количество управляющих выводов.

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

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

4. Здесь размещены клемма, через которые вы можете запитать ваш шилд, ведь для работы моторов необходимо большее напряжение, чем напряжение от Arduino. Хотелось бы отметить важный момент, чтобы запитывать Motor Shield L293D иным источником необходимо снять перемычку, которая находится под цифрой 5

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

Также на motor shield L293D находится светодиод, который горит только тогда, когда подсоединенные электромоторы запитанны и могут выполнять свое предназначение. А если светодиод не проявляет признаков жизни, то ваши электромоторы работать не будут, так как источника питания не хватает на работу моторов или его совсем нет.

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

Необходимые компоненты для подключения

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

Все эти элементы можно приобрести по низкой цене и с высоким качеством в интернет магазине SmartElements.

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

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

Схема подключения Motor Shield L293D и Arduino

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

После подключения Motor Shield L293D к Arduino, нам необходимо присоединить оставшиеся компоненты. Правильное подключение показано на фотографии ниже.

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

Готовый программный код для управления Motor Shield L293D

Для работы датчика на Arduino нужно скачать и установить библиотеку AFMotor .

Скачать библиотеку можно здесь .

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

Диск CProgtam FilesArduinoLibraries

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

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

Для начала рассмотрим подключение одного мотора к Motor Shield L293D и Arduino.

#include // Подключаем библиотеку для работы с шилдом int i; AF_DCMotor motor1(1);// Подключаем моторы к клеммникам M1 void setup() { motor1.setSpeed(255);// Задаем максимальную скорость вращения моторов motor1.run(RELEASE); } void loop() { motor1.run(FORWARD); // Задаем движение вперед motor1.setSpeed(255); // Задаем скорость движения delay(3000); //Указываем время движения motor1.run(RELEASE); // Останавливаем двигатели delay(500); // Указываем время задержки motor1.run(BACKWARD); // Задаем движение назад motor1.setSpeed(255); // Задаем скорость движения delay(3000); // Указываем время движения motor1.run(RELEASE); // Останавливаем двигатели delay(500); // Указываем время задержки // Разгоняем двигатели в одном направлении от нулевой скорости, до максимальной motor1.run(FORWARD); for (i=0; i=0; i–) { motor1.setSpeed(i); delay(10); } motor1.run(RELEASE); // Останавливаем двигатели delay(500); // Указываем время задержки }

Перейдем ко второму коду, для управления уже несколькими электромоторами.

#include // Подключаем библиотеку для работы с шилдом int i; AF_DCMotor motor1(1);// Подключаем моторы к клеммникам M1 AF_DCMotor motor2(2);// Подключаем моторы к клеммникам M2 AF_DCMotor motor3(3);// Подключаем моторы к клеммникам M3 AF_DCMotor motor4(4);// Подключаем моторы к клеммникам M4 void setup() { motor1.setSpeed(255);// Задаем максимальную скорость вращения моторов motor1.run(RELEASE); motor2.setSpeed(255); motor2.run(RELEASE); motor3.setSpeed(255); motor3.run(RELEASE); motor4.setSpeed(255); motor4.run(RELEASE); } void loop() { motor1.run(FORWARD); motor1.setSpeed(255); motor2.run(FORWARD); motor2.setSpeed(255); motor3.run(FORWARD); motor3.setSpeed(255); motor4.run(FORWARD); motor4.setSpeed(255); delay(3000); //Указываем время движения motor1.run(RELEASE); // Останавливаем двигатели motor2.run(RELEASE); motor3.run(RELEASE); motor4.run(RELEASE); delay(500); // Указываем время задержки motor1.run(BACKWARD); // Задаем движение назад motor1.setSpeed(255); // Задаем скорость движения motor2.run(BACKWARD); motor2.setSpeed(255); motor3.run(BACKWARD); motor3.setSpeed(255); motor4.run(BACKWARD); motor4.setSpeed(255); delay(3000); // Указываем время движения motor1.run(RELEASE); // Останавливаем двигатели motor2.run(RELEASE); motor3.run(RELEASE); motor4.run(RELEASE); delay(500); // Указываем время задержки // Разгоняем двигатели в одном направлении от нулевой скорости, до максимальной motor1.run(FORWARD); motor2.run(FORWARD); motor3.run(FORWARD); motor4.run(FORWARD); for (i=0; i=0; i–) { motor1.setSpeed(i); motor2.setSpeed(i); motor3.setSpeed(i); motor4.setSpeed(i); delay(10); } motor1.run(RELEASE); // Останавливаем двигатели motor2.run(RELEASE); motor3.run(RELEASE); motor4.run(RELEASE); delay(500); // Указываем время задержки }

Разбор програмного скетча для управления электромоторами с помощью Motor Shield L293D и Arduino

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

В участке кода, представленном ниже, мы задаем максимальную скорость, для электромоторов. Мы указали максимальное значение скорости равное “255”.

motor1.setSpeed(255);// Задаем максимальную скорость вращения моторов

В данном участке кода мы командой “motor1.run(FORWARD);” задаем движение электродвигателям вперед, а командой “motor1.setSpeed(255);” указываем, с какой скоростью будут они работать. Если вы захотите установить максимальную скорость, то ее значение должно быть таким, которое указано в строчке “motor1.setSpeed(255);” (в нашем случае значение максимальной скорости равно 255).

motor1.run(FORWARD); // Задаем движение вперед motor1.setSpeed(255); // Задаем скорость движения

Вы можете заметить строчки, в которых указана функция “delay”(Пример такого кода указан ниже). Эта функция отвечает за продолжительность действия того или иного действия. В нашем случае “delay” указывает, какое количество времени двигатель будет бездействовать.

motor1.run(RELEASE); // Останавливаем двигатели delay(500); // Указываем время задержки

Источник: http://helpduino.ru/Arduino_Motor_Shield_L293D.html

Ссылка на основную публикацию
Adblock
detector
",css:{backgroundColor:"#000",opacity:.6}},container:{block:void 0,tpl:"
"},wrap:void 0,body:void 0,errors:{tpl:"
",autoclose_delay:2e3,ajax_unsuccessful_load:"Error"},openEffect:{type:"fade",speed:400},closeEffect:{type:"fade",speed:400},beforeOpen:n.noop,afterOpen:n.noop,beforeClose:n.noop,afterClose:n.noop,afterLoading:n.noop,afterLoadingOnShow:n.noop,errorLoading:n.noop},o=0,p=n([]),h={isEventOut:function(a,b){var c=!0;return n(a).each(function(){n(b.target).get(0)==n(this).get(0)&&(c=!1),0==n(b.target).closest("HTML",n(this).get(0)).length&&(c=!1)}),c}},q={getParentEl:function(a){var b=n(a);return b.data("arcticmodal")?b:(b=n(a).closest(".arcticmodal-container").data("arcticmodalParentEl"),!!b&&b)},transition:function(a,b,c,d){switch(d=null==d?n.noop:d,c.type){case"fade":"show"==b?a.fadeIn(c.speed,d):a.fadeOut(c.speed,d);break;case"none":"show"==b?a.show():a.hide(),d();}},prepare_body:function(a,b){n(".arcticmodal-close",a.body).unbind("click.arcticmodal").bind("click.arcticmodal",function(){return b.arcticmodal("close"),!1})},init_el:function(d,a){var b=d.data("arcticmodal");if(!b){if(b=a,o++,b.modalID=o,b.overlay.block=n(b.overlay.tpl),b.overlay.block.css(b.overlay.css),b.container.block=n(b.container.tpl),b.body=n(".arcticmodal-container_i2",b.container.block),a.clone?b.body.html(d.clone(!0)):(d.before("
"),b.body.html(d)),q.prepare_body(b,d),b.closeOnOverlayClick&&b.overlay.block.add(b.container.block).click(function(a){h.isEventOut(n(">*",b.body),a)&&d.arcticmodal("close")}),b.container.block.data("arcticmodalParentEl",d),d.data("arcticmodal",b),p=n.merge(p,d),n.proxy(e.show,d)(),"html"==b.type)return d;if(null!=b.ajax.beforeSend){var c=b.ajax.beforeSend;delete b.ajax.beforeSend}if(null!=b.ajax.success){var f=b.ajax.success;delete b.ajax.success}if(null!=b.ajax.error){var g=b.ajax.error;delete b.ajax.error}var j=n.extend(!0,{url:b.url,beforeSend:function(){null==c?b.body.html("
"):c(b,d)},success:function(c){d.trigger("afterLoading"),b.afterLoading(b,d,c),null==f?b.body.html(c):f(b,d,c),q.prepare_body(b,d),d.trigger("afterLoadingOnShow"),b.afterLoadingOnShow(b,d,c)},error:function(){d.trigger("errorLoading"),b.errorLoading(b,d),null==g?(b.body.html(b.errors.tpl),n(".arcticmodal-error",b.body).html(b.errors.ajax_unsuccessful_load),n(".arcticmodal-close",b.body).click(function(){return d.arcticmodal("close"),!1}),b.errors.autoclose_delay&&setTimeout(function(){d.arcticmodal("close")},b.errors.autoclose_delay)):g(b,d)}},b.ajax);b.ajax_request=n.ajax(j),d.data("arcticmodal",b)}},init:function(b){if(b=n.extend(!0,{},a,b),!n.isFunction(this))return this.each(function(){q.init_el(n(this),n.extend(!0,{},b))});if(null==b)return void n.error("jquery.arcticmodal: Uncorrect parameters");if(""==b.type)return void n.error("jquery.arcticmodal: Don't set parameter \"type\"");switch(b.type){case"html":if(""==b.content)return void n.error("jquery.arcticmodal: Don't set parameter \"content\"");var e=b.content;return b.content="",q.init_el(n(e),b);case"ajax":return""==b.url?void n.error("jquery.arcticmodal: Don't set parameter \"url\""):q.init_el(n("
"),b);}}},e={show:function(){var a=q.getParentEl(this);if(!1===a)return void n.error("jquery.arcticmodal: Uncorrect call");var b=a.data("arcticmodal");if(b.overlay.block.hide(),b.container.block.hide(),n("BODY").append(b.overlay.block),n("BODY").append(b.container.block),b.beforeOpen(b,a),a.trigger("beforeOpen"),"hidden"!=b.wrap.css("overflow")){b.wrap.data("arcticmodalOverflow",b.wrap.css("overflow"));var c=b.wrap.outerWidth(!0);b.wrap.css("overflow","hidden");var d=b.wrap.outerWidth(!0);d!=c&&b.wrap.css("marginRight",d-c+"px")}return p.not(a).each(function(){var a=n(this).data("arcticmodal");a.overlay.block.hide()}),q.transition(b.overlay.block,"show",1*")),b.overlay.block.remove(),b.container.block.remove(),a.data("arcticmodal",null),n(".arcticmodal-container").length||(b.wrap.data("arcticmodalOverflow")&&b.wrap.css("overflow",b.wrap.data("arcticmodalOverflow")),b.wrap.css("marginRight",0))}),"ajax"==b.type&&b.ajax_request.abort(),p=p.not(a))})},setDefault:function(b){n.extend(!0,a,b)}};n(function(){a.wrap=n(document.all&&!document.querySelector?"html":"body")}),n(document).bind("keyup.arcticmodal",function(d){var a=p.last();if(a.length){var b=a.data("arcticmodal");b.closeOnEsc&&27===d.keyCode&&a.arcticmodal("close")}}),n.arcticmodal=n.fn.arcticmodal=function(a){return e[a]?e[a].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof a&&a?void n.error("jquery.arcticmodal: Method "+a+" does not exist"):q.init.apply(this,arguments)}}(jQuery)}var debugMode="undefined"!=typeof debugFlatPM&&debugFlatPM,duplicateMode="undefined"!=typeof duplicateFlatPM&&duplicateFlatPM,countMode="undefined"!=typeof countFlatPM&&countFlatPM;document["wri"+"te"]=function(a){let b=document.createElement("div");jQuery(document.currentScript).after(b),flatPM_setHTML(b,a),jQuery(b).contents().unwrap()};function flatPM_sticky(c,d,e=0){function f(){if(null==a){let b=getComputedStyle(g,""),c="";for(let a=0;a=b.top-h?b.top-h{const d=c.split("=");return d[0]===a?decodeURIComponent(d[1]):b},""),c=""==b?void 0:b;return c}function flatPM_testCookie(){let a="test_56445";try{return localStorage.setItem(a,a),localStorage.removeItem(a),!0}catch(a){return!1}}function flatPM_grep(a,b,c){return jQuery.grep(a,(a,d)=>c?d==b:0==(d+1)%b)}function flatPM_random(a,b){return Math.floor(Math.random()*(b-a+1))+a}