Простой тестер униполярных шаговых двигателей на attiny2313 и uln2004

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

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

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

Шаговые двигатели делятся на два типа: – униполярные шаговые двигатели,

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

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

Рис. 1

У униполярного шагового двигателя есть 4-ре обмотки соединенные по схеме показанной на рис. 1 Принцип работы униполярного шагового двигателя следующий: поочередно на каждую из 4-х обмоток подается напряжение положительной полярности, в это время общий вывод соединен с отрицательным проводом питания.

Получается за каждую коммутацию(подачу напряжения на одну из 4-х обмоток) ротор шагового двигателя смещается на один шаг, ширина этого шага зависит от конструкции самого шагового двигателя, для униполярного шагового двигателя показанного на рис. 2 и рис.

3 шаг составляет примерно: 22х8=176(шагов)

365/172=2,104 градуса.

рис. 2

рис. 3

Его я успешно выкурочил из древнего привода магнитных дисков размером 5,25 дюйма, кстати привод известной фирмы TEAC ))) Данный шаговый двигатель выполнял функцию перемещения магнитной головки по пазу в дискете, собственно через который и считывалась вся информация с магнитного диска.

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

В качестве силового каскада можно успешно применить 4 пары полевых транзистора из уже известной сборки IRF7105(схема показана на рис. 5),
Рис. 5

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

Принципиальная схема включения шагового двигателя через драйвер L293DNE:

Алгоритм управления униполярным шаговым двигателем очень простой, необходимо выполнять поочередную коммутацию четырех обмоток двигателя. То есть выдавать на четыре бита порта микроконтроллера последовательность типа: 1000 0100 0010

0001

Соответственно крутим поочередно обмотки A, B, C, D: 1000 – обмотка A 0100 – обмотка B 0010 – обмотка C

0001 – обмотка D

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

Так же существует “полушаговый режим”, коммутация обмоток при полушаговом режиме следующая: 1000 – 1-е пол шага обмотки А 1100 – 2-е пол шага обмотки А 0100 – 1-е пол шага обмотки B 0110 – 2-е пол шага обмотки B 0010 – ………….. 0011 – ………….. 0001 – …………..

1001 – 2-е пол шага обмотки D

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

