Taxitaxitaxi.ru

Эволюшн
2 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

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

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

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

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

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

Необходимые элементы

  • Драйвер для шагового двигателя EasyDriver;
  • Небольшой шаговый двигатель;
  • Макетная плата;
  • Провода мама-мама;
  • Коннекторы;
  • Arduino Uno или подобный микроконтроллер;
  • Паяльник;
  • Источник питания на 12 В (или регулируемый источник питания)

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

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

Шаговые двигатели обеспечивают вращение ротора на определенный угол (или шаг) при соответствующем сигнале управления. Это дает вам возможность получить полный контроль над положением узлов механизмов и выходить в заданную позицию. С конструктивной точки зрения это реализуется за счет подачи питания на разные катушки внутри двигателя. Правда, есть и свои недостатки — надо постоянно обеспечивать питание шагового двигателя при его выстое в заданной позиции. В данной статье в детали мы вдаваться не будем. Конструктивные особенности шаговых двигателей и их принцип действия раскрыты в статье двигатели и Arduino. Здесь ограничимся лишь тем фактом, что для управления шаговым двигателем, вы должны задать ему необходимое количество шагов в одном или противоположном направлениях и указать скорость шага.

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

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

Сборка драйвера

Самый простой метод использования драйвера EasyDriver — установить на нем коннекторы для последующей установки на макетной плате. Теоретически, можно закрепить коннекторы и на макетной плате.

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

Читайте так же:
Как отрегулировать карбюратор мотоблок луч

Коннекторы на макетке под драйвер

EasyDriver на мекетке

EasyDriver - общий вид с коннекторами

Схема подключения

После распайки пришло время подключить драйвер к Arduino. Схема подключения несложная и приведена на рисунке ниже.

Примечание. Маленький шаговый двигатель выглядит не так, как он изображен на схеме подключения. У него должен быть коннектор с четырьмя разъемами на конце. Этот коннектор можно напрямую подключить к разъему с четырьмя коннекторами на драйвере (см. Рисунок после распайки выше). Только обратите внимание на даташит вашего двигателя. Бывает такое, что разводка кабелей не соответсвует пинам на драйвере.

Важно! Шаговые двигатели потребляют больше тока, чем может предоставить Arduino. В связи с этим мы будем питать Arduino от 12 В. При этом вход для питания (М+) на EasyDriver подключен к пину Vin на Arduino. Благодаря этому, можно запитывать Arduino и двигатель от одного источника.

EasyDriver Шаговый двигатель Arduino

Программа Arduino для вращения шагового двигателя

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

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

digitalWrite(dirpin, LOW); // Устанавливаем направление

for (i = 0; i<4000; i++) // итерации повторяются до 4000 микрошагов

digitalWrite(steppin, HIGH); // В этих двух строках LOW и HIGH дается команда шаговому двигателю двигаться

delayMicroseconds(500); // Эта задержка соответствует максимальной скорости данного конкретного шагового двигателя

digitalWrite(dirpin, HIGH); // Смена направления

for (i = 0; i<4000; i++) // Аналогично предыдущему блоку

Дальнейшие эксперименты с шаговыми двигателями

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

Датчик холостого хода. Шаговый мотор (регулятор ХХ)

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

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

В системе управления шаговый мотор выполняет несколько основных функций:

Датчик холостого хода. Шаговый мотор (регулятор ХХ)

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

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

Читайте так же:
Клапан регулировки уровня для скиммера

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

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

• Третьей функцией шагового мотора является компенсация контролируемой блоком управления нагрузки (включение/выключение вентилятора, кондиционера и т.д.).

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

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

Заданные обороты холостого хода в пределах 50 об/мин поддерживаются в основном быстрым контуром управления — регулятором по углу опережения зажигания.

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

Шаговый мотор определяет медленную составляющую в регулировании, отслеживая режимные переходы системы управления.

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

Эти неисправности возникают и при неполадках в цепях управления шаговым мотором и могут быть определены при помощи тестера ДСТ-2М, который позволяет задавать положение шагового мотора как параметр блока управления.

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

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

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

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

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

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

Алгоритм управления шагового мотора достаточно сложен, и сбои в его работе могут быть выявлены только специальным тестером, например, ДСТ-6С.

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

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

Читайте так же:
Регулировка водопроводный клапан давления

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

Форум сайта mypractic.ru

Плавная регулировка скорости вращения ШД с помощью потенциометра

Плавная регулировка скорости вращения ШД с помощью потенциометра

  • Цитата

Сообщение Олег » 30 янв 2018, 13:25

Помогите чайнику разобраться-)
Имеем Ардуино Уно
Драйвер Step/Dir TB6560-V2.
Шаговый двигатель 200 шагов за оборот.

На данном этапе необходимо:

иметь возможность ПЛАВНО регулировать скорость вращения двигателя в диапазоне 100-350 оборотов в минуту с помощью потенциометра, с выводом значения на 7-сегментный LED индикатор.

Посоветуйте, пожалуйста, какие библиотеки использовать.

Re: Плавная регулировка скорости вращения ШД с помощью потенциометра

  • Цитата

Сообщение Эдуард » 30 янв 2018, 14:14

    Для STEP/DIR драйвера библиотека StepDirDriver (урок 35).
    Для управления LED индикатором библиотека Led4Digits (урок 20).

1. Из урока 35 загрузить в Ардуино скетч программы драйвера ШД с управлением AT командами, и с помощью программы верхнего уровня (из того же урока) проверить работу драйвера, самого двигателя, диапазон регулировки скорости, крутящий момент двигателя и т.п. Таким образом вы сможете полностью проверить работу вашей системы, как электронику, так и механику. Только регулировка будет не от потенциометра, а с компьютера.

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

#include <TimerOne.h>
#include <StepDirDriver.h>

StepDirDriver myMotor(10, 11, 12); // создаем объект типа StepDirDriver, задаем выводы для сигналов

void setup() <
Timer1.initialize(250); // инициализация таймера 1, период 250 мкс
Timer1.attachInterrupt(timerInterrupt, 250); // задаем обработчик прерываний
myMotor.setMode(0, false); // шаговый режим, без фиксации при остановке
myMotor.setDivider(10); // делитель частоты 10 (1 оборот в сек)
>

void loop() <
myMotor.step(100);
>

//————————————— обработчик прерывания 0,25 мс
void timerInterrupt() <
myMotor.control(); // управление двигателем
>

3. К этому скелету программы начинаете добавлять все остальное. Подключаете потенциометр и считываете его значение. Я бы настоятельно советовал это значение усреднить. Об этом написано в уроке 13.

4. Масштабируете значение потенциометра в необходимый вам диапазон для скорости вращения (setDivider). Рабочий диапазон определяете на пером этапе.

5. Загружаете масштабируемое значение в setDivider. Теперь вы можете регулировать скорость вращения двигателя от потенциометра.

6. Остается добавить индикацию. читаете урок 20, добавляете библиотеку, выводите на индикатор значение setDivider. Проверяете.

7. Переводите значение setDivider в нужный вам формат, например число оборотов в минуту.

Я вижу это как-то так.

Re: Плавная регулировка скорости вращения ШД с помощью потенциометра

  • Цитата

Сообщение Nicolaich » 13 ноя 2019, 22:21

День добрый. По этой теме у меня получился скетч ( на базе уроков Эдуарда);

/* Здесь попытка управлять скоростью вращения ШД потенциометром
* Функция map(value, fromLow, fromHigh, toLow, toHigh)
Функция пропорционально переносит значение (value) из текущего диапазона зна-
чений (fromLow .. fromHigh) в новый диапазон (toLow .. toHigh), заданный пара-
метрами.
Функция map() не ограничивает значение рамками диапазона, как это делает функ-
ция constrain(). Функция contsrain() может быть использована до или после вы-
зова map(), если необходимо ограничить допустимые значения заданным диапазо-
ном.
Обратите внимание, что "нижняя граница" может быть как меньше, так и больше
"верхней границы". Это может быть использовано, чтобы "перевернуть" диапазон:
y = map(x, 1, 50, 50, 1);
Возможно использование отрицательных значений:
y = map(x, 1, 50, 50, -100);
Функция map() оперирует целыми числами. При пропорциональном переносе
дробная часть не округляется по правилам, а просто отбрасывается.
Параметры:
value — значение для переноса;
fromLow — нижняя граница текущего диапазона;
fromHigh — верхняя граница текущего диапазона;
toLow — нижняя граница нового диапазона, в который переносится значение;
toHigh — верхняя граница нового диапазона.
Возвращаемое значение — значение в новом диапазоне

Читайте так же:
Itunes чтобы не синхронизировал автоматически

*/
#include <TimerOne.h>
#include <StepDirDriver.h>

StepDirDriver myMotor(10, 11, 12); // создаем объект типа StepDirDriver, задаем выводы для сигналов
// Step,Dir, Enable
int potPin= A0; // потенциометр
int inputCod; // код входного напряжения на A0

void setup() <
Serial.begin(9600);
//pinMode(A0, INPUT);установка режима аналогового входа для A0

Timer1.initialize(250); // инициализация таймера 1, период 250 мкс
Timer1.attachInterrupt(timerInterrupt, 250); // задаем обработчик прерываний
myMotor.setMode(0, false); // шаговый режим, без фиксации при остановке
myMotor.setDivider(10); // делитель частоты 10 (1 оборот в сек)
>

int inputCod = analogRead(A0); // чтение напряжения на входе A0
inputCod = map(inputCod, 0,1023, 5, 15);

Шаговый двигатель, Как понизить скорость вращения?

Всем привет!
Есть отрезная линейка, автоматическая, приводится в действие двигателем, как выяснилось он шаговый! Нужно понизить скорость вращения, желательно придумать регулятор если возможно, кто сможет сделать? Чтобы не считали рекламой, скиньте пожалуйста номера в личку!
Если что, я из Краснодара!

Двигатель установлен на отрезной линейке!
Пожалуйста не удаляйте, не знаю куда еще обратиться!

