CNC, hobby, gépépítés, programozás
Would you like to react to this message? Create an account in a few clicks or log in to continue.

Stepper controller

2 posters

Go down

Stepper controller Empty Stepper controller

Témanyitás by zsocy 2016-10-03, 07:08

Elkezdtem egy léptetőmotor vezérlőn dolgozni.

A célkitűzések:
- képes legyen 3(ha több nem probléma) STEP/DIR rendszerű lépetőmotor vezérlésére
- nagy kimenő lépésfrekvencia
- SPI a modernebb meghajtó chipek támogatására
- első körben soros vonalon érkező parancs értelmezés
- "S" alakú - gyorsulás vezérlés - ( [You must be registered and logged in to see this link.] )

Mivel rendelkezem STM32F4 Discovery kártyával( [You must be registered and logged in to see this link.] ), a feladat ezzel lesz(kívánom) megvalósítani.


zsocy

Posts : 32
Join date : 2015. Apr. 10.
Age : 56

Vissza az elejére Go down

Stepper controller Empty Re: Stepper controller

Témanyitás by zsocy 2016-10-03, 07:24

A munkát "S" alakú mozgásgörbék vizsgálatával kezdtem.

Ez a tengely aktuális sebességét mutatja:
Stepper controller Velocity_www.kepfeltoltes.hu_
Ez pedig a gyorsulást
Stepper controller Acceleration_www.kepfeltoltes.hu_
Ez az érték az angol szakirodalomban Jerk értékként van definiálva. (én magyarra a "lódit,lök, ránt" ként fordítanám)
Stepper controller Jerk_www.kepfeltoltes.hu_

zsocy

Posts : 32
Join date : 2015. Apr. 10.
Age : 56

Vissza az elejére Go down

Stepper controller Empty Re: Stepper controller

Témanyitás by zsocy 2016-10-03, 07:50

Először írtam egy kisebb c++ programot.
Abból indultam ki, hogy a valós életben is kis időszeletek alapján kell majd vezérelnünk. (nem is tudom van -e elméletileg más lehetőségünk)
Ezt a kis időszelet elnevezem - "szívverésnek".

heartbeat - nagyságrenje pedig a becslésem szerint a 1-10ms nagyságrendbe kell essen.

Tehát ez lesz rendszerünk belső órajele.
Ez alapján elkészült a kis program, ami ezen kis időszeletekre kiszámolja egy elképzelt lineáris mozgást. Vegyük észre, hogy a kezdéskor a sebesség nulla, tehát a vezérelt jellemző(ebben az esetben a motor) áll. Szépen felgyorsul a maximális sebességre, és abból szépen lelassúl a 0-ra, leírva az "S" görbét.

Mit is jelent a "sebesség" görbe a rendszerünk szempontjából?

Hát azt, hogy a motor amely megvalósítja ezt a sebesség görbét, a görbe alatti területnyit fog elmozdulni.
Feleltessünk meg minden sebesség értékhez, egy motor lépés frekvenciát, majd integráljuk a görbe alatti területet.

Megkapjuk a léptetőmotor lépéseinek a számát.


A hozzászólást zsocy összesen 1 alkalommal szerkesztette, legutóbb 2016-10-03, 09:51-kor.

zsocy

Posts : 32
Join date : 2015. Apr. 10.
Age : 56

Vissza az elejére Go down

Stepper controller Empty Re: Stepper controller

Témanyitás by zsocy 2016-10-03, 08:18

[You must be registered and logged in to see this link.]

Itt megnézhető a teszt adatok.

zsocy

Posts : 32
Join date : 2015. Apr. 10.
Age : 56

Vissza az elejére Go down

Stepper controller Empty Re: Stepper controller

Témanyitás by zsocy 2016-10-04, 06:06

Stepper controller Class-structure_www.kepfeltoltes.hu_

zsocy

Posts : 32
Join date : 2015. Apr. 10.
Age : 56

