Дипломная работа "Шаговый двигатель"
Автор: student | Категория: Технические науки / Проектирование | Просмотров: 670 | Комментирии: 0 | 24-09-2020 20:33

 

Скачать:  1365617645_diplom_shagov_j_dvigatel.part3.rar [1,69 Mb] (cкачиваний: 1)
1365617684_diplom_shagov_j_dvigatel.part1.rar [2,86 Mb] (cкачиваний: 1)
1365617696_diplom_shagov_j_dvigatel.part2.rar [2,86 Mb] (cкачиваний: 0)  

Выпускная квалификационная работа

 

Шаговый двигатель

 

 

 

Оглавление

Введение

Глава 1. Виды, устройство и принцип работы шаговых двигателей

        1.1 Общие принципы шаговых двигателей…………………………..4

        1.2 Виды шаговых двигателей ………………………………………..6

        1.3 Способы управления фазами ШД………………………………..15

Глава 2. Контроллеры шаговых двигателей

   2.1 Управление шаговым двигателем с

 помощью автономного контроллера…………………………………18

   2.2 Управление шаговым двигателем……………………………….20

 с использованием ЭВМ

   2.3 Реализация адаптера шагового двигателя.……………………..21

Глава 3. Управление контроллером с помощью системы программирования PureBasic

    3.1 Система программирования PureBasic………………………….24

    3.2 Синтаксис………………………………………………………….26

         3.3 Сравнение с Basic и Pascal………………………………………..26

         3.4 Особенности PureBasic…………………………………………....27

    3.5 Программирование LPT порта…………………………………...28

Глава 4. Модель крана как пример применения шаговых двигателей

    4.1 Устройство модели………………………………………………..30

    4.2 Программа управления краном на языке  программирования…31 PureBasic

Заключение…………………………………………………………………..33

Список литературы………………………………………………………….34

Приложения

  1. Моделирование элементов устройств управления механизмами……..35
  2. Параллельный порт IBM PC…………...…………………………………37
  3. Видеофильм о шаговых двигателях……………………………………..38
  4. Текст программы управления краном…………………………………...38
  5. Результаты моделирования в программе MicroCap 7

 устройства выработки управляющих импульсов на D-триггерах……….45

  1. Справочный материал по шаговым двигателям ДШИ-200

отечественного производства…... …………………………………………46

 

 

 

Введение

Актуальность:

Уже довольно долгое время используются шаговые двигатели в технике. В составе некоторых устройств, например, в принтерах, дисководах для гибких дисков и других устройствах, имеются шаговые двигатели.  Однако информацию по их применению иногда сложно найти. В своей работе я сконцентрировал информацию по шаговым двигателям и их применению.

 

Цель работы:

Изучение шаговых двигателей и их применения.

 

Задачи:

  1. Изучение соответствующей литературы
  2. Изучение портов ЭВМ
  3. Реализация контроллера шагового двигателя
  4. Изучение системы программирования PureBasic
  5. Разработка и изготовление модели на шаговых двигателях
  6. Разработка программного обеспечения

 

 

 

 

 

 

 

 

Глава 1. Виды, устройство и принцип работы шаговых двигателей [6]

1.1 Общие принципы шаговых двигателей

   Шаговый двигатель – механическое устройство, преобразующее электрические импульсы в механическое, причём, в отличие от других двигателей, «управляемое» движение, т.е. угол поворота ротора зависит от количества поступивших на двигатель импульсов. Шаг такого двигателя – величина угла поворота ротора за один поданный импульс. Внешне шаговый двигатель не отличается от двигателей других типов. Обычно это – цилиндрический корпус, вал, несколько выводов. (рис.1.1)

   Шаговые двигатели обладают некоторыми уникальными свойствами, что делает порой их исключительно удобными для применения или даже незаменимыми, а именно:                                                              

   Рис.1.1  Внешний вид ШД семейства ДШИ-200.

      -угол поворота ротора определяется числом импульсов, которые поданы на двигатель

-двигатель обеспечивает полный момент в режиме остановки (если обмотки запитаны)

- Хорошие шаговые двигатели имеют точность 3-5% от величины шага. Эта ошибка не накапливается от шага к шагу

-возможность быстрого старта/остановки/реверсирования

-высокая надежность, связанная с отсутствием щеток, срок службы шагового двигателя фактически определяется сроком службы подшипников

-однозначная зависимость положения от входных импульсов обеспечивает позиционирование без обратной связи(т.е. без дополнительных затрат на устройства реализующие ОС – датчики положения ротора, согласование их с устройством управления и т.д.)

-возможность получения очень низких скоростей вращения для нагрузки, присоединенной непосредственно к валу двигателя без промежуточного редуктора

-может быть перекрыт довольно большой диапазон скоростей, скорость пропорциональна частоте входных импульсов

 Также существуют некоторые недостатки:

- Шаговым двигателям свойственен нежелательный эффект, называемый резонансом. Эффект проявляется в виде внезапного падения момента на некоторых скоростях. Это может привести к пропуску шагов и потере синхронности. Эффект проявляется в том случае, если частота шагов совпадает с собственной резонансной частотой ротора двигателя

-возможна потеря контроля положения ввиду работы без обратной связи

-потребление энергии не уменьшается даже без нагрузки

-затруднена работа на высоких скоростях

-невысокая удельная мощность

     -относительно сложная схема управления

 

1.2 Виды шаговых двигателей

