Управление шаговым двигателем с помощью 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

№ шагаD0D1D2D3
11000
20100
30010
40001

Таблица 3

№ шагаD0D1D2D3
11000
21100
30100
40110
50010
60011
70001
81001

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

Перевод с английского Михаила Голубцова