Дипломная работа: Шаговые электродвигатели

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

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

Название «LPT» образовано от наименования стандартного устройства принтера «LPT1» (Line Printer Terminal или Line PrinTer) в операционных системах семейства MS-DOS. Внешний вид устройства представлен на рис.8.

Рис.8 Внешний вид LPT-порта

25-контактный разъём DB-25, используемый как LPT-порт на персональных компьютерах (IEEE 1284-A)

Порт на стороне управляющего устройства (компьютера) имеет 25-контактный 2-рядный разъём DB-25-female («мама») (IEEE 1284-A).

Не путать с аналогичным male-разъёмом («папа»), который устанавливался на старых компьютерах и представляет собой 25-пиновый COM-порт. На периферийных устройствах обычно используется 36-контактный микроразъемHYPERLINK B0" ленточного типа Centronics (IEEE 1284-B), поэтому кабели для подключения периферийных устройств к компьютеру по параллельному порту обычно выполняются с 25-контактным разъёмом DB-25-male на одной стороне и 36-контактным IEEE 1284-B на другой (AB-кабель). Существуют также CC-кабели с разъёмами MiniCentronics на обоих концах, предназначенные для подключения приборов в стандарте IEEE 1284-II, который применяется редко.

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

Для подключения сканера, и некоторых других устройств используется кабель, у которого вместо разъема (IEEE 1284-B) установлен разъем DB-25-male. Обычно сканер оснащается вторым интерфейсом с разъемом DB-25-female (IEEE 1284-A) для подключения принтера (поскольку обычно компьютер оснащается только одним интерфейсом IEEE 1284). Схемотехника сканера построена таким образом, чтобы при работе с принтером сканер прозрачно передавал данные с одного интерфейса на другой. Базовый интерфейс Centronics является однонаправленным параллельным интерфейсом, содержит характерные для такого интерфейса сигнальные линии (8 для передачи данных, строб, линии состояния устройства).

Рис.9 Интерфейс LPT-порта

На рисунке 10 показано возможное подключение шагового двигателя к LPT-порту.

Рис.10 Схема контроллера шагового двигателя

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

3. Язык программирования Delphi

3.1 Delphi.Его возможности и применение

Delphi -- императивный, структурированный, объектно-ориентированный язык программирования, диалект Object Pascal. Начиная со среды разработки Delphi 7.0, в официальных документах Borland стала использовать название Delphi для обозначения языка Object Pascal. Начиная с 2007 года уже язык Delphi (производныйот Object Pascal) начал жить своей самостоятельной жизнью и претерпевал различные изменения связанные с современными тенденциями (например, с развитием платформы .NET) развития языков программирования: появились class helpers, перегрузки операторов и другое.

Выражения в Object Pascal(Delphi) бывают арифметическими, логическими и строковыми.

Основные логические выражения:

Логические выражения в основном употребляются в условных операторах. К логическим выражениям относятся такие операции как:

not -- «НЕ», отрицание логического выражения (NOT <логическое_выражение>)
and -- «И», умножение (пересечение) логических выражений (<логическое_выражение1> AND <логическое_выражение2>)

or -- «ИЛИ», объединение логических выражений (<логическое_выражение1> OR <логическое_выражение2>)

xor -- «Исключающее ИЛИ», отрицание ИЛИ, все что не попадает под ИЛИ (<логическое_выражение1> XOR <логическое_выражение2>)

Типы данных

Обрабатываемые в программе данные подразделяются на переменные, константы и литералы. Константы представляют собой данные, значения которых установлены в разделе объявления констант и не изменяются в процессе выполнения программы.

Объекты

Объекты как экземпляры класса объявляются в программе в разделе var как обычные переменные. Например:

var

CCircle1: TColorCircle;

CircleA: TCircle;

Как и в случае записей, для обращения к конкретному элементу объекта (полю, свойству или методу) указывается имя объекта и имя элемента, разделенные точкой, то есть имя элемента является составным.

4. Программа управления шаговым двигателем

Данная программа должна состоять из 3 подпрограмм.

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

Один оборот равен 200 шагов.

2рR/200

- Зависимость длинны шага от радиуса колеса,

Где R- радиус колеса, равный 44 мм.

Из геометрических соображений угол поворота вычисляется по формуле

б=arctg ?x/k,

k=1\2 K,

где K - длинна оси от одного колеса до другого, равная 150 мм,

?x - путь пройдённый колесом за один шаг.

Из теоретической механики можно вывести формулу скорости

?=щR,

а угловую скорость можно расписать как

щ=2рб/T

и тогда, подставляя вторую формулу в первую, получим

?=2рRб/T

