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

Молодой учёный

Управление шаговым двигателем с использованием микроконтроллера ATmega16 и LabVIEW

Технические науки
14.04.2016
4425
Поделиться
Библиографическое описание
Шибеко, Р. В. Управление шаговым двигателем с использованием микроконтроллера ATmega16 и LabVIEW / Р. В. Шибеко, А. В. Ульянов. — Текст : непосредственный // Молодой ученый. — 2016. — № 9 (113). — С. 341-346. — URL: https://moluch.ru/archive/113/27780/.


Управление шаговым двигателем сиспользованием микроконтроллера ATmega16 иLabVIEW

Шибеко Роман Владимирович, старший преподаватель;

Ульянов Александр Владимирович, старший преподаватель

Комсомольский-на-Амуре государственный технический университет

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

Ключевые слова: шаговый двигатель, управление, драйвер шагового двигателя, микроконтроллер, Atmel, AVR, ATmega 16, L297, L298N, LabVIEW.

В современной технике, в качестве исполнительного устройства для различных систем управления часто используют ШД. В качестве примера будет рассмотрен восьми- проводной ШД модели Nanotec ST5918M1008. Данный ШД будем подключать по схеме подключения 8-ми проводного ШД с последовательным соединением обмоток (см. рисунок 1).

Рис. 1. Схема подключения ШДNanotec ST5918M1008

В качестве драйвера ШД будем использовать распространенную связку микросхем L297 + L298N схема включения, которых взята с технической документации показана на рисунке 2.

Рис. 2. Драйвер для управления ШД на базе связки микросхем L297 + L298N

Причина выбора такой комбинации драйвера (рисунок 2) послужила повсеместное широкое распространение данной связки для задачи с вязанной с управлением ШД.

 CLOCK (CLK, pin 18): тактовая частота вращения ротора ШД;

 CW/CCW (DIR, pin 17): задается направление вращения ротора ШД (условно — при лог. «1», присутствующей на данном входе, ротор ШД будет вращаться по часовой стрелке, при лог. «0» — против часовой стрелки);

 Vref (pin 15): управление максимальным током обмотки ШД. Если напряжение на токосчитывающих резисторах R15 и R16 превысит напряжение на входе Vref, соответствующая обмотка отключается до того момента, пока напряжение на R15/R16 не станет меньше Vref;

 HALF/FULL (H/F, pin 19): выбор между полношаговым и полушаговым режимами вращения ротора ШД. Если на этом входе логический 0 — выбран полношаговый режим работы, если единица-полушаговый;

 CONTROL (CTRL, pin 11): по этой линии можно выбрать группу сигналов управления ШД, которые будут промодулированы («изрезаны») сигналом от внутренних «токовых» компараторов (это которые осуществляют контроль тока обмотки). Если на данной линии логический нуль — модулируются сигналы INH1 и INH2, если единица — сигналы A, B, C, D.

На имеющимся отладочном стенде для изучения основ микропроцессорной техники установлен 8 — разрядный микроконтроллер семейства Atmel AVR модель ATmega 16A, его мы и будем использовать в качестве микроконтроллера для рассматриваемой задачи управления ШД.

Отладочный стенд подключен к ПК, на ПК написана программа управления ШД, программа посылает команды на наш МК, а тот в подает нужные управляющие сигналы на драйвер ШД такой подход применялся за частою во всех проектах где требуется участие ПК [1–3].

Функция приема команд от ПК:

// USART Receiver buffer

#define RX_BUFFER_SIZE 2

char rx_buffer[RX_BUFFER_SIZE];

#if RX_BUFFER_SIZE <= 256

unsigned char rx_wr_index,rx_rd_index,rx_counter;

#else

unsigned int rx_wr_index,rx_rd_index,rx_counter;

#endif

// This flag is set on USART Receiver buffer overflow

bit rx_buffer_overflow;

// USART Receiver interrupt service routine

interrupt [USART_RXC] void usart_rx_isr(void)

{

char status,data;

status=UCSRA;

data=UDR;

if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)

{

rx_buffer[rx_wr_index++]=data;

#if RX_BUFFER_SIZE == 256

// special case for receiver buffer size=256

if (++rx_counter == 0) rx_buffer_overflow=1;

#else

if (rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0;

if (++rx_counter == RX_BUFFER_SIZE)

{

rx_counter=0;

rx_buffer_overflow=1;

}

#endif

}

}

Прием команды происходит по прерыванию от USART.

Основная функция управления ШД :

void FSM_MOTOR (void)

{

typedef enum {StInit,Steps,Full,Frr} State_Type;

static State_Type state = StInit;

switch(state){

case StInit:

if (rx_buffer[0]==0x41)

{

PORTA.1=0;

state = Steps;

break;

}

else

if (rx_buffer[0]==0x42)

{

PORTA.1=1;

state = Steps;

break;

}

else

if (rx_buffer[0]==0x46)

{

PORTA.1=1;

state = Full;

break;

}

else

if (rx_buffer[0]==0x52)

{

state = Frr;

break;

}

state = StInit;

break;

case Steps:

for (i = 0; i < rx_buffer[1]; i++)

{

PORTA.0 = 0;

delay_us (1000);

PORTA.0 = 1;

delay_us (1000);

}

rx_buffer[0]=0;

state = StInit;

break;

case Full:

FULL ();

state = StInit;

break;

case Frr:

FRR ();

state = StInit;

break;

default: StInit;

break;

}

}

Функция void FSM_MOTOR (void) работает следующим образом, у нее есть четыре состояния StInit — инициализация, Steps — шаг, Full — вращение, Frr — поворот на угол. По приходу кодового сигнала работы, например 0x41 (ASCII код буквы А) состояние функции void FSM_MOTOR (void) переключается на case Steps и т. д.

Пример программы оправки кода 0x41 приведен в среде графического программирования LabVIEW и показан на рисунке 3.

Рис. 3. Блок диаграмма программы оправки кода 0x41

Для удобства работы с ШД был разработан дружественный интерфейс программы управления ШД в LabVIEW рисунок 4.

Рис. 4. Интерфейс программы управления ШД в LabVIEW

Разработанный программно аппаратный комплекс позволяет непосредственно управлять работой ШД с ПК. Пользователь без особых усилий сможет разобраться с дружественным интерфейсом.

Подведя итог можно сделать следующие выводы:

 Использую связку L297 + L298N можно разработать не дорогой драйвер управления ШД.

 Если требуется быстрая разработка программного обеспечения под ПК можно использовать распространенный язык графического программирования в LabVIEW.

 Использования микроконтроллеров позволяет разнообразить алгоритмы управления ШД причем для связи с ПК требуется один USART.

Литература:

  1. Ульянов, А.В., Коваленко М. В. Использование СПК207 для управления привода ОВЕН ПЧВ3 по протоколу Modbus RTU / А. В. Ульянов // Молодой ученый. — 2016. — № 5. — С. 86–91.
  2. Ульянов, А. В. Совершенствование электромеханических систем газомагнитных опор высокоскоростных роторов для повышения эффективности их работы / А. В. Ульянов // Молодые ученые — Хабаровскому краю материалы ХVII краевого конкурса молодых ученых и аспирантов. — Хабаровск: 2015. — С. 254–257.
  3. Ульянов, А. В. Система управления активно управляемой газомагнитной опорой / А. В. Ульянов // Современные тенденции технических наук Материалы III Международной научной конференции. — Казань: Молодой ученый, 2014. — С. 49–52.
  4. Ульянов, А. В. Математическая модель управляемой газомагнитной опоры / А. В. Ульянов, С. М. Копытов, С. В. Стельмащук // Электротехнические комплексы и системы управления. — 2014. — № 3. — С. 16–20.
Можно быстро и просто опубликовать свою научную статью в журнале «Молодой Ученый». Сразу предоставляем препринт и справку о публикации.
Опубликовать статью
Ключевые слова
шаговый двигатель
управление
драйвер шагового двигателя
микроконтроллер
Atmel
AVR
ATmega 16
L297
L298N
LabVIEW
Молодой учёный №9 (113) май-1 2016 г.
Скачать часть журнала с этой статьей(стр. 341-346):
Часть 3 (cтр. 231 - 355)
Расположение в файле:
стр. 231стр. 341-346стр. 355

Молодой учёный