Реклама ⓘ
Главная » Arduino
Призовой фонд
на апрель 2024 г.
1. 100 руб.
От пользователей

Похожие статьи:


Реклама ⓘ

Курс Arduino - Моторы

Моторы

В этом уроке мы рассмотрим два вида моторов: DC мотор и Сервопривод.

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

Нам понадобятся

  • Микросервопривод
  • DC мотор(я использовал FA-130 из Матрешки)
  • Конденсатор на 220 мкФ
  • MOSFET
  • Выпрямительный диод
  • Потенциометр
  • Соединительные провода «Папа-Папа»

DC мотор

Для начала рассмотрим обычный моторчик. Ток, который поддерживает Arduino на своих выходах до 40 мА. Моторчик без нагрузки потребляет 80мА, а при блокировке 1600мА (для разных моторчиков потребляемый ток может варьироваться), что определенно больше максимальных 40 мА. Поэтому, если моторчик просто подключить к пину Arduino, то велик шанс, в лучшем случае повредить мотор или сжечь пин, в худшем – вывести из строя микроконтроллер.

Для того, чтобы подключить мотор к Arduino, придуманы различные Motor-shieldы, придуманы микросхемы, например L298, MOSFET- транзисторы. В первой части курса мы рассмотрим только MOSFET-транзистор.

Что такое транзистор? Транзистор – это электронная кнопка, только «нажимаемая» током. О нем поподробнее.

MOSFET- транзистор – это транзистор для управления большими токами, малым напряжением.

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

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

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

Главное - не перепутать полярность подключения диода. Иначе - будет короткое замыкание.

Теперь перейдем к коду.

Код к мотору

#define MOTOR 9
#define POT A0

void setup() {
  // Обозначим пин MOTOR как выход.
  pinMode(MOTOR , OUTPUT);
  Serial.begin(9600);
  Serial.println("Potentiometer's values in volts");
}

void loop() {
  //Создаем переменную, для регулирования скорости мотора
 int motorSpeed = analogRead(POT)/ 4;
 // Выставляем скорость мотора в соответствии с показаниями потенциометра.
 analogWrite(MOTOR,motorSpeed);
 //Создаем "плавающую" переменную для выведения данных в Serial Monitor.
 float voltage = (analogRead(POT)/ 204.8 );
 //Выводим данные в Serial monitor.
 Serial.println(voltage);
 //Немного ждем.
 delay(1000);
}

Пояснения

Мотор подключается как аналоговый выход. То есть, питание выводится через analogWrite(MOTOR, Значение)  А в зависимости от значения, MOSFET дает сигнал о подаче нужного напряжения.

Сервопривод

Отлично! С моторчиком разобрались. Теперь переходим к сервомотору. Без определенных знаний при управлении сервомотором не обойтись. Но хорошие люди уже постарались для нас и сделали библиотеку для управления сервой. Поэтому управлять сервомотором достаточно простая задача.

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

 

Бочонок на схеме – это конденсатор. Конденсатор – это такая маленькая батарейка, которая очень быстро заряжается и быстро разряжается. О нем подробнее.

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

Цвета проводов на твоей серве могут отличаться. Например, там может быть коричневый провод вместо черного, а вместо желтого оранжевый. Не надо пугаться. Ничего не меняется. Коричневый или черный – это земля. Красный, он есть почти всегда, - питание. Желтый или оранжевый – сигнал. 

 Код для сервомотора

#include <Servo.h> //Подключим библиотеку для сервомотора.
Servo servo; // Создадим объект типа Servo

void setup() 
{
  servo.attach(13); //прикрепим серву к 13 пину.
}

void loop() 
{
  int ang = 0; //В эту переменную запишем угол.
  
  //Создаем цикл со счетчиком для поворота на 180 градусов.
 for(ang = 0; ang <= 180; ang++) 
 {
  servo.write(ang);
  delay(10);
 }
 //Создаем цикл со счетчиком для поворота обратно.
  for(ang = 180; ang >=0; ang--)
  {
    servo.write(ang);
    delay(10);
  }

}

Пояснения

Servo servo  Мы создаем Объект типа Servo. Объект Servo имеет свои свойства, как и другие объекты int, byte, char, например. Нам не надо создавать и описывать объект Servo т. к. он уже описан в подключаемой библиотеке. А второе, «маленькое», слово servo – это просто имя нашего сервомотора. Вы можете называть его как вам угодно, не забывая о грамотности в C++ ,конечно.

servo.attach(пин) С помощью этой команды мы прикрепляем нашу серву к 13 пину. Текст до точки – это имя, объявленное при создании объекта Servo. Параметром принимает номер пина, к которому подключена наша серва.

servo.write(угол) С помощью этой функции, мы даем команду серве повернуться на нужный угол. А для постоянного вращения «туда-сюда» мы использовали цикл for.

++  и  --  Это инкремент и декремент соответственно. Они нужны для более быстрой записи выражений. X++ означает то же, что и x == x+1, а x-- означает то же, что и x == x-1. Вариации.

Итог

Сегодня мы научились подключать сервомотор и DC мотор к Arduino. Это пригодится нам позже. Например, при создании мобильного робота или Робо-руки. Но это позже. 

Список радиоэлементов

Обозначение Тип Номинал Количество ПримечаниеМагазинМой блокнот
Плата Arduino
Arduino Uno
1 Поиск в магазине ОтронВ блокнот
Выпрямительный диод
1N4007
1 Поиск в магазине ОтронВ блокнот
ТранзисторMOSFET1 Поиск в магазине ОтронВ блокнот
DC МоторFA-1301 Поиск в магазине ОтронВ блокнот
СервоприводFS901 Поиск в магазине ОтронВ блокнот
Соединительные провода"Папа-Папа"1 Поиск в магазине ОтронВ блокнот
Макетная платаBreadboard-half1 Поиск в магазине ОтронВ блокнот
Переменный резистор10 кОм1 Поиск в магазине ОтронВ блокнот
Конденсатор220 мкФ1 Поиск в магазине ОтронВ блокнот
Добавить все

Скачать список элементов (PDF)

Прикрепленные файлы:

Теги:

Опубликована: 0 0
Я собрал 0 0
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 0 Проголосовало: 0 чел.

Комментарии (3) | Я собрал (0) | Подписаться

0
Публикатор #
На форуме автоматически создана тема для обсуждения статьи.
Ответить
0
Сергей #
Как избавиться от характерного звука от мотора в виде гула (похожий на возбуждение)?
Ответить
0
talibanich #
Изменить частоту ШИМ. На сайте тут была статья в которой упоминается про это, в разделе Arduino.
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется сила тока?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Arduino UNO
Arduino UNO
AVR-программатор USB ASP ELM327 OBD II — адаптер с поддержкой CAN
вверх