Существуют три основных типа шаговых двигателей:

  • двигатели с переменным магнитным сопротивлением
  • двигатели с постоянными магнитами
  • гибридные двигатели

     Определить тип двигателя можно даже на ощупь: при вращении вала обесточенного двигателя с постоянными магнитами (или гибридного) чувствуется переменное сопротивление вращению, двигатель вращается как бы щелчками. В то же время вал обесточенного двигателя с переменным магнитным сопротивлением вращается свободно. Гибридные двигатели являются дальнейшим усовершенствованием двигателей с постоянными магнитами и по способу управления ничем от них не отличаются. Определить тип двигателя можно также по конфигурации обмоток. Двигатели с переменным магнитным сопротивлением обычно имеют три (реже четыре) обмотки с одним общим выводом. Двигатели с постоянными магнитами чаще всего имеют две независимые обмотки. Эти обмотки могут иметь отводы от середины. Иногда двигатели с постоянными магнитами имеют 4 раздельных обмотки.

   В шаговом двигателе вращающий момент создается магнитными потоками статора и ротора, которые соответствующим образом ориентированы друг относительно друга. Статор изготовлен из материала с высокой магнитной проницаемостью и имеет несколько полюсов. Полюс можно определить как некоторую область намагниченного тела, где магнитное поле сконцентрировано. Полюса имеют как статор, так и ротор. Для уменьшения потерь на вихревые токи магнитопроводы собраны из отдельных пластин, подобно сердечнику трансформатора. Вращающий момент пропорционален величине магнитного поля, которая пропорциональна току в обмотке и количеству витков. Таким образом, момент зависит от параметров обмоток. Если хотя бы одна обмотка шагового двигателя запитана, ротор принимает определенное положение. Он будет находиться в этом положении до тех пор, пока внешний приложенный момент не превысит некоторого значения, называемого моментом удержания. После этого ротор повернется и будет стараться принять одно из следующих положений равновесия.

1.21 Двигатели с переменным магнитным сопротивлением

   Шаговые двигатели с переменным магнитным сопротивлением имеют несколько полюсов на статоре и ротор зубчатой формы из магнитомягкого материала (рис.1.2). Намагниченность ротора отсутствует. Для простоты на рисунке ротор имеет 4 зубца, а статор имеет 6 полюсов. Двигатель имеет 3 независимые обмотки, каждая из которых намотана на двух противоположных полюсах статора. Такой двигатель имеет шаг 30 град.

Рис.1.2.  Двигатель с переменным магнитным сопротивлением.

При включении тока в одной из катушек, ротор стремится занять положение, когда магнитный поток замкнут, т.е. зубцы ротора будут находиться напротив тех полюсов, на которых находится запитанная обмотка. Если затем выключить эту обмотку и включить следующую, то ротор поменяет положение, снова замкнув своими зубцами магнитный поток. Таким образом, чтобы осуществить непрерывное вращение, нужно включать фазы попеременно. Двигатель не чувствителен к направлению тока в обмотках. Реальный двигатель может иметь большее количество полюсов статора и большее количество зубцов ротора, что соответствует большему количеству шагов на оборот. Иногда поверхность каждого полюса статора выполняют зубчатой, что вместе с соответствующими зубцами ротора обеспечивает очень маленькое значения угла шага, порядка нескольких градусов. Двигатели с переменным магнитным сопротивлением довольно редко используют в индустриальных применениях.

1.22 Двигатели с постоянными магнитами

Двигатели с постоянными магнитами состоят из статора, который имеет обмотки, и ротора, содержащего постоянные магниты (рис.1.3). Чередующиеся полюса ротора имеют прямолинейную форму и расположены параллельно оси двигателя. Благодаря намагниченности ротора в таких двигателях обеспечивается больший магнитный поток и, как следствие, больший момент, чем у двигателей с переменным магнитным сопротивлением.

 

Рис.1.3.  Двигатель с постоянными магнитами.

   Показанный на рис.1.3 двигатель имеет 3 пары полюсов ротора и 2 пары полюсов статора. Двигатель имеет 2 независимые обмотки, каждая из которых намотана на двух противоположных полюсах статора. Такой двигатель, как и рассмотренный ранее двигатель с переменным магнитным сопротивлением, имеет величину шага 30 град. При включени тока в одной из катушек, ротор стремится занять такое положение, когда разноименные полюса ротора и статора находятся друг напротив друга. Для осуществления непрерывного вращения нужно включать фазы попеременно. На практике двигатели с постоянными магнитами обычно имеют 48 – 24 шага на оборот (угол шага 7.5 – 15 град).

   Разрез реального шагового двигателя с постоянными магнитами показан на рис.1.4.

 

Рис.1.4.  Разрез шагового двигателя с постоянными магнитами.

   Для удешевления конструкции двигателя магнитопровод статора выполнен в виде штампованного стакана. Внутри находятся полюсные наконечники в виде ламелей. Обмотки фаз размещены на двух разных магнитопроводах, которые установлены друг на друге. Ротор представляет собой цилиндрический многополюсный постоянный магнит.

   Двигатели с постоянными магнитами подвержены влиянию обратной ЭДС со стороны ротора, котрая ограничивает максимальную скорость. Для работы на высоких скоростях используются двигатели с переменным магнитным сопротивлением.

1.23 Гибридные двигатели

   Гибридные двигатели являются более дорогими, чем двигатели с постоянными магнитами, зато они обеспечивают меньшую величину шага, больший момент и большую скорость. Типичное число шагов на оборот для гибридных двигателей составляет от 100 до 400 (угол шага 3.6 – 0.9 град.). Гибридные двигатели сочетают в себе лучшие черты двигателей с переменным магнитным сопротивлением и двигателей с постоянными магнитами. Ротор гибридного двигателя имеет зубцы, расположенные в осевом направлении (рис.1.5).

Рис.1.5.  Гибридный двигатель.

   Ротор разделен на две части, между которыми расположен цилиндрический постоянным магнит. Таким образом, зубцы верхней половинки ротора являются северными полюсами, а зубцы нижней половинки – южными. Кроме того, верхняя и нижняя половинки ротора повернуты друг относительно друга на половину угла шага зубцов. Число пар полюсов ротора равно количеству зубцов на одной из его половинок. Зубчатые полюсные наконечники ротора, как и статор, набраны из отдельных пластин для уменьшения потерь на вихревые токи. Статор гибридного двигателя также имеет зубцы, обеспечивая большое количество эквивалентных полюсов, в отличие от основных полюсов, на которых расположены обмотки. Обычно используются 4 основных полюса для 3.6 град. двигателей и 8 основных полюсов для 1.8- и 0.9 град. двигателей. Зубцы ротора обеспечивают меньшее сопротивление магнитной цепи в определенных положениях ротора, что улучшает статический и динамический момент. Это обеспечивается соответствующим расположением зубцов, когда часть зубцов ротора находится строго напротив зубцов статора, а часть между ними.  Зависимость между числом полюсов ротора, числом эквивалентных полюсов статора и числом фаз определяет угол шага S двигателя:

S = 360/(Nph*Ph) = 360/N,

где Nph – чило эквивалентных полюсов на фазу = число полюсов ротора,
Ph – число фаз,
N - полное количество полюсов для всех фаз вместе.

   Ротор показанного на рисунке двигателя имеет 100 полюсов (50 пар), двигатель имеет 2 фазы, поэтому полное количество полюсов – 200, а шаг, соответственно, 1.8 град.

   Продольное сечение гибридного шагового двигателя показано на рис. 6. Стрелками показано направление магнитного потока постоянного магнита ротора. Часть потока (на рисунке показана черной линией) проходит через полюсные наконечники ротора, воздушные зазоры и полюсный наконечник статора. Эта часть не участвует в создании момента.

Рис.1.6.  Продольный разрез гибридного шагового двигателя.

   Как видно на рисунке, воздушные зазоры у верхнего и нижнего полюсного наконечника ротора разные. Это достигается благодаря повороту полюсных наконечников на половину шага зубъев. Поэтому существует другая магнитная цепь, которая содержит минимальные воздушные зазоры и, как следствие, обладает минимальным магнитным сопротивлением. По этой цепи замыкается другая часть потока (на рисунке показана штриховой белой линией), которая и создает момент. Часть цепи лежит в плоскости, перпендикулярной рисунку, поэтому не показана. В этой же плоскости создают магнитный поток катушки статора. В гибридном двигателе этот поток частично замыкается полюсными наконечниками ротора, и постоянный магнит его «видит» слабо. Поэтому в отличие от двигателей постоянного тока, магнит гибридного двигателя невозможно размагнитить ни при какой величине тока обмоток.

   Величина зазора между зубцами ротора и статора очень небольшая – типично 0.1 мм. Это требует высокой точности при сборке, поэтому шаговый двигатель не стоит разбирать ради удовлетворения любопытства, иначе на этом его срок службы может закончиться.
Чтобы магнитный поток не замыкался через вал, который проходит внутри магнита, его изготавливают из немагнитных марок стали. Они обычно обладают повышенной хрупкостью, поэтому с валом, особенно малого диаметра, следует обращаться с осторожностью.

   Для получения больших моментов необходимо увеличивать как поле, создаваемое статором, так и поле постоянного магнита. При этом требуется больший диаметр ротора, что ухудшает отношение крутящего момента к моменту инерции. Поэтому мощные шаговые двигатели иногда конструктивно выполняют из нескольких секций в виде этажерки. Крутящий момент и момент инерции увеличиваются пропорционально количеству секций, а их отношение не ухудшается.

   Существуют и другие конструкции шаговых двигателей. Например, двигатели с дисковым намагниченным ротором. Такие двигатели имеют малый момент инерции ротора, что в ряде случаев важно.

   Большинство современных шаговых двигателей являются гибридными. По сути гибридный двигатель является двигателем с постоянными магнитами, но с большим числом полюсов. По способу управления такие двигатели одинаковы, дальше будут рассматриваться только такие двигатели. Чаще всего на практике двигатели имеют 100 или 200 шагов на оборот, соответственно шаг равен 3.6 грд или 1.8 грд. Большинство контроллеров позволяют работать в полушаговом режиме, где этот угол вдвое меньше, а некоторые контроллеры обеспечивают микрошаговый режим.

1.24 Биполярные и униполярные шаговые двигатели

   В зависимости от конфигурации обмоток двигатели делятся на биполярные и униполярные. Биполярный двигатель имеет одну обмотку в каждой фазе, которая для изменения направления магнитного поля должна переполюсовывается драйвером. Для такого типа двигателя требуется мостовой драйвер, или полумостовой с двухполярным питанием. Всего биполярный двигатель имеет две обмотки и, соответственно, четыре вывода (рис.1.7а).

Рис 1.7.  Биполярный двигатель (а), униполярный (б) и четырехобмоточный (в).

   Униполярный двигатель также имеет одну обмотку в каждой фазе, но от середины обмотки сделан отвод. Это позволяет изменять направление магнитного поля, создаваемого обмоткой, простым переключением половинок обмотки. При этом существенно упрощается схема драйвера. Драйвер должен иметь только 4 простых ключа. Таким образом, в униполярном двигателе используется другой способ изменения направления магнитного поля. Средние выводы обмоток могут быть объединены внутри двигателя, поэтому такой двигатель может иметь 5 или 6 выводов (рис.1.7б). Иногда униполярные двигатели имеют раздельные 4 обмотки, по этой причине их ошибочно называют 4-х фазными двигателями. Каждая обмотка имеет отдельные выводы, поэтому всего выводов 8 (рис.1.7в). При соответствующем соединении обмоток такой двигатель можно использовать как униполярный или как биполярный. Униполярный двигатель с двумя обмоткими и отводами тоже можно использовать в биполярном режиме, если отводы оставить неподключенными. В любом случае ток обмоток следует выбирать так, чтобы не превысить максимальной рассеиваемой мощности.

1.3 Способы управления фазами ШД

   Существует несколько способов управления фазами шагового двигателя. Первый способ обеспечивается попеременной коммутации фаз, при этом они не перекрываются, в один момент времени включена только одна фаза (рис 8а). Этот способ называют ”one phase on” full step или wave drive mode. Точки равновесия ротора для каждого шага совпадают с «естественными» точками равновесия ротора у незапитанного двигателя. Недостатком этого способа управления является то, что для биполярного двигателя в один и тот же момент времени иcпользуется 50% обмоток, а для униполярного – только 25%. Это означает, что в таком режиме не может быть получен полный момент.

