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

Биполярный контроллер шагового двигателя схема

Как сделать драйвер биполярного шагового двигателя ARDUINO

Недавно приобрел ARDUINO в Китае. Мыслей по изготовление различных устройств- море. Мигать светодиодом на плате очень быстро надоело, захотелось чего то более существенного. Конечно надо бы заказать набор но цена его несколько завышена и пришлось что то искать в интернете, что то придумывать самому. В итоге все равно заказал в том же Китае различные датчики, реле, индикаторы… Немного попозже пришел знаменитый индикатор 1602. С ним поучился работать, тоже довольно быстро освоился. Захотелось поуправлять шаговым двигателем от CD-DVD привода. Ждать с Востока посылку 1-2 месяца не захотелось и я решил попробовать сделать драйвер самостоятельно. Нашел вот такую схему включения биполярного шагового двигателя:

Схема включения биполярного шагового двигателя на микросхеме L293D

Микросхемы в нашей глуши я не нашел, или заказывать микросхемы в российских интернет-магазинах по стоимости 2-3 готовых драйверов за 1 микросхему. Микросхема представляет собой Н- мост из транзисторов. Кстати включать в мост надо или составные биполярные транзисторы (так называемые сборки Дарлингтона), или полевые транзисторы. Одиночным биполярным транзисторам нужна хорошая раскачка, которую контроллер дать не может, иначе получается очень высокое падение напряжение на транзисторе из за того что он открыться не может. Т.к. хороший товарищ занимается ремонтом компьютеров, то с полевиками проблем не возникло. Сначала хотел сделать на биполярниках- но получается в 2 раза больше транзисторов, что не совсем хорошо для габаритов драйвера, да и ток они выдержат гораздо меньший. Выпаяв около десятка полевых транзисторов и почитав на них даташиты я снова впал в уныние- в интернете есть схемы только на парах полевых транзисторов n- и p- типов. И ниодной схемы на транзисторах одного типа я просто не нашел. В компьютерах же используются транзисторы n- типа. Пришлось мудрить на макетной плате небольшой девайс на полевиках, попробовал управлять светодиодами, получилось и я решил собрать готовое устройство. Драйвер не нуждается в налаживании ибо налаживать здесь практически нечего. Единственная проблема возникла с программным обеспечением. Нашел даташит на похожий двигатель и по графикам работы выставил состояния выходов. После этого осталось только подобрать delay и все- устройство готово! Собственно схема замены микросхемы L293D.

Драйвер на полевых транзисторах n-типа

Данные транзисторов даны просто так- в мультисиме никак не смог их изменить. Я использовал транзисторы P60N03LDG в корпусе ТО-252 . В ней все довольно просто: при поступлении напряжения на один из входов U1 или U2 открываются 2 транзистора в верхнем и нижнем плече, причем крест- накрест. Таким образом переключается полярность напряжения на двигателе. А чтобы не подавалось напряжение сразу на 2 входа (это вызовет КЗ цепи питания) и использовал схему включения L293D. При таком включении NPN-транзистор не позволяет открывать сразу все 4 транзистора Н-моста. Кстати 1 двигатель будет управляться по 2 выходам Arduino, что крайне важно для экономии выходов и входов микроконтроллера. Еще условие- минусовой провод транзисторных ключей обязательно должен быть соединен с минусовым выводом платы управления. Питание подается на плату управления от Arduino, на ключи- от внешнего БП. Это позволяет подключить достаточно мощные двигатели. Все зависит от характеристик транзисторов. Итак для одного драйвера вам нужно 8 полевых транзисторов (P60N03LDG или любые другие n-канальные), любые 2 SMD-биполярных транзистора NPN (у меня стоят с маркировкой t04), smd-резисторы типоразмера 0805, и 4 такие же перемычки того же размера (на них написано 000 или просто 0). Все эти детали можно найти на старых и негодных материнских платах. Обязательно проверьте детали перед установкой.

Плата драйвера Arduino

Выкладываю плату в формате Layout6. Плата драйвера скачать. Замечу что у вас должен получится именно такой вид- надписи должны быть читабельными а не перевернутыми, учитывайте это при печати платы, детали ведь будут установлены со стороны дорожек. Разъемы тоже выпаиваем из материнки феном, отрезаем сколько по надо количеству пинов и впаиваем в нашу плату- так гораздо удобнее и надежнее нежели чем паять провода в плату. Разберемся с назначением выводов: выводы Out1 и Out2- подключение обмоток шагового двигателя, In1,2- вход от Arduino, ±5V- питание управления от Arduino (сделал двойной разъем т.к. подключать питание можно шлейфом сразу к нескольким блокам), 2 перемычки располагаются на другой стороне платы, по ним подается напряжение на ключи. Размер платы- 43х33мм. Кто желает- может еще больше минимизировать.

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

Диаграмма работы шагового двигателя

Цифрами указаны номера шагов. Исходя из того что при переключении контроллером высокого уровня на низкий драйвер сам переключит нужные ключи, то пишем, например, состояния только для верхних графиков каждой обмотки. Первый шаг: первая обмотка- первый провод +(HIGH), другой автоматически переключится драйвером на минус (LOW), напоминаю что описываем по первому проводу каждой обмотки. Вторая обмотка: первый провод — (LOW), второй + (HIGH), второй провод переключится драйвером автоматически. Переходим к первому изменению графика. Это 2 шаг. Описываем состояние только первых проводов. 1 провод первой обмотки остался HIGH, 1 провод второй сменился с LOW на HIGH . Третий шаг- 1 провод первой обмотки сменился HIGH на LOW, 1 провод второй остался HIGH. Четвертый шаг: 1 провод первой обмотки остался LOW, 1 провод второй обмотки сменился с HIGH на LOW. Описывать можно с любого шага, главное сохранять последовательность. Чтобы двигатель вращался в другую сторону нужно просто сдвинуть в диаграмме значения любой обмотки на полцикла в любую сторону. Таким образом можно писать программное обеспечение для драйверов. Нужно лишь знать диаграмму и правильно описать ее состояние на выходные пины.

Читать еще:  Вольво с40 тюнинг двигателя

Теперь подключаем плату к Arduino, двигателю. Забрасываем такой скетч:

// подключаемся к 8,9 выводам arduino
int input1 = 8;
int input2 = 9;
int stepCount = 5; //задержка между шагами регулирует скорость двигателя

void setup()
<
pinMode(input1,OUTPUT);
pinMode(input2,OUTPUT);
>

void loop()
<
//1-ый шаг
digitalWrite(input1,LOW);
digitalWrite(input2,HIGH);
delay(stepCount);

//2-ой шаг
digitalWrite(input1,HIGH);
digitalWrite(input2,HIGH);
delay(stepCount);

//3-ий шаг
digitalWrite(input1,HIGH);
digitalWrite(input2,LOW);
delay(stepCount);

digitalWrite(input1,LOW);
digitalWrite(input2,LOW);
delay(stepCount);

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

Добавить комментарий Отменить ответ

Для отправки комментария вам необходимо авторизоваться.

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

Настройка тока на драйверах шагового двигателя

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

Шаг — угол шага бывает 1,8 град (200 шагов), 5.625 Градусов (64 шага), 7.2 градуса (50 шагов)

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

Количество фаз — количество контактов/проводов у шагового двигателя

  1. Биполярный двигатель — это наиболее простая конфигурация с 4 — мя выводами.
  2. Униполярный двигатель (5 или 6 контактов). Позволяет легко изменить магнитные полюса. Запитав сначала один вывод обмотки, а затем другой — мы изменяем магнитные полюса. Основным недостатком является то, что каждый раз, используется только половина доступных катушечных обмоток.
  3. 8-выводной шаговый двигатель может быть подключен любым из возможных способов:
    • 5 или 6-выводной униполярный,
    • биполярный с последовательно соединенными обмотками,
    • биполярный с параллельно соединенными обмотками,
    • биполярный с одним подключением на фазу для приложений с малым потреблением тока

Драйвер для шагового двигателя

Схема соединений шагового двигателя и Arduino

Скетч управления поворотом шагового двигателя с помощью кнопок.

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

Схема подключения шаговый двигатель -EasyDriver -Arduino

Схема подключения шаговый двигатель -EasyDriver -Arduino

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

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

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

Галерея схем подключения шагового двигателя к ардуино

    Похожие записи

Добавить комментарий Отменить ответ

Для отправки комментария вам необходимо авторизоваться.

Форум arduino.ua

  • Форум
  • » Программирование Arduino
  • » управление шаговым двигателем

#1 2019-10-14 14:36:03

управление шаговым двигателем

Помогите найти ошибку в скетче , мотор должен отработать 200 шагов по часовой и 100 против часовой и так в цикле , а шагает в одну сторону

  • Цитувати

#2 2019-10-14 15:14:42

Re: управление шаговым двигателем

во второй строке очепятка или как?

  • Цитувати

#3 2019-10-14 15:54:04

Re: управление шаговым двигателем

вот тут ,AccelStepper Stepper1(1.13,12); //использует пин 12 и 13 для dir и step, 1 — режим «external driver» (A4988)
драйвер у меня другой

  • Цитувати

#4 2019-10-14 16:55:25

Re: управление шаговым двигателем

нашлась ошибка (1.13,12)

  • Цитувати

#5 2019-10-14 16:58:57

Re: управление шаговым двигателем

с 13 пина может переназначить чтоб не моргал светодиод ??

  • Цитувати

#6 2019-10-14 20:29:04

Re: управление шаговым двигателем

нашлась ошибка (1.13,12)

Главное, сам нашёл

  • Цитувати

#7 2019-10-14 21:24:09

Re: управление шаговым двигателем

нашлась ошибка (1.13,12)

Читать еще:  Влияние угла опережения зажигания на температуру двигателя

Главное, сам нашёл

Гость помог , ещё бы кнопку привязать вкл. выкл. к ENBL

  • Цитувати

#8 2019-10-14 22:26:54

Re: управление шаговым двигателем

ещё бы кнопку привязать вкл. выкл. к ENBL

так в чем проблема?

  • Цитувати

#9 2019-10-14 22:46:28

Re: управление шаговым двигателем

ещё бы кнопку привязать вкл. выкл. к ENBL

так в чем проблема?

Учится говорят никогда не поздно , у меня с этим не сраслось. я больше по старинке возьму двух позиционный тумблер и буду переключать ENBL с +5в на GND а вот скорость регулировать потенциометром больше надо
Я не программист а так зашёл сюда ,как то нужно было сделать счётчик и помогла мне одна программка Flprog, а там с шаговиками как-то не дружат но пытаются по мелочи я про форумчян

  • Цитувати

#10 2019-10-14 22:52:19

Re: управление шаговым двигателем

т.е вам нужно одной кнопкой включать/выключать? Ну так digitalWrite(номер_пина_к_которому_подключен_ENBL, HIGH); или LOW в зависимости от потребности

  • Цитувати

#11 2019-10-15 11:49:26

Re: управление шаговым двигателем

т.е вам нужно одной кнопкой включать/выключать?

Arduino и шаговый двигатель Nema

Теперь появилась задача поинтереснее. Управлять шаговым двигателем Nema 17 (даташит). Данная модель от оригинального производителя реализуется по цене около 40 долларов. Китайские копии стоят раза в полтора-два дешевле — около 20-30 долларов. Очень удачная модель, которая часто используется в 3D принтерах и CNC-проектах. Первая возникшая проблема — как подобрать драйвер для этого двигателя. Силы тока на пинах Arduino для питания не хватит.

Выбор драйвера для управления Nema 17

Google подсказал, что для оживления Nema 17 можно использовать драйвер A4988 от Poulou (даташит).

Кроме того, есть вариант использования микросхем L293D. Но A4988 считается более подходящим вариантом, так что на нем и остановились во избежание потенциальных проблем.

