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

y2u56a0cc


000000000

Sziasztok,
 
Áramszabályozott (nyomaték referencia) DC hajtást szeretnénk készíteni, van már egy panelünk (xmega16-osra alapul, sneci vezérlőihez hasonló konstrukció).
 
Áram-szabályozni végül is sikerült, szépen felkoppan az áramjel egy terhelés hatására stb.
Viszont nem tudjuk, hogy mennyire jó/rossz a behangolt szabályozás, a kőkori gyári analóg szabályozású végfokkal összemértük, és szerintem nem értük utol.
 
Az áramjel egy 18mOhm-os söntről jön, átmegy egy 1kOhm-22nF-os RC szűrőn, aztán egy műveleti erősítő, és be az ADC lábra. 8 bites feloldással szépen mérhető (max 1-2 LSB-t ugráló) áramjelünk van a prociban.
 
A PWM 20kHz, az áramszabályozás 10kHz-en fut.
 
Két napja nem jutok előrébb a dologgal, keresgéltem sokfelé, hátha rájövök, hogy mi nem stimmel. ("DC motor current control" után keresgélve kidob a google kismillió használhatatlan "tudományos" publikációt, aminek köze nincs a valósághoz.)
 
SCARA Robotot irányítanánk számított nyomatékok módszerével, és a leendő központi egységből kijövő áram (nyomaték) referenciákat kellene realizálni kefés DC motorokon.
 
Nem tudom csinált-e már ilyet valaki, van-e valakinek gyakorlati tapasztalata ezzel kapcsolatban. Ránk férne némi jó tanács. Igyekszek még kimenteni és feltenni néhány szkópképet, meg kapcsrajzot, hogy konkrétabb legyen a felvetés.
 
Üdv.: Szayer Géza

000000000

Itt van 5 kép az eredeti Adpet vezérlőről, a felső jel a PWM (invertáltan látszik, a motor egyik pólusán mérve, a sönt egyik fele volt a szkóp földje), a másik a söntön eső feszültség.
 
http://postimage.org/image/2yekr3uxw/" TARGET=_fnew>http://s2.postimage.org/2yekr3uxw/image.jpg" border=0>
http://postimage.org/image/2yexzemw4/" TARGET=_fnew>http://s2.postimage.org/2yexzemw4/image.jpg" border=0>
http://postimage.org/image/2yexzemw4/" TARGET=_fnew>http://s2.postimage.org/2yexzemw4/image.jpg" border=0>
http://postimage.org/image/2yexzemw4/" TARGET=_fnew>http://s2.postimage.org/2yexzemw4/image.jpg" border=0>
http://postimage.org/image/2yexzemw4/" TARGET=_fnew>http://s2.postimage.org/2yexzemw4/image.jpg" border=0>
 
Saját vezérlő jele. Felül PWM a motor egyik pólusán (Sign/Magnitude kapcsolási mód) Alul az áramjel.
 
http://postimage.org/image/2yf693dd0/" TARGET=_fnew>http://s2.postimage.org/2yf693dd0/image.jpg" border=0>
 
 
A saját áramszab vagy nem áll be, vagy beleng (kb. 1kHz-es periódussal) a növelt arányos tagtól.
 
Próbáltam kis P tag mellé tenni egy nagyobb integrálót, hogy lengjen a referencia körül, így kis lengésekkel beáll, de túl lassan. A motor kommutációból eredő áramingadozását (párszáz Hz) sem tudja kompenzálni.
 
100%, hogy túl nagy a fázistolás, nekiálltam lefaragni a kódot, meg kicsit átrendezni, és javult a helyzet, de nem jó. Kicsit olyan érzésem van, hogy az xmega proci erre nem elég.
 
Lefaragás után 15-20us után már az új beavatkozó PWM kitöltés megy ki, az áramértéket nem szűrtem. Van még egy RC szűrő, ami tolhat 7-10us-et. P tagot jelentősen lehetett növelni, de kevés.
 
Lehet, hogy valami analóg megoldás kellene. Pl. műveleti erősítő után egy másik műveleti erősítővel analóg P vagy PI szabályzó, ami egy PWM generátor ref jelét adja. Nincs erre célIC?
 

x4rhew5r3

IGBT vagy FET a végfok? Van kimeneti szűrő ami ennyire lelassítja a fel és lefutást? A szkóp szerinti lefutó élnél csilingel be. Nincs ott egy pici összezárás?
Float vagy integer aritmetikát használsz? 10kHz-es ciklus esetleg fixpontos aritmetikával elképzelhető. Gondolom 32MHz-en jár az xmega.
Sok-sok kérdés van...ami nem biztos hogy publikus a részetekről.

