Hírek:

Fontos tudnivalók a migrációval kapcsolatban, kérlek olvasd el:

A régi fórumról áthozott hozzászólásoknál a felhasználó neve adatvédelmi megfontolásokból véletlenszerűen generált értékekre lett  lecserélve. Ez akkor tud a valódi értékre visszaállni, ha az adott felhasználó a régi fórumon nyilatkozik, hogy beleegyezik az adatainak az új fórumra továbbításához, majd ezután itt a régi felhasználónevével és email címével regisztrál.
8~20 óra között, 1~30 percen belül megtörténik a jóváhagyás, 30 percenként ellenőrizd email fiókodat (SPAM-ot is) mindenképp kapsz mail-t, a sikeres regisztrácioról, vagy a hibáról és, hogy mi a teendőd.
Nézd meg  "A régi fórumról, az új fórumra költözés útmutatót."
A régi fórumon használt email címmel de más felhasználói azonosítóval érkező regisztrációs kérelmek törlésre kerűlnek.

Main Menu

DC szervó motoros vezérlés

Indította gaben, 2025 február 03, 18:16

Előző téma - Következő téma

ggdr57dg

Az SMC paraméterezéséhez szükséged van a motor és felhasználási körülmények adataira:
 
- feszültség konstans (V/1000rpm vagy mV/rpm)
- tekercs ellenállás
- enkóder felbontása (ppr)
- tápfesz (V)
- max. sebesség (ahol korlátozni akarod, pl. 3000 rpm)
- nyomaték határ (igazából a max. áram felvétel, amit megengedsz pl. 5A)
 
A saját motoromra az alábbiakban leírt módon számoltam ki ezeket. P1, P2 és P3 értéke kísérletezés tárgya, függ a beépítési környezettől. Én a http://elm-chan.org/works/smc/report_e.html" TARGET=_fnew>mintából (lap alján) vett értékeket állítottam be először, de természetesen valós környezetben más értékekkel működik jól.
P7 értékével én sem vagyok tisztában, lehetséges, hogy nem 0, hanem más érték kell oda, ezzel a részével még nem volt időm foglalkozni. De kiindulásnak lehet, hogy jó lesz; az eredeti leírást nem szó szerint, hanem - számomra - értelmesen fordítottam:
 
Minertia J03SC motor adatok:
 
Feszültség konstans: 12.8mV/rpm
Tekercs ellenállás: 2.86 Ohm
Enkóder: 288ppr
 
Csak megállapítás: max. elméleti fordulatszám, amit az SMC az adott paraméterekkel le tud kezelni: 5416 (2 * 52k[sps] / 1152[cpr] * 60 = 5416[rpm])
 
P0: sebesség határ
Előjel nélküli érték, amely szabályozza a mozgatási sebességet pozicionálás módban (mode3). Az SMC3 / A esetén az értéknek kisebbnek kell lennie, mint a terhelés nélküli sebesség, mert szervo hibához vezet. (J parancs esetét kihagytam, mert nincs J parancs)
 
Számítása:
P0 = sebesség határ [rpm] * P1 * Encoder felbontás [ppr] / 15000
P0 = 3000 * 4.6 * 288 / 15000 = 265
 
P1: Velocity feedback gain (KF - mintában 4.6)
P2: Velocity error proportional gain (KP - mintában 1.5)
P3: Velocity error integration gain (KI mintában 0.13)
 
P1 - P3 paraméter előjel nélküli 16 bites fixpontos érték, ahol a tizedesvessző a byte határon van.
 
P4: nyomaték határ
A paraméter korlátozza a kimenő nyomatékot (kimeneti áramot). Előjel nélküli 16 bites érték. Az SMC3 / A esetén, ha a nyomaték túllépi egy ideig, szervo hibához vezet.
 
Számítása:
P4 = Áram határ [A] / tápfeszültség [V] * tekercs ellenállás [ohm]
P4 = 3 * 36 * 2.86 = 309
 
P5: Ellen elektromos erő (back-EMF) kompenzáció
Normális esetben a kimeneti nyomaték által generált tekercs áramot érzékeli és jelzi vissza a nyomaték szabályozó körbe. Az SMC esetén azonban elhagyták az áram érzékelőt és a kimenő nyomatékot egy érzékelő nélküli áram szabályozó eljárással állítják be. A megkívánt motor áram eléréséhez az SMC ellen elektromos erő kompenzációt alkalmaz. Azért esett a választás erre az eljárásra, mert egyszerűbb felépíteni az áramkört.
Ez a paraméter előjel nélküli 16 bites fixpontos érték, ahol a tizedesvessző a byte határon van. Az érték a következőképpen számítható ki:
 
P5 = KG [mV/rpm] / Encoder felbontás [ppr] / tápfeszültség [V] * 3840
P5 = 12.8 / 288 / 36 * 3840 = 4.74 (4.74 * 256 = 1214)
 
P6: Impulzus osztó
Áttétel arány, előjel nélküli 16 bites fixpontos érték, ahol a tizedesvessző a byte határon van.
256 jelentése: 1:1 áttétel
 
P7: nincs hatása (vagy van, nem volt időm mélyebben elmerülni a kérdésben)
 
Lehetséges beállítás, zárójelben a soros terminálon beírandó értékek:
 
P0: 265  (265)
P1: 4.6  (1178)
P2: 1.5  (384)
P3: 0.13 (33)
P4: 309  (309)
P5: 4.74 (1213)
P6: 1    (256)
P7: 0    (0)

svejk

Az eredeti verzióban nincs hatása a P6-nak, az orosz módosított verzió használja csak.
 

ggdr57dg