Программа подходит для любого микроконтроллера AVR Attiny2313, Atmega8, Atmega16. Итак, вот и сама программа (программа для полношагового режима):

  1. #include //Подключаем библиотеку ввода/вывода

  2. #define nop() {asm(“nop”);}//подключаем функция для формирваония задержки

  3. void right (void);//Прототип функции поворота ротора ШД вправо

  4. void left (void);//Прототип поворота влево

  5. int x, j, m=100; //переменные

  6. //Функция задержки

  7. void delay(int t)

  8. {

  9. for (x=0; x

Источник: https://avrlab.com/node/60

Контроллер маломощного униполярного шагового двигателя

Предыстория Понадобилось мне прошлой осенью восстановить измерительный стенд. Одна из главных частей стенда — система протяжки лески с закрепленной на ней трубочке сквозь СВЧ-резонатор (это такая медная банка весом 20-30 кг).

Причем протяжка должна осуществляться периодически с фиксацией положения (на 1мм подвинул, остановился, подождал секунду, ещё на 1мм подвинул, и так далее). Естественно сразу возникла мысль о шаговом двигателе (ШД). Но как им управлять? Разобрался.

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

MOTS1 (ST28), который в России продаётся Velleman`ом

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

Пришёл черёд разработки контроллера управления. Разработкой движили несколько целей:

  • Покупать «чужой» контроллер за 5 т.р. совесть не позволяла
  • Стоимость разработанного контроллера не должна превышать 500-700 р.
  • Простота конструкции для а) повторяемости устройства, б) проще отладка, в) неблагоприятная электромагнитная обстановка, г) чтобы те, кто найдут контроллер через 20 лет смогли разобраться как его «завести», т.к. я подобным образом разбирался с СВЧ-резонатором, пролежавшим в шкафу с конца 90х…
  • Управление с компьютера. Всяких FT232RL в Москве я не нашёл на тот момент, поэтому без всяких раздумий решил использовать интерфейс RS-232.
  • Питание от компьютерного разъёма (который питает харды, приводы и т.д.). Комп всё равно рядом, 2 напряжения: +5 для питания микросхем, +12 для ШД.

Хронология событий
Набросал схему.

Набросал плату в Sprint Layout.

Скачать файл с разводкой

Прошивка для ATmega8L.
Опыта было мало, время поджимало — решил не возиться с ассемблером и написал на каком-то из Basic`ов. Весила она около 25% флеша ATmega8L.

Перешёл на «железо»: нашёл лист шестилетней фотобумаги от уже убитого струйника Epson. Распечатал, заЛУТил (не с первого раза — бумага фигово липнет, старая наверно), спаял.

Для связи с COM-портом изпользуется разъём IDC-10 (изготовлен кабель IDC-10 — DB-9F), для соединения с пятью проводами ШД — штыри PLS-8 (3 штыря из 8 отломаны).

При макетировании из-за того, что ни осциллограф, ни комп не были заземлены, и особенностей БП компьютера, я спалил оба COM-порта. С тех пор использую переходник USB-COM на основе PL2303.

Во время тестирования и отладки понял, что зря я не предусмотрел кнопку сброса МК и разъём внутрисхемного программирования…Пришлось «подвесить» его на проводах =)

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

Зимой я решил переписать прошивку для МК.
Естественно уже на ассемблере. За неделю осилил, и вот что получилось

StepControl.asm

Краткое описание алгоритма программы:

  • 1. Инициализации и конфигурирование регистров, макросы, таблица векторов прерываний
  • 2. Оправляем пользователю приглашение «hello», что контроллер готов.
  • 3. Ждём, когда же пользователь проснётся и пришлёт МК команду.
  • Команда представляет собой 3 байта. Первый и второй байт — число периодов управляющих сигналов, третий байт — направление вращения.
  • Формирование пакетов управляющих сигналов возложено на программу на компьютере.
  • Передача осуществляется на скорости 38400бит/с.
  • 4. Принимаем команду, сохраняем в RAM. Читаем из RAM в РОН.
  • 5. Запускаем таймер.
  • 6. Переходим к пункту 3.

А тем временем таймер по прерыванию совпадения:

  • 1. Уменьшаем счётчик сигналов на единицу. Если не дошли до нуля, то
  • 1.1. Определяет направление вращения
  • 1.2. Выбирает следующую управляющую комбинацию сигналов из памяти программ
  • 1.3. Выводим соответствующую управляющую комбинацию в PORTB.
  • 2. Если счётчик сигналов равен нулю — тормозим таймер.

Такой алгоритм позволяет «пополнять» содержимое счётчика сигналов во время работы таймера (естественно не в момент прерывания) и добиться «непрерывной» работы ШД. Но этим уже занимается программа написанная на VisualBasic 6.0 (нравится он мне, как бы его не обижали любители С# и Delphi).

Скачать программку

Во время тестирования программы поднимал и опускал двигателем болт, привязанный на нитке…Вспомнилась детская игрушка башенный кран 🙂

Оценка стоимости всего этого безобразия:

№ п/п Наименование Цена, руб Кол-во Стоимость, руб 1 Вилка штыревая PLS-8 1.6 1 1.6 2 Конденсатор керамич. 0.1мкФ, 50В 3 1 3 3 Конденсатор электролит. 1мкФ, 50В 14 5 70 4 Корпус DP-9C для D-SUB 9pin 13 1 13 5 Микроконтроллер ATmega8L 78 1 78 6 Панель под микросхему 16 контактов 2.6 2 5.2 7 Панель под микросхему 28 контактов 4.6 1 4.6 8 Преобразователь уровней MAX232CPE 16 1 16 9 Разъём DB-9F 23 1 23 10 Разъём IDC-10F на шлейф 16 1 16 11 Разъём IDC-10MR вилка угловая 23 1 23 12 Разъём питания THP-4M 8.8 1 8.8 13 Сборка транзисторов ULN2003AN 15 1 15 14 Шаговый двигатель ST28 320 1 320 Итого: 597.2

Как видно, уложился в 600р. Может конечно что-то и подзабыл, но одна из поставленных задач выполнена.

Выводы
Получился довольно «узконаправленный» контроллер. Но задачи создать универсальное устройство не было. Изготавливается довольно быстро, всё в DIPах и выводным монтажом.

Размеры — наверно чуть больше 2х спичечных коробков.

Возможность модернизации: Легко задать необходимую управляющую последовательность в коде прошивки, ассемблировать, зашить в МК и пользоваться, код занимает около 3% памяти — места хватит ещё светомузыку приделать 🙂

Возможные применения

  • детская игрушка башенный кран =)))
  • системы протяга всевозможных нитей, лески, например, занавески открывать по команде с компа
  • маломощные приводы (до 6Вт, т.к. ULN2003AN больше 500мА не терпит, если конечно ШД столько сам потянет)
  • системы, требующие точного позиционирования (число управляющих импульсов на 1 оборот ШД равно 2048!!!, жаль мощность очень невелика)