5. Тестирование программы

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

Интерфейс программы выглядит таким образом

Рис. 11 Интерфейс программы

При нажатии на одну из кнопок импульсы, подаваемые персональным компьютером, преобразовываясь в сигналы, позволяют транспортному роботу совершать движения в зависимости от направления стрелок.

Так же мы можем задавать количество шагов, и период вращения шаговых двигателей.

После того, как двигатели совершат требуемое количество шагов, программа закончит свою работу.

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

Ниже приведена одна из нескольких процедур программы.

procedure TForm1.Timer1Timer(Sender: TObject);

var

speed: integer;

speed1:real;

PortValue: byte;

begin

K:=strTofloat(edit3.text); {количество шагов}

if i<round(k) then

begin

trystrtoint(edit1.Text, speed);

Timer1.Interval:=round((speed/200)*1000);

PortValue:= motor1[step1] or motor2[step2];

Lpt.WritePort (GetCurrentPort,0,PortValue);

step1:=step1+direction1;

step2:=step2+direction2;

if step1=-1 then step1:=3;

if step1=4 then step1:=0;

if step2=4 then step2:=0;

if step2=-1 then step2:=3;

i:=i+1;

end;

R:=strTofloat(edit2.text); {радиус колеса}

S:=(2*3.14*R*K)/200; {расстояние}

label2.caption:=FloatToStr(s);

end;

procedure TForm1.SpeedButton1Click(Sender: TObject);

begin

i:=0;

direction1:=1;

direction2:=1;

timer1.Enabled:=true;

end;

Заключение

В ходе выполнения выпускной работы было проделано:

1)Ознакомилась с методами управления шаговыми двигателями.

2)Был проведен анализ траектории, который позволил выявить элементарные участки

3)Разработана компьютерная программа, в которой каждый участок траектории обрабатывается соответствующей программой.

Были выделены элементарные участки траектории, которые оформлены в виде соответствующих подпрограмм.

Задание траектории сводиться к заданному набору соответствующих участков траектории. Была написана программа на языке Delphi.

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

1. Программируемые роботы. «Создаем робота андроида своими руками»/ Дж. Вильямс; пер. с англ. А.Ю. Карцева.-М.: НТ Пресс, 2006.-240 с.

2. Лебедев М.Б. CodeVisionAVR: пособие для начинающих. - М.:Додэка-XXI,2008.-592 с.: ил.

3. Юревич Е.И. Основы робототехники - 2-ое изд., перераб. и доп. - Спб.: БХВ-Петербург. -2005. -416с.: ил

4. Википедия: Свободная энциклопедия [Электронный ресурс]:Шаговые Электродвигатели. URL: http://ru.wikipedia.org/wiki (дата обращения: 25.05.2011).

5. Электропривод. URL: http://electroprivod.ru/ (дата обращения: 26.05.2011).

6. Автоматизированные технологические комплексы «Оборудование - робот». Методические рекомендации. М.: НИИМАШ, 1981. - 104с.

7. Промышленные роботы агрегатного типа / Ю.Г.Козырев, В.Б.Великович, С.В.Житомирский и др. М.: НИИМАШ, 1978. - 50с.

Приложение

В данном приложении приведена программа управления макетом транспортного робота.

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, LPTIO,

ExtCtrls, StdCtrls, Buttons;

type

TForm1 = class(TForm)

Panel1: TPanel;

ComboBox1: TComboBox;

Label1: TLabel;

SpeedButton1: TSpeedButton;

SpeedButton2: TSpeedButton;

SpeedButton3: TSpeedButton;

SpeedButton4: TSpeedButton;

GroupBox1: TGroupBox;

Edit1: TEdit;

Timer1: TTimer;

GroupBox2: TGroupBox;

Edit2: TEdit;

GroupBox3: TGroupBox;

Edit3: TEdit;

Label2: TLabel;

Label3: TLabel;

procedure FormCreate(Sender: TObject);

procedure FormDestroy(Sender: TObject);

{procedure SpeedButton1MouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure SpeedButton2MouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure SpeedButton3MouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure SpeedButton4MouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer); }

procedure Timer1Timer(Sender: TObject);

procedure SpeedButton1Click(Sender: TObject);

procedure SpeedButton2Click(Sender: TObject);

procedure SpeedButton3Click(Sender: TObject);

procedure SpeedButton4Click(Sender: TObject);

private

{ Private declarations }

Lpt : TLptPortConnection;

public

{ Public declarations }

function GetCurrentPort : byte; // Читает список ComboBox1 и возвращает соответствующий номер порта

// function GetCurrentRegister : byte; // Читает список ComboBox2 и возвращает соответствующий номер регистра