000000000

Szia! Szívesen segítek Neked, annyit már most mondok ez egy sikamlós téma bizonyos nyomaték határok között (lásd a motor kéttárolós matematikai modellje). Sajnos hajtás méretezési problémakörbe (J és társai) is belefutottál, aminek következményei vannak az elektronikára nézve.

s7manbs8

Ha sebesség gond van, először fogni kell egy P4-et és azzal számoltatni DOS, vagy LINUX alatt, aztán ha megy az algoritmus, lehet PIC-cel csinálni tovább. :)

000000000

Szia,
 
Nagyon nem titok a téma.
FET végfok, 2184-es FETdriver hajt IRF540-eket.
Itt a kapcsrajz egy része (még ki kell találnom hová tudom feltölteni pdf-be pl.):
http://postimage.org/image/276vqsbb8/" TARGET=_fnew>http://s1.postimage.org/276vqsbb8/f_lh_d.jpg" border=0>
 
A 2104-es driverek nincsenek beforrasztva, és a gate előtti diódás ág sincs beforrasztva (simán 47Ohmal tűnt jónak a fel lefutás).
 
Itt vannak róla szkópképek:
http://postimage.org/image/2787pddms/" TARGET=_fnew>http://s1.postimage.org/2787pddms/image.jpg" border=0>
http://postimage.org/image/278b0g2mc/" TARGET=_fnew>http://s1.postimage.org/278b0g2mc/image.jpg" border=0>
http://postimage.org/image/278b0g2mc/" TARGET=_fnew>http://s1.postimage.org/278b0g2mc/image.jpg" border=0>
 
Természetesen fixpontosan számolunk, most (előjeles 16bit), de valószínű, hogy lebutítom még 8 bitesre, mert úgyis -127...127-ig kap referenciát SPI-n és az ADC sem ad többet 12 biten.
 
A fázistolásra kegyetlen érzékenynek tűnik az áramkör. Eddig úgy néz ki, hogy a "legbutább" P szabályozó többet ér el, mint bármi, ami hosszabb ideig fut. Ma nekiállok idő-optimalizálni az egész szabot, hogy a legfrissebb jó helyről vett mintával legyen beavatkozójel a PWM regiszterbe pont a PWM "megszakítás" előtt.
 
Játszottam vele még, hogy a timer compare IT-jével mértem az ADC-t, úgy, hogy PWM fel és lefutó élbe ne essen  mintavétel. (A legtöbb Lowside árammérésnél jelentős a földzavar, nem lehet vele nagyon mit tenni. 2-es csatorna két közeli földpont közt:
http://postimage.org/image/27agqpdtw/" TARGET=_fnew>http://s1.postimage.org/27agqpdtw/image.jpg" border=0> )
 
A söntről egy RC-szűrő veszi le a jelet, azt is próbálgatom variálni, 7-10us-et tol, ha leszűröm vele a ripple vastagját.
 
Egyébként ez a panel 3 végfokot (6 félhidat) hajt, nem áramszabra terveztük, csak ezen próbálgatjuk. Viszont ha egy áramszabot elvisz, akkor 3-at is, mert rövid idő alatt kell úgyis egy lefusson.

x4rhew5r3

Akkor az a csilingelés csak a gyorsabb átmenet miatt nagyobb a lefutó élnél. Ezekkel az értékekkel nem lehet összenyitás. A felső ági fet drainje tövébből viszont érdemes még egy jó minőségű hidegítést betenni.
 
Azt nem nagyon tudom elképzelni, hogy csak P taggal jót lehet csinálni. Mivel minden mindennel összefügg, először meg kellene próbálni a szervo ciklust 10KHz helyett 1kHz-en járatni. Akkor talán nem lesz annyira érzékeny a fázistolásra. Nekem az A/D is elég zajos, még digitálisan is kellett valami primitív szűrő.
Tehát két körre bontani, a 10kHz-es körön megy az áramérzékelés, de digitális szűréssel (pl.: A = Ai * 1/8 + Ai-1 * 7/8;  Ai-1 = A;)
Az 1kHz-es körön pedig megy a nyomatékszabályzás a szűrt visszacsatoló jel alapján.

000000000

Nem fut egy körben a kettő, a pozíciószab  az egy PCI kártyán fut majd, azon belül egy FPGA-ban lágymagos procin, ide csak egy áramreferencia jön SPI-n majd.
 
EMC2-höz csinálunk amúgy 6 tengelyes PCI kártyát, hasonlót mint pl. a MESA 5i20 csak ebbe bele lehet húzni még egy microblaze-t a kövérebb FPGA-ba, és futhat rajta inverz dinamika.
 
Szóval a 10kHz-es (csak áramszab, most épp 20kHz-en is járatjuk, eredménytelenül) körrel van a gond, nem tűnik úgy, hogy számítási teljesítmény lenne, egyszerűen valami szálka van még a rendszerbe és hangolhatatlan. Nem csináltunk még soha áramszabot, az alkatrészgyártóknak meg nincs kefés DC-hez semmi reference designja/application noteja mert ahol nyomatékra szabályoznak (nem lineáris rendszerek, drágább robotok) oda ma betesznek egy BLDC-t vagy PMSE motort inkább. (Ebbe a kőkori SCARA-ba, amivel játszunk kefés DC-k vannak.)
 
Ülünk az ügyön, de nem tudjuk mi lehet a gond, és mikor sikerül megoldani.
 
Majd szívesen töltünk fel a rendszerről infót stb. csak még nagyon félkész, nincs kedvünk dokumentálni, amíg dolgozni is lehet :)

