Žingsninio variklio paleidimas naudojant PIC16F84 mikrovaldiklį (Video)  (2)

Žingsniniam varikliui (angl. step motor) kontroliuoti naudojamas keturių kanalų valdiklis (L293), kurį valdysime su PIC16F84 mikrovaldikliu.


Prisijunk prie technologijos.lt komandos!

Laisvas grafikas, uždarbis, daug įdomių veiklų. Patirtis nebūtina, reikia tik entuziazmo.

Sudomino? Užpildyk šią anketą!

Turi seną spausdintuvą ir nežinai ką su juo daryti, o gal planuoji robotus konstruoti, ir nežinai, kaip valdyti jo judesius? Žingsniniai varikliai, galima sakyti, yra pirmasis žingsnis link robototechnikos.

L293 tai 4 kanalų valdiklis valdomas loginiais įtampos lygiais. Valdiklio paskirtis - į variklį paduoti maitinimo įtampą. L293 valdikliui galima paduoti iki 36 V lygio įtampą ir jis išėjime gali išduoti 2 A stiprio srovę.

Pasinaudojus L293B valdikliu, mes galime kontroliuoti 4 paprastus variklius, kurie suksis į vieną pusę. Jei norima, kad būtų galima tą patį variklį reversuoti (pasukti atgal), prie L293 valdiklio bus galima prijungti 2 variklius (tokiu būdu atsilaisvina po vieną papildomą valdymo liniją), jeigu norime kontroliuoti žingsninį variklį - teks tenkintis tik vienu varikliu.

L293 valdiklio jungimo variantai.

L293 jungimo būdai

 

Jeigu jungiamas nedidelės galios variklis ar varikliui paleisti nereikalinga didelė įtampa,  tokiu atveju galima naudoti supaprastintą schemą (nenaudojant diodų):

 Žingsninio variklio pajungimo schema

SW1 – jungtukas, naudojamas variklio judėjimo režimui paleisti

SW2 – jungtukas, naudojamas variklio judėjimo režimui pakeisti

Programa:

Pirmiausiai programoje kaip įprasta atlieku visus nustatymus. Norint, kad variklis nuolat nesisuktų, reikia naudoti kokį nors įjungiantį elementą - šiuo atveju tam naudojamas jungtukas (SW2). Norint žingsninį variklį paleisti veikti keliais skirtingais rėžimais, panaudotas SW1 jungtukas.

Tiek pirmo, tiek antro kanalo leidimo signalai E1 ir E2; jų jungti neprivaloma.

         btfsc PORTA,sw2                    ;antro jungtuko tikrinimas ar atleistas
           goto pradžia
           btfsc PORTA,sw2                    ;antro jungtuko tikrinimas
           goto $-.1                                  ;grizta atgal per viena komanda
           btfsc PORTA,sw1                    ;jungtuko tikrinimas
           goto antras_var


Variklio sukimosi paleidimas. Pateikti du variantai, kai žingsninis variklis sukasi tik į vieną pusę ir kai žingsninis variklis sukinėja tai į viena tai į kitą pusę


pirmas_var
           movlw .50        ;duomenu nustatymas
           movwf TARP   ;duomenu irasymas
var1
           call pirmyn0      ;variklio pasukimo i prieki ciklo papprogrames iškvietimas
           decfsz TARP,1 ;skaitliuko tikrinimas
           goto var1         
           goto pradžia

antras_var
           call pirmyn        ;variklio pasukimo i prieki ciklo papprogrames iškvietimas
           call pirmyn        ;variklio pasukimo i prieki ciklo papprogrames iškvietimas
           call pirmyn        ;variklio pasukimo i prieki ciklo papprogrames iškvietimas
           call atgal           ;variklio pasukimo atgal ciklo papprogrames iškvietimas
           call atgal           ;variklio pasukimo atgal ciklo papprogrames iškvietimas
           call pirmyn        ;variklio pasukimo i prieki ciklo papprogrames iškvietimas
           call pirmyn        ;variklio pasukimo i prieki ciklo papprogrames iškvietimas
           call pirmyn        ;variklio pasukimo i prieki ciklo papprogrames iškvietimas
           goto pradžia

;Variklio pasukimas į priekį

pirmyn
           movlw 0x01                 ;kodo siuntimas
           movwf PORTB            ;issiuntimas L293 valdikliui
           call wait10000             ;velinimas
           movlw 0x02                 ;kodo siuntimas
           movwf PORTB            ;issiuntimas L293 valdikliui
           call wait10000             ;velinimas
           movlw 0x04                 ;kodo siuntimas
           movwf PORTB            ;issiuntimas L293 valdikliui
           call wait10000             ;velinimas
           movlw 0x08                 ;kodo siuntimas
           movwf PORTB            ;issiuntimas L293 valdikliui
           call wait10000
           return
;Variklio pasukimas atgal
atgal
           movlw 0x08                 ;kodo siuntimas
           movwf PORTB            ;issiuntimas L293 valdikliui
           call wait10000             ;velinimas
           movlw 0x04                 ;kodo siuntimas
           movwf PORTB            ;issiuntimas L293 valdikliui
           call wait10000             ;velinimas
           movlw 0x02                 ;kodo siuntimas
           movwf PORTB            ;issiuntimas L293 valdikliui
           call wait10000             ;velinimas
           movlw 0x01                 ;kodo siuntimas
           movwf PORTB            ;issiuntimas L293 valdikliui
           call wait10000              ;velinimas
           return
;Variklio pasukimas į priekį su kitu velinimu
pirmyn0
           movlw 0x01                 ;kodo siuntimas
           movwf PORTB            ;issiuntimas L293 valdikliui
           call wait1000                ;velinimas
           movlw 0x02                 ;kodo siuntimas
           movwf PORTB            ;issiuntimas L293 valdikliui
           call wait1000                ;velinimas
           movlw 0x04                 ;kodo siuntimas
           movwf PORTB            ;issiuntimas L293 valdikliui
           call wait1000                ;velinimas
           movlw 0x08                 ;kodo siuntimas
           movwf PORTB            ;issiuntimas L293 valdikliui
           call wait1000                ;velinimas
           return

Žingsninio variklio greitis priklauso nuo vėlinimo tarp siunčiamų signalų žingsneliui atlikti. Jeigu mes padarysime per didelį greitį, t.y. sumažinsime vėlinimo tarpą tarp siunčiamų komandų, gali nesisukti variklis. Kodėl? Variklio greitis priklauso nuo komandos siuntimo greičio ir variklio naudojamos srovės. Jeigu bandome pagreitinti variklio sukimosi greitį programiniu būdu, proporcingai turime didinti ir srovę (tai atlikti galime ir didindami įtampą).

 

Atliktas eksperimentinio darbo medžiaga:

Failai:

Asembleris (.asm)

Heksas (.hex)

SĖKMĖS !!!

Pasidalinkite su draugais
Aut. teisės: www.technologijos.lt
(0)
(0)
(0)

Komentarai (2)

Susijusios žymos: