УДК 621.3.07 Колосков С.Ю. *Колосков Сергей Юрьевич, студент 4 курса факультета технологии и профессионально педагогического образования, Т-ПРОИ101, Алтайской государственной академии образования имени В.И. Шукшина, г. Бийск. Эл. почта:Kraizer1993@mail.ru Сл. телефон: +7(923)6497670 Захаров П.В. *Захаров Павел Васильевич, доцент кафедры физики и информатики, Алтайской государственной академии образования имени В.И. Шукшина, г. Бийск. Эл. почта:zakharovpvl@rambler.ru Сл. телефон: +7(923)6480674 Леготкин Н.В. *Леготкин Николай Валерьевич, старший преподаватель кафедры физики и информатики, Алтайской государственной академии образования имени В.И. Шукшина, г. Бийск. Эл. почта: legotkinu@yandex.ru Сл. телефон: +7(906)9417984 УПРАВЛЕНИЕ УНИПОЛЯРНЫМ ШАГОВЫМ ДВИГАТЕЛЕМ С ПОМОЩЬ USB ПЕРСОНАЛЬНОГО КОМПЬЮТЕРА Ключевые слова: Шаговый двигатель, драйвер шагового двигателя, драйвер USBasp, макетная плата AVR-USB-MEGA16, микроконтроллер ATMEGA32, библиотека LibUSB. В статье затрагивается вопрос управлению униполярным шаговым двигателем через USB порт персонального компьютера. Задача состоит в том, чтобы с помощью USB персонального компьютера и драйвера управлять шаговым двигателем. В рамках данной работы предлагается решение данного вопроса с помощью: драйвера шагового двигателя состоящего из макетной платы AVR-USB-MEGA16 и силового модуля на основе транзисторов, системы программирования Delphi, дополнительной библиотеке для программирования LibUSB, прошивки для микроконтроллера ATMEGA32 и драйвера USBasp. Шаговый двигатель широко используется в различных направлениях: в периферийных устройствах вычислительных машин, серийное печатающее устройство, двухкоординатный XY-графопостроитель, в станках с числовым программным управлением, XY-столы и вращающиеся столы, фрезерные станки, чертежные автоматы и другие применения. В работе рассмотрена система для управления шаговым двигателем через USB персонального компьютера и способ ее сборки. Для реализации данной системы необходимо приготовить макетную плату AVR-USBMEGA16 [1] к работе. Первое, что нужно сделать - это прошить плату. Она снабжена загрузчиком bootloadHID, что позволит прошить ее через USB. Для этого устанавливаем перемычку между ножками 4 и 6 коннектора U1 ISP и подключаем плату к персональному компьютеру через USB. На ней загорится красный светодиод и в системе Windows обнаружится программатор USBasp. После чего запускаем программу для прошивки микроконтроллера и загружаем в нее прошивку для ATMEGA32 с необходимой частотой [2], прошиваем. Отключаем макетную плату AVR-USB-MEGA16 и удаляем перемычку. Второе – необходимо установить драйвер USBaps [3] для платы, если его нет на персональном компьютере, на котором выполняется работа. Снова подключением плату к USB компьютера и он обнаруживает новое устройство. Если на нем не установлен драйвер, то он не сможет определить его. Для распознания платы через диспетчер устройств вручную устанавливаем драйвер. Теперь плата полностью готова к работе. Силовой модуль системы состоит из четырех транзисторов (КТ972Б), четырех резисторов (330 Ом) и четырех диодов (1N4001S). Они соединены между собой по следующей схеме (Рис. 1) [2]. Рис. 1. Схема силового модуля Работает силовой модуль по следующей схеме. При открывании одного из транзисторов, ток будет протекать через соответствующую обмотку шагового двигателя. Для управления транзисторами используются свободные выходы микроконтроллера платы AVRUSB-MEGA16. Тип транзисторов зависит от мощности подключаемого двигателя, напряжения его питания и нагрузочной способности портов микроконтроллера. В данной конструкции использовались транзисторы КТ972Б, обладающие достаточным коэффициентом усиления по току, с допустимым напряжением коллектор-эммитер до 45 В, ток коллектора – до 4 А. Поскольку нагрузка индуктивная, в схеме стоят защитные диоды. Использовались 1амперные диоды 1N4001S, но можно обойтись и без них. Защитные диоды увеличивают время спада тока в обмотках шагового двигателя, что уменьшает максимально возможную частоту вращения шагового двигателя. Если убрать диоды, то время спада тока окажется минимальным, двигатель сможет вращаться быстрее, но при этом возникают опасные для транзисторов выбросы ЭДС самоиндукции, которые могут превысить допустимое для них напряжение 45 В. Собираем все по схеме, представленной на рисунке 1, и техническая часть работы на этом заканчивается. Перед тем как начать разработку управляющего алгоритма необходимо установить на персональный компьютер дополнительную библиотеку LibUSB [4]. Устанавливается она как обычная программа. После чего в среде программирования Delphi создаем, или берем готовый [2], дополнительный модуль LibUSB для библиотеки. Теперь приступаем к написанию общей части непосредственно самой программы. Общая часть включается в себя функции: получения ASCII последовательности, открытие устройство USB и послания сообщения контролеру через USB. Общую часть также можно взять из источника [2]. Отправка сообщения макетной плате через USB осуществляется через функцию SendUSBControlMessage (PC2USB,RQ_IO_WRITE, 1, aPORTA, 0, data); SendUSBControlMessage … – имя функции. … PC2USB … – сообщение отправляется от персонального компьютера в USB. … RQ_IO_WRITE … - команда на запись. .. 1, .. – что записываем в микроконтроллер. … aPORTA, … - куда записываем или имя порта микроконтроллера. … 0, data - что записываем в буфер обмена микроконтроллера. Представленная выше функция подает напряжение в 5 вольт на свободный выход P1 макетной платы AVR-USB-MEGA16. SendUSBControlMessage (PC2USB,RQ_IO_WRITE, 2, aPORTA, 0, data) – подает напряжение на выход P2, а P1 станет без напряжения, так как 2 в двоичной системе счисления 0010, 0 пойдет на P1, а 1 на Р2. Для активации Р1 и Р2 одновременно достаточно написать SendUSBControlMessage (PC2USB,RQ_IO_WRITE, 3, aPORTA, 0, data). 3 в двоичной системе счисления это 0011. Чтобы сбросить напряжение на всех выходах «порта А» необходимо использовать команду SendUSBControlMessage (PC2USB,RQ_IO_WRITE, 0, aPORTA, 0, data). Используя данную функцию, задаем последовательную активацию обмоток шагового двигателя. При этом опираемся на управляющею последовательность, представленную в таблицах 1 и 2. Таблица 1. Управляющая последовательность для полного шага Номер обмотки шагового двигателя Импульс Обмотка 1 Обмотка 2 Обмотка 3 Обмотка 4 1 + - - - 2 - + - - 3 - - + - 4 - - - + Полный шаг. В данной последовательности одновременно подключается только одна. Необходимо 48 пульсов, чтобы ротор двигателя совершил один полный оборот (360 градусов). Каждый пульс перемещает ротор примерно на 7,5 градусов. Таблица 2. Управляющая последовательность для полушага Номер обмотки шагового двигателя Импульс Обмотка 1 Обмотка 2 Обмотка 3 Обмотка 4 1 + - - - 2 + + - - 3 - + - - 4 - + + - 5 - - + - 6 - - + + 7 - - - + 8 + - - + Полушаг. При такой управляющей последовательности ротор нуждается в 96 пульсах, чтобы совершить один полный оборот (360 градусов). Каждый пульс перемещает ротор приблизительно на 3,75 градуса. Приведенная схема позволяет управлять шаговым двигателем через ПК, по средством интерфейса USB. В работе [5] рассмотрено использование данной системы для управления комплексом солнечных батарей, что позволяет повысить их эффективность на 30%. Библиографический список 1. Microsin.net [Электронный ресурс]: Макетная плата AVR-USB-MEGA16 – режим доступа: http://microsin.net/programming/AVR/avr-usb-mega16.html. 2. Заморочки одного автолюбителя [Электронный ресурс]: Работа с USB для чайников на примере AVR-USB-MEGA16. – режим доступа: http://vanoid.ru/avr/ 3. Thomas Fischl [Электронный ресурс]: USBasp - USB programmer for Atmel AVR controllers. – режим доступа: http://www.fischl.de/usbasp/ 4. Sourceforge [Электронный ресурс]: LibUSB-win32 - режим доступа: http://sourceforge.net/projects/libusb-win32/files/ 5. Фундаментальные науки и образование [Текст]: материалы II международная научно-практической конференции (Бийск, 2 – 5 марта 2014 г.) / Алтайская гос. академия обр-я им. В.М. Шукшина. – Бийск: ФГБОУ ВПО «АГАО», 2014. – 529 с. – 155 экс. (ВУЗу – 75 лет) – ISBN 978-5-85127-796-6