Vissza az elejére Go down

Stepper controller Empty Re: Stepper controller

Témanyitás by zsocy 2016-10-04, 09:34

Egy kis magyarázat az osztály strukturához(ami nem végleges):

- A központi elem a Machine. Ez fogja az interpolációkat számolni, a karok és tengelyek közötti adatáramlást biztosítani.
- Az Arm (vagy annak leszármazottja) fogja a léptetőmotor lépéseket számolni, kiadni.
- Az Axis (vagy annak leszármazottja) fogja a Descartes koordináta rendszerben a mozgásokat számolni.
- Az Arm és Axis között található a BaseSolution, amely a Descartes koordináták, és a gépre jellemző A,B,C koordináták közötti számolást elvégezni.

zsocy

Posts : 32
Join date : 2015. Apr. 10.
Age : 56

Vissza az elejére Go down

Stepper controller Empty Re: Stepper controller

Témanyitás by zsocy 2016-10-05, 07:06

Tegnap feldobáltam a főbb modulokat:

A kapcsolási rajz:
Stepper controller Stm32f4-sheet_www.kepfeltoltes.hu_

A nyák terv:
Stepper controller Stm32f4-pcb_www.kepfeltoltes.hu_

zsocy

Posts : 32
Join date : 2015. Apr. 10.
Age : 56

Vissza az elejére Go down

Stepper controller Empty Re: Stepper controller

Témanyitás by zsocy 2016-10-05, 07:18

A következő lépés lesz a PWM próba megejtése.

Kb ezeket várom el tőle:

- nagy sebességgel, és nagy pontossággal(felbontás, ami itt 32 bit lesz) legyen képes a jel kiadásra
- 3 tengely esetén hasonló működés támogatása
- legyen lekérdezhető a kiadott "jelek" száma
- folyamatosan lehessen átírni a jel frekvenciára kihatással bíró regisztert


A frekvenciára nézve valószínű, hogy a 175MHz-et fogom választani.

És a PWM rész felépítése:
Stepper controller Pwm_www.kepfeltoltes.hu_



zsocy

Posts : 32
Join date : 2015. Apr. 10.
Age : 56

Vissza az elejére Go down

Stepper controller Empty Re: Stepper controller

Témanyitás by zsocy 2016-10-05, 18:01

Sikerült felélesztenem a PWM-részt(1 csatorna)

Ez ~33 MHz-es 50% kitöltésű jel
Stepper controller Pwm33mhz_www.kepfeltoltes.hu_

Ez 10 kHz-es 50% kitöltésű jel
Stepper controller Pwm10khz_www.kepfeltoltes.hu_

Ez pedig 0.01Hz akart lenni. Itt ugye már 32 bites szám nagyságrendbe esnek a paraméter értékek.
Az, hogy nem pontosan az érték, amiatt van, hogy valószínűleg a belső RC oszcillátor van használva(hibásan).Majd javítom.
Stepper controller Pwm002hz_www.kepfeltoltes.hu_

zsocy

Posts : 32
Join date : 2015. Apr. 10.
Age : 56

Vissza az elejére Go down

Stepper controller Empty Re: Stepper controller

Témanyitás by zsocy 2016-10-05, 18:28

Közben gondoljuk át, hogyan is fog(kellene) működni a PWM jel generálásnak.

Véleményem szerint az Arm résznek két üzemmódja lesz.

1. Ismert irányú és nagyságú távolságot kell megtennie. Ekkor a kiszámoljuk azt a 8 pontot, és az azokhoz tartozó
idő, és gyorsulás értékeket, amelyek ha motor sebesség értékre konvertálódnak, és az ennek megfelelő lépésfrekvencia
a motorra kerül, az az "S" karakterisztikának megfelelő mozgást fogja megtenni, és ha jól számoltunk, a megfelelő pozicióban lessz
a végén.

2. Ez lessz az un. követő üzemmód. Ekkor egy másik thread(esetünkben az Axis által kiszámolt pozició értékek lesznek) számolja,
majd egy körkörös bufferbe teszi. Ekkor a az Arm vezérlő, az "S" gyorsuláson belül, azonnal próbálja lekövetni ezt az értéket.

Minden hartbeat(ami most 1ms) időközönként kiszámoljuk a cél, és a valós PWM közötti különbséget.
(persze ezt úgy tesszük, hogy a PWM ciklus végén kerüljön érvényesítésre.(megszakítás!!))

Ez az elgondolás szerintem működhet.

Még valami. Bár nem hangsúlyoztam eléggé, de az Axis(az SCurve axis) rész is "S" mozgásformát használ.

Mi ennek az értelem? Hát az, hogy a Descartes tengelyekre is érvényesíthetjük a gyorsulás szabályozást.
(ugye hagyományos rendszerű gépeken ez a 2 ugyanaz, de a delta gépeken nem).

A két rész között van egy matematikai transzformáció, és az extrém gyorsulásokat produkálhat(a szélső értékek közelében)

Ha sikerül megvalósítanom az elképzelésemet, mind a platform(a 3 kar végén lévő, a fejet tartalmazó alkatrész), mind a motorok harmonikus
mozgással fognak menni.

Ha sikerül.



zsocy

Posts : 32
Join date : 2015. Apr. 10.
Age : 56

Vissza az elejére Go down

Stepper controller Empty Re: Stepper controller

Témanyitás by zsocy 2016-10-05, 19:08

Közben akadt egy kis megoldandó feladat.

Ugye szeretnénk tudni, hogy a PWM hány impulzust adott ki.

Azt hittem, van regiszter rá a PWM részben.
Hát nincs.

Létezik egy kézenfekvő megoldás.
Az un. update eseményt figyeljük megszakításban.

kb így:

extern "C" void TIM2_IRQHandler()
{
   if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET)
   {
       TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
       pwmUpdate++;
   }
}

Ugye ez még nem tesz különbséget a csatorna között. Ami még nem lenne baj, mert lekérdezhető, sokkal inkább probléma,
hogy nagy sebességű 3 tengelyes mozgás esetén, 256 mikrolépés üzemben ~40kHz lépésfrekvencia adódik 1 fordulat/s esetén.
Szorozzuk ezt meg 10-el(ekkor fog a motor 10-et forduni másodpercenként), és 3 motorral.

Ez 1.2 millió megszakítás másodpercenként. Ami kissé sok.
(lehet, hogy beleférne, de NE kozkáztassunk)

Azt találtam ki, hogy egy másik counter lábra rákötöm, és azzal számoltatom meg.
Azok könnyen bírni fogják.

Hisz azért vannak.

zsocy

Posts : 32
Join date : 2015. Apr. 10.
Age : 56

Vissza az elejére Go down

Stepper controller Empty Re: Stepper controller

Témanyitás by zsocy 2016-10-05, 19:16

Stepper controller IMG_20161005_191118_HDR_www.kepfeltoltes.hu_

zsocy

Posts : 32
Join date : 2015. Apr. 10.
Age : 56

Vissza az elejére Go down

Stepper controller Empty Re: Stepper controller

Témanyitás by zsocy 2016-10-05, 19:17

Megjöttek a motorok.

Holnap pedig a léptető motor driverek. Izgulok.

zsocy

Posts : 32
Join date : 2015. Apr. 10.
Age : 56

Vissza az elejére Go down

Stepper controller Empty Re: Stepper controller

Témanyitás by Béni 2016-10-05, 22:07

A 3 vagy több tengelyt (motort) szinkronban akarod járatni?
Ha igen, akkor alkalmas lesz arra a PWM?
Béni
Béni
Admin

Posts : 168
Join date : 2015. Apr. 02.
Location : Szeged

http://dotg.weebly.com/