procedure InOut; //-- EPP: вход / выход переключатель

end;

var

Form1: TForm1;

direction1:integer;

direction2:integer;

step1:integer;

step2:integer;

R:real;

K:real;

S:real;

i:integer;

motor1: array[0..3] of byte;

motor2: array[0..3] of byte;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);

var msg : AnsiString;

begin

timer1.Enabled:=false;

step1:=0;

step2:=0;

motor1[0]:=48; // 0011

motor1[1]:=96; // 0110

motor1[2]:=192;// 1100

motor1[3]:=144; // 1001

motor2[0]:=3; //0011

motor2[1]:=9; //1001

motor2[2]:=12; //1100

motor2[3]:=6; //0110

Lpt := TLptPortConnection.Create;

if not Lpt.Ready then

begin { объект не готов -- покажем код ошибки }

msg := 'Ошибка при создании объекта Lpt, драйвер ERROR, код = ' + IntToStr(GetLastError());

Application.MessageBox(PChar(msg),'ERROR',MB_OK);

Application.Terminate; // выход

end;

// Проверим наличие портов и заполним их список в ComboBox-e

ComboBox1.Items.Clear;

ComboBox1.Text := '';

if Lpt.IsPortPresent(LPT1) then ComboBox1.Items.Add('$3BC');

if Lpt.IsPortPresent(LPT2) then ComboBox1.Items.Add('$378'); //-ВНИМАНИЕ: $378 здесь назван LPT2!

if Lpt.IsPortPresent(LPT3) then ComboBox1.Items.Add('$278');

if 0<>ComboBox1.Items.Count then ComboBox1.ItemIndex := 0;

Lpt.WritePort (GetCurrentPort,0,0);

end;

procedure TForm1.FormDestroy(Sender: TObject); // Обработчик разрушения

begin

Lpt.Destroy;

{ Здесь разместите все таймеры, которые должны быть отключены }

end;

function TForm1.GetCurrentPort : byte; // Читает список ComboBox1 и возвращает соответствующий номер порта

begin

if '$3BC' = ComboBox1.Text then

GetCurrentPort:=LPT1

else

if '$378' = ComboBox1.Text then

GetCurrentPort:=LPT2 else

GetCurrentPort:=LPT3;

end;

procedure TForm1.InOut; //--- переключ. направления в реж. EPP вход / выход

begin

if Lpt.IsPortBidirectional(GetCurrentPort)= true then

begin

Lpt.WritePort(GetCurrentPort,2, (DIRECTION xor Lpt.ReadPort(GetCurrentPort,2))) ; //-- 32 (бит 5 )

end else

MessageBox(Handle,PChar('Данный порт не является активным в EPP режиме. Для активации войдите в Bios, раздел INTEGRATED PERIPHERALS или др., найдите строку PARALLEL PORT MODE: измените режим работы порта на EPP или SPP/EPP.'),

PChar('Не доступен EPP режим '),MB_ICONINFORMATION + MB_OK +MB_DEFBUTTON2);

end;

procedure TForm1.Timer1Timer(Sender: TObject);

var

speed: integer;

speed1:real;

PortValue: byte;

begin

K:=strTofloat(edit3.text); {количество шагов}

if i<round(k) then

begin

trystrtoint(edit1.Text, speed);

Timer1.Interval:=round((speed/200)*1000);

PortValue:= motor1[step1] or motor2[step2];

Lpt.WritePort (GetCurrentPort,0,PortValue);

step1:=step1+direction1;

step2:=step2+direction2;

if step1=-1 then step1:=3;

if step1=4 then step1:=0;

if step2=4 then step2:=0;

if step2=-1 then step2:=3;

i:=i+1;

end;

R:=strTofloat(edit2.text); {радиус колеса}

S:=(2*3.14*R*K)/200; {расстояние}

label2.caption:=FloatToStr(s);

end;

procedure TForm1.SpeedButton1Click(Sender: TObject);

begin

i:=0;

direction1:=1;

direction2:=1;

timer1.Enabled:=true;

end;

procedure TForm1.SpeedButton2Click(Sender: TObject);

begin

i:=0;

direction1:=-1;

direction2:=1;

timer1.Enabled:=true;

end;

procedure TForm1.SpeedButton3Click(Sender: TObject);

begin

i:=0;

direction1:=-1;

direction2:=-1;

timer1.Enabled:=true;

end;

procedure TForm1.SpeedButton4Click(Sender: TObject);

begin

i:=0;

direction1:=1;

direction2:=-1;

timer1.Enabled:=true;

end;

end.

Источник: https://otherreferats.allbest.ru/download/1186001/