Комментарии 23

А двигатель который? Который отрезает или который двигает резак влево-вправо?

Который двигает резак лево-право!

Тогда там асинхронный однофазный может быть с вероятностью 1 к 1000. Для быстрой остановки и реверса такого типа двигателя производителю надо намного больше заморачиваться — инерционность ротора выше, пусковой момент у асинхронного мотора низкий в отличие от двигателя постоянного тока.
Насчет уменьшения скорости — если на валу мотора есть шестерня, попробуйте поменять её на другую с меньшим числом зубьев, это уменьшит подачу на один оборот отрезного инструмента.
Иначе надо реально лезть в схему которая формирует импульсы для БУ ШД и искать место где регулировать — может менять кварц на драйвере ШД, может перепрограммировать контроллер еси он там есть, может найдётся какой-то незаметный подстроечный резистор, который решит вашу проблему.

спасибо за советы! сам думаю поменять шкив на больший

Если сам поять умеешь то на сайте cxema.my1.ry найдёшь нужное тебе, на микроконтроллере или на логике

Никакой там не шаговый двигатель, асинхронный двигатель с конденсатором, 220в.

Читайте так же:
Сузуки сх4 регулировка натяжения ремня генератора

это что то меняет?

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

Народ всё правильно написал, надо бы сначала осмотреть устройство и по месту принимать решение о способе хирургического вмешательства в конструкцию. А способов много.

Слить прошивку, дизассемблировать микрокод контроллера ИДОЙ, подправить код, скомпилировать и зашить обратно)) Делов то))
Или понизить частоту кварца.

Можно поставить делитель частоты и понижать скорость в 2/4/8/16/и так далее раз.

Регулировка оборотов шаговаго двигателя

  • Главная />
  • Повышение квалификации для специалистов />
  • Микроконтроллерное управление двигателями
  • Главная
  • Новости
  • Программирование для студентов 2 курса
    • Программирование микроконтроллеров
    • Проектирование на ПЛИС
    • Параллельное программирование
    • Основы Linux
    • Основы Web-технологий
    • Программирование на CUDA
    • Нейронные сети
    • Оборудование и ПО
      • По направлению "Микроконтроллеры"
      • По направлению "ПЛИС"
      • 2019/2020 год
      • 2018/2019 год
      • 2017/2018 год
      • 2016/2017 год
      • 2015/2016 год
      • 2014/2015 год
      • 2013/2014 год
      • 2012/2013 год
      • 2011/2012 год
      • Программирование на языке Си
      • Программирование 32-разрядных микроконтроллеров
      • Микроконтроллерное управление двигателями
      • Прыгающий робот
      • Шумомер
      • BiVoS
      • Как добраться
      • Сотрудники
        • Никита Михеев
        • Денис Янышев
        • Владимир Милицин
        • Иван Буткарев
        • Анатолий Сизов
        • Виталий Шишаков
        • Алексей Алексеев
        Курсовая работа на тему численного моделирования антропоморфных робототехнических систем

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

        Cеминар «Проектирование СБИС средствами САПР компании Mentor Graphics»

        23 января 2019 года Физический факультет МГУ имени М.В. Ломоносова совместно с компанией Mentor Graphics проводит семинар «Проектирование СБИС средствами САПР компании Mentor Graphics»

        Инженерный meetup. Итоги.

        Друзья, всем спасибо за участие в нашем инженерном meetup! Было интересно.

        • Печать

        Микроконтроллерное управление двигателями

        Занятие 1: Введение. Двигатели в задачах современной автоматизации. Виды двигателей, их особенности. Достоинства и недостатки. Характеристики двигателей. Тестовая плата для контроллера двигателей. Обзор. Демонстрация процесса работы.

        Занятие 2: Инверторы. Полный мост. ШИМ модуляция. Вывод ШИМ сигнала, вращение DC двигателем с помощью тестовой платы.

        Занятие 3: Обратная связь. Необходимость обратной связи. Датчики тока. Датчики оборотов. Энкодеры. Запуск программы, для работы с энкодером.

        Занятие 4: Контур ПИД регулирования. Построение контура ПИД регулирования на примере DC двигателя. Регулировка скорости вращения.

        Занятие 5: Продолжение работы над ПИД (ПИ, П) регулятором для DC двигателя. Подбор параметров: ручной и автоматический.

        Занятие 6: Управления шаговым двигателем. Режимы работы: полный шаг, микрошаг. Overdrive режим. Основные методики контроля тока в обмотке: chopper регулирование, PWM-модуляция. Микроконтроллерная реализация микрошагового (полушагового, полношагового) режима при помощи модуляции ШИМ.

        Занятие 7: Микрошаговый (полушаговый, полношаговый) режим работы шагового двигателя. Продолжение работы над программой.

        Занятие 8: Принципы векторного регулирования. Системы координат. Векторное управление асинхронным электродвигателем.

        Занятие 9: Векторное управление синхронным электродвигателем с постоянными магнитами. Структурная схема системы регулирования скорости синхронного двигателя.

        голоса
        Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector