Авторы: Шибеко Роман Владимирович, Ульянов Александр Владимирович

Рубрика: Технические науки

Опубликовано в Молодой учёный №9 (113) май-1 2016 г.

Дата публикации: 14.04.2016

Статья просмотрена: 560 раз

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

Шибеко Р. В., Ульянов А. В. Управление шаговым двигателем с использованием микроконтроллера 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 Ульянов, А. В. Совершенствование электромеханических систем газомагнитных опор высокоскоростных роторов для повышения эффективности их работы / А. В. Ульянов // Молодые ученые — Хабаровскому краю материалы ХVII краевого конкурса молодых ученых и аспирантов. — Хабаровск: 2015. — С. 254–257 Ульянов, А. В. Система управления активно управляемой газомагнитной опорой / А. В. Ульянов // Современные тенденции технических наук Материалы III Международной научной конференции. — Казань: Молодой ученый, 2014. — С. 49–52.
  2. Ульянов, А. В. Математическая модель управляемой газомагнитной опоры / А. В. Ульянов, С. М. Копытов, С. В. Стельмащук // Электротехнические комплексы и системы управления. — 2014. — № 3. — С. 16–20.
Основные термины (генерируются автоматически): управления ШД, вращения ротора ШД, программы управления ШД, Молодой ученый, программы оправки кода, драйвер управления ШД, задачи управления ШД, сигналов управления ШД, программа управления ШД, алгоритмы управления ШД, Nanotec ST5918M1008, ШД модели nanotec, 8-ми проводного ШД, качестве драйвера ШД, током обмотки ШД, управления шаговым двигателем, микросхем l297, драйвер ШД, направление вращения ротора, ротор ШД.

Обсуждение

Социальные комментарии Cackle
Задать вопрос