ТУ – София

,
Филиал Пловдив

К У Р С О В А

Р А Б О Т А

По Електронни Регулатори

Изготвил:

факN, гр.:

Светлана Георгиева Райкова

342867,32а

Пловдив
2008г.

Проверил:.........................
/гл.ас. Василева/

ТУ – София,
Филиал Пловдив

З А Д А Н И Е :

Електронна система за позициониране на четири
фазен стъпков двигател

Изходни данни:
+12V – захранващо напрежение
Да се управлява на цяла стъпка
Да има възможност за реверсиране на посоката

2 | Page

I.

Теоретична част.

Предимства на електромеханични системи ЕМС със стъпкови двигатели:

Голяма точност при позициониране;

Лесно регулиране на скоростта в широк диапазон;

Възможност за изграждане на качествени
скъпоструващи датчици за обратна връзка ОВ;

Пособност за “запомняне” на информацията;

Скоросста остава постоянна при изменение на натоварването в широки
граници;

Добра съвместимост с цифрови управляващи устройства;

отворени

системи,

без

По-съществени недостатъци на тези ЕМС:

Сравнително малък въртящ момент;

Относително нисък коефициент на полезно действие;

Принцип на действие на стъпковите електродвигатели.
Осъщесвява се на дискретно изменение на електромагнитното поле в работна
въздушна междина за сметка на импулсно възбуждане или превключване на
намотките им, т.е. стъпковите двигатели са електромеханични устройства, който
преобразуват електрическите импулси на управляващото напрежение в
дискретни ъглови или нелинейни премествания(“стъпки”) на ротора с
възможност за фиксирането му в желани положения. Срещат се различни
конструкции на стъпкови двигатели, но принципът им е един и същ- многофазен
и многополюсен синхронен двигател, който се захранва с постояннотокови
електрически импулса. Статорът има листов строеж и може да бъде явнополюсен
или неявнополюсен. На полюсите или в каналите му са поставени m-фазни
намотки(m=1,2,3,4,... и т.н., но най-често 2 и 4). Роторите се срещат в два
конструктивни вида: а) активен(с постоянни магнити или рядко електромагнити,
възбудени от източник за постоянене ток); б) пасивен(без възбуждане, но
задължително с явни полюси). При захранване на отделни фази роторът ще заема
такова равновесно положение, при което съпротивлението на магнитното поле да
е минимално.
3 | Page

Управление на стъпковия двигател:
а) симетрично- при което управляващите сигнали се подават последователно на
групи от еднакъв брой фази;
б) несиметрично- при което управляващите сигнали се подават последователно
на групи от нееднакъв брой фази;
Друго деление според управлението е:
а) потенциално- напрежението на намотките се изменя само в момента на
подаване на управляващия сигнал. При липса на следващ управляващ сигнал,
една или повече фази остават под напрежение, подадено от предшестващия
сигнал, така че роторът заема напълно определено фиксирано напрежение;
б) импулсно- една или повече фази получават управляващия сигнал с определена
продължителност, след което остават без захранване. В паузата между сигнални
импулси, роторът се фиксира от вътрешен активен момент(при активен ротор)
или от специално фиксиращо устойство.
Управление на цяла стъпка и на полустъпка:
Управлението на стъпков двигател се усъществява чрез прилагането на серия от
стъпки. Скороста на въртене се управлява от времето за прилагане на стъпките.
Има три основни видове стъпки : цяла, полустъпка и микростъпка.

При управлението на четири фазен СД с цяла стъпка през статорните намотки
последоветлно през определен интервал от време се пропуска ток и те създават
полярност,която насочва роторния постоянен магнит къл активната намотка, т.е.

4 | Page

ротора ще се върти през 900 , като се стреми да се изравнява с активните намотки.
Освен по цяла стъпка може да се управлява и на полустъпка като към пълната
стъпка се прибавят и междустъпките с напрежението създадено между две
намотки. Това се осъществява като едновременно се включат два съседни магнита.

При управление на полустъпка се увеличават броят стъпките на преместване.
Като пример нека разгледаме един стандартен хибриден стъпков двигател, който
има 200 зъба или това са 200 стъпки за оборот. Като разделим 200 стъпки на 360 0
ще получим ъгъл на завъртане 1.80. При полустъпката ще се получи, че 400 стъпки
ще доведът до 0.90 ъгъл на завъртане.
Таблиците представят движението на двигателя на цяла стъпка и на полустъпка:

PH1

1

1

1

0

PH1

1

1

1

0

PH2

1

1

0

1

PH12

1

1

0

0

PH3

1

0

1

1

PH2

1

1

0

1

PH4

0

1

1

1

PH23

1

0

0

1

PH3

1

0

1

1

PH34

0

0

1

1

PH4

0

1

1

1

PH41

0

1

1

0

Цяла стъпка – по фази

PH12

1

1

0

0

PH23

1

0

0

1

PH34

0

0

1

1

