Библиографическое описание:

Шибеко Р. В., Ульянов А. В. Управление шаговым двигателем с использованием микроконтроллера ATmega16 и LabVIEW // Молодой ученый. — 2016. — №9. — С. 341-346.



В настоящей статье рассмотрен один из множества вариантов управления шаговым двигателем (ШД) 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 — разрядный микроконтроллер семейства AtmelAVR модель 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.

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

voidFSM_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 код буквы А) состояние функции voidFSM_MOTOR (void) переключается на caseSteps и т. д.

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

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

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

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

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

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

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

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

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

Литература:

  1. Ульянов, А.В., Коваленко М. В. Использование СПК207 для управления привода ОВЕН ПЧВ3 по протоколу ModbusRTU / А. В. Ульянов // Молодой ученый. — 2016. — № 5. — С. 86–91.
  2. Ульянов, А. В. Совершенствование электромеханических систем газомагнитных опор высокоскоростных роторов для повышения эффективности их работы / А. В. Ульянов // Молодые ученые — Хабаровскому краю материалы ХVII краевого конкурса молодых ученых и аспирантов. — Хабаровск: 2015. — С. 254–257.
  3. Ульянов, А. В. Система управления активно управляемой газомагнитной опорой / А. В. Ульянов // Современные тенденции технических наук Материалы III Международной научной конференции. — Казань: Молодой ученый, 2014. — С. 49–52.
  4. Ульянов, А. В. Математическая модель управляемой газомагнитной опоры / А. В. Ульянов, С. М. Копытов, С. В. Стельмащук // Электротехнические комплексы и системы управления. — 2014. — № 3. — С. 16–20.

Обсуждение

Социальные комментарии Cackle