Рис. 1.8.  Различные способы управления фазами шагового двигателя.

   Второй способ - управление фазами с перекрытием: две фазы включены в одно и то же время. Его называют ”two-phase-on” full step или просто full step mode. При этом способе управления ротор фиксируется в промежуточных позициях между полюсами статора (рис.1.8б) и обеспечивается примерно на 40% больший момент, чем в случае одной включенной фазы. Этот способ управления обеспечивает такой же угол шага, как и первый способ, но положение точек равновесия ротора смещено на пол-шага.

   Третий способ является комбинацией первых двух и называется полушаговым режимом, ”one and two-phase-on” half step или просто half step mode, когда двигатель делает шаг в половину основного. Этот метод управления достаточно распространен, так как двигатель с меньшим шагом стоит дороже и очень заманчиво получить от 100-шагового двигателя 200 шагов на оборот. Каждый второй шаг запитана лишь одна фаза, а в остальных случаях запитаны две (рис.1.8в). В результате угловое перемещение ротора составляет половину угла шага для первых двух способов управления. Кроме уменьшения размера шага этот способ управления позволяет частично избавиться от явления резонанса. Полушаговый режим обычно не позволяет получить полный момент, хотя наиболее совершенные драйверы реализуют модифицированный полушаговый режим, в котором двигатель обеспечивает практически полный момент, при этом рассеиваемая мощность не превышает номинальной.

   Еще один способ управления называется микрошаговым режимом или micro stepping mode. При этом способе управления ток в фазах нужно менять небольшими шагами, обеспечивая таким образом дробление половинного шага на еще меньшие микрошаги. Когда одновременно включены две фазы, но их токи не равны, то положение равновесия ротора будет лежать не в середине шага, а в другом месте, определяемом соотношением токов фаз. Меняя это соотношение, можно обеспечить некоторое количество микрошагов внутри одного шага. Кроме увеличения разрешающей способности, микрошаговый режим имеет и другие преимущества, которые здесь описаны не будут. Вместе с тем, для реализации микрошагового режима требуются значительно более сложные драйверы, позволяющие задавать ток в обмотках с необходимой дискретностью. Полушаговый режим является частным случаем микрошагового режима, но он не требует формирования ступенчатого тока питания катушек, поэтому часто реализуется.

   В приложении 3 наглядно показан принцип работы шагового двигателя.

  

 

 

Глава 2. Контроллеры шаговых двигателей

     

2.1 Управление шаговым двигателем с помощью автономного контроллера

Для того, чтобы было возможно управлять ШД его необходимо подключить к специальному устройству, которое бы подавало в определённой последовательности импульсы на обмотки двигателя. Такое устройство называется контроллером шагового двигателя [3]. Контроллер может быть выполнен в виде отдельного автономного устройства, которое допускает минимум вмешательства со стороны человека. У такого устройства могут быть несколько входов, управляя которыми можно задавать, например, направление вращения ротора двигателя и частоту вращения. Можно реализовать такой контроллер, используя последовательный регистр, который состоит из 4-х синхронных D-триггеров, вырабатывающих импульсы на выходах D0-D3. Принципиальная схема устройства изображена на рис.2.1. Элемент 4И формирует на первом триггере единицу, это нужно в тот момент, когда только включили устройство и на всех выходах – нули. На вход С устройства должны поступать импульсы, от частоты которых зависит скорость  движения импульса по выходам D0-D3. Результаты моделирования устройства приведены в приложении 5.

Разумеется, непосредственно к выходам D0-D3 нельзя подключать обмотки двигателя – мощность импульсов слишком мала, их нужно усилить. Усиления можно добиться, пропустив импульсный сигнал через транзисторный каскад, например, как показано на рис.2.2. Транзистор VT1 должен иметь достаточную нагрузочную способность, чтобы управлять мощным транзистором VT2. Если на входе D каскада будет уровень напряжения, достаточный для открытия транзистора VT1, то ток потечёт через базу транзистора VT2, что заставит последнего открыться. Тогда между выходами Q и Q’ будет высокий уровень напряжения (порядка напряжения питания U) и, если подключить обмотку, то по ней потечёт ток и заставит ротор двигателя совершить шаг. Диод VD нужен для того, чтобы гасить ЭДС самоиндукции, возникающую в обмотке при вращении ротора. Это оберегает транзисторный каскад от работы в недопустимых режимах.

 Таких усилительных каскадов должно быть четыре, по одному на каждую обмотку.

Здесь я хочу отметить, что шаговый двигатель, для которого я выше описал контроллер – четырёх обмоточный, если бы это был 3-х обмоточный двигатель, то для него бы потребовалось только три D-триггера для выработки управляющих импульсов и три усилительных каскада, разумеется.

 

 

2.2 Управление шаговым двигателем с использованием ЭВМ

 

Также контроллер может быть выполнен с использованием ЭВМ с параллельным портом, которая бы занималась выработкой управляющих импульсов, и адаптера, преобразующего сигналы ТТЛ-уровня LPT-порта ЭВМ в электрические импульсы, пригодные для питания обмоток ШД. ЭВМ в таком способе управления вносит некоторые плюсы, которые обязаны своим появлением легкостью программирования ЭВМ с помощью систем программирования, таких как Turbo Pascal и Basic. Так можно запрограммировать двигатель на определённую последовательность действий, например: сделать n шагов в сторону по часовой стрелке, затем сделать m шагов против часовой стрелки и т.д.

Адаптер, усиливающий импульсы, можно взять с тем же принципом работы, как показано на рис.2.2, но добавив специальный предварительный усилитель на микросхеме КР580ИР12, чтобы не перегружать параллельный порт компьютера. Принципиальная схема такого адаптера была позаимствована с журнала «Радио» [5] и изображена на рис.2.3. Предлагаемое устройство может одновременно и независимо управлять двумя двигателями. Микросхема DD1 выполняет функцию буферной памяти и предварительного усилителя. Окончательное усиление сигнала для подачи на обмотку ШД выполняет узел на транзисторах 1VT1 и 1VT2 (на принципиальной схеме показан только один из восьми, выделенный штрихпунктирной линией; остальные семь подключены соответственно к выходам Q2-Q8 регистра DD1). Такая схема включения позволяет расположить все мощные транзисторы на общем теплоотводе без применения дополнительной электрической изоляции их корпусов, обычно  соединённых с коллектором транзисторов. Это позволяет существенно упростить механическую конструкцию блока сопряжения. Транзисторы должны быть установлены на теплоотвод.

  

Диод 1VD1 выполняет функции подавления паразитных колебаний, возникающих при переключении тока в обмотке двигателя.

Данных адаптер рассчитан на работу с четырёхфазными шаговыми двигателями, хотя не исключена возможность работы его с ШД, число фаз которого менее или равно восьми, с сопротивлением обмотки порядка 1-4 Ома.

 

 

 

 

 

 

2.3 Реализация адаптера шагового двигателя

Мной была разработана и изготовлена печатная плата адаптера (Рис.2.4) по схеме рис.2.3, с использованием микросхемы К580ИР82. Микросхема К580ИР82 – восьмиразрядный буферный регистр. Номера используемых выводов микросхемы указаны в скобках, цепь с резистором R2 не  требуется. Чтобы в регистр микросхемы записалось слово с входов D1-D8, необходимо, чтобы на входе CS1 было напряжение, соответствующее логической единице  (3-4 Вольта).   Проверку работы устройства  выполняют поэтапно. Сначала проверяют исправность микросхемы DD1, затем производится проверка исправной работы усилительных каскадов на 1VT1 и 1VT2, при высоком уровне напряжения на транзисторе 1VT1 (порядка трёх Вольт) на диоде 1VD1, при отключенной обмотки ШД, должно быть напряжение, примерно равное напряжению питания.  Собранное устройство, при исправных деталях, не требует отладки. Внешний вид адаптера показан на рис.1.5. Для управления ШД с помощью ЭВМ было создано специальное программное обеспечение в системе программирования Turbo Pascal 7.0, реализующее вращение как одного, так и обоих ШД, в одну и обратную сторону, скорость также можно регулировать программно.

 

 

 

Схема включения обмоток ШД указана на рис.1.6. Чтобы ротор вращался, необходимо кратковременно  включать обмотки в последовательности –

A-B-C-D или наоборот – D-C-B-A . Цифрами 1, 2, 3, 4 указано, к которым из транзисторных каскадов необходимо подключать обмотки, это необходимо для того, чтобы при подаче импульса на вход D0 включалась обмотка A, а не какая-либо другая, и так далее для каждой обмотки. Это необходимо для удобства в написании управляющей программы.

 

 

 

 

 

 

 

 

 

 

 

 

 

Глава 3. Управление контроллером с помощью системы программирования PureBasic

 

3.1 Особенности системы программирования PureBasic

   PureBasic - язык программирования высокого уровня, основанный на синтаксисе стандартного языка программирования Basic. Язык разрабатывается более 10 лет и постоянно совершенствуется. Первый официальный выпуск системы был в октябре 2000 года.

   Кроссплатформенность - важная особенность PureBasic, на данный момент поддерживаются операционные системы: Windows, Linux, MacOS и AmigaOS. Здесь я буду рассматривать только версию под Windows.

   Несмотря на простой для новичка синтаксис, возможности PureBasic безграничны. PureBasic поддерживает: процедуры, указатели, структуры, динамические списки и многое другое. Фактически можно написать любую программу, как если бы писали на языках C, Delphi или Visual Basic, но с гораздо меньшими усилиями.

    Среда разработки занимает всего 20 мегабайт, устанавливается за два клика и не требует никакой настройки. А при установке на Flash носитель свободно работает на любом компьютере. Система программирования очень подробно рассмотрена в электронном учебнике [1].

   Главные особенности PureBasic:

- Огромный набор встроенных команд (более 800), позволяет быстро и легко создать любое приложение

- Поддерживаются все ключевые слова стандартного BASIC'а

- Очень быстрый компилятор, создает чрезвычайно оптимизированный исполняемый код

- Созданные исполняемые файлы не требуют сторонних DLL или интерпретаторов

- Полный доступ к OS API для продвинутых программистов

- Простой и очень быстрый 2D движок для игр (DirectX, SDL, HGE...)

- Простая и высококачественная реализация 3D на движке OGRE

- Оптимальное использование доступных аппаратных средств 

- Исходный текст совместим между Windows, Linux, MacOS и AmigaOS для игр и приложений

- Удобная и компактная среда разработки, встроенный визуальный GUI редактор

- Встроенный отладчик, упрощает выявление и отлов программных ошибок

  

   Это особенности полной версии системы программирования PureBasic, она является платной. В качестве ознакомительной бесплатной версии доступна так называемая DEMO версия программы.

   Ограничения DEMO версии:

- нет поддержки Win32 API

- нельзя создавать DLL файлы

- наложен предел на размер кода (не более 800 строк)

   Отсюда следует, что в демоверсии системы программирования нельзя создать программу, работающую в графическом режиме и состоящую более чем из 800 строк исходного текста.

  

Требования к аппаратным и программным средствам ЭВМ:

   Система программирования PureBasic (PB) может работать на любой конфигурации ЭВМ под ОС Windows 95/98/Me, Windows NT/2000 и Windows XP.

3.2 Синтаксис

   В системе программирования PureBasic существует несколько типов переменных, они показаны в таблице.

   Имена переменных могут состоять из букв английского алфавита, цифр и символа «_» (нижний пробел). Строчные и заглавные буквы системой не различаются, поэтому, например, переменная GHOST и ghost будут считаться за одну переменную. Недопустимо использовать в имени переменной символы  *, %, №, % и другие.

   Также возможно использовать константы, имя константы отличается от имени переменной только символом «#» в начале. Тип константы указывать не требуется. Как правило, в процессе выполнения программы константа не должна менять своего значения, иначе появится сообщение об ошибке.

   Массивы в PureBasic объявляются с помощью оператора Dim, например:

Dim ar.w(10)

ar – имя массива, «w» после точки означает, что массив будет состоять из переменных типа Word. В скобках задано количество элементов массива, в моём случае – 11 переменных, поскольку нумерация начинается с нуля.

3.3 Сравнение с Basic и Pascal

 

   Для сравнения PB с другими системами программирования, рассмотрим пример реализации цикла с параметром.

 

Basic:

For i=1 to n [step m]

<операторы>

Next i

Pascal:

For i=1 to n [step 1 или -1] do

Begin

<операторы>

End;

Pure Basic:

For i=1 to n [step m]

<операторы>

Next i

 

   Из этого примера видно, что PB по реализации цикла с параметром идентичен СП Basic. По части реализации основных алгоритмических структур PB похож на Basic. Версии Basic, работающей и использующей все возможности ОС Windows, не было создано. PureBasic изначально создавался для написания приложений, функционирующих под Windows. 

3.4 Особенности PureBasic

   У СП PureBasic существует несколько особенностей, отличающих её от многих СП. Такие как:

- возможность создания окна программы, параметры которого можно настраивать (размер, вид и т.д.)

- использование так называемых гаджетов. Любой элемент окна программы (кнопки, строки ввода, текст и т.д.) является гаджетом, его параметры можно изменять.

 

3.5 Программирование LPT порта

   LPT порт ЭВМ состоит из трёх регистров – данных, состояния и управления, с адресами для порта LPT1 - 378H, 379H и 37aH соответственно, для порта LPT2 - 278H, 279H и 27aH соответственно. Для связи с портом необходимо использовать драйвер “inpout32.dll”, который должен быть или в системной папке Windows, или в папке с создаваемой программой. В тексте программы драйвер подключается функцией “OpenLibary()”:

OpenLibrary(1,"inpout32.dll")

   Запись и чтение информации с регистров порта удобнее выполнять с помощью процедур:

Запись:

Procedure LPT_Out(Address, Value)

 CallFunction(1,"Out32", Address, Value)

EndProcedure

 

Чтение:

Procedure LPT_Inp(Address)

Value = CallFunction(1, "Inp32", Address)

ProcedureReturn Value ; принятый байт

EndProcedure

 

   Теперь достаточно вызвать процедуру с нужными параметрами чтобы считать или записать информацию в регистр порта:

LPT_Out($378,a) – в регистр данных порта запишется двоичный код десятичного числа а (0..255)

p=LPT_Inp($379) – переменной p присвоится значение регистра состояния порта в десятичной системе счисления.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Глава 4. Модель крана как пример применения шаговых двигателей

 

4.1 Устройство модели

 

   Внешний вид модели показан на рисунке 4.1. Модель способна совершать манипуляции с объектами благодаря двум шаговым двигателям. ШД 1 управляет положением стрелы крана. Нить закреплена с одного конца  на стреле крана, и на валу, приводимого в движение ротором двигателя, с другого. Подобным образом происходит управление крючком, с помощью ШД 2.

Вид на модель сверху показан на рисунке 4.2

 

   

 

 

 

 

 

 

 

 

 

4.2 Программа управления краном на языке  программирования PureBasic

 

   Автором была разработана программа управления краном. Программа активно работает с параллельным портом ЭВМ. Информация выводится через порт, управляя работой шаговых двигателей модели. Также в модель встроен датчик, который направляет информацию о положении стрелы в ЭВМ, программа эту информацию обрабатывает и корректирует свою работу.

   Окно программы представлено на рисунке 4.3. Программа позволяет управлять моделью при помощи кнопок, стрелки указывают на направление перемещения крючка. Для подстройки программы предусмотрено изменение длительности импульсов, управляющих  моделью. Реализован режим управления моделью с помощью клавиатуры и мыши. В этом режиме программа отслеживает перемещение мыши, нажатые клавиши на клавиатуре и мыши.

   Алгоритм управления шаговыми двигателями модели крана был описан в [1] и показан на рисунке 4.4. Текст программы представлен в приложении 4.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Заключение

   Все задачи, поставленные мною, были решены. Цель – достигнута. Была изучена литература, удалось реализовать контроллер для шагового двигателя, а также действующую модель с использованием шаговых двигателей. Автором был создан обучающий видеофильм, который можно использовать в учебных целях.

   Данную выпускную квалификационную работу можно использовать как пособие по применению шаговых двигателей, реализации устройств на их основе. Результаты моей работы докладывались на конференциях:

   Студенческая научная конференция, КГПИ, 2009 год. Тема доклада: контроллер шагового двигателя. Автор занял первое место среди докладчиков.

   II Межрегиональная научная конференция, КГПИ, 2010 год. «Современные аудиовизуальные и информационные технологии в образовании». Тема доклада: разработка учебного видеофильма.

   Студенческая научная конференция, КГПИ, 2010 год. Тема доклада: программирование портов в системе программирования PureBasic. Автор занял второе место среди докладчиков.

 

 

 

 

 

 

 

 

 

 

Список литературы

 

  1. Шевелёв И.В. Управление работой шаговых двигателей с помощью ЭВМ. Статья к студенческой научной конференции, 2009 год.
  2. П.Высочанский. Основы языка PureBasic 4.0
  3. Шевелёв И.В. Контроллер шагового двигателя. Курсовая работа, 2009 год.
  4. Демо-версия языка PureBasic -http://www.purebasic.com/download/PureBasic_Demo.exe
  5. О.Шмелёв. Компьютерное управление механизмами измерительной техники – Радио, 2007, №12, стр. 20-22
  6. Статья «Контроллер шагового двигателя» - сайт радиолюбителей РАДИОТЕХ www.radiotech.by.ru/Shematic_PCB/Avtomatika/step_motor.htm
  7. Статья «Простой контроллер шагового двигателя» http://stepmotor.ru/articles/upravl.php
  8. Справочный материал по ШД ДШИ-200 http://www.planar.by/ru/production/sm/dsi200/
  9. Лабораторная работа «Использование параллельного порта ЭВМ на практике» ИТФ. КГПИ, кафедра ИиВТ.

 

 

 

 

 

 

 

 

 