PH41

0

1

1

0

5 | Page

Полустъпка

Цяла стъпка - междуфази

За да се осигури нормалната работа на PIC16F628(1)той трябва да бъде захранен с

от 3 до 5 волата и да му се осигури желаната честота на работа. Това става чрез
външен кристал/резонатор (XT) за този микроконтролер избирам най-високата
4MHz. Кондензаторите за кристала се избират от таблицата по-долу(2):

Високия капацитет на кондензаторите повишава стабилноста на кристала но
също така повишава и времето за стартиране на микроконтролера. Данните в
таблицата са само препоръчителни от производителя и кондензаторите също така
трябва да се съобразят и с конкретния избран резонатор. За да осигуря
стабилната работа на кристала избирам за C1 и C2 по 30pF.

6 | Page

Използвам PORTA <RA3-RA0> за цифров изход, с който управлявам стъпков
двигател, a PORTB <RB5-RB4> за цифрови входове, по които да получавам
управляващи сигнали за двигателя. Външния бутон В1 е за установяване на
начално състояние чрез reset сигнал, което може да стане по всяко време без да
затрудни процесора или да доведе до неизпълнение на алгоритъма на
програмата.
PIC16F628A - тази серия е с порт по-малко, т.е. има два 8 битови порта А и В.
Крачетата на този микроконтролер могат да се програмират както за входове така
и за изходи. Посоката на данните се програмира посредством TRISA и TRISB
регистри. За TRISA записването на нули за всеки пин ще доведе до всичко изходи
на PORTA това лесно може да се види от диаграмата по-долу:

Същото се отнася и за TRISB.
Особеност при PORTB е неговата функция interrupt-on-change, което значи че
при промяна на входните величини от до момента установените, се генерира
прекъсване. Предварително трябва да се разрешат прекъсванията в
7 | Page

инициализационната част на програмата като за целата ползвам регистри като
INTCON, а за interrupt-on-change това се осъществява чрез регистър IOCB. В случея
използвам краче 11 и 12, което съответства на RB5 и RB4 и поставям там сигнали
STOP и Forword за управление на стъпковия двигател. Това ми дава възможност
както да спирам двигателя така и да задвижвам. Реверсивен ход e осигурeн
програмно
и
не
е
необходим
допълнителен
входен
сигнал.

8 | Page

На PORTA , който изпозвам за изход към двигателя имам изходен ток до 20mA, а
за двигателя, който съм избрала трябва да се осигури номинален ток Iном=259mA.
За целта използвам буфер ULN2004A (3) със
захранване от (6-15)V, TTL/CMOS съвместим, с
входен ток 25mA и изходен ток 500mA.

9 | Page

Заданието изисква да се управлява стъпков двигател в права и реверсивна посока с
напрежение 12 V на цяла стъпка. Избирам 27964 (4) с технически параметри и
начин на свързване предложени от производителя:

10 | P a g e

III.

Принципни Схеми

a. Блокова схема

a. Принципна схема

11 | P a g e

12 | P a g e

IV.

Програма за задвижване на стъпков двигател, управляван с
PIC16F628A

list p=16f628A
#include <p16f628A.inc>
#define
#define
#define
#define
#define
#define

STATUS_TEMP_W
STATUS
STATUS_TEMP
W_TEMP
STOP
Forword

ST1
ST2
ST3
ST4

EQU
EQU
EQU
EQU

0x00
0x01
0x02
0x03

PH1
PH2
PH3
PH4

EQU
EQU
EQU
EQU

0x0E
0x0D
0x0B
0x07

0x21
0x22
0x23
0x24
0x25
0x26

ORG 0x0000
goto INT
ORG 0x0004
goto INTERRUPT
INT: banksel
movlw
movwf

CMCON
0x07
CMCON

;изключване на компараторите

banksel
movlw
movwf

TRISA
0x00
TRISA

;цивров изход

banksel
movlw
movwf

TRISB
0xFF
TRISB

;цивров вход interrupt-on-change

13 | P a g e

bancksel
movlw
movwf
bsf
bsf

main_loop:
INTERRUPT:

IOCB
0xFF
IOCB

;позволи interrupt-on-change

INTCON,T0IE
INTCON,GIE

goto

;позволи прекъсвания
;позволи глобални прекъсвания

main_loop

;save context
movwf
swapf
clr
movwf

W_TEMP
STATUS,w
STATUS
STATUS_TEMP

btfsc
goto
goto

INTCON,T0IF
FSM
EXIT_INTERRUPT

FSM: banksel
movf
btfsc
goto
decf
btfsc
goto
decf
btfsc
goto
goto

STATE_REG
STATE_REG,f
STATUS,z
state1
STATE_REG,f
STATUS,z
state2
STATE_REG,f
STATUS,z
state3
state4

state1: btfsc
goto
btfsc
goto
goto

STOP
MOV_1
Forword
MOV_4
MOV_2

14 | P a g e

state2: btfsc
goto
btfsc
goto
goto

STOP
MOV_2
Forword
MOV_1
MOV_3

state3: btfsc
goto
btfsc
goto
goto

STOP
MOV_3
Forword
MOV_2
MOV_4

state4: btfsc
goto
btfsc
goto
goto

STOP
MOV_4
Forword
MOV_3
MOV_1

MOV_1:

movlw
movwf
movlw
movwf
goto

ST1
STATE_REG
PH1
PORTA
EXIT_INTERRUPT

MOV_2:

movlw
movwf
movlw
movwf
goto

ST2
STATE_REG
PH2
PORTA
EXIT_INTERRUPT

MOV_3:

movlw
movwf
movlw
movwf
goto

ST3
STATE_REG
PH3
PORTA
EXIT_INTERRUPT

MOV_4:

movlw
movwf
movlw
movwf
goto

ST4
STATE_REG
PH4
PORTA
EXIT_INTERRUPT

15 | P a g e

EXIT_INTERRUPT:
;restore context
swapf
STATUS_TEMP_W
movwf
STATUS
swapf
W_TEMP,f
swapf
W_TEMP,w
banksel
movlw
movwf
RETFIE
END

16 | P a g e

TMR0
0x06
TMR0

V.

Спецификация на използваните елементи

Елемент
Микроконтролер
Буфер
Стъпков Двигател
Съпротивления
Кондензатори
Кристал
Бутон

17 | P a g e

Схемно
означение
IC1
IC2
L1,L2,L3,L4
R1
С1,С2
Q1
B1

Наименование

Брой

PIC16F628A
ULN 2004A
27964
R-EU_0204/5
C025-024X044
86SMX

1
1
1
1
2
1
1

Стойност

Особености
18pins

4.7k
30pF
4MHz

VI.

Използвана литература

27964.pdf (4)
http://dscl.lcsr.jhu.edu/wiki/images/9/98/Stepper_Motor_27964.pdf

Microchip Data Sheet - PIC16F62X.pdf (2)
http://ww1.microchip.com/downloads/en/devicedoc/40044D.pdf

Microchip Data Sheet - PIC16F631/677/685/687/689/690.pdf (1)
http://www.inf.ed.ac.uk/teaching/courses/sdp/stepper/PIC16F62X.pdf

ULN2004A.pdf (3)
http://www.classiccmp.org/rtellason/chipdata/uln2001-4a.pdf

Допълнителни източници:
http:// ams2000.com/stepping101.html#types
http:// atarimagazines.com/v5n8/StepperMotorRobotControl.html
http://
clickautomation.com/PDF/categories/Step%20Motor%20Engineer%20(2002%20Catl
og).pdf
http:// c-stamp.com/Documents/Documentation/CS610002m1.pdf
http:// ece.osu.edu/ems/ee647/Lab_Manuals/Lab5.pdf
http:// educypedia.be/electronics/motorstepdriver.htm
http:// eetkorea.com/ARTICLES/2004MAY/2004MAY25_MPR_AN12.PDF
http:// electricmotors.machinedesign.com/guiEdits/Content/bdeee4/bdeee4_1.aspx
http://8051projects.info/blogs.asp?view=plink&id=199
http://dscl.lcsr.jhu.edu/wiki/images/9/98/Stepper_Motor_27964.pdf
http://egweb.mines.edu/eggn482/labs/lab3.pdf
http://electojects.com/motors/stepper-motors-1.htm
http://electronics-lab.com/projects/pc/017/stepper.pdf
http://en.wikipedia.org/wiki/Stepper_motor
http://freescale.com/files/microcontrollers/doc/train_ref_material/MOTORPRINTUT.ht
ml
http://geocities.com/nozomsite/pic6.htm
http://hibp.ecse.rpi.edu/~connor/education/IEE/lectures/Lecture_8_Stepper_motors.p
df
http://hsi-inc.com/stepper_motor_theory.php
http://imagesco.com/articles/picstepper/02.html
http://imagesco.com/catalog/motors/stepper.html
http://mastincrosbie.com/mark/electronics/pic/stepper.html
http://northcountryradio.com/PDFs/column006.pdf
http://openbookproject.net//electricCircuits/AC/AC_13.html#xtocid2132913
http://opencircuits.com/PIC_based_Stepper_Motor_Dancing_Analog_Clock
18 | P a g e

http://orgler.it/sw-step.htm#STEPPER
http://parallax.com/Portals/0/Downloads/docs/prod/datast/MitsumiStepMotor.pdf
http://piclist.com/techref/io/steppers.htm
http://rs-components.hu/ds/232_4487.PDF
http://sapiensman.com/step_motor/
http://shinano.com/xampp/docs/Stepper%20Motor%20Operation%20&%20Theory.p
df
http://solarbotics.net/library/pdflib/pdf/motorbas.pdf
http://voti.nl/stepbots/index_1.html

19 | P a g e