Источник: http://easyelectronics.ru/kontroller-malomoshhnogo-unipolyarnogo-shagovogo-dvigatelya.html

Контроллер для двухфазного униполярного шагового двигателя на микроконтроллере ATtiny2313

14

• ••

Известия ДГПУ, №2, 2015

УДК 621

КОНТРОЛЛЕР ДЛЯ ДВУХФАЗНОГО УНИПОЛЯРНОГО

ШАГОВОГО ДВИГАТЕЛЯ НА МИКРОКОНТРОЛЛЕРЕ ATTINY2313

THE CONTROLLER FOR THE TWO-PHASE UNIPOLAR

STEPPER MOTOR WITH THE ATTINY2313 MICROCONTROLLER

© 2015 Расулов М. М., Магомедов Г. М., Нажмудинов А. М.

Дагестанский государственный педагогический университет

© 2015 Rasulov M. M., Magomedov G. M., Nazhmudinov A. M.

Dagestan State Pedagogical University

Резюме. В статье дается описание контроллера для двухфазного униполярного шагового двигателя на микроконтроллере ATtiny2313 с управляющими сигналами по протоколу STEP/DIR/ENABLE, который может быть использован для шаговых двигателей станков с ЧПУ.

Abstarct. The authors of the article give a description of the controller for the two-phase unipolar stepper motor with the ATtiny2313microcontroller with the control signals according to the STEP/DIR/ENABLE protocol, which can be used for stepper motors of CNC machines.

Rezjume.V stat'e daetsya opisanie controllera dlja dvyhfaznogo unipolyarnogo shagovogo dvigatelya na microcontrollere ATtiny2313s upravlyaushimi signalami po protocolu STEP/DIR/ENABLE, kotorui mojet but ispolzovan dlya shagovuh dvigateley stankov s CHPY.

Ключевые слова: контроллер шагового двигателя, микроконтроллер ATtiny2313, протокол STEP/DIR/ENABLE.

Keywords: stepper motor controller, ATtiny2313microcontroller, STEP/DIR/ENABLE protocol.

Kljuchevye slova: controller shagovogo dvigatelya, mikrokontroller ATtiny2313, protocol

STEP/DIR/ENABLE.

Работ по использованию микроконтроллеров разных типов в качестве драйверов шагового двигателя (ШД) достаточно много, но подробного описания простого для повторения контроллера ШД с открытым исходным кодом по протоколу STEP/DIR/ ENABLE с применением прерывания по сигналу STEP на базе ATtiny2313 найти не удалось [1].

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

За основу программного управления ШД микроконтроллера был взят алгоритм стандартного протокола STEP/DIR/ENABLE с уровнем сигналов TTL (STEP-шаг, DIR-направление, ENABLE-включение). По сигналу STEP (по нарастающему фронту от лог.

0 до лог. 1) шаговым двигателем делается один шаг вперед или назад, в зависимости от состояния входа DIR. Если состояние на выводе DIR лог. 1, то ШД делает шаг по часовой стрелке, если на выводе DIR лог. 0 -против. Сигнал ENABLE подключает ШД к питанию, если на этом выводе лог. 0, и отключает, если на этом выводе лог. 1.

При получении сигнала ENABLE на отключение ШД может свободно вращаться, так как питание на ШД не поступает для удержания полученной позиции. Статические сигналы на выводах DIR и ENABLE должны быть выставлены до появления динамического сигнала STEP программно или аппаратно.

Назначение и состояние сигналов по этому протоколу приведены в таблице 1.

Естественные и точные науки

• ••

15

Таблица 1

Сигналы по протоколу

Наименование СТОП Почасовое Против ОТКЛЮЧЕНИЕ

STEP (ШАГ) Любое значение j i I j гп Любое значение

DIR (НАПРАВЛЕНИЕ) Любое значение L Любое значение

ENABLE (ВКЛЮЧЕНИЕ) 0 0 0 1

За основу контролера ШД была взята достаточно распространенная микросхема ATtiny2313 из семейства микроконтроллеров AVR.

Схема контроллера, показанная на рисунке 1, разрабатывалась и настраивалась в среде симулятора программы Proteus 7. Схема состоит из трех идентичных блоков A(X) на базе микроконтроллеров ATtiny2313 и одно-

