Léptetőmotor vezérlés
- albinolynx
- Tranzisztorgyógyász
- Hozzászólások: 161
- Csatlakozott: 2007. október 28. vasárnap, 6:00
DC servo temas elkalandozas utan... (:
Reszletek a masik topikban.
Amit szeretnek megvalositani es ebben kerem is a velemenyeteket: bipolaris leptetomotor vezerlo + kis extra.
Reszletek (elmeletben meg csak):
Egy alap bipolaris leptetomotor (egesz-fel lepeses) vezerlot veszek alapul. PWM szabalyzo, ami pihenteti a motorokat, ha nem kapnak step jelet. Még csak egy lepteto vezerlovel volt dolgom (hobbycnc-s), ami sipolt, mint a veszedelem a 14kHz-es PWM jel miatt. Ezt szeretnem kitolni 20-22kHz-ig, hogy van-e akadalya, azt nem tudom.
A chopper funkcio, csak reszben vilagos. Roviden leirom az en elmeletemet:
Minel magasabb fordulatszamon jar a motor, annal kevesebb aramot vesz fel, emiatt csokken a nyomateka is. A chopper valami olyasmit valosit meg, hogy ezen a nagy fordulaton is "nyomja" a motorba nevleges ertekig az aramot, ezzel javitva a nyomatekat. Ha nem jol gondolom, majd kijavitjatok. Szoval ez is egy feature lenne.
Az egeszet nyakononteni az extraval:
Ez az extra dolog egy kezdeti fellangolas volt, de hamar elnyomtam. Encoderrel szerettem volna kiegesziteni. Viszont bonyolult a helyzet. Nem eleg, ha lemaradas eseten kiegesziti meg "harom lepessel". Mind a harom tengelynek szinkronban kell lennie idoben, kulonben ha nem jo ponton tortenik a korrigalas lepesvesztes eseten, akkor sz*r lesz a munkadarab. Szoval hagyjuk el az extrat...
Marad a vezerlonkenti proci, nagyteljesitmenyu FET-es vegfok (akar 12Nm-es motor is vezerelheto legyen), PWM pihentetes es chopper. Meg persze az aram limit, nehogy tonkremenjen a motor.
Mi errol a velemenyetek? Bascom, meg valamelyik olcso proci, tiny2313 - ez maradt par darab a servo-s korszakbol...
Reszletek a masik topikban.
Amit szeretnek megvalositani es ebben kerem is a velemenyeteket: bipolaris leptetomotor vezerlo + kis extra.
Reszletek (elmeletben meg csak):
Egy alap bipolaris leptetomotor (egesz-fel lepeses) vezerlot veszek alapul. PWM szabalyzo, ami pihenteti a motorokat, ha nem kapnak step jelet. Még csak egy lepteto vezerlovel volt dolgom (hobbycnc-s), ami sipolt, mint a veszedelem a 14kHz-es PWM jel miatt. Ezt szeretnem kitolni 20-22kHz-ig, hogy van-e akadalya, azt nem tudom.
A chopper funkcio, csak reszben vilagos. Roviden leirom az en elmeletemet:
Minel magasabb fordulatszamon jar a motor, annal kevesebb aramot vesz fel, emiatt csokken a nyomateka is. A chopper valami olyasmit valosit meg, hogy ezen a nagy fordulaton is "nyomja" a motorba nevleges ertekig az aramot, ezzel javitva a nyomatekat. Ha nem jol gondolom, majd kijavitjatok. Szoval ez is egy feature lenne.
Az egeszet nyakononteni az extraval:
Ez az extra dolog egy kezdeti fellangolas volt, de hamar elnyomtam. Encoderrel szerettem volna kiegesziteni. Viszont bonyolult a helyzet. Nem eleg, ha lemaradas eseten kiegesziti meg "harom lepessel". Mind a harom tengelynek szinkronban kell lennie idoben, kulonben ha nem jo ponton tortenik a korrigalas lepesvesztes eseten, akkor sz*r lesz a munkadarab. Szoval hagyjuk el az extrat...
Marad a vezerlonkenti proci, nagyteljesitmenyu FET-es vegfok (akar 12Nm-es motor is vezerelheto legyen), PWM pihentetes es chopper. Meg persze az aram limit, nehogy tonkremenjen a motor.
Mi errol a velemenyetek? Bascom, meg valamelyik olcso proci, tiny2313 - ez maradt par darab a servo-s korszakbol...
T2313 kicsi lesz.
Hasonló projekt fut nálam is, Mega48 (ha kinövöm M8/88->M168) az alap.
Ha mindig azonos a motor, akkor nem vacakolnék a chopper funkcióval, mert:
- Léptetés ideje ismert (az adatlapban ahol kezd a nyomaték lekonyulni, annak 90%ra belőve az 1 lépés ideje)
- ha van léptetés/elmozdulás a jelen poíícióból, akkor a teljes feszt rá a motorra (igaz kissé túlterhelődik, mert az áram is utánanő)
- ha a léptetés ideje letelok, akkor PWM-l a fesz visszaszabályoz a névleges köré.
Nálam a léptetőfesz: 12/24V, tartófesz ~2,5V.
NMEA23 a beépített motor. LC illetve SH sorozat.
Az ismert motor miatt az áramfigyelést kivettem. Ez amúgy egyszerű, mert a léptetőre a GND-t kapcsolgatod. A GND ágba kisértékű ellenállás, amin az eső feszt figyeled.
FONTOS!
- A léptetőt ha megtekered, akkor induktívan ~20-40V fesz mérhető a tekercskivezetéseken. Ezt az árammérésnél kezelned kell.
- ha léptetés van, és a tekercset lekapcsolod, induktívan visszarúg. Ezt nálam a IRLZ34/44 nyeli le.
- a léptetésnél a full és a half step van meg. A Microstep nem érdekelt, ott PWM arányokkal kell bűvészkedni. A motor így HalfStepben 0,9 fokot tud.
Hasonló projekt fut nálam is, Mega48 (ha kinövöm M8/88->M168) az alap.
Ha mindig azonos a motor, akkor nem vacakolnék a chopper funkcióval, mert:
- Léptetés ideje ismert (az adatlapban ahol kezd a nyomaték lekonyulni, annak 90%ra belőve az 1 lépés ideje)
- ha van léptetés/elmozdulás a jelen poíícióból, akkor a teljes feszt rá a motorra (igaz kissé túlterhelődik, mert az áram is utánanő)
- ha a léptetés ideje letelok, akkor PWM-l a fesz visszaszabályoz a névleges köré.
Nálam a léptetőfesz: 12/24V, tartófesz ~2,5V.
NMEA23 a beépített motor. LC illetve SH sorozat.
Az ismert motor miatt az áramfigyelést kivettem. Ez amúgy egyszerű, mert a léptetőre a GND-t kapcsolgatod. A GND ágba kisértékű ellenállás, amin az eső feszt figyeled.
FONTOS!
- A léptetőt ha megtekered, akkor induktívan ~20-40V fesz mérhető a tekercskivezetéseken. Ezt az árammérésnél kezelned kell.
- ha léptetés van, és a tekercset lekapcsolod, induktívan visszarúg. Ezt nálam a IRLZ34/44 nyeli le.
- a léptetésnél a full és a half step van meg. A Microstep nem érdekelt, ott PWM arányokkal kell bűvészkedni. A motor így HalfStepben 0,9 fokot tud.
- albinolynx
- Tranzisztorgyógyász
- Hozzászólások: 161
- Csatlakozott: 2007. október 28. vasárnap, 6:00
Mivel a kiserletezos projekteket leptetovel vinnem tovabb (eddig alltak, varva a servo vs. stepper meccs vegere), szeretnem, ha univerzalis lenne.
Megporkolok egy marek procit, aztan csak pakolnom kelljen, ne "temazni" a kodban. Persze kerdes, hogy milyen bonyolultsagu a dolog... :D:D
Az aramfigyelest nem ertem. Indulaskor veszi fel a legnagyobb aramot, utanna folyamatosan csokken a fordulatszammal forditottan aranyosan. Tehat ha indulaskor felvenne (elnagyolt!!!) 10A-t, akkor mit csinalsz vele? Nem ertem ezt a gnd-re kapcsolast...
A PWM frekit egy nagyobb kvarccal lehet csak feltornaszni? Nem zavar a 10kHz allo motorok eseten? Menet kozben nem zavaro, mert a maromotor elnyomja.
Megporkolok egy marek procit, aztan csak pakolnom kelljen, ne "temazni" a kodban. Persze kerdes, hogy milyen bonyolultsagu a dolog... :D:D
Az aramfigyelest nem ertem. Indulaskor veszi fel a legnagyobb aramot, utanna folyamatosan csokken a fordulatszammal forditottan aranyosan. Tehat ha indulaskor felvenne (elnagyolt!!!) 10A-t, akkor mit csinalsz vele? Nem ertem ezt a gnd-re kapcsolast...
A PWM frekit egy nagyobb kvarccal lehet csak feltornaszni? Nem zavar a 10kHz allo motorok eseten? Menet kozben nem zavaro, mert a maromotor elnyomja.
Induláskor ha akarja hagy vegyen fel nagyot.... Arra a kis időre amíg beállm, nem mindegy? Utána úgyis vissza kapcsolom a tartófeszültségre (PWM lecsökkentve).
A GNDre kapcsolom:
Az unipoláris stepper esetén nálam a tekercsek közös pontja a +-on van.
Nálam a motor amúgy ~6-7 At vesz fel. Legalábbis próbál...
Álló esetben a PWM még bűvészkedés alatt van. A PWM esetén van ún. fastPWM, az a 2x-e. Na azt már nem hallom .
Most van a kvarcos teszt alatt (forrazstom a nyákot). A kód az meg romokban, darabokban...
A GNDre kapcsolom:
Az unipoláris stepper esetén nálam a tekercsek közös pontja a +-on van.
Nálam a motor amúgy ~6-7 At vesz fel. Legalábbis próbál...
Álló esetben a PWM még bűvészkedés alatt van. A PWM esetén van ún. fastPWM, az a 2x-e. Na azt már nem hallom .
Most van a kvarcos teszt alatt (forrazstom a nyákot). A kód az meg romokban, darabokban...
- albinolynx
- Tranzisztorgyógyász
- Hozzászólások: 161
- Csatlakozott: 2007. október 28. vasárnap, 6:00
A tapot nem horpasztja be?
Nekem most van teriteken 3db 6.4Nm-es vadallat (3.4kg / darab). Egy teljes motor 6.4A nevlegest felvehet (2 x 3.2A). Megugrasztom egyszerre a harmat, haat... Kell puffer rendesen.
Amugy nagyjabol akkor tiszta, mi hogyan mukodik. Kicsit meg a bipolaris motorokrol.
Itt ugye a nevleges tartonyomatekot tudja leadni a motor, mert egyszerre a ket ellentetes tekercse van gerjesztve, szemben az unipolarissal, ahol csak egy:
unipolaris:
bipolaris:
En bipolarisnal sem latom elvi akadalyat a fellepeses modnak. Tevednek?
Pelda, hogy miert szeretnem a bipolarist:
6.4Nm nyomatek - bipolaris mod
~4.5Nm nyomatek - unipolaris mod
Plussz kevesebb "tyukbel" kell...
Nekem most van teriteken 3db 6.4Nm-es vadallat (3.4kg / darab). Egy teljes motor 6.4A nevlegest felvehet (2 x 3.2A). Megugrasztom egyszerre a harmat, haat... Kell puffer rendesen.
Amugy nagyjabol akkor tiszta, mi hogyan mukodik. Kicsit meg a bipolaris motorokrol.
Itt ugye a nevleges tartonyomatekot tudja leadni a motor, mert egyszerre a ket ellentetes tekercse van gerjesztve, szemben az unipolarissal, ahol csak egy:
unipolaris:
bipolaris:
En bipolarisnal sem latom elvi akadalyat a fellepeses modnak. Tevednek?
Pelda, hogy miert szeretnem a bipolarist:
6.4Nm nyomatek - bipolaris mod
~4.5Nm nyomatek - unipolaris mod
Plussz kevesebb "tyukbel" kell...
És ha a táp behorpad? Akkor is a névleges fesz/áram felett vagyok...
Na jó, a diódahíd az túl van méretezve... Sima trafó (NEM kapcsolóüzemű).
Szűrőkondi a névleges 1A/1000uF.
A mikrokontroller fele csaltam:
_nem_ 7805. Kell a fenének beépített fűtőtest.
Kapcsolóüzemű az 5V a motor tápfeszt 12-14-15-24V-ból.
Ez meg nem annyira háklis a fesztüskékre. LM2576.
Uni/Bipoláris:
Unipoláris:
- bipolárosítható,
- egyszerűbb szabályozás
- egyszerűbb elektronika
- az unipolárishoz képest gyengébb (~60-70%)
- 6(5) tyúkbél
Bipoláris:
- nem unipolárosítható (nem mind)
- szabályozás a polaritásváltások miatt bonyolultabb, + elbalta szoftverrela táp rövidrezárható
- sok kapcsoló félvezető (2x), mint a unipolárisnál
- szabályozás bonyolult/elektronika is
- 4 tyúkbél
Félléptetést mindegyik tudja (2 tekercsre egyszerre kapcsolsz (az 1-1 tekercses közti állás közé lövöd így be).
Na jó, a diódahíd az túl van méretezve... Sima trafó (NEM kapcsolóüzemű).
Szűrőkondi a névleges 1A/1000uF.
A mikrokontroller fele csaltam:
_nem_ 7805. Kell a fenének beépített fűtőtest.
Kapcsolóüzemű az 5V a motor tápfeszt 12-14-15-24V-ból.
Ez meg nem annyira háklis a fesztüskékre. LM2576.
Uni/Bipoláris:
Unipoláris:
- bipolárosítható,
- egyszerűbb szabályozás
- egyszerűbb elektronika
- az unipolárishoz képest gyengébb (~60-70%)
- 6(5) tyúkbél
Bipoláris:
- nem unipolárosítható (nem mind)
- szabályozás a polaritásváltások miatt bonyolultabb, + elbalta szoftverrela táp rövidrezárható
- sok kapcsoló félvezető (2x), mint a unipolárisnál
- szabályozás bonyolult/elektronika is
- 4 tyúkbél
Félléptetést mindegyik tudja (2 tekercsre egyszerre kapcsolsz (az 1-1 tekercses közti állás közé lövöd így be).
- albinolynx
- Tranzisztorgyógyász
- Hozzászólások: 161
- Csatlakozott: 2007. október 28. vasárnap, 6:00
- albinolynx
- Tranzisztorgyógyász
- Hozzászólások: 161
- Csatlakozott: 2007. október 28. vasárnap, 6:00
Ertem...
Tetelezzunk fel egy esetet, ahol egeszlepesre van szukseg (egyszeruseg kedveert). Elkezdem kapcsoltati a kimeneteket szepen sorba.
Ez egy ciklusba foglalva hogyan nezne ki "szepen"? Minden sorba le kellene irni, hogy adott kimenet 0, vagy 1?
Hogyan kell azt megoldani, hogy egy jelre adott ponttol "visszafele fusson a ciklus"?
Alapnak egeszlepes:
1100
0110
0011 *
1001
Ez egy ciklusban. Itt ugye szepen forogna a motor. Csillagozott resznel kap egy DIR (iranyvaltas) jelet. Utanna ugye nem a "1001"-nek kellene kovetkezni, hanem a "0110"-nek, stb.
Ez a resz programozas szempontjabol sotet nekem... Led villogtatasig szeretnek eljutni. (:
Tetelezzunk fel egy esetet, ahol egeszlepesre van szukseg (egyszeruseg kedveert). Elkezdem kapcsoltati a kimeneteket szepen sorba.
Ez egy ciklusba foglalva hogyan nezne ki "szepen"? Minden sorba le kellene irni, hogy adott kimenet 0, vagy 1?
Hogyan kell azt megoldani, hogy egy jelre adott ponttol "visszafele fusson a ciklus"?
Alapnak egeszlepes:
1100
0110
0011 *
1001
Ez egy ciklusban. Itt ugye szepen forogna a motor. Csillagozott resznel kap egy DIR (iranyvaltas) jelet. Utanna ugye nem a "1001"-nek kellene kovetkezni, hanem a "0110"-nek, stb.
Ez a resz programozas szempontjabol sotet nekem... Led villogtatasig szeretnek eljutni. (:
sziasztok!
én is belefogtam a vezérlés megírásába de sajna elakadtam.
mi az amit még nem definiáltam???
köszi a segitséget!
'cnc vezérlő
'feladat:a STEP-DIR jelek feldolgozása
$crystal = 10000000
$regfile = "attiny2313.dat"
$baud = 9600
$hwstack = 64
$swstack = 20
$framesize = 80
Config Portb.6 = Input
Config Portb.5 = Input
Config Portb.4 = Output
Config Portb.3 = Output
Config Portb.2 = Output
Config Portd.5 = Output
Lepes Alias Portb.6
Irany Alias Portb.5
Jled Alias Portb.0
Bled Alias Portb.1
Dim Temp1 As Word
Dim Temp As Word
Dim Jelenposition As Word
Do
If Irany < 0 Then Gosub Csokkenes
If Irany < 1 Then Gosub Novekedes
Loop
Csokkenes
Temp = Jelenposition - 1
Temp1 = Temp Mod 8
Select Case Temp1
Jled = 1
Waitms 100
Gosub Lepked
Return
Novekedes
Temp = Jelenposition + 1
Temp1 = Temp Mod Temp1 8
Selec Case Temp1
Bled = 1
Waitms 100
Gosub Lepked
Return
Lepked
Select Case Temp1
Case 0
Portb.4 = 1
Portb.3 = 0
Portb.2 = 0
Portd.5 = 0
Case 1
Portb.4 = 1
Portb.3 = 1
Portb.2 = 0
Portd.5 = 0
Case 2
Portb.4 = 0
Portb.3 = 1
Portb.2 = 0
Portd.5 = 0
Case 3
Portb.4 = 0
Portb.3 = 1
Portb.2 = 1
Portd.5 = 0
Case 4
Portb.4 = 0
Portb.3 = 0
Portb.2 = 1
Portd.5 = 0
Case 5
Portb.4 = 0
Portb.3 = 0
Portb.2 = 1
Portd.5 = 1
Case 6
Portb.4 = 0
Portb.3 = 0
Portb.2 = 0
Portd.5 = 1
Case7
Portb.4 = 1
Portb.3 = 0
Portb.2 = 0
Portd.5 = 1
End Select
Return
End
én is belefogtam a vezérlés megírásába de sajna elakadtam.
mi az amit még nem definiáltam???
köszi a segitséget!
'cnc vezérlő
'feladat:a STEP-DIR jelek feldolgozása
$crystal = 10000000
$regfile = "attiny2313.dat"
$baud = 9600
$hwstack = 64
$swstack = 20
$framesize = 80
Config Portb.6 = Input
Config Portb.5 = Input
Config Portb.4 = Output
Config Portb.3 = Output
Config Portb.2 = Output
Config Portd.5 = Output
Lepes Alias Portb.6
Irany Alias Portb.5
Jled Alias Portb.0
Bled Alias Portb.1
Dim Temp1 As Word
Dim Temp As Word
Dim Jelenposition As Word
Do
If Irany < 0 Then Gosub Csokkenes
If Irany < 1 Then Gosub Novekedes
Loop
Csokkenes
Temp = Jelenposition - 1
Temp1 = Temp Mod 8
Select Case Temp1
Jled = 1
Waitms 100
Gosub Lepked
Return
Novekedes
Temp = Jelenposition + 1
Temp1 = Temp Mod Temp1 8
Selec Case Temp1
Bled = 1
Waitms 100
Gosub Lepked
Return
Lepked
Select Case Temp1
Case 0
Portb.4 = 1
Portb.3 = 0
Portb.2 = 0
Portd.5 = 0
Case 1
Portb.4 = 1
Portb.3 = 1
Portb.2 = 0
Portd.5 = 0
Case 2
Portb.4 = 0
Portb.3 = 1
Portb.2 = 0
Portd.5 = 0
Case 3
Portb.4 = 0
Portb.3 = 1
Portb.2 = 1
Portd.5 = 0
Case 4
Portb.4 = 0
Portb.3 = 0
Portb.2 = 1
Portd.5 = 0
Case 5
Portb.4 = 0
Portb.3 = 0
Portb.2 = 1
Portd.5 = 1
Case 6
Portb.4 = 0
Portb.3 = 0
Portb.2 = 0
Portd.5 = 1
Case7
Portb.4 = 1
Portb.3 = 0
Portb.2 = 0
Portd.5 = 1
End Select
Return
End