Rizeni servomotoru pomoci MCU
Dostalo se mi do ruky par servomotoru s drivery. Vzhledem k tomu ze jsem zatim pracoval jen s krokovymi motory, chtel bych se zeptat jakym zpusobem se tohle vlastne ridi? Pokud jsem pochopil po letmem pocteni manualu, otacky/smer se ridi napetim +-10V a ze serva leze kvadraturni signal o poloze ktery musim hlidat a vyhodnotit a podle toho menit napeti? Vstupy step/dir nebo neco podobneho jsem nenasel. Existuje nejake hotove reseni kde bych poslal jen napr udaj o rychlosti a poloze a o zbytek se postaral ten ridici system? Bude to do stroje ktery nebude rizen pomoci PC, takze zadny mach ani nic podobneho neprichazi v uvahu.
vážně
mezi řízením step-dir a +- 10V je zásadní principiální rozdíl:
step dir je informace o poloze, tj. o jakou vzdálenost má osa popojet, systém nepotřebuje ke své funkci znát skutečnou polohu osy, mlčky se předpokládá, že je tam, kam ji předchozími kroky poslal
+-10V je informace o rychlosti, jakou má osa jet, polohu je nutno získat z pravítka na ose nebo z rotačního snímače polohy na šroubu nebo na motoru, z rozdílu žádané a skutečné polohy ( a dalších vstupních údajů) nadřazený řídící systém počítá rychlost a směr (= velikost a polaritu napětí v rozsahu +-10V) kterou osa v daném okamžiku jede
pravítko na ose (informaci o poloze) u řízení +-10V nepotřebuješ například v situaci, kdy osou budeš jen jezdit tam a zátky po dráze definované např. koncáky a skutečná přesná poloha tě nezajímá
např. u posuvu stolu brusky typu "magnetka"
pak by stačilo to celé řídit jednoduchou reléovou logikou, která by na základě impulsů z koncáků měnila polaritu, rampy by obstaral RC článek a rychlost potenciometr
mezi řízením step-dir a +- 10V je zásadní principiální rozdíl:
step dir je informace o poloze, tj. o jakou vzdálenost má osa popojet, systém nepotřebuje ke své funkci znát skutečnou polohu osy, mlčky se předpokládá, že je tam, kam ji předchozími kroky poslal
+-10V je informace o rychlosti, jakou má osa jet, polohu je nutno získat z pravítka na ose nebo z rotačního snímače polohy na šroubu nebo na motoru, z rozdílu žádané a skutečné polohy ( a dalších vstupních údajů) nadřazený řídící systém počítá rychlost a směr (= velikost a polaritu napětí v rozsahu +-10V) kterou osa v daném okamžiku jede
pravítko na ose (informaci o poloze) u řízení +-10V nepotřebuješ například v situaci, kdy osou budeš jen jezdit tam a zátky po dráze definované např. koncáky a skutečná přesná poloha tě nezajímá
např. u posuvu stolu brusky typu "magnetka"
pak by stačilo to celé řídit jednoduchou reléovou logikou, která by na základě impulsů z koncáků měnila polaritu, rampy by obstaral RC článek a rychlost potenciometr
Obvykle se dějí věci obvyklé. Méně často se dějí věci neobvyklé a zcela vyjímečně se dějí věci vyjímečné...
Masturn 40 CNC, Hermle UWF1200H CNC a pár klasik
http://www.radialengine.cz" onclick="window.open(this.href);return false;
http://www.autopejsek.cz" onclick="window.open(this.href);return false;
Masturn 40 CNC, Hermle UWF1200H CNC a pár klasik
http://www.radialengine.cz" onclick="window.open(this.href);return false;
http://www.autopejsek.cz" onclick="window.open(this.href);return false;
Tak mu porad když je to dostatečné...Thomeeque píše:bronek999, Monteg: bližší specifikace daných komponent by sice od věci určitě nebyla, ale to zadání je dostatečný.
XpertMill, Gravos, Ninos, Galaad
IQ156
-1500Kč, -520Kč, -1čokoláda, - 28000Kč
www.freeair.cz www.rotexelectric.eu www.retrofitcnc.cz
IQ156
-1500Kč, -520Kč, -1čokoláda, - 28000Kč
www.freeair.cz www.rotexelectric.eu www.retrofitcnc.cz
OK.
Ano (pokud ten driver neumožňuje něco sofistikovanějšího). Víc ti snad řekne někdo, kdo si se servy hraje a třeba bude znát i to hotový řešení.t256 píše:ze serva leze kvadraturni signal o poloze ktery musim hlidat a vyhodnotit a podle toho menit napeti?
mimooborová naplavenina • kolowratský zázrak™ • NPS • GCU • HirthCalc • ncDP.ino
To jak ovládat servodriver skutečně hodně závisí na tom, jaké rozhraní daný typ poskytuje. Pokud je to jen čistě analogový servodriver, tak platí to co už tu bylo napsáno.
Ale pokud jde o nějaký digitální model který umí "elektronic gearing", tak tam je možné že půjde řídit i pomocí step/dir signálů stejně jako driver pro KM.
V módu "electronic gearing" je polohová zpětná vazba zavedená do servodriveru a ten se sám stará o to aby ujel potřebnou vzdálenost (tu má definovanou jako jeden krok) po přijmutí step impulzu.
Ale bez znalosti toho co se ti dostalo do ruky těžko radit.
Ale pokud jde o nějaký digitální model který umí "elektronic gearing", tak tam je možné že půjde řídit i pomocí step/dir signálů stejně jako driver pro KM.
V módu "electronic gearing" je polohová zpětná vazba zavedená do servodriveru a ten se sám stará o to aby ujel potřebnou vzdálenost (tu má definovanou jako jeden krok) po přijmutí step impulzu.
Ale bez znalosti toho co se ti dostalo do ruky těžko radit.
Omlouvam se za ponekud nejasne zadani, jde o driver SMT-BSI-220/30 od Infranor. Bohuzel jsem k tomu nekam "zalozil" dokumentaci a na internetu nemuzu momentalne nic najit. Melo by jit o analogovy driver starsiho data vyroby. Pokud si vzpominam nema to ani zadnou komunikacni linku s PC, nastaveni se provadi trimry na driveru.
Je to údaj o poloze, ale inkrementální, musíš zahoumovat vůči nějakýmu home switchi a pak přičítat-odčítat na základě A/B pulzů (Z /index/ je něco jako home switch natočení hřídele).
Jinak z obrázku to vypadá, že potřebuješ přesně takový řízení, jaký jsi popsal, nic sofistikovanějšího (např. ten "electronic gearing") z driveru asi vymáčknout nelze.
Jinak z obrázku to vypadá, že potřebuješ přesně takový řízení, jaký jsi popsal, nic sofistikovanějšího (např. ten "electronic gearing") z driveru asi vymáčknout nelze.
mimooborová naplavenina • kolowratský zázrak™ • NPS • GCU • HirthCalc • ncDP.ino
- robokop
- Site Admin
- Příspěvky: 22614
- Registrován: 10. 7. 2006, 12:12
- Bydliště: Praha
- Kontaktovat uživatele:
Budes muset napsat pid regulator pro kazdou osu kterej ti bude regulovat rychlost na vystupu mcu podle zadane hodnoty a skutecne prijate z pravitek
Zadana poloha se musi taky nekde vzit takze musis nejak interpolovat polohu stroje
Toliko obecne
Rozepisovat konkretni navod na cele tohle reseni je nesmysl
Pro inspiraci se podivej do zdrojaku linuxcnc
Je to opensource takze to najdes na netu
Je to presne toto reseni akorat ne pro mcu
Ale bezi to napr. Na raspberry
Zadana poloha se musi taky nekde vzit takze musis nejak interpolovat polohu stroje
Toliko obecne
Rozepisovat konkretni navod na cele tohle reseni je nesmysl
Pro inspiraci se podivej do zdrojaku linuxcnc
Je to opensource takze to najdes na netu
Je to presne toto reseni akorat ne pro mcu
Ale bezi to napr. Na raspberry
Vsechna prava na chyby vyhrazena (E)
Neco jako PID regulator tam snad je, viz blokove schema. Moznosti ladeni budou ale asi nevalne, dela se to jen jednim trimrem.
Konkretni navod urcite nechci, mi jde jen o zakladni principy. Nikdy jsem se servodrivery nedelal a tak chytam zakladni informace ktere jsem tu nenasel. Budou to dost specificke stroje, takze se s rizenim budu muset poprat sam.
Jakym zpusobem se driver jako tento krmi vstupnimi udaji? Kdyz si nastavim rozliseni enkoderu na treba 2048pulzu/ot tak bude pri 4000ot/min frekvence pulzu kolem 130kHz. To prece nemuze PC stihat ani citat, natoz vyhodnocovat kvadraturni signal. Existuje nejaky pokud mozno levny ridici system do ktereho bych jednoduse poslal napriklad udaje o delce drahy a zrychleni a o nastavovani rychlosti pomoci +-10V a kontrolu enkoderu uz by se postaral sam? Asi by nebyl problem to napsat, ale proc ztracet cas necim uz vymyslenym. Jen nevim co mam hledat.
Konkretni navod urcite nechci, mi jde jen o zakladni principy. Nikdy jsem se servodrivery nedelal a tak chytam zakladni informace ktere jsem tu nenasel. Budou to dost specificke stroje, takze se s rizenim budu muset poprat sam.
Jakym zpusobem se driver jako tento krmi vstupnimi udaji? Kdyz si nastavim rozliseni enkoderu na treba 2048pulzu/ot tak bude pri 4000ot/min frekvence pulzu kolem 130kHz. To prece nemuze PC stihat ani citat, natoz vyhodnocovat kvadraturni signal. Existuje nejaky pokud mozno levny ridici system do ktereho bych jednoduse poslal napriklad udaje o delce drahy a zrychleni a o nastavovani rychlosti pomoci +-10V a kontrolu enkoderu uz by se postaral sam? Asi by nebyl problem to napsat, ale proc ztracet cas necim uz vymyslenym. Jen nevim co mam hledat.
Ten regulátor v servodriveru je ale součástí "speed loop" protože ten driver dokáže autonomně řídit pouze rychlost toho servomotoru.
Ty bys musel v MCU kterým to chceš řídit implementovat PID regulátor jako součást "position loop" která bude řídit požadovanou polohu (pro každou osu extra).
Osobně si myslím, že pokud s tím nemáš zkušenosti, tak se u toho celkem zapotíš.
Hotové řešení existuje, jak psal Robokop - Linux CNC + MESA 5i25 + MESA 7i77
Ty bys musel v MCU kterým to chceš řídit implementovat PID regulátor jako součást "position loop" která bude řídit požadovanou polohu (pro každou osu extra).
Osobně si myslím, že pokud s tím nemáš zkušenosti, tak se u toho celkem zapotíš.
Hotové řešení existuje, jak psal Robokop - Linux CNC + MESA 5i25 + MESA 7i77
nebo zkus to pidicnc s raspberry nebo na čem to běží..
věčný rýpal,který musí mít poslední slovo, odpůrce low-cost zařízení končících v naprosté většině případů v hromadě šrotu
uživatelé hýbátek, kteří mají z mých příspěvků celoživotní trauma nechť si mé příspěvky VYPNOU
uživatelé hýbátek, kteří mají z mých příspěvků celoživotní trauma nechť si mé příspěvky VYPNOU