Vissza az elejére Go down

Stepper controller Empty Re: Stepper controller

Témanyitás by zsocy 2016-10-12, 06:51

A kérdésed jelentős részét megbeszéltük szóban, de amint lesznek tapasztalataim visszatérünk rá.
Most a gép fő méreteinek meghatározása és rajzolása megy(egyáltalán megcsinálható -e, fog -e működni, stb).

Szerintem hétvége fele újra vissza tudok térni az STM-re.

zsocy

Posts : 32
Join date : 2015. Apr. 10.
Age : 56

Vissza az elejére Go down

Stepper controller Empty Re: Stepper controller

Témanyitás by zsocy 2016-10-13, 07:00

Stepper controller L_ptet_motor_hajt_si_l_nc_www.kepfeltoltes.hu_

zsocy

Posts : 32
Join date : 2015. Apr. 10.
Age : 56

Vissza az elejére Go down

Stepper controller Empty Re: Stepper controller

Témanyitás by zsocy 2016-10-13, 07:12

Szeretnék válaszolni Béni kérdésére, amit néhány pontosítással kezdek:

Ugye most a képen tárgyalt rész az STM32-ben lesz elhelyezve(kivéve ugye a motor drivert és a motort amit itt nem is ábrázoltam külön). DE nem bizonyosan kell, hogy így legyen.

Terv az, hogy a 3, gépen kívüli - egy sorban lévő logika akár külön eszközbe is kerülhessen. Ezért is vannak külön ábrázolva.
A kar mozgásvezérlő két fajta működésre lesz képes. Az egyik az azonnali lekövetés, a másik pedig az "S" mozgásforma szerinti lekövetés.


A "Machine" részben történik az interpoláció. És az két féle lehet:
- nem használ gyorsulásvezérlést
- "S" görbe szerinti gyorsulásvezérlést használ

A másodikat kissé megmagyarázom: ekkor a görbe számolás esetén figyelembe vesszük a gyorsulást(S görbe szerint).
És mivel ekként a pontok számolása egy azonos idő szerint történik, ha a "kar" vezérlő azonnali, akkor a görbe 100%-ban
tökéletes.

Tehát ez a válaszom Béni kérdésére.





zsocy

Posts : 32
Join date : 2015. Apr. 10.
Age : 56

Vissza az elejére Go down

Stepper controller Empty Re: Stepper controller

Témanyitás by zsocy 2016-10-13, 07:24

Kis pontosítás:
Stepper controller L_ptet_motor_hajt_si_l_nc2_www.kepfeltoltes.hu_

zsocy

Posts : 32
Join date : 2015. Apr. 10.
Age : 56

Vissza az elejére Go down

Stepper controller Empty Re: Stepper controller

Témanyitás by zsocy 2016-10-15, 09:10

Bár nem tartozik szorosan a témához, de szükségem van egy SMT beültető kamerára.
(sajnos nem látom már az apró alkatrészeket)

Stepper controller Kamera1_www.kepfeltoltes.hu_

Stepper controller Kamera2_www.kepfeltoltes.hu_

Stepper controller Kamera3_www.kepfeltoltes.hu_

zsocy

Posts : 32
Join date : 2015. Apr. 10.
Age : 56

Vissza az elejére Go down

Stepper controller Empty Re: Stepper controller

Témanyitás by zsocy 2016-10-15, 09:17

Ez pedig a végcél. (jelenlegi állapotában)


Stepper controller Smt_1_www.kepfeltoltes.hu_

zsocy

Posts : 32
Join date : 2015. Apr. 10.
Age : 56

Vissza az elejére Go down

Stepper controller Empty Re: Stepper controller

Témanyitás by Ajánlott tartalom


Ajánlott tartalom


Vissza az elejére Go down

Vissza az elejére


 
Engedélyek ebben a fórumban:
Nem válaszolhatsz egy témára ebben a fórumban.