Приложения

 

  1. Моделирование элементов устройств управления механизмами

   В качестве устройства управления можно успешно использовать ЭВМ с LPT-портом. Например, нам требуется выполнить электронную «мигалку» на светодиоде. Для этого необходимо собрать схему:

 

 

 

 

   Токоограничивающий резистор R подбирается под конкретный светодиод, в нашем случае для светодиода HL - АЛ307КМ - 300 Ом:

 светодиоду АЛ307КМ с током потребления 10 мА желательно последовательно поставить резистор с сопротивлением(исходя из закона

Ома : R=(U-Uд)/I, где U-напряжение питания(т.е. 5 В), Uд, I-напряжение питания  и ток потребления светодиода(можно найти в справочнике, для АЛ307КМ – Uд =2 В, I=10mA).Тогда R=300 Ом. Схема к ЭВМ подключается разъёмом  DB-25М.

   В программе используется процедура delay(m) (задержка программы на  время m, в миллисекундах) и с помощью цикла триггеру D0 порта попеременно присваивается значение «1» и «0», часть программы на паскале может выглядеть так:

   repeat

      port[$378]:=1;

      delay(1000);

      port[$378]:=0;

      delay(1000);

   until keypressed;

Цикл завершится, как только пользователь нажмёт любую клавишу.   

     Поскольку светодиод требует малый ток (примерно 5-15 мА) в схеме не пришлось использовать дополнительный источник питания, поэтому схема  проста. Если необходимо управлять нагрузкой, с потребляемым током более 15 мА, то желательно использовать схемы с усилителем мощности и, разумеется, отдельным источником питания.

     Описанное выше устройство использует порт только как устройство вывода, хотя параллельный порт является более гибким устройством, способное выполнять ввод данных, следующая схема  реализует слежение за положением выключателя SA 1 и может, при необходимости, включать и выключать какое-либо внешнее устройство, изменив, уже программно,  информацию в регистре данных порта. Опять же, применение подобных схем не ограничивается включением или выключением какого-либо устройства, например, при включении SA 1 может запускаться программа, при реализации соответствующего ПО.

   Таким образом, при помощи ЭВМ можно управлять практически любым электронным прибором, в том числе и шаговым двигателем.

    

  1. Параллельный (LPT) порт IBM PC

    Данный порт компьютера IBM PC использует параллельный интерфейс и предназначен в основном для подключения принтера

    Регистр данных порта работает только на выход, данные сохраняются в этом регистре до записи нового байта. Для записи байта Date в регистр можно использовать массив port[  ] в Turbo Pascal

port[Adres]:=Date

Здесь Adres – адрес регистра . Например, чтобы записать в регистр данных D0 логическую единицу, необходимо порту 378Н присвоить значение «1». Это будет выглядеть так:

                              Port[$378]:=1;

А если требуется, чтобы единица была в разряде регистра D2, а на остальных – 0, то требуется порту задать значение «4». Данные с разрядов  D0..D7 снимаются соответственно с 2..9 контактов разъёма DB-25M.

     Реализация ввода данных через порт реализуется подачей непосредствен-но на контакты, предназначенные для входа, высокого уровня напряжения(>=2,0 В), или низкого(<=0,8 В), которые и будут расцениваться  за логическую единицу и ноль соответственно(если вход инвертирован, тогда наоборот) .[9]

   Полезной будет следующая таблица:

Регистр

Адрес

Разряды регистра

 

 

D7

D6

D5

D4

D3

D2

D1

D0

Данных

(*)выход

Base

D7

(9)

D6

(8)

D5

(7)

D4

(6)

D3

(5)

D2

(4)

D1

(3)

D0

(2)

Состояния

(*)вход

Base+1

(11)

Ackn

(10)

PE

(12)

Select

(13)

(15)

X

X

X

   Где Base – базовый порт(LPT1-378H, LPT2-278H), тогда Base+1 – 379H(или 279H).

(*) – в скобках указан номер вывода разъёма DB-25M, соответствующий разряду регистра.

 

 

 

  1. Видеофильм о шаговых двигателях

 

   Видеофильм находится в каталоге с doc файлом выпускной квалификационной работы, имя файла –

Учебный видеофильм о шаговых двигателях.AVI

 

 

  1. Текст программы управления моделью крана

 

Procedure delayy(time,dn)               ; процедура реализует задержку, замена

For j=1 To time                                ; стандартной delay()

For g=1 To dn Step 1

y=100

Next g

Next j

EndProcedure

 

Procedure LPT_Inp(Address)                    ;процедура получения информации

Value = CallFunction(1, "Inp32", Address) ; из регистра состояния LPT-порта

ProcedureReturn Value ; принятый байт

EndProcedure

 

Procedure kod(nomer)          ;подпрограмма преобразования порядкового

If nomer=0                      ; номера в единицу соответствующего разряда

n=1

EndIf

If nomer=1

n=2

EndIf

If nomer=2

n=4

EndIf

If nomer=3

n=8

EndIf

If nomer=4

n=16

EndIf

If nomer=5

n=32

EndIf

If nomer=6

n=64

EndIf

If nomer=7

n=128

EndIf

ProcedureReturn n

EndProcedure

 

Procedure LPT_Out(Address, Value)           ;процедура записи информации в

 CallFunction(1,"Out32", Address, Value)   ; регистр данных LPT-порта

EndProcedure

 

If OpenLibrary(1,"inpout32.dll")=0 ; Открываем файл inpout32.dll, для использования его функций

 MessageRequester("Нет файла!", "Для работы программы требуется файл"+Chr(10)+Chr(13)+ " inpout32.dll",16 )

 End ; Завершаем работу программы при отсутствии файла inpout32.dll

EndIf

lpt_out($378,0)

OpenLibrary(2,"user32.dll") ; Открываем файл user32.dll, для использования его функций

 string1.s

 ; Создаём окно.

  InitMouse()

  InitKeyboard()

  OpenWindow(1,10,10,640,400,"Управление Моделью Крана",#PB_Window_MinimizeGadget)

  LoadImage(0,"screen_1.bmp")

  ButtonGadget(2,131,137,25,25,"")

  ButtonGadget(3,230,137,25,25,"")

  ButtonGadget(4,178,98,25,25,"")

  ButtonGadget(5,178,180,25,25,"")

  ButtonGadget(6,350,20,280,25,"Режим управления клавиатурой и мышью")   

  ButtonGadget(7,480,360,140,25,"Выйти из программы")

  ;ButtonGadget(11,50,250,250,30,"Получить информацию о состоянии регистра")

  ;StringGadget(12,50,280,80,20, "" ,#PB_String_Numeric)

  TextGadget(10,10,330,150, 30,"Длительность управляющих импульсов -                  мс ")

  StringGadget(9,80,342,40,18, "10" ,#PB_String_Numeric )

  ImageGadget(0,  0, 0, 400, 300, ImageID(0)) 

  ;StringGadget(8, 8,  200, 100, 20, "")

  AddKeyboardShortcut(1, #PB_Shortcut_Escape, 7)

   ;AddKeyboardShortcut(1, #PB_Shortcut_Right, 3)

   ;AddKeyboardShortcut(1, #PB_Shortcut_Up, 4)

   ;AddKeyboardShortcut(1, #PB_Shortcut_Down, 5)

  StartTime = ElapsedMilliseconds()             ; Get the actual value

  For u=1 To 10000000 Step 1

  y=100

  Next u                                

  ElapsedTime = ElapsedMilliseconds()-StartTime

  dn=Round(10000000/ElapsedTime*100/200, #PB_Round_Up)

  ;text.s=StrQ(dn)

  ;SetGadgetText(8,text)

  Repeat ; Начало главного цикла.

  If e=1

  lpt_out($378,0)

  OpenWindow(1,10,10,640,400,"Управление Моделью Крана",#PB_Window_MinimizeGadget)

  LoadImage(0,"screen_1.bmp")

  ButtonGadget(2,131,137,25,25,"")

  ButtonGadget(3,230,137,25,25,"")

  ButtonGadget(4,178,98,25,25,"")

  ButtonGadget(5,178,180,25,25,"")

  ButtonGadget(6,350,20,280,25,"Режим управления клавиатурой и мышью")   

  ButtonGadget(7,480,360,140,25,"Выйти из программы")

  ;ButtonGadget(11,50,250,250,30,"Получить информацию о состоянии регистра")

  ;StringGadget(12,50,280,80,20, "" ,#PB_String_Numeric)

  TextGadget(10,10,330,150, 30,"Длительность управляющих импульсов -                  мс ")

  StringGadget(9,80,342,40,18, "10" ,#PB_String_Numeric )

  ImageGadget(0,  0, 0, 400, 300, ImageID(0)) 

  ;StringGadget(8, 8,  200, 100, 20, "")

  AddKeyboardShortcut(1, #PB_Shortcut_Escape, 7)

   ;AddKeyboardShortcut(1, #PB_Shortcut_Right, 3)

   ;AddKeyboardShortcut(1, #PB_Shortcut_Up, 4)

   ;AddKeyboardShortcut(1, #PB_Shortcut_Down, 5)

  e=0

  EndIf

Event=WaitWindowEvent() ; Получаем идентификатор события.

  Gadget=EventGadget() ; Узнаём идентификатор активного гаджета.

   string1=GetGadgetText(9)

   t=ValQ(string1)

   If  Gadget=7 And event=#PB_Event_Gadget 

   x=1

   EndIf

   If  Gadget=2 And event=#PB_Event_Gadget   ;движение влево

    For i=1 To 10 Step 1  

     For j=3 To 0 Step -1

      k=kod(j)

      lpt_out($378,k)

      Delayy(t,dn)

     Next j

     lpt_out($378,0)

    Next i

   EndIf

  If Gadget=3 And event=#PB_Event_Gadget  ;движение вправо 

   For i=1 To 10 Step 1

     For j=0 To 3 Step 1

      a=lpt_inp($379)

      If a=126

      k=kod(j)

      lpt_out($378,k)

      Delayy(t,dn)

      EndIf

     Next j

    lpt_out($378,0)

   Next i

  

   EndIf

  If  Gadget=4 And event=#PB_Event_Gadget ;движение вверх

    For i=1 To 40 Step 1

     For j=4 To 7 Step 1

      k=kod(j)

      lpt_out($378,k)

      Delayy(t,dn)

     Next j

     lpt_out($378,0)

    Next i

   EndIf

   If  Gadget=5 And event=#PB_Event_Gadget ;движение вниз

    For i=1 To 40 Step 1

     For j=7 To 4 Step -1

      k=kod(j)

      lpt_out($378,k)

      Delayy(t,dn)

     Next j

     lpt_out($378,0)

    Next i 

   EndIf

   If Event=#PB_Event_Gadget And Gadget=6

    j=0

    i=0

    s=0

    InitSprite()

    OpenWindowedScreen(WindowID(1), 0, 0, 40, 30, 0, 0, 0)

    Repeat  

    a=lpt_inp($379)

    j=j+1

      If j>3

      j=0

      k=kod(j)

      lpt_out($378,k)

      Delayy(t/2,dn)

      Else

      k=kod(j)

      lpt_out($378,k)

      Delayy(t/2,dn)

      EndIf 

    Until a=118    

    Repeat

    ExamineMouse()                 ;слежение за состоянием курсора мыши

    ExamineKeyboard()           ;слежение за нажатыми клавишами

    x = MouseDeltaX()

    y = MouseDeltaY()

    w=MouseWheel()

    a=lpt_inp($379)

    If (x>1 Or KeyboardPushed(#PB_Key_Right))  And (a=126)

      j=j+1

      s=s-1

      If j>3

      j=0

      k=kod(j)

      lpt_out($378,k)

      Delayy(2*t,dn)

      Else

      k=kod(j)

      lpt_out($378,k)

      Delayy(2*t,dn)

      EndIf

   

    EndIf

    If (x<-1 Or KeyboardPushed(#PB_Key_Left)) And (s<170)

      j=j-1

      If j<0

      j=3

      k=kod(j)