Vezérlés és irányítástechnológia (Mikroprocesszoros irányítás)
2.7. DC motor bekapcsolása 2.08. DC motor forgásirány változtatása (jelfogós kapcsolás) 2.09. DC motor forgásirány változtatás (integrált áramkörös kapcsolás) 2.10. Két DC motor vezérlése 2.11. DC motor fordulatszám szabályozása 2.12. Bifiláris tekercselésű léptetőmotor vezérlése
2.7. DC motor bekapcsolása A motor névleges feszültsége Ut = 12 V, vezéreljük a PORT B első (RB1) bitjéről. Induktív fogyasztóknál a kikapcsolási önindukciós feszültség károsíthatja a meghajtó tranzisztort, védelme érdekében használjuk a panelra épített védődiódát (a COM vezetéket is be kell kötni az ábra szerint).
M
GND
RA0 RA2 RA4 RA1 RA3 RA5
RB0 RB2 RB4 RB6 RB1 RB3 RB5 COM
+Ut
RB0
RESET +5V
GND
list p=16f873 #include „p16873.inc” bsf status,5 movlw 0FFh movwf trisa clrf trisb movlw 06h movwf adcon1 bcf status,5 bsf portb,1 call var bcf portb,1
RB1
RB5
PIC 16F873 µP
; a motor forog ;időzítés, ; a motor áll
RB6
RB2
RB4
RB3
RB7
motor goto var movlw movwf v03 decfsz goto decfsz goto decfsz goto return end
motor b’0000 1111’ 026h 020h,1 v03 021h,1 v03 026h,1 v03
;ugorjunk a motor cimkére ;a korábbi időzítés 15-szerese
2.08. DC motor forgásirány változtatása (jelfogós kapcsolás) Kis teljesítményű motorok állórésze permanens mágnes, forgórésze tekercselt. Forgásirány változtatáshoz elegendő a tápfeszültség két végét felcserélni, ezáltal megváltozik a motoron áthaladó áram iránya. A gyakorlat igényeit figyelembe véve még szükség van a motor elindítására és megállítására. A forgásirány váltást J1 jelfogó, a ki-be kapcsolást J2 valósítja meg. A jelfogók tekercsét a PORT B két bitje, az RB0, RB1 működteti. Ha mindkettő árammentes (bcf portb,0 bcf portb,1), akkor a motor áll. Ha J2-t bekapcsoljuk (bsf portb,1), akkor a motor forog. A forgásirányt bcf portb,0 vagy bsf portb,0 állítja be.
motor
J1
GND +Ut
RA0 RA2 RA4 RA1 RA3 RA5
J2
RB0 RB2 RB4 RB6 RB1 RB3 RB5 COM RB0
RESET +5V
GND
RB1
RB5
PIC 16F873 µP
RB6
RB4
RB2
RB3
RB7
bcf bcf bcf bsf bsf bsf
Utasítás portb,0 portb,1 portb,0 portb,1 portb,0 portb,1
J1 áram mentes
J2 áram mentes
áram mentes
meghúz
meghúz
meghúz
Motor áll forog egyik irány forog másik irány
A következő program a motort bekapcsolja, forgat egyik irányban, majd forgat a másik irányban. A motor ezután megáll. list p=16f873 #include „p16873.inc” bsf status,5 movlw 0FFh movwf trisa clrf trisb movlw 06h movwf adcon1 bcf status,5 bcf portb,0 bsf portb,1 ;motor forog, egyik irány call var ;időzítés bcf portb,0 bcf portb,1 ;a motor áll call var ;időzítés bsf portb,0 bsf portb,1 ;motor forog, másik irány call var ;időzítés bcf portb,0 bcf portb,1 ;motor áll call var motor goto motor ;ugorjunk a motor címkére var movlw b’00011111’ movwf 020h v03 decfsz 021h,1 goto v03 decfsz 022h,1 goto v03 decfsz 020h,1 goto v03 return end 2.09. DC motor forgásirány változtatás (integrált áramkörös kapcsolás) Az L293B 16 lábú IC 2 db. DC motor forgásirány váltását is képes kiszolgálni, a 2.2.-7. ábrán ezért alkalmaztuk az ½ L293B jelzést. Az IC megfelelő pontjaihoz kötjük a motort és a négy védődiódát, csatlakoztatjuk a tápfeszültséget GND és +12V jelű pontokhoz. Engedélyezve az áramkör működését (Enable = H), Be1 = H, Be2 = L esetén az egyik forgásirányt, Be1 = L, Be2 = H vezérléssel a másik forgásirányt kapjuk.
Táblázatosan: Enable H H H
Be1 H L L
Be2 L H L
Motor Forog Forog Áll
A motor árama maximálisan 1 A lehet.
M
Be2
Be1
+12V
+12V
Engedélyezés (Enable)
½ L293
GND
A motort a Be1 és Be2 pontokra kapcsolt digitális jelekkel lehet vezérelni. Csatlakozzon Be1 a portb 0. bitjéhez, Be2 a portb 1. bitjéhez. Ha mindkettő L-szintű, a motor áll. Egyikre H-, másikra L-szintet kapcsolva lehet a forgásirányt beállítani. Forgassuk a motort egyik, majd másik irányba! list p=16f873 #include „p16873.inc” bsf status,5 movlw 0FFh movwf trisa clrf trisb movlw 06h movwf adcon1 bcf status,5 bsf portb,0 bcf portb,1 ;motor forog, egyik irány call var ;időzítés bcf portb,0 bcf portb,1 ;a motor áll call var ;időzítés bcf portb,0 bsf portb,1 ;motor forog, másik irány
call bcf bcf call motor goto var movlw movwf v03 decfsz goto decfsz goto decfsz goto return end
var portb,0 portb,1 var motor
;időzítés ;motor áll ;ugorjunk a motor cimkére
b’01111111’ 026h 020h,1 v03 021h,1 v03 026h,1 v03
2.10. Két DC motor vezérlése Az L293B integrált áramkör egy tokban két motor forgásirányváltására is alkalmas. Motor1 vezérlőpontjai portb,0 és portb,1. Motor2 vezérlőpontjai portb2 és portb,3. Legyenek a motorok egy jármű (lánctlpas, hajó) erőgépei, akkor igény lehet előre menet, hátra menet, fordulás jobbra, fordulás balra irányításoknak, amelyet a két motor együttes vezérlésével érhetünk el. Program: list p=16f873 #include „p16873.inc” bsf status,5 movlw 0FFh movwf trisa clrf trisb movlw 06h movwf adcon1 bcf status,5 bsf portb,0 ;előre bcf portb,1 bsf portb,2 bcf portb,3 call var bsf portb,0 ;jobbra bcf portb,1 bcf portb,2 bcf portb,3 call var bcf portb,0 ;balra bcf portb,1 bsf portb,2 bcf portb,3 call var bcf portb,0 ;hátra bsf portb,1 bcf portb,2 bsf portb,3 call var bcf portb,0 ;áll bcf portb,1
bcf bcf call motor goto var movlw movwf v03 decfsz goto decfsz goto decfsz goto return end
portb,2 portb,3 var motor
;ugorjunk a motor cimkére
b’01111111’ 026h 020h,1 v03 021h,1 v03 026h,1 v03
2.11. DC motor fordulatszám szabályozása A fordulatszám legegyszerűbb formája, ha névleges feszültsége alatt üzemeltetjük, ekkor fordulatszáma kisebb lesz a névleges fordulatszámnál. Hátránya ennek a megoldásnak, hogy a kapocsfeszültség csökkentése jelentősen csökkenti a motor tengelyen leadott nyomatékét. A gyakorlatban ezért inpulzus - szünet arány szabályozással szokás a fordulatszámot változtatni. A szabályozás elve: U t tbe
tki T
A motor csatlakoztatása a mikrokontrollerhez megegyezik a 2.7. fejezetben bemutatott kapcsolással. A T periódus időt a motor mérete, tehetetlensége szabja meg. A laboratóriumban használt kis motorok esetében 10 ms körüli érték, kísérletileg célszerű meghatározni. A motor teljes fordulatszámmal forog, ha tbe=T és tki=0. Az alábbi beállítások fokozatosan csökkenő fordulatszámot eredményeznek: tbe tki T
026 rekesz 7 ms 00100100 3 ms 00001111 10 ms
026 rekesz 4 ms 00010101 6 ms 00100000 10 ms
026 rekesz 1 ms 00000101 9 ms 00101111 10 ms
A táblázatban a 020 hexadecimális című rekesz kezdő értékét is megadtuk. A következő program a tbe = 4 ms (00010101) és tki = 6 ms (00100000) impulzus - szünet arányt valósítja meg. list p=16f873 #include „p16873.inc” bsf status,5 movlw 0FFh movwf trisa
clrf movlw movwf bcf forog bsf call bcf call goto tbe movlw movwf v01 decfsz goto decfsz goto return tki movlw movwf v02 decfsz goto decfsz goto return end
trisb 06h adcon1 status,5 portb,0 tbe portb,0 tki forog b’00010101’ 026h 020h,1 v01 026h,1 v01 b’00100000’ 026h 020h,1 v02 026h,1 v02
2.12. Bifiláris tekercselésű léptetőmotor vezérlése A léptetőmotor forgórésze az állórészre kapcsolt áramimpulzus hatására meghatározott szöggel elfordul. A gyakorlaton Gamma típusú, három tekercses léptető motort használunk, amelynek teljes lépéses programja: list p=16f873 #include „p16873.inc” bsf status,5 movlw 0FFh movwf trisa clrf trisb movlw 06h movwf adcon1 bcf status,5 forog bsf portb,0 call timer bcf portb,0 bsf portb,1 call timer bcf portb,1 bsf portb,2 call timer bcf portb,2 goto forog timer movlw b’10000000’ ; ezzel lehet a fordulatszámot szabályozni movwf 026h v02 decfsz 020h,1 goto v02 decfsz 026h,1
goto v02 return end Az un. féllépéses üzemmódnál a lépésszög az előbbi érték fele, az 1., 2., 3. jelzésű tekercsek gerjesztési algoritmusa: 1, 1+2, 2, 2+3, 3, 3+1, … Csatlakozzanak a tekercsek processzor b portjának 0., 1., 2. bitjéhez. A főprogram részlete: forog bsf call bcf bsf bsf call bcf bcf bsf call bcf bsf bsf call bcf bcf bsf call bcf bsf bsf call …
portb,0 timer portb,0 portb,0 portb,1 timer portb,0 portb,1 portb,1 timer portb,1 portb,1 portb,2 timer portb,1 portb,2 portb,2 timer portb,2 portb,2 portb,3 timer