000000000

A mai nap eredményei sem túl előrevezetőek, de valamival többet tudunk...
 
Eldugott kis fázistolásra gyanakodva nekiálltam debuggolni, egy lábat felváltva le-fel húztam, amikor a mintavétel történik, és a szabályzó algoritmus futni kezd. Ugyanúgy felváltva felülírtam a PWM kimenetet 25%-ra illetve 75%-ra, hogy teszteljem, hogy az aktuális kiszámolt beavatkozó jel kerül-e a PWM regiszterbe, és a szerint megy a kitöltés:
http://postimage.org/image/187i60tg/" TARGET=_fnew>http://s2.postimage.org/187i60tg/image.jpg" border=0>
Ez működik jól, sajnos nem itt a gond.
 
A másik érdekesség, hogy egy adott P tagnál kis referenciára nem leng be (25% a maradó hiba), PWM kitöltés 25% körüli, ha szabadon forog a motor.
Adok neki 1,5-ször akkora referenciát, és beleng teljesen, ugyanazokkal a paraméterekkel:
http://postimage.org/image/18xyrkpw/" TARGET=_fnew>http://s2.postimage.org/18xyrkpw/image.jpg" border=0>
 
Ha lefogom/leterhelem a motort, akkor nagyon szépen beáll, és nem gerjed tovább. A PWM kitöltés lejjebb megy ugye, hogy lent tartsa az áramot. Ha elengedem, és a kitöltés megint nagyobb lesz, akkor begerjed.
 
A szkópképre az első mérés alapján berajzoltam, ahogy a PWM felfutó élek előtt elindul a mintavétel és a szabályozó algoritmus:
http://postimage.org/image/1895pdb8/" TARGET=_fnew>http://s2.postimage.org/1895pdb8/leng_s.jpg" border=0>
Ebből rögtön látszik, hogy pl. 15..25%-os PWM tartományban a rendelkezés fele annyi időre van a mintavétel helyétől. Tehát egy 75% feletti kitöltésnél a diszkrét rendszer késleltetése kb. kétszeresére ugrik. Mivel jelenleg nincs jobb ötletünk, feltesszük, hogy ez hülyíti meg a rendszert.
 
Analóg esetben, ha egy PWM generátor állítja elő (fűrészjel, komparátor stb.) a PWM-et, aminek egy analóg szab adja a fesz bemenőjelet, akkor ott a PWM ciklus közben változó referenciára is reagál még a kimenet.
 
Úgyhogy következőnek ezt próbálom meg összehozni, hogy az áramszab ciklus indítását a lefutó élhez igazítom.
Ezt viszont csak az előző lefutó él alapján lehet becsülni, hogy hová fog esni, tehát extrém lengés esetén ez is meg fog hülyülni.
 
A másik észrevétel, hogy az áramjel egy szabályozó ciklus (most 20kHz=50us) alatt nagyon nagyot képes változni. Tehát túl gyorsnak tűnik ez a rendszer, olyan érzést kelt, hogy 100kHz-es PWM-el kéne hajtani...
(40kHz-en is kipróvbáltam, kicsit javít, de nem rózsás.)

sanka74

Sziasztok! AMC  AC szervo vezérlők hangolásáról tudna adni felvilágosítást valaki? A programot már letöltöttem, de még nem próbáltam meg állítgatni..nagyon sok lehetőség van a programban, nem akarok elrontani semmit..

x4rhew5r3

A C9 és R10-et vedd ki, és úgy csinálj egy szkóp képet. Ezt a két félhíd kimenetre kellene kötni és nem a shunt ellenállásra.
 
Nagyon jó projekt!!!

x4rhew5r3


sanka74

Igen az. A pontos típust is tudom, a következő szünetben megírom.

sanka74