го блока концевых выключателей и общей схемы сопряжения порта компьютера LPT c контроллером. На схеме не показаны фильтрующие конденсаторы по цепям питания схемы: они обычно расположены на платах блоков питания, но можно для надежности установить электролитические конденсаторы емкостью 100-1000 mkF на 50 V непосредственно на каждой плате.

Соединение к шаговым двигателям осуществляют от фазных выводов платы контроллера D0, D1, D2, D3 и вывода питания +U. Напряжение питания шаговых двигателей +U рассчитывают с учетом их технических характеристик. В качестве управляющих транзисторов можно применить любые транзисторы соответствующей мощности, в данном случае использованы транзисторы

КТ829 отечественного производства.

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

16

• ••

Известия ДГПУ, №2, 2015

Таблица 2

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

БТЕР(шаг) 1 2 3 4 5 6 7 8

D0 1 1 0 0 0 0 0 1

D1 0 1 1 1 0 0 0 0

D2 0 0 0 1 1 1 0 0

D3 0 0 0 0 0 1 1 1

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

шится разрешающая способность по перемещению. Последовательность фаз включения обмоток в полношаговом режиме показана в таблице 3.

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

Таблица 3

Последовательность фаз включения обмоток в полношаговом режиме

БТЕР(шаг) 1 2 3 4 5 6 7 8

D0 1 0 0 0 1 0 0 0

D1 0 1 0 0 0 1 0 0

D2 0 0 1 0 0 0 1 0

D3 0 0 0 1 0 0 0 1

со значений:

case 1: PORTB = 0b00000001; break; case 2: PORTB = 0b00000011; break; case 3: PORTB = 0B00000010; break; case 4: PORTB = 0B00000110; break; case 5: PORTB = 0B00000100; break; case 6: PORTB = 0B00001100; break; case 7: PORTB = 0B00001000; break; case 8: PORTB = 0B00001001; break; на значения:

case 1: PORTB = 0b00000001; break; case 2: PORTB = 0b00000010; break; case 3: PORTB = 0B00000100; break; case 4: PORTB = 0B00001000; break; case 5: PORTB = 0B00000001; break; case 6: PORTB = 0B00000010; break; case 7: PORTB = 0B00000100; break; case 8: PORTB = 0B00001000; break; Разработка программного кода драйвера ШД для микроконтроллера проводилась в интегрированной среде Code VisionAVR [1] с Proteus 7 на языке Си. Исходный код программы с пояснениями приведен в листинге 1.

Листинг 1. Программный код драйвера ШД для микроконтроллера на языке Си.

Chip type: ATtiny2313 AVR Core Clock frequency: 4,000000 MHz // Внутренняя частота тактового генератора 4 мГц.

Memory model: Tiny External RAM size: 0 Data Stack size: 32

******************************************

***********/

#include<\p>

#include<\p>

unsigned char S=1; // объявляем символьную переменную без знака (8-бит) S и присваиваем

1.

unsigned char x=0; // объявляем символьную переменную без знака (8-бит) х.

unsigned char x1=0; // объявляем символьную переменную без знака (8-бит)х1.

// External Interrupt 0 service routine interrupt [EXT_INT0] void ext_int0_isr (void)

{

// Обработка прерывания по входу INTO. При появлении сигнала STEP – всегда попадаем в этот блок.

// Уточнение. Порт D ножка PD2 (6-я ножка – на прерывании даем имя в тексте STEP)

x1=!PIND.3; // чтение состояния PD3, 7-Я НОЖКА – ОБОЗНАЧАЕМ в тексте ВКЛЮЧЕНИЕ ДВИГАТЕЛЯ ENABLE.

// Было по схеме 0В – ВКЛЮЧИТЬ и +5В – ВЫКЛЮЧИТЬ.

// ПОСЛЕ ЛОГИЧЕСКОГО ОТРИЦАНИЯ ПОЛУЧИМ +5В – ВКЛЮЧИТЬ; 0 –

ВЫКЛЮЧИТЬ.

// чтение PD4, 8-Я НОЖКА – ОБОЗНАЧАЕМ НАПРАВЛЕНИЕ DIR. 0В – ПРОТИВ ЧАСОВОЙ; +5 – ПО ЧАСОВОЙ.

Естественные и точные науки

• ••

17

if (x1) {

if (PIND.4) {

// сюда попадаем при +5В на 8 ножке (DIR-направление) по часовому движению

+—+S;

// увеличить значение Sна единицу

if (S==9) {

S=1;

//Если S равно 9, то присвоить S единицу и продолжить вниз, если нет, то оставить S.

// как есть

и продолжим программу дальше вниз

// Здесь продолжаем работать с полученным значением S switch (S) { // По теку-

щему значению S делаем выбор одного шага

//и выходим из цикла вниз.

case 1: PORTB =

0b00000001; break;

case 2: PORTB = 0b00000011; break; case 3: PORTB = 0B00000010; break; case 4: PORTB = 0B00000110; break; case 5: PORTB = 0B00000100; break; case 6: PORTB = 0B00001100; break; case 7: PORTB = 0B00001000; break; case 8: PORTB = 0B00001001; break;

else { // Сюда попадаем при +0В на 8 ножке (DIR-направление) против часового направления.

–S; // В

этом случае, наоборот, уменьшаем S.

if (S==0) {// Если S равно 0, то присвоим ему новое значение 8 и продолжаем,

S=8;

};//если нет, то оставляем значение S, как есть.

switch (S) { //

По значению S делаем выбор одного шага и выходим из цикла.

case 1: PORTB = 0b00000001; break; case 2: PORTB = 0b00000011; break; case 3: PORTB = 0B00000010; break; case 4: PORTB = 0B00000110; break; case 5: PORTB = 0B00000100; break; case 6: PORTB = 0B00001100; break; case 7: PORTB = 0B00001000; break; case 8: PORTB = 0B00001001; break;

};

};

delay_ms(100); } // Ставим

задержку 100 мс. Задержку нужно подобрать экспериментально.

else

// Сюда попадет, когда придет сигнал ВЫКЛЮЧИТЬ ДВИГАТЕЛЬ ENABLE.

PORTB = 0b00000000; //Выставляем все нули на порт В,

//при этом S сохраняет свое значение, и ждем опять прерывание.

// Declare your global variables here void main(void)

{ _

// Declare your local variables here

// Crystal Oscillator division factor: 1

#pragma optsize-

CLKPR=0x80;

CLKPR=0x00;

#ifdef _OPTIMIZE_SIZE_

#pragma optsize+

#endif

// Input/Output Ports initialization // Port A initialization // Func2=In Func1=In Func0=In // State2=T State1=T State0=T PORTA=0x00;

DDRA=0x00;

PORTB=0x00;

DDRB=0b11111111; // Настраиваем PB0, PB1, PB2, PB3 на ВЫХОД управления ШД,

// а выводы pb4, pb5, pb6, pb7 тоже на ВЫХОД для семисегментного индикатора.

PORTD=0b00011100; // Подтягиваем

ножки pd2, pd3, pd4, т. е. 6, 7, 8 ножки к +5В.

DDRD=0b00000000; // Настраиваем все выводы порта D на чтение.

TCCR0A=0x00;

TCCR0B=0x00;

TCNT0=0x00;

OCR0A=0x00;

OCR0B=0x00;

TCCR1A=0x00;

TCCR1B=0x00;

TCNT1H=0x00;

TCNT1L=0x00;

ICR1H=0x00;

ICR1L=0x00;

OCR1AH=0x00;

OCR1AL=0x00;

OCR1BH=0x00;

OCR1BL=0x00;

//External Interrupt(s) initialization //INT0: On

//INT0 Mode: Rising Edge // INT1: Off

18

• ••

Известия ДГПУ, №2, 2015

// Interrupt on any change on pins PCINT0-7: Off

GIMSK=0b01000000; //В регистре GIMSK разрешаем (вывод 6 pd2 INTO) прерывание

MCUCR=0b00000011; //MCUCR настраиваем (вывод 6 pd2 INT0) прерывание по нарастающему фронту step. //Имеем в виду (вывод 6 pd2 INT0) подтянут на +5 В.

EIFR=0b01000000; //EIFR разрешаем прерывание int0. Это 6-й бит этого регистра.

// Timer(s)/Counter(s) Interrupt(s) initialization

TIMSK=0x00;

USICR=0x00;

UCSRB=0x00;

ACSR=0x80;

DIDR=0x00;

// Global enable interrupts

#asm(“sei”)

while (1) //Эта часть программы работает всегда, когда нет прерывания. Используем для контроля шага

{ // семисегментным индикатором,

но можно обойтись и без этой части.

x=S; // Присваиваем x текущее значение S.

x&=0b00000001; // По маске 0b00000001 выделяем первый бит

PORTB.4=x; // Выводим этот бит в порт В.4 и повторяем то же самое с битами В.5, В.6, В.7 x=S;

x&=0b00000010;

PORTB.5=x;

x=S;

x&=0b00000100;

PORTB.6=x;

x=S;

x&=0b00001000;

PORTB.7=x;

}

}

// Конец программы

Установка FUSE-битов: lfuse:0x64, hfuse:0xdf

Таблица 4

Установка FUSE-битов

+CKD1V0 DWEN CKOUT EESAVE SUT1

+ SPIEN + SUTO WDTON + CKSEL3 BODLEVEL2

CKSEL2 BODLEVEL1 + CKSEL1 BODLEVEL0 + CKSEL0

SELFPRGEN

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

Литература

1. Лебедев М. Б. CodeVision AVR. Пособие для начинающих. М. : Додэка-XXI, 2008. 594 с.

References

1. Lebedev M. B. CodeVision AVR. Handbook for beginners. M. : Dodeka-XXI, 2008. 594 p.

Literatura

1. Lebedev M. B. CodeVision AVR. Posobie dlja nachinajushhih. M. : Dodjeka-XXI, 2008. 594 s.

Статья поступила в редакцию 07.04.2015г.

Источник: https://cyberleninka.ru/article/n/kontroller-dlya-dvuhfaznogo-unipolyarnogo-shagovogo-dvigatelya-na-mikrokontrollere-attiny2313

Крутим шаговый двигатель

Источник: http://AVRproject.ru/publ/kak_podkljuchit/krutim_shagovyj_dvigatel/2-1-0-27

Шаговые двигатели и их микропроцессорные системы управления

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

Униполярный или биполярный шаговый привод (двигатель) – это специальный бесщеточный электрический двигатель постоянного тока, который разделяет полный оборот на несколько равных шагов. Для работы этого прибора необходимы специальная деталь: контроллер шагового двигателя.

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

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

Фото – Контроллер шагового двигателя

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

Видео: шаговые двигатели

Принцип работы

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

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

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

Когда они выровнены по отношению к ведущему электромагниту, они слегка смещаются к следующей магнитной детали.

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

Фото – Шаговый двигатель в разборном виде

Схема управления шаговым двигателем имеет следующий вид:

Фото – Управление шаговым двигателемФото – Схема управления шаговым двигателемФото – Простая схема

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

Описание типов шаговых двигателей

Всего существует четыре основных типа шаговых двигателей:

  • С постоянным магнитом
  • Гибридный синхронный шаговый
  • Переменный.

Привод с постоянным магнитом

Устройства с магнитами применяют магнитную деталь в роторе. Они работают на принципе притяжения или отталкивания ротором и статором электромагнитного мотора.

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

Устройства гибридного типа сочетают в себе оба описанных ранее принципа, это самые дорогие приборы.

Фото – Гибридный шаговый двигатель

Шаговые двухфазные двигатели

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

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

Униполярные двигатели

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

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

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

Фото – Чертеж двухфазного электродвигателя

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

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

Сопротивление между общим проводом и торцом катушки проволоки всегда равняется половине сопротивления между торцами катушек и торцами проводов.

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

Биполярный двигатель

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

Фото – Шаговый двухфазный двигатель

Также бывает трехфазный двигатель, у него более узкая область деятельности, такой шаговый механизм используется для фрезерных станков с ЧПУ (которые запускаются с компьютера), автомобилей типа Опель Вектра, Ниссан, Рено, ВАЗ и прочих транспортных средств, где необходимо использование дроссельной заслонке. Также для дисковода и принтера Epson используется шаговый мотор ЕМ-234 (EM-234).

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

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

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

Мощный шести-проводной мотор имеет пару проводов для каждой обмотки и центр-кран для каждой обмотки. Он может быть подключен как к однополярному, так и к биполярному устройству.

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

Для биполярного только один конец провода и один центральный кран каждой обмотки.

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

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

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

Фото – Установка шагового двигателя

Технические характеристики

Номинальное напряжение будет производить первичная обмотка при постоянном токе.

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

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

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

 

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

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

Их можно встретить преимущественно в старой технике: принтерах, копирах, дисководах (5-и дюймовых) и еще много где.

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

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

Если снять напряжение с этой обмотки и запитать другую, ротор повернется и зафиксируется в другом положении. Таким образом, если запитывать обмотки в определенной последовательности можно добиться вращения вала двигателя. <\p>

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

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

  Ротор при таком управлении принимает естественное положение относительно статора. Есть еще способ управления шаговиком в полношаговом режиме, когда одновременно запитываются две фазы, таким образом удается увеличить момент на валу на 40%. 

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

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

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

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

И от отношения тока в соседних обмотках зависит положение ротора – чем больший ток течет в обмотке по отношению к соседней, тем ближе к ней смещается ротор и наоборот.

Это позволяет увеличить дробление шага в десятки и сотни (!)  раз. 

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

 Схема базируется на микроконтроллере attiny2313 и имеет две кнопки. При нажатии на одну вал двигателя будет крутиться в одну сторону, при нажатии другой – в другую. В качестве ключевых транзисторов выбраны КТ829, способные протащить через себя до 8 Ампер. 

  К клемме Udvig подключаются выводы от середин обмоток и туда же подводится напряжение для питания обмоток. Величина напряжения зависит от самого двигателя, для моего например по документации максимальный ток в обмотках 1,5 Ампера, измерив сопротивление обмоток получил 2 Ома, отсюда вывод что напряжение питания не должно превышать 3 В ну или немного больше, учитывая что запитываться будет индуктивная нагрузка. Кстати диоды D2-D5 стоят для того, чтобы гасить скачки обратного напряжения после закрытия транзистора. Иначе есть вероятность что ЭДС самоиндукции возникающая во время выключения питания обмотки пробъет транзистор.

 Плата управления в сборе:

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

Код в Bascom-AVR:

$regfile = “2313def.dat”
$crystal = 4000000

Dim S As Byte                         'эта переменная следит за номером шага двигателя

S = 1

On Int0 Knopka1                       'даем имена обработчикам внешних прерываний

On Int1 Knopka2

Config Portb = Output                 'конфигурируем порт на выход

Config Portd.5 = Output               'конфигурируем ногу для подключения светодиода
Led Alias Portd.5                     'присваиваем имя LED выводу 5 порта D

'прерывания будут генерироваться пока на ноге низкий уровень, то есть пока кнопка будет нажата

Config Int0 = Low Level
Config Int1 = Low Level

'разрешаем прерывания

Enable Interrupts
Enable Int0
Enable Int1

'основной цикл программы, просто ждем прерывания

Do

Loop

Knopka1:                            'обработчик прерывания первой кнопки

Led = 1                             'зажигаем светодиод        

Incr S                              'увеличим номер шага

 If S = 9 Then                      'максимально возможный номер шага = 8

  S = 1
 End If

Select Case S                       'выбираем какие обмотки включать в зависимости от номера шага

Case 1 : Portb = &B00000001

Case 2 : Portb = &B00000011
Case 3 : Portb = &B00000010
Case 4 : Portb = &B00000110
Case 5 : Portb = &B00000100
Case 6 : Portb = &B00001100
Case 7 : Portb = &B00001000
Case 8 : Portb = &B00001001

End Select

Waitus 1000                                    'задержка между шагами

Led = 0                                        'гасим светодиод

Return

Knopka2:                                      'обработчик прерывания второй кнопки

Led = 1                                       'зажигаем светодиод        

Decr S                                        'тут все тоже самое, только в обратном направлении

 If S = 0 Then                                'минимально возможный номер шага = 1

  S = 8
 End If

Select Case S

Case 1 : Portb = &B00000001

Case 2 : Portb = &B00000011
Case 3 : Portb = &B00000010
Case 4 : Portb = &B00000110
Case 5 : Portb = &B00000100
Case 6 : Portb = &B00001100
Case 7 : Portb = &B00001000
Case 8 : Portb = &B00001001

End Select

Waitus 1000

Led = 0                                       'гасим светодиод

Return

End

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

Скачать файлы к проекту

UPD: Здесь допилил программу, теперь стало возможным управление шаговым двигателем с компьютера.

Марка двигателя Шаг, градус Число фаз Крутящий момент, Нт
ШД-1 15 4 40
ДШ-0,04А 22,5 4 100
ДШИ 200 1,8 4 0,25
ДШ-6 18 4 2300

Не менее активно используются ДШР-40 (четырехфазные), NEMA 23, SanyoDenkiSM28, FDD (floppy-disk – флоппи диск), SM-200-0.22, SP-57, STH-39D1112, Purelogic R&D с энкодером. Чтобы подобрать нужный электрический двигатель, Вам нужно просчитать нужные параметры мощности, напряжение и крутящего момента. Чтобы определить эти данные, Вам нужно провести расчет.

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

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

Но мы советуем разрабатывать систему контроля шагового двигателя именно на контроллере: Attiny2313, AVR-USB-MEGA16 (подсоединяется через usb), CNC-1318, HDD, PLCM-LPT, PIC, CD ULN, Arduino (Арудино) UNO, ATmega8, драйвер l293d.

Фото – Контроллер биполярного шагового двигателя

Обзор цен

Продажа шагового двигателя осуществляется в России, Украине, Беларуси и прочих странах в любом электротехническом магазине, цена зависит от типа прибора, мощности в кВт и его предназначения.

Город Цена на шаговый однополярный двигатель, у.е.
Киев 3500
Москва 3000
Харьков 4000
СПб 3500

Источник: https://www.asutpp.ru/shagovyj-dvigatel.html

Схема управления шаговым двигателем. Управление по компьютеру

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

  • Контроль за двумя униполярными шаговыми двигателями в режиме полного шага;
  • Выполнение команд через последовательный порт персонального компьютера;
  • Драйвер может быть использован с любой операционной системой, которая имеет стандартную программу терминала, например Hyper Terminal;
  • Применение шаговых двигателей напряжением до 24 В, 500 мА;
  • Источник стабилизированного питания – от 12 до 24 В.

Для преобразования сигналов последовательного порта (RS-232) в цифровые сигналы, подходящие для согласования в цифровых устройствах на основе TTL и КМОП, в драйвере применена интегральная микросхема MAX232.

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

Сигналы от микроконтроллера ATtiny2313 усиливаются микросхемой ULN2803A.

Микросхема ULN2803A  по входу имеет согласование с уровням  ТТЛ или пяти вольтовыми КМОП микросхемами, а на выходе же имеет достаточно мощные транзисторные высоковольтные ключи с открытым коллектором.

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

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

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

Программное обеспечение

Для управления необходима  терминальная программа, например Hyper Terminal. Для синхронизации терминальной программы с драйвером  вам нужно сделать необходимые настройки COM порта , а именно:

  • Скорость (бит/сек) – 9600.
  • Биты данных – 8.
  • Четность – нет.
  • Стоповые биты – 1.
  • Управление потоком – нет.

Есть 4 команды, которые можно направить на контроллер  через терминал:

m0rx и m0lx и m1lx и m1rx, где:

  • m0 – первый шаговый двигатель;
  • m1 – второй шаговый двигатель;
  • r – направление вращения (против часовой стрелки);
  • l – направление вращения (по часовой стрелки);
  • x – количество шагов ( от 0 до 32000 )

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

Скачать прошивку (1,1 Mb, скачано: 1 451)

Источник: http://www.joyta.ru/3466-sxema-upravleniya-shagovym-dvigatelem/

Управление шаговым двигателем. Схема и описание

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

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

Типы шаговых двигателей

Существуют три основных типа шаговых двигателей:

  1. Двигатель с постоянным магнитом
  2. Двигатель с переменным магнитным сопротивлением
  3. Гибридный двигатель

Шаговый двигатель с постоянными магнитами

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

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

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

Гибридный шаговый двигатель

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

Как работает гибридный двигатель

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

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

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

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

Изменяя ток первой до второй обмотки (В), магнитное поле статора поворачивается на 90 градусов и притягивает новую пару полюсов ротора.

В результате этого ротор поворачивается на 30 градусов, что соответствует полному шагу.

Возвращение к первому набору обмоток статора, но с питанием обратной полярности, изменяет магнитное поле статора еще на 90 градусов, и ротор поворачивается на 30 градусов (С).

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

Очевидно, что если полярность питания обмоток будет противоположной описанной, то вращение двигателя так же сменится на противоположное.

Режим полшага

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

Этот режим называется режимом «полшага», и большинство промышленных устройств применяют этот режим.

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

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

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

От того какая у шагового двигателя форма обмоток, двигатели делятся на униполярные и биполярные. У биполярного двигателя по 1 обмотке в каждой фазе. Всего две обмотки и соответственно 4 вывода (рис. а).

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

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

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

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

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

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

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

В качестве примера управления шаговым двигателем возьмем униполярный шаговый двигатель ШД-1ЕМ, имеющий характеристики: количество шагов — 200/об., ток обмотки – 0,5А, мощность — 12 Ватт.

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

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

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

Скачать программу управления шаговым двигателем (скачено: 1 678)

Источник: http://fornk.ru/1369-upravlenie-shagovym-dvigatelem/

Ссылка на основную публикацию
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}