В предлагаемом материале описана несложная разработка, позволяющая управлять шаговым двигателем, подключенным к 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. Она может управлять двигателем в режиме полного и половинного угла поворота вала на один шаг, в прямом и обратном направлении, в режиме постоянного вращения вала двигателя и одиночных шагов. Кроме того, можно включать и выключать различные обмотки двигателя.
Перевод с английского Михаила Голубцова
Источник: