Upload
vasil-angelov
View
201
Download
0
Embed Size (px)
Citation preview
Т е хнически университет − София, филиал Пловдив
Курсова работа
ПоЕлектронни регулатори
Изготвил: : Специалност Електроника
Ф№
: 31 Група б
Ръководител: ..................................
/ . . . /гл ас С Василева
Задание:
Тема:
Електронна система за позициониране на стъпков двигател
:Изходни данни
+5V – захранващо напрежение;
Да се управлява на цяла стъпка;
Да има възможност за реверсиране на посоката;
I. Теоретична част. Предимства на електромеханични системи ЕМС със стъпкови двигатели:
;Голяма точност при позициониране ;Лесно регулиране на скоростта вширок диапазон , Възможност за изграждане на качествени отворени системи без
;скъпоструващи датчици за обратна връзка ОВ “ ” ;Пособност за запомняне на информацията Скоросста остава постоянна при изменение на натоварването в
;широки граници ; Добра съвместимост с цифрови управляващи устройства
- :По съществени недостатъци на тези ЕМС
;Сравнително малък въртящмомент Относително нисък коефициент на полезно действие
:Видове стъпкови двигатели
Според магнитната си система биват:1. Д вигатели с променливо магнитно съпротивлени(Variable
Reluctance) - роторът е магнитопровод със ситни зъби и работи на привличане от статорните .полюси
2. Д вигатели с постоянни магнити(Permanent Magnet) - роторът съдържа магнити и има явни полюси.
3. Х ибридни двигатели(Hybrid) - ( комбинирани назъбен ротор и 1-2 )вградени само магнита .
:Според електрическата си схема1. Стъпкови униполярни двигатели - еднопосочна намотка със среден извод,
комутират се двата й края за дветете посоки на движение, работи само половината намотка.
2. Стъпкови биполярни двигатели - мостови схеми тип "Н", винаги работи с пълен въртящ момент.
3. Сервомотори – постоянно токови или променливотокови мотори с монтиран на вала декодер за посока и стъпка, който дава точна информация по всяко време и следи да не се изпуснат стъпки поради претоварване и коригира местоположението на вала - с ООВ.
. Принцип на действие на стъпковите електродвигатели
Осъщесвява се на дискретно изменение на електромагнитното поле в работна въздушна междина за сметка на импулсно възбуждане или
, . . превключване на намотките им т е стъпковите двигатели са , електромеханични устройства който преобразуват електрическите
импулси на управляващото напрежение в дискретни ъглови или (“ ”) нелинейни премествания стъпки на ротора с възможност за
. фиксирането му вжелани положения Срещат се различни конструкции , - на стъпкови двигатели но принципът им е един и същ многофазен и
, многополюсен синхронен двигател който се захранва с постояннотокови . електрически импулса Статорът има листов строеж иможе да бъде
. явнополюсен или неявнополюсен На полюсите или в каналите му са поставениm- (фазни намотки m=1,2,3,4,... . ., - 2 4). и т н но най често и Роторите
: се срещат в два конструктивни вида
( , активен с постоянни магнити или рядко електромагнити възбудени ); от източник за постоянене ток
( , ). пасивен без възбуждане но задължително с явни полюси
При захранване на отделни фази роторътще заема такова равновесно, положение при което съпротивлението на магнитното поле да е.минимално
:Управление на стъпковия двигател
- симетрично при което управляващите сигнали се подават ;последователно на групи от еднакъв брой фази
- несиметрично при което управляващите сигнали се подават ;последователно на групи от нееднакъв брой фази
:Друго деление според управлението е
- потенциално напрежението на намотките се изменя само в . момента на подаване на управляващия сигнал При липса на , следващ управляващ сигнал една или повече фази остават под
, , напрежение подадено от предшестващия сигнал така че роторът ; заема напълно определено фиксирано напрежение
- импулсно една или повече фази получават управляващия сигнал с , . определена продължителност след което остават без захранване В
, паузата между сигнални импулси роторът се фиксира от вътрешен
( ) активен момент при активен ротор или от специално фиксиращо.устойство
:Управление на цяла стъпка и на полустъпка
Управлението на стъпков двигател се усъществява чрез прилагането на . серия от стъпки Скороста на въртене се управлява от времето за
. : , прилагане на стъпките Има три основни видове стъпки цяла . полустъпка и микростъпка
При управлението на четири фазен стъпков двигател с цяла стъпка през статорните намотки последоветлно през определен интервал от време се
, пропуска ток и те създават полярност която насочва роторния постоянен , . . магнит къл активната намотка т е
90ротораще се върти през 0 , като се стреми да се изравнява с активните
.намотки
Освен по цяла стъпка може да се управлява и на полустъпка като към пълната стъпка се прибавят и междустъпките с напрежението създадено
. между две намотки Това се осъществява като едновременно се включат
.два съседни магнита
При управление на полустъпка се увеличават броят стъпките на. преместване
Като пример нека разгледаме един стандартен хибриден стъпков, 200 200 . двигател който има зъба или това са стъпки за оборот Като 200 360разделим стъпки на 0 1.8ще получим ъгъл на завъртане 0. При
, 400 0.9полустъпкатаще се получи че стъпкище доведът до 0 ъгъл на.завъртане
:Управляващи сигнали на униполярен стъков двигател
:Операция на стъпките на униполярен стъпков двигател
II. Принципна Схема
III. Описание на схемата
За да се осигури нормалната работа на PIC16F628A той трябва да бъде захранен с
3 5 напрежение от до волата и да му се осигури желаната честота на . работа Това става чрез външен кристал/резонатор (XT) за този
- 4микроконтролер избирам най високата MHz. Кондензаторите за кристала - :се избират от таблицата по долу
Високия капацитет на кондензаторите повишава стабилноста накристала, но също така повишава и времето за стартиране на
. микроконтролера Данните в таблицата са само препоръчителни от производителя и кондензаторите също така трябва да се съобразят и с
. конкретния избран резонатор За да осигуря стабилната работа на кристала избирам за C1 и C2 30по pF.
Използваме PORTA , за цифров изход с който се управлява стъпковиядвигател, a PORTB за цифрови входове, по които да получавам
.управляващи сигнали за двигателя
На PORTA имаме изходен ток до 20mA, , а за двигателя който съм избрал трябва да се осигури номинален ток I НОМ= 250mA. За целта използваме
2SD1209K - , транзистори тип схема Дарлингтон чрез които усиолваме тока .необходим за задвижването на стъпковия двигател
2SC1815 и потенциометър служат за контролиране на скоростта на.мотора
Диодите се използват за защита на транзисторите от обратна , . елктротродвижеща сила която настъпва в бобините на стъпковия мотор
.Тя зависи от вида на стъпковия мотор
Бутони , те за контрол с възможност за реверсиране посоката на въртене и спиране на мотора.
IV. Алгоритъм
V. Sorce code;********************************************************
;
; Stepper Motor controller
;
; Author : Seiichi Inoue
;********************************************************
list p=pic16f84a
include p16f84a.inc
__config _hs_osc & _wdt_off & _pwrte_on & _cp_off
errorlevel -302 ;Eliminate bank warning
;**************** Label Definition ********************
cblock h'0c'
mode ;Operation mode
;0=stop 1=right 2=left
count1 ;Wait counter
count2 ;Wait counter(for 1msec)
endc
rb0 equ 0 ;RB0 of PORTB
rb1 equ 1 ;RB1 of PORTB
rb2 equ 2 ;RB2 of PORTB
rb5 equ 5 ;RB5 of PORTB
rb7 equ 7 ;RB7 of PORTB
;**************** Program Start ***********************
org 0 ;Reset Vector
goto init
org 4 ;Interrupt Vector
clrf intcon ;Clear Interruption reg
;**************** Initial Process *********************
init
bsf status,rp0 ;Change to Bank1
clrf trisa ;Set PORTA all OUT
movlw b'00100111' ;RB0,1,2.5=IN RB7=OUT
movwf trisb ;Set PORTB
movlw b'10000000' ;RBPU=1 Pull up not use
movwf option_reg ;Set OPTION_REG
bcf status,rp0 ;Change to Bank0
clrf mode ;Set mode = stop
clrf count1 ;Clear counter
clrf count2 ;Clear counter
movlw b'00000101' ;Set PORTA initial value
movwf porta ;Write PORTA
bsf portb,rb7 ;Set RB7 = 1
btfsc portb,rb5 ;RB5 = 0 ?
goto $-1 ;No. Wait
start
;************* Check switch condition *****************
btfsc portb,rb1 ;RB1(stop key) = ON ?
goto check1 ;No. Next
clrf mode ;Yes. Set stop mode
goto drive ;No. Jump to motor drive
check1
btfsc portb,rb2 ;RB2(right key) = ON ?
goto check2 ;No. Next
movlw d'1' ;Yes. Set right mode
movwf mode ;Save mode
goto drive ;No. Jump to motor drive
check2
btfsc portb,rb0 ;RB0(left key) = ON ?
goto drive ;No. Jump to motor drive
movlw d'2' ;Yes. Set left mode
movwf mode ;Save mode
;******************** Motor drive *********************
drive
movf mode,w ;Read mode
bz start ;mode = stop
bsf portb,rb7 ;Set RB7 = 1
btfsc portb,rb5 ;RB5 = 0 ?
goto $-1 ;No. Wait
movlw d'5' ;Set loop count(5msec)
movwf count1 ;Save loop count
loop call timer ;Wait 1msec
decfsz count1,f ;count - 1 = 0 ?
goto loop ;No. Continue
bcf portb,rb7 ;Set RB7 = 0
btfss portb,rb5 ;RB5 = 1 ?
goto $-1 ;No. Wait
movf porta,w ;Read PORTA
sublw b'000000101' ;Check motor position
bnz drive2 ;Unmatch
movf mode,w ;Read mode
sublw d'1' ;Right ?
bz drive1 ;Yes. Right
movlw b'00001001' ;No. Set Left data
goto drive_end ;Jump to PORTA write
drive1
movlw b'00000110' ;Set Right data
goto drive_end ;Jump to PORTA write
;-------
drive2
movf porta,w ;Read PORTA
sublw b'000000110' ;Check motor position
bnz drive4 ;Unmatch
movf mode,w ;Read mode
sublw d'1' ;Right ?
bz drive3 ;Yes. Right
movlw b'00000101' ;No. Set Left data
goto drive_end ;Jump to PORTA write
drive3
movlw b'00001010' ;Set Right data
goto drive_end ;Jump to PORTA write
;-------
drive4
movf porta,w ;Read PORTA
sublw b'000001010' ;Check motor position
bnz drive6 ;Unmatch
movf mode,w ;Read mode
sublw d'1' ;Right ?
bz drive5 ;Yes. Right
movlw b'00000110' ;No. Set Left data
goto drive_end ;Jump to PORTA write
drive5
movlw b'00001001' ;Set Right data
goto drive_end ;Jump to PORTA write
;-------
drive6
movf porta,w ;Read PORTA
sublw b'000001001' ;Check motor position
bnz drive8 ;Unmatch
movf mode,w ;Read mode
sublw d'1' ;Right ?
bz drive7 ;Yes. Right
movlw b'00001010' ;No. Set Left data
goto drive_end ;Jump to PORTA write
drive7
movlw b'00000101' ;Set Right data
goto drive_end ;Jump to PORTA write
;-------
drive8
movlw b'00000101' ;Compulsion setting
drive_end
movwf porta ;Write PORTA
goto start ;Jump to start
;************* 1msec Timer Subroutine *****************
timer
movlw d'200' ;Set loop count
movwf count2 ;Save loop count
tmlp nop ;Time adjust
nop ;Time adjust
decfsz count2,f ;count - 1 = 0 ?
goto tmlp ;No. Continue
return ;Yes. Count end
;********************************************************
; END of Stepper Motor controller
;********************************************************
end