Подключение Nema 17 через A4988

Подключение было реализовано на основании этой темы на Arduino форуме. Рисунок приведен ниже.

Собственно, данная схема присутствует практически на каждом блоге-сайте, посвященном Arduino. Плата была запитана от 12 вольтового источника питания. Но двигатель не вращался. Проверили все соединения, еще раз проверили и еще раз.

Первая проблема

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

Вторая проблема

Когда все было распаяно, двигатель опять перестал двигаться. Почему? Не понятно до сих пор. Пришлось вернуться к макетной плате. И вот тут возникла вторая проблема. Стоит предварительно было посидеть на форумах или внимательно почитать даташит. Нельзя подключать-отключать двигатель когда на контроллер подано питание! В результате контроллер A4988 благополучно сгорел.

Эта проблема была решена покупкой нового драйвера на eBay. Теперь, уже с учетом накопленного грустного опыта, Nema 17 был подключен к A4988и запущен, но.

Шаговый двигатель сильно вибрирует

Во время вращения ротора двигатель сильно вибрировал. О плавном движении не было и речи. Гугл вновь в помощь. Первая мысль — неправильное подключение обмоток. Ознакомление с даташитом шагового двигателя и несколько форумов убедили, что проблема не в этом. При неправильном подключении обмоток двигатель просто не будет работать. Решение проблемы крылось в скетче.

Программа для Arduino

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

Основные выводы

  1. Никогда не подключайте/отключайте двигатель, когда на контроллер подано питание.
  2. При выборе источника питания, обратите внимание не только на вольтаж, но и на мощность адаптера.
  3. Не расстраивайтесь, если контроллер A4988 вышел из строя. Просто закажите новый 😉
  4. Используйте библиотеку AcclStepper вместо голого кода Arduino. Шаговый двигатель с использованием этой библиотеки будет работать без лишних вибраций.

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

Простой Arduino-код для проверки шагового двигателя

//простое подключение A4988

//пины reset и sleep соединены вместе

//подключите VDD к пину 3.3 В или 5 В на Arduino

//подключите GND к Arduino GND (GND рядом с VDD)

//подключите 1A и 1B к 1 катушке шагового двигателя

//подключите 2A и 2B к 2 катушке шагового двигателя

//подключите VMOT к источнику питания (9В источник питания + term)

//подключите GRD к источнику питания (9В источник питания — term)

int stp = 13; //подключите 13 пин к step

int dir = 12; //подключите 12 пин к dir

if (a 400) // вращение на 200 шагов в направлении 2

Второй код для Arduino для обеспечения плавного вращения двигателя. Используется библиотека AccelStepper library.

AccelStepper Stepper1(1,13,12); //использует пин 12 и 13 для dir и step, 1 — режим «external driver» (A4988)

int dir = 1; //используется для смены направления

Читать еще:  Двигатель 167 fmm тюнинг

Stepper1.setMaxSpeed(3000); //устанавливаем максимальную скорость вращения ротора двигателя (шагов/секунду)

Stepper1.setAcceleration(13000); //устанавливаем ускорение (шагов/секунду^2)

Stepper1.move(1600*dir); //устанавливает следующее перемещение на 1600 шагов (если dir равен -1 будет перемещаться -1600 -> противоположное направление)

dir = dir*(-1); //отрицательное значение dir, благодаря чему реализуется вращение в противоположном направлении

delay(1000); //задержка на 1 секунду

Stepper1.run(); //запуск шагового двигателя. Эта строка повторяется вновь и вновь для непрерывного вращения двигателя

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

Arduino UNO как осциллограф

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

Скачиваем программу Processing , после чего её устанавливать не нужно — она запускается с EXE-файла.

Arduino основы программирования

Здесь мы научимся писать элементарную программу способную сделать что-либо интересное для новичка. Здесь вы узнаете, как написать простейший скетч для Arduino используя стандартый IDE. Мы пока пропустим использование входов-выходов, но обратим внимание на связь через USB. Синтаксис языка Arduino точно повторяет язык C, поэтому на нем мы останавливаться не будем. Мы сконцентрируемся на конкретных аспектах Arduino языка, в котором вы можете использовать все принципы, которые присущи языку C: переменные, операторы, состояния, типы, константы и т.д.

Как работают шаговые двигатели

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

Подключение к ардуино датчика вращения енкодер KY-040

Енкодер вращения KY-040 — это поворотный датчик, который индицирует степень поворота оси и в каком направлении она вращается.

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

Комплект антенн для усиления сигнала FPV для Hubsan H501S H107D

Специальный комплект для увеличения дистанции при управлении квадрокоптером Hubsan H501S H107D из магазина Алиэкспресс.

Начало работы с Arduino в Windows
Необходимое железо — Arduino и USB-кабель

В этом руководстве предполагается, что вы используете Arduino Uno, Arduino Duemilanove, Nano или Diecimila.

Вам потребуется также кабель стандарта USB (с разъемами типа USB-A и USB-B): такой, каким, к примеру, подключается USB-принтер. (Для Arduino Nano вам потребуется вместо этого кабель с разъемами А и мини-В).

Так же сейчас популярны стали платы с микро юсб — например от китайских производителей Robotdyn.Они мне больше импонируют со стороны

универсальности , но как говорят олдфаги — чем больше металла в разъеме ,тем он надежнее !

Arduino и использование двигателей. Подключение двигателя постоянного тока и управление им.

1. Управляем маленькими моторчиками

Управление маленьким двигателем может быть может осуществляться довольно просто. Если двигатель достаточно маленький, он может быть непосредственно соединен с выводом Arduino, и просто изменяя уровень управляющего сигнала от логической единицы до нуля будем контролировать моторчик. Этот проект раскроет вам основную логику в управлении электродвигателем; однако, это не является стандартным способом подключения двигателей к Arduino. Мы рекомендуем, вам изучить данный способ, а затем перейти на следующую ступень — заняться управлением двигателями при помощи транзисторов.

Подключим миниатюрный вибромоторчик к нашему Arduino.

Серводвигатель MG995 и Arduino ,подключение,распиновка + код

Серводвигатель MG995 и Arduino

Серводвигатель MG995 поставляется с проводом длиной 30 см и 3-мя ‘S’ контактами типа мама. Выходной вал сервопривода поворачивается приблизительно на 120 градусов (60 градусов в каждом направлении). Для управления сервами MG995 можно использовать любые контроллеры с питанием логики 5 В, в том числе и Arduino.

Сервомашинка изготавливается в пластиковом корпусе. На выходе стоит редуктор с металлическими шестернями. В комплекте поставляются пластиковые качалки различных форм-факторов.

Управление двигателем постоянного тока через реле с помощью ардуино

Подключаем мотор, источник питания и реле

Позитивный контакт мотора — switch 1 COM input на реле

Отрицательный контакт мотора — switch 2 COM input на реле

9v позитивный контакт на батарейке — switch 1 NO на реле и switch 2 NO на реле

9v отрицательный контакт на батарейке — switch 1 NC и switch 2 NC на реле

Модуль GSM GPRS SIM800 MicroSIM с антенной и ардуино

Миниатюрный модуль GSM/GPRS сотовой связи на основе компонента SIM800L , разработанного компанией SIMCom Wireless Solutions. Русскоязычная версия сайта SIMCom здесь. Стандартный интерфейс управления компонента SIM800L предоставляет доступ к сервисам сетей GSM/GPRS 850/900/1800/1900МГц для отправки звонков, СМС сообщений и обмена цифровыми данными GPRS. Поставляется с встроенной антенной, также можно подключить дополнительные антенны для улучшения качества сигнала.

Управлять модулем можно при помощи персонального компьютера через преобразователь интерфейса USB-UART или непосредственно через UART модулем микроконтроллера самостоятельной разработки или Arduino, Raspberry Pi и аналогичными.

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