Работа в Proteus
Работа в Proteus. Часть 4
К сожалению, разработчики этой программы не особо тревожились по поводу универсальности моделирования USB интерфейса и предоставили эту функцию в качестве «бонуса». Поэтому смоделировать работу USB получится лишь с теми микроконтроллерами, в которые встроен готовый модуль USB. Но иногда бывает и это полезно.
Сам разъем USB в библиотеке PROTEUS можно найти в разделе «connectors». В настройках модели USB порта в PROTEUS лазить не следует, это обусловлено тем, что их там просто не имеется.
Так как в PROTEUS возможна симуляция работы только микроконтроллеров со встроенным модулем USB, то я остановился на микроконтроллере PIC18F4550. Собственно схема — это USB драйвер шагового двигателя, например двигателя от флоппи дисковода (униполярного). Вот собственно схема:
Кроме микроконтроллера и двигателя есть еще одна микросхема-«драйвер» двигателя (более подробную информацию можно найти на сайте-первоисточнике).Для управлением двигателем потребуется программа usbstep (она находится в архиве).
При первом виртуальном подключении нашего устройства к компьютеру он запросит драйвер как и при реальном соединении. Драйвер лежит в архиве, просто нужно распаковать архив, и указать путь к папке «драйвер». После этого действия компьютер опознает устройство как «USB Stepping Motor Control».Далее запускаем программу usbstep и жмем «connect».Если все пройдет успешно, то в окне программы usbstep начнут подсвечиваться кнопки Turn left и Turn right.Сразу можно испытать конструкцию, так при нажатии кнопки Turn left вал двигателя должен вращаться влево , а при нажатии Turn right, соответственно вправо. Еще раз напоминаю: НЕ ПЫТАЙТЕСЬ СМОДЕЛИРОВАТЬ РАБОТУ USB С МИКРОКОНТРОЛЛЕРАМИ У КОТОРЫХ ЭТА ФУНКЦИЯ НЕ ЯВЛЯЕТСЯ ВСТРОЕННОЙ! Вы лишь потратите свое время!
Что касается моего обещания в прошлой статье – более сложная симуляция с использованием COM порта. Схема, представленная ниже может пригодится в быту, для автоматического контроля того же вентилятора.
Для управления используется программка, которая называется RealControl 4.0 (она находится в приложенном к проекту архиве).
Так как это всего лишь COM порт, то специальные драйвера не нужны. Так сказать «запускаем и смотрим». Но все же некоторые нюансы имеются. Так, в этой программе можно настроить таймер включения двигателя и период включения.
Кроме всего хорошего в PROTEUS имеется и один недостаток (по крайней мере в некоторых версиях)-неправильно указаны названия пинов COM порта. Но это так сказать «между прочим». Что касается самой схемы, то здесь можно подключить вход усилителя тока выполненного на транзисторе Q1 как к 8 так и к 1 и 6 выводам COM порта, это обусловлено особенностями программы RC4.
На этом цикл статей о работе в среде PROTEUS завершен. Надеюсь, что смог вам помочь разобраться в основном, удачи!
Управление униполярным шаговым двигателем с помощь USB персонального компьютера
*, студент 4 курса факультета технологии и профессионально педагогического образования, Т-ПРОИ101, Алтайской государственной академии образования имени , г. Бийск.
Эл. почта:Kraizer1993@mail.ru
Сл. телефон: +7(923)6497670
*, доцент кафедры физики и информатики, Алтайской государственной академии образования имени , г. Бийск.
Сл. телефон: +7(923)6480674
*, старший преподаватель кафедры физики и информатики, Алтайской государственной академии образования имени , г. Бийск.
Сл. телефон: +7(906)9417984
УПРАВЛЕНИЕ УНИПОЛЯРНЫМ ШАГОВЫМ ДВИГАТЕЛЕМ С ПОМОЩЬ USB ПЕРСОНАЛЬНОГО КОМПЬЮТЕРА
Ключевые слова: Шаговый двигатель, драйвер шагового двигателя, драйвер USBasp, макетная плата AVR-USB-MEGA16, микроконтроллер ATMEGA32, библиотека LibUSB.
В статье затрагивается вопрос управлению униполярным шаговым двигателем через USB порт персонального компьютера. Задача состоит в том, чтобы с помощью USB персонального компьютера и драйвера управлять шаговым двигателем. В рамках данной работы предлагается решение данного вопроса с помощью: драйвера шагового двигателя состоящего из макетной платы AVR-USB-MEGA16 и силового модуля на основе транзисторов, системы программирования Delphi, дополнительной библиотеке для программирования LibUSB, прошивки для микроконтроллера ATMEGA32 и драйвера USBasp.
Шаговый двигатель широко используется в различных направлениях: в периферийных устройствах вычислительных машин, серийное печатающее устройство, двухкоординатный XY-графопостроитель, в станках с числовым программным управлением, XY-столы и вращающиеся столы, фрезерные станки, чертежные автоматы и другие применения. В работе рассмотрена система для управления шаговым двигателем через USB персонального компьютера и способ ее сборки.
Для реализации данной системы необходимо приготовить макетную плату AVR-USB-MEGA16 [1] к работе.
Первое, что нужно сделать — это прошить плату. Она снабжена загрузчиком bootloadHID, что позволит прошить ее через USB. Для этого устанавливаем перемычку между ножками 4 и 6 коннектора U1 ISP и подключаем плату к персональному компьютеру через USB. На ней загорится красный светодиод и в системе Windows обнаружится программатор USBasp. После чего запускаем программу для прошивки микроконтроллера и загружаем в нее прошивку для ATMEGA32 с необходимой частотой [2], прошиваем. Отключаем макетную плату AVR-USB-MEGA16 и удаляем перемычку.
Второе – необходимо установить драйвер USBaps [3] для платы, если его нет на персональном компьютере, на котором выполняется работа. Снова подключением плату к USB компьютера и он обнаруживает новое устройство. Если на нем не установлен драйвер, то он не сможет определить его. Для распознания платы через диспетчер устройств вручную устанавливаем драйвер. Теперь плата полностью готова к работе.
Силовой модуль системы состоит из четырех транзисторов (КТ972Б), четырех резисторов (330 Ом) и четырех диодов (1N4001S). Они соединены между собой по следующей схеме (Рис. 1) [2].
Рис. 1. Схема силового модуля
Работает силовой модуль по следующей схеме. При открывании одного из транзисторов, ток будет протекать через соответствующую обмотку шагового двигателя. Для управления транзисторами используются свободные выходы микроконтроллера платы AVR-USB-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.
Управляющая последовательность для полного шага
Управление шаговым двигателем через USB
Это пример, демонстрирующий управление какими-либо устройствами через USB. Программа для PC написана на Delphi.
Особенности схемы
- Микроконтроллер PIC18F4550 с полноскоростным интерфейсом USB, работающим на частоте 48 МГц
- Совместимость с USB 2.0
- USB драйвер на кристалле
- Управление одним шаговым двигателем
- ПО микроконтроллера разработано под MPLAB C18
- Хост ПО для ПК написано на Delphi 6
Описание схемы
Иллюстрирующая пример принципиальная схема изображена на Рис. 1. Основная часть схемы – микроконтроллер PIC18F4550, ведущий обмен с ПК и управляющий шаговым двигателем. Питание +5 В для схемы берется с линии Vbus интерфейса USB. Исключение составляет шаговый двигатель, для питания которого нужен отдельный источник напряжения +Vmotor. Шина Vbus не может отдать в нагрузку ток, превышающий 250 мА. В связи с этим, если вы добавите в схему дополнительные элементы, и суммарный ток потребления превысит 250 мА, подключите к шине +5 В внешний источник, а Vbus не забудьте отсоединить.
Не соединяйте +Vmotor и Vbus.
В показанном примере шаговый двигатель управляется однофазным методом (A-C-B-D). При необходимости использовать другую схему управления, сделайте соответствующие изменения самостоятельно.
Рисунок 1. Пример схемы |
Надписи на схеме | |
Stepping Motor | Шаговый двигатель |
USB connector | Разъем USB |
Common[d] | Общий |
Прошивка микроконтроллера
ПО микроконтроллера разработано под MPLAB C18 с использованием USB драйвера фирмы Microchip. Если захотите добавить новые команды, или что-то изменить, посмотрите файлы user.c и use.h в папке user .
Программы для ПК
Программа для описываемого примера программа была написана на C++ программистами Microchip, и переписана автором на Delphi 6. По сравнению с оригиналом, изменены три команды:
- turn left (вращение влево),
- turn right (вращение вправо),
- Stop motor (остановить мотор).
Чтобы разобраться в деталях, смотрите PICDEM™ FS USB User’s Guide и соответствующие файлы.
Интерфейс ПК с устройством реализован с использованием драйвера Microchip General Purpose USB Windows driver, написанного на C/C++. Если вы захотите написать собственный драйвер, взгляните на страничку www.jungo.com. Вы найдете на ней много интересной информации о написании драйверов USB. Но учтите, что написать драйвер USB – задача непростая. Как минимум, вы должны хорошо представлять себе работу операционной системы.
Перевод: AlexAAN по заказу РадиоЛоцман
Шаговым двигателем драйвер usb схема
Изменение рабочего тока осуществляется с помощью регулятора Current regulation potentiometer. Он позволяет выбрать ток в диапазоне от 0.5 до 4.5А.
Выбор микрошага
Принудительный Enable 1:1 1:2 (A mode) 1:2 (B mode) 1:4 1:8 1:16
A и B mode — настройка изменения формы ШИМ. Подбирается эмпирическим путём.
Переключатель LATCH позволяет выбрать между автоматической и ручной перезагрузкой драйвера в случае возникновения ошибки. ON – автоматическая перезагрузка, OFF – ручная.
Схема подключения входов управляющтх сигналов с общим плюсом | Схема подключения входов управляющтх сигналов с общим минусом |
Общая схема подключения драйвера. Управляющие сигналы подключены с общим плюсом. | |
Общая схема подключения драйвера. Управляющие сигналы подключены с общим минусом. | |
Схема подключения драйвера к контроллеру с диференциальными выходами. |
Не горит индикатор питания
2) Низкое напряжение питания
1) Проверьте подключение к источнику питания
2) Увеличьте напряжение питания
Двигатель не вращается, нет удерживающего момента
1) Неправильное подключение двигателя
2) Нет разрешающего сигнала Enb
1) Правильно подключите двигатель
2) Инвертируйте сигнал Enable
Двигатель не вращается, есть удерживающий момент
Неверно подключен сигнал Step
Проверьте правильность подключения сигнала Step
Двигатель вращается в противоположном направлении
1) Неправильно подключена фаза ШД
2) Неверная полярность управляющего сигнала Dir
3) Установлен слишком низкий рабочий ток ШД
1) Поменяйте местами провода одной фазы ШД
2) Инвертируйте управляющий сигнал Dir
3) Правильно установите рабочий ток ШД
Настройка контроллера на ТВ6600.
Данные микросхемы являются развитием ТВ6560 и допускают номинальный ток на выходе до 4.5А (кратковременно 5А), что позволяет применять более мощные шаговые двигатели. Помимо этих микросхем в схемотехнику данных контроллеров внесены и другие изменения — более быстрые оптопары, возможность дискретной настройки выходных токов и т.д. Их внешний вид:
Иногда они выпускаются в металлическом кожухе, который выполняет для ТВ6600 роль радиатора. В этом случае на плате отсутствует локальный радиатор и прикрепленный на нем вентилятор обдува.
На плате также для каждой оси установлены переключатели шага и выходного тока:
Настройка шаговых двигателей осей.
В процессе настройки надо вычислить необходимое количество подаваемых импульсов (шагов) на шаговый двигатель для перемещения управляющей гайки червячной передачи станка на заданную единицу измерения — 1мм.
Например, имеем шаговый двигатель с шагом 1.8 градуса, червячную передачу с шагом резьбы 1.25мм и контроллер, установленный на “полный шаг”. Тогда при подаче на него 200 импульсов (шагов), его вал повернется на (1.8градуса х 200) = 360 градусов (полный оборот) и управляющая гайка червячной передачи сдвинется на 1.25мм.
Теперь, чтобы гайка сдвинулась на 1мм, надо соответственно уменьшить количество подаваемых на шаговый двигатель импульсов (шагов), которые определяются по формуле: 200/ 1.25мм = 160 импульсов (шагов). Т.е. при 160 импульсах(шагах) управляющая гайка при резьбе с ходом 1.25мм переместится на 1мм.
Если на контроллере установлен неполный шаг, например «полшага», то формула будет иметь следующий вид: 2х200/1.25мм = 320 импульсов (шагов).
Таким образом, изменяя степень “шага” в контроллере, а также зная ход резьбы червячной передачи, по аналогичной формуле можно в дальнейшем рассчитывать количество подаваемых на шаговый двигатель импульсов (шагов) для перемещения управляющей гайки на 1мм.
Учитывая, что наиболее оптимальная работа данного контроллера отмечена при установке “1/8 шага”, возьмем за основу:
— шаг резьбы червячной передачи -1.25мм;
— контроллер установлен на “1/8 шаг”, т.е. 1мм перемещения управляющей гайки будет соответствовать 8х200/1.25мм=1280 импульсов(шагов) шагового двигателя.
Примечание: перед началом “пусков” шаговых двигателей при выключенном питании на всех 3-х синих переключателях контроллера на ТВ6600 установим:
Current Setting
(выходной ток)
Требуемые установки выделены жирным текстом с подчеркиванием – OF .
Соответственно для контроллера на ТВ6600 джамперами установим: 1=OFF 2=ON 3=OFF 4=ON 5=OFF 6=ON (1/8шаг, 1.2А выходной ток на ШД).
В дальнейшем данные установки можно будет менять.