Управление шаговым двигателем с помощью PC
В предлагаемом материале описана несложная разработка, позволяющая управлять шаговым двигателем, подключенным к LPT порту IBM-совместимого компьютера.
Параллельный порт является великолепным интерфейсом, позволяющим подключать к персональному компьютеру множество самых различных устройств. Однако он может быть легко поврежден, поэтому при его использовании для подсоединения самодельных внешних устройств нужно быть очень внимательным. Если вы не уверены в том, что вы все делаете правильно, сначала проконсультируйтесь у специалистов и только потом экспериментируйте.
Ниже приводится краткое описание параллельного порта.
Параллельный порт имеет несколько линий ввода/вывода, которые могут быть разделены на две группы — линии передачи данных и линии сигналов управления. Линии передачи данных — двунаправленные (разумеется, речь идет о режимах ЕСР/ЕРР), и именно их мы и будем использовать. В табл.1 описано назначение выводов разъема порта LPT.
Таблица 1
№ выв. Название
Направление
Описание
1
STROBE
ввод и вывод
устанавливается PC после завершения каждой передачи данных 2/9
D0-D7
вывод
8 линий данных 10
АСК
ввод
устанавливается в "0" внешним устройством после приема байта 11
BUSY
ввод
устройство показывает, что оно занято, путем установки этой линии в “1” 12
Paper out
ввод
для принтеров 13
Select
ввод
устройство показывает, что оно готово, путем установки на этой линии “1” 14
Autofeed
Ввод и вывод
15
Error
ввод
индицирует об ошибке 16
Initialize
Ввод и вывод
17
Select In
Ввод и вывод
18-25
Ground
GND
общий провод Для эксперимента был использован шаговый двигатель от старого 5,25-дюймового дисковода модели FD-55GFR фирмы Теас. У этого двигателя оказалось пять выводов. В большинстве источников описываются шаговые двигатели, имеющие шесть выводов. Существуют также описания 4-выводных шаговых двигателей, у которых не подключены средние выводы и которые требуют двухполярного напряжения для управления. Поиск в Интернете дал ответ: этот шаговый двигатель похож на шаговые двигатели с шестью выводами, но две обмотки у него соединены в одной точке, и наружу выведен один провод, подсоединенный к ним. Для более подробного знакомства с шаговыми двигателями можно посетить страницу в Интернет по адресу: www.HowStuffWorks.com, задав поиск для шаговых двигателей (страница на английском языке — прим. переводчика).
Процесс извлечения двигателя из дисковода несложен — требуется всего лишь отвернуть несколько винтов. К валу двигателя с помощью винтика прикреплена тонкая металлическая полоска, нужно соблюдать осторожность, чтобы не порезаться об нее в процессе ее извлечения.
После извлечения шагового двигателя следует убедиться, что он исправен. Простейший способ это сделать — замкнуть все выводы двигателя между собой и попробовать повернуть его вал. Вал должен проворачиваться с трудом, по сравнению с тем, как он проворачивается при разомкнутых выводах. Также с помощью тестера можно проверить целостность обмоток двигателя. Выводы каждой из обмоток следует пометить. Идентифицировать выводы шагового двигателя можно следующим способом:
1. Подсоедините вывод любой обмотки двигателя к выводу питания +12 В, а к другому выводу этой обмотки — общий провод. Вал должен провернуться на небольшой угол. Пометьте первый вывод цифрой 1.
2. Оставьте эти два вывода в одном месте. Теперь подключите выводы других обмоток к источнику питания 12 В. Обратите внимание, что эти два вывода заставляют шаговый двигатель поворачивать вал на небольшой угол в другую сторону. Отметьте один из них номером 2, другой — номером 4.
3. Оставшийся вывод обозначьте номером 3.
Прим. переводчика: я использовал шаговый двигатель от русского дисковода. Тип двигателя: ПБМГ-200-265Ф(аналоги). Для определения выводов применялся тестер. При этом я зарисовал схему обмоток, фиксируя на ней измеренные сопротивления. Оказалось, что двигатель имеет четыре обмотки. Две обмотки соединены друг с другом и имеют общий провод белого цвета, вторые выводы этих обмоток красного и зеленого цвета. Две другие обмотки также соединены друг с другом и имеют общий провод черного цвета, вторые выводы этих обмоток голубого и желтого цвета. Если соединить белый и черный провода, получается практически та же схема, что и описанная в оригинальной статье. Порядок подключения выводов я определил опытным путем.
Для управления шаговым двигателем можно использовать микросхему драйвера ULN2003, которая содержит семь мощных транзисторных ключей, собранных по схеме Дарлингтона. Каждый ключ способен управлять нагрузкой с током потребления до 500 мА. Микросхема имеет резисторы в цепи базы, что позволяет напрямую подключить ее входы к обычным цифровым микросхемам. Все эмиттеры соединены вместе и выведены на отдельный вывод. На выходах транзисторных ключей имеются защитные диоды, что позволяет управлять с помощью этой микросхемы индуктивными нагрузками при минимуме внешних компонентов. В нашей конструкции использовано только четыре транзисторных ключа. Электрическая схема подключения шагового двигателя показана на рис. 2.
Обратите внимание, что первый вывод шагового двигателя, идентифицированный с помощью описанной ранее процедуры, подсоединен к линии DO параллельного порта (разумеется, через микросхему ULN2003). Каждый следующий вывод подсоединен к соответствующему выводу параллельного порта. Если порядок подключения выводов шагового двигателя неверный, вал мотора будет не вращаться, а лишь поворачиваться на небольшой угол из одной стороны в другую и наоборот. Общий провод схемы подсоединен к источнику питания не напрямую, а через стабилитрон. Это сделано с целью защиты схемы от напряжения ЭДС самоиндукции, возникающего в катушках при резком выключении напряжения питания схемы.
Программа, разработанная для описываемого устройства, достаточно проста. Она управляет выводами порта и формирует на них специальную последовательность импульсов. Эта последовательность показана в табл. 2 и 3.
Различие между алгоритмами (полным и половинным углом поворота вала на один шаг) состоит в том, что во втором случае скорость вращения оказывается в два раза ниже, при этом в два раза уменьшается угол поворота вала двигателя на каждом шаге, т. е. увеличивается разрешающая способность системы. Также во втором случае примерно в два раза увеличивается потребляемая мощность, и кроме того, двигатель способен развивать в два раза больший крутящий момент.
Для изменения направления вращения вала двигателя необходимо формировать указанные последовательности в обратном порядке.
Таблица 2
№ шага D0 D1 D2 D3 1 1 0 0 0 2 0 1 0 0 3 0 0 1 0 4 0 0 0 1 Таблица 3
№ шага D0 D1 D2 D3 1 1 0 0 0 2 1 1 0 0 3 0 1 0 0 4 0 1 1 0 5 0 0 1 0 6 0 0 1 1 7 0 0 0 1 8 1 0 0 1 Ниже приведен короткий пример программы для Turbo С, работающей в операционной системе MS-DOS. Эта программа заставляет шаговый двигатель вращаться в прямом направлении, в режиме полного угла на один шаг.
#include <conio.h>
void main 0
{
unsigned char v=0x11; while (!kbhit ())
delay (10);
outportb (0x378, v);
asm {
mov al, v
rol al, 1
mov v, al
}Полная программа, написанная на MFC, с удобным графическим интерфейсом, находится по адресу: http://wiredworld.tripod.com/binaries/stepper_drive.zip. Она может управлять двигателем в режиме полного и половинного угла поворота вала на один шаг, в прямом и обратном направлении, в режиме постоянного вращения вала двигателя и одиночных шагов. Кроме того, можно включать и выключать различные обмотки двигателя.
Перевод с английского Михаила Голубцова