Léptetőmotor vezérlés

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Avatar
Robert
Elektronbűvölő
Hozzászólások: 9989
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

HozzászólásSzerző: Robert » 2008. augusztus 10. vasárnap, 20:09

Sehogy.
Vagy tömb és numerikus hozzárendelés, vagy alias....

Avatar
kefeur
Tranzisztorgyógyász
Hozzászólások: 186
Csatlakozott: 2008. február 17. vasárnap, 7:00
Tartózkodási hely: Szuhakálló

HozzászólásSzerző: kefeur » 2008. augusztus 13. szerda, 21:34

Úgy néz ki megoldottam a kérdést , most már csak finomítani kell a működést.

Avatar
albinolynx
Tranzisztorgyógyász
Hozzászólások: 161
Csatlakozott: 2007. október 28. vasárnap, 6:00
Tartózkodási hely: Veszprem
Kapcsolat:

HozzászólásSzerző: albinolynx » 2008. szeptember 20. szombat, 12:52

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... :P

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9989
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

HozzászólásSzerző: Robert » 2008. szeptember 20. szombat, 13:07

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.

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9989
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

HozzászólásSzerző: Robert » 2008. szeptember 20. szombat, 13:10

Csicsergés a PWM miatt:

Nem a belső 8 MHz-ről jár a chip, hanem a külső 20 MHz-ről.
Így a Prescale=8 esetén:
20000kHz/8/256=9,7kHz! (PWM periódusidő)

Avatar
albinolynx
Tranzisztorgyógyász
Hozzászólások: 161
Csatlakozott: 2007. október 28. vasárnap, 6:00
Tartózkodási hely: Veszprem
Kapcsolat:

HozzászólásSzerző: albinolynx » 2008. szeptember 20. szombat, 13:17

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: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. :)

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9989
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

HozzászólásSzerző: Robert » 2008. szeptember 20. szombat, 13:22

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 :P.


Most van a kvarcos teszt alatt (forrazstom a nyákot). A kód az meg romokban, darabokban...

Avatar
albinolynx
Tranzisztorgyógyász
Hozzászólások: 161
Csatlakozott: 2007. október 28. vasárnap, 6:00
Tartózkodási hely: Veszprem
Kapcsolat:

HozzászólásSzerző: albinolynx » 2008. szeptember 20. szombat, 13:39

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:
Kép

bipolaris:
Kép


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... :P

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9989
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

HozzászólásSzerző: Robert » 2008. szeptember 20. szombat, 13:52

É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).

Avatar
albinolynx
Tranzisztorgyógyász
Hozzászólások: 161
Csatlakozott: 2007. október 28. vasárnap, 6:00
Tartózkodási hely: Veszprem
Kapcsolat:

HozzászólásSzerző: albinolynx » 2008. szeptember 20. szombat, 14:00

Tenyleg, a 2x-es FET igeny. Ez ki is ment a fejembol...
Igy valoban erdemesebb az unipolarisnal maradni. Igy szinte mar tokeletes is a programod, amit irsz... :twisted:

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9989
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

HozzászólásSzerző: Robert » 2008. szeptember 20. szombat, 16:01

Még a program alfateszt. És egyféle motorhoz való. És még sorosporton kommunikálok, a léptetős odébb van....

Avatar
albinolynx
Tranzisztorgyógyász
Hozzászólások: 161
Csatlakozott: 2007. október 28. vasárnap, 6:00
Tartózkodási hely: Veszprem
Kapcsolat:

HozzászólásSzerző: albinolynx » 2008. szeptember 20. szombat, 17:10

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. (:

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9989
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

HozzászólásSzerző: Robert » 2008. szeptember 20. szombat, 18:06


Avatar
dzoli
Újonc
Újonc
Hozzászólások: 6
Csatlakozott: 2009. január 24. szombat, 7:00

HozzászólásSzerző: dzoli » 2009. január 24. szombat, 22:29

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
:oops: :oops: :oops:

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9989
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

HozzászólásSzerző: Robert » 2009. január 24. szombat, 22:39

Csokkenes, novekedes csak a Step jellel egyidoben valo figyeleskor lehet. A Step jelet tessek INT-be rakni es itt figyelni a DIR jelet. Ezmondja meg h csokken vagy novekszik.


Vissza: “Bascom-AVR nyelvű programozás (AVR programozásának lehetőségei)”

Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 1 vendég