Ez igaz, az alábbi leírás az eredeti 3/a fordítása, kiegészítve az Ivan-féle módosítással. Kozo-tól ez a hex tölthető le.

ks46twg3x

Szia!
 
A KoZo féle verziót építettem meg, és töltöttem fel. Az általad javasolt módosításokkal. Az eredeti minta szerinti értékekkel működik.
Próbáltam a "lap aljáról" vett minta alapján számolt értékekkel is, de az valamiért nem volt jó. A motor egyenetlenül, rángatva járt.
Köszönöm az infókat, megpróbálom ezek alapján beállítani!

ks46twg3x

Szia!
 
P4 számítása eltér a képlettől!
 
Melyik helyes?

ggdr57dg

Bakker, most látom, hogy még pénteken írtad. A képlet a jó, természetesen (azt nem én írtam :-) a számolást elballintottam. 3A esetén:
 
P4 = 3 / 36 * 2.86 = 0,24
 
10A esetén:
 
P4 = 10 / 36 * 2.86 = 0,8
 
Valami nem gömbölyű. http://elm-chan.org/works/smc/report_e.html" TARGET=_fnew>Ezt írja: It is a unsigned 16 bit value
Itt nem igazán van értelme tört számnak, pláne 1-nél kisebbnek. A program (ASM) részlete:
 
LimSpd:   .byte   2   ;P0,Velocity limit      Integer
GaSpd:   .byte   2   ;P1,Velocity feedback gain   8.8 fixed point
GaTqP:   .byte   2   ;P2,Proportional gain      8.8 fixed point
GaTqI:   .byte   2   ;P3,Integral gain      8.8 fixed point
LimTrq:   .byte   2   ;P4,Torque limit      Integer
GaEG:   .byte   2   ;P5,EG feedback gain      8.8 fixed point
Gear:   .byte   2   ;P6,Gear ratio for pulsed input   8.8 fixed point
GaTqD:   .byte   2   ;P7,Derivative gain      8.8 fixed point
 
P4 esetén egész számot deklarál. 2 byte, 0-65535 közötti egész számok. Ezt még bogoznom kell.
De ettől függetlenül a 300 körüli értékkel ment, ha levettem - kísérletezésként - kicsire, volt, hogy el sem indult, azonnal szervó hibát jelzett. Ergo a hiba az ön (én) készülékében keresendő :-)

svejk

A P4 variálgatása helyett érdemesebb hardveres áramkorlátot használni, az nem függ a tápfeszültségtől, és véd az esetleges motorzárlatól is.
Ebben az esetben mindig lehet a P4=max, azaz 256

ggdr57dg

Még néhány hónapig boncolgatjuk, és készülni fog egy új vezérlő, aszimmetrikus fet meghajtással, rendes áramkorláttal, optós leválasztással, normális uart felülettel és szimmetrikus enkóder bemenettel, felület szerelten. Ennyi van egyenlőre az elképzelések között, csak az idő k. kevés mindenre, arról nem is beszélve, ha mással is csak szopik az ember.
A lelke az Ivan-féle progi lesz, az avr már nem biztos. Próbálom lehetőleg nem sokkal többől kihozni, mint ezt. Többe lesz, de remélem nem sokkal.
Persze ez sem fogja megérni a rá fordított energiát, de a hobbi az ugye más kategória.
Na most megyek gyantát önteni...

svejk

Én 7 éve készülök megújítani :))
De akkor már túl kellene lépni a helyből alacsony max. encoder frekin is.
 

ks46twg3x

Valahol olvastam, hogy fontos, hogy először a vezérlő kapja meg a +5V és +12V-ot. Utána lehet csak ráadni a motor tápfeszt, ellenkező esetben a vezérlő meghibásodhat.
Mi van abban az esetben, ha a motor tápfeszből szeretném előállítani a +5V és +12V-ot? Ekkor ugyanis, gyakorlatilag egyidőben karül a vezérlőre a működtető, valamint a motor tápfesz.
SMC vezérlőről beszélek...

ggdr57dg

Én ezt nem tapasztaltam, de minden lehetséges. A port leválasztóból veszem ki a +5Voltot, a +18V  pedig a port leválasztó tápja is. Jelen pillanatban ennyivel használom, 10-20VDC között bármi lehet, a nagyobb papír forma szerint jobb. Vagyis jelen pillanatban (napokban, hónapokban) nem használom...
A motornak külön "tápja" van (hentereg egy trafó egy graetz híddal meg egy kondival) azt általában elfelejtem bedugni... Így valóban, szinte mindig először a a vezérlés kapja meg nálam a tápot.
Két "főkapcsolóval" - külön a motor tápnak - ezt megoldhatod. Igaz, ez így még nem bolond biztos, de lehet olyan megoldást is kialakítani.

s2k5ycubj

Szia Tibor! Ezt a tápellátási "csúszást" a gyári gépeken egy aux on gombal oldják meg. Amikor bekapcsolod a gépet a vezérlés feléledése után lehet bekapcsolni vele a szervók tápját és amin én dolgozom a hidraulikát is.

ks46twg3x

Nyilvánvaló, hogy csúsztatott indítással meg lehet csinálni.
Én arra gondoltam, hogy a nyákot variálom úgy meg, hogy amit a motor tápfesz megjelenik, abból alakítom ki stabilizátorok alkalmazásával a szükséges működtető feszültségeket.

svejk

Ha FET meghajtó IC-t használsz, akkor semmi gond nem lehet és nincs is.
Csupán a szűrésekre és a megfelelő Nyák topológiára kell figyelni, bár ez nem könnyű.

ks46twg3x

Mivel az SMC-t szeretném ezzel bővíteni, gondolom azzal nem lesz probléma, ott van FET meghajtó!