Toto zařízení vzniklo na základě potřeby řízení jednoduchého dvouosého (sférického) manipulátoru. Manipulátor byl osazen dvojicí dvoufázových krokových motorů Microcon SX23-1414, které byly ovládány komerčním budičem Leadshine Technology M542. Nicméně konkrétní typ motorů/budičů není podstatný; důležitý je způsob řízení budičů a jejich kompatibilita s použitými motory.
Základní vlastnosti zařízení
- 6x zkratuvzdorný digitální výstup s otevřeným kolektorem, zpětnou diodou (pro případ spínání induktivní zátěže – relé) včetně indikace vybuzení. Konektory výstupů poskytují budící napětí 5V. Níže jsou uvedené funkce výstupů.
- 2x taktovací impulzy
- 2x směr
- 2x univerzální výstup
- 4x přepětívzdorný digitální vstup s předřazenou dolní propustí na mezní frekvenci cca 200Hz a úrovněmi vyhovujícími TTL. Konektory vstupů jsou připraveny pro připojení rozpínacích spínačů; pracují v negativní logice.
- Komunikace s PC po RS-232 pomocí nekříženého kabelu komunikační rychlostí 19200Baud (8 bitový přenos, sudá parita, 1 stop bit)
- Primitivní ASCII protokol laditelný přes Hyperterminál či jinou utlitu (např. Hercules utility)
- Indikace probíhající komunikace (2x LED)
- Indikace poruchy komunikace (1x LED)
- Indikace běhu motoru (1x LED)
- Automatické zastavení generování řídicích impulzů při přerušení komunikace s PC
- Kontrola komunikace s PC pomocí watchdogu hlídajícího pravidelný příjem rezervovaného řetězce
- Možnost kontinuálního běhu motoru nebo relativního polohování
- Možnost připojení budičů dvou krokových motorů
- Volitelná rychlost běhu motoru (společná pro oba motory)
- 3x konfigurační jumper (zatím není implementována žádná funkce)
- 1x LED napájení
- RESET tlačítko (restart mikrokontroléru)
- Taktování krystalem 2,4576MHz
- Napájecí napětí – cca 10V až 30V
- Odběr po zapnutí (napájení 24V) je 28mA; při vybuzení všech výstupů a jejich plném zatížení se odběr odhaduje na menší než 700mA
- Konektor rozhraní pro sériový download firmware do mikrokontroléru ATMega8A
Vlastnosti budiče M542
- Napájení 20-50VDC
- Výstupní proud 0,7-3A (rms)
- Proud do vstupů 7-16mA
- Maximální vstupní frekvence 300kHz
- Možnost mikrokrokování 400-25600 kroků na otáčku (pro krokový motor s úhlem kroku 1,8°; tedy 200 kroků na otáčku)
Vlastnosti dvoufázového motoru SX23-1414
- Statický moment 1,4Nm
- Jmenovitý proud pro sériové/paralelní zapojení vinutí 1,45/2,9A
- Indukčnost pro s./p. zapojení vinutí 11,2/2,8mH
- Odpor pro s./p. zapojení vinutí 3,4/0,85W
- Moment setrvačnosti 0,03 x10-3 kgm2
- Krok 1,8°, tolerance kroku +/-0,1°
funkce
Při návrhu zařízení byl kladen důraz na maximální jednoduchost, dostupnost součástek a robustnost. DPS je jednostranná se třemi propojkami. Pro zajištění co nejvyšší odolnosti proti rušení je rozvod společného potenciálu (GND) realizováno „rozlitou mědí“. Zařízení je napájeno vnějším stejnosměrným napětím 8V-35V přes konektor X13. Všechny obvody jsou napájeny 5V, které poskytuje tradičně zapojený monolitický stabilizátor 7805 (IC3 – konkrétnímu ztrátovému výkonu je nutné přizpůsobit velikost jeho chladiče nebo snížit vnější napájecí napětí) doplněným nezbytnými filtračními kondenzátory (C10, C20, C34 a C11). Napájení je chráněno proti přepólování vnějšího zdroje pomocí diody D3. Přítomnost napětí 5V indikuje červená LED11. Napájení je všude důkladně blokováno proti rušení velkým počtem keramických kondenzátoru 100n a dále několika tantalovými kondenzátory 1u. Napájení IC1 je cíleně blokováno tantalovým 1u (C13) a keramickým 100n (C12) kondenzátorem. Napájení IC2 je obdobně chráněno dvojicí C14 a C15. Zde je dobré podotknout, že při měření rušení přítomného v napájení způsobeným činností MCU byla zjištěna hodnota 80mV přímo na jeho vývodech (IC1) a 20mV na vývodech IC2.
O konverzi úrovní (RS-232 <-> TTL) komunikační linky se stará katalogově zapojený obvod MAX232 (IC2) s pomocnými tantalovými kondenzátory 1u (C1, C2, C3 a C21). Probíhající obousměrná výměna dat s PC je indikována dvojicí žlutých LED (LED9 a LED10). Jako rozhraní pro připojení RS-232 slouží konektor X2 (Canon9 – samice). V dnešní době již nejsou sériové porty součástí základních desek počítačů, proto je třeba použít nějaký převodník USB <-> RS-232 (např. Windows nativně podporují ty s FTDI chipem).
Jádro tvoří mikrokontrolér ATMega8A (IC1) taktovaný krystalem 2,4576MHz (Q1). Krystal je dle doporučení výrobce doplněn dvojicí keramických kondenzátorů 22p (C4 a C5). Tlačítko S1 slouží pro ruční restart IC1. Naprogramování IC1 může proběhnout přímo v aplikaci přes konektor X3 zpřístupňující rozhraní pro sériový download (např. pomocí programátoru ASIX Presto či Forte).
Trojice jumperů JP1 byla původně zamýšlena jako způsob konfigurace frekvence taktovacích impulzů (tedy rychlosti otáčení motorů). Nakonec bylo nastavování rychlosti zahrnuto do komunikačního protokolu a jumpery jsou tedy bez funkce.
Porucha komunikace (tj. chyba rámce, parity nebo přetečení) je indikována červenou LED (LED8) a aktivní výstupní taktovací impulzy (otáčení motoru) je indikováno zelenou LED (LED7). Protože zařízení má sloužit pro řízení krokových motorů, která mají něčím hýbat, není na škodu mít možnost vyhodnotit případné limitní stavy (např. poloha před nějakým mechanickým dorazem) případně mít možnost zjistit referenční polohu (např. počátek souřadné soustavy X-Y manipulátoru.
K tomu slouží čtveřice přepětívzdorných (tuto vlastnost zajišťuje např. kombinace R17 a Zenerky 4,7V) vstupů, jejichž úrovně vyhovují TTL. Uvažuje se použití mechanických spínačů s rozpínacími kontakty (kvůli možnosti detekce nepřipojení spínače nebo přerušení kablíku), proto jsou vstupy vybaveny dolní propustí s mezní frekvencí cca 200Hz (dáno např. R17, R18 a C6) pro omezení a) zákmitu při změně stavu připojeného spínače, b) možného indukovaného rušení. Na konektor vstupu (např. X9) stačí pouze připojit rozpínací kontakt, protože zároveň poskytuje napětí 5V. Stav vstupů je odesílán do řídicího PC.
Zařízení má možnost ovládat dvojici krokových motorů kombinací signálů „směr otáčení“ a „taktovací impulzy“; co jeden taktovací impulz to jeden krok motoru daným směrem. Též jsou přítomné dva výstupní signály pro všeobecné použití. Stavy této šestice zkratuvzdorných (dáno např. Q2 a R1; nastaveno na 107mA) výstupů s otevřeným kolektorem jsou indikovány zelenými LED (např. LED1) v bázích budicích tranzistorů BC337 (např. Q3). Výstupy jsou ochráněny proti přepětí vznikajícímu při případném spínání induktivní zátěže (malé relé) zpětnou diodou 1N4148 (např. D6).
K výstupům taktovacích impulzů (X8 a X6) a výstupům směru otáčení (X7 a X5) se připojí vhodné budiče (např. M542 od Leadshine Technologies) krokových motorů. S M542 lze použít např. krokový motor Microcon SX23-1414 (200 kroků na otáčku). Zapojení neobsahuje žádné seřizovací prvky ani nevyžaduje speciální postup při jeho sestavování. Při pečlivé práci musí fungovat napoprvé.
FW pro IC1 je napsán v Atmel Studiu v jazyce C. FW podporuje 8 hodnot frekvence výstupních impulzů (12,5Hz, 25Hz, 50Hz, 100Hz, 200Hz, 400Hz, 800Hz a 1,6kHz). Demo aplikace pro PC je napsána ve Visual Studiu v jazyce C#. Oba zdrojové kódy je možné stáhnout z webu.Při změně FW lze výše popsaný HW použít např. jako univerzální IO s možností 6xDOUT/4xDIN ovládané z PC. Při programování IC1 je nezbytné správně nastavit jeho tzv. pojistky.
komunikační protokol
Data od zařízení k PC jsou odesílána cyklicky. Podle zvolené rychlosti motoru a počtu aktivních motorů se frekvence odeslání zpráv pohybuje mezi 3Hz až 7Hz. V případě požadavku na rychlejší výměnu dat a/nebo vyšší frekvenci výstupních impulzů je třeba použít rychlejší krystal a zároveň změnit i nastavení časovačů v IC1 (tedy změnit FW). Po startu zařízení je směrem k PC odeslána zpráva „READY“ a následně cyklicky globální stavová informace (tj. informace o poloze, rychlosti, stavu vstupů a aktivním režimu). Pokud je z PC odeslán požadavek na pohyb (kontinuální či polohování), je nutné zároveň cyklicky (cca 1s) odesílat z PC zprávu „ALIVE“, která resetuje vnitřní watchdog v IC1. Timeout watchdogu je cca 1,5s. Pokud dojde k vybavení watchdogu, pak zařízení automaticky zastavuje motory. V případě poruchy příjmu zprávy na straně IC1 dojde k odeslání zprávy směrem k PC, která popisuje typ poruchy (rámec, parita nebo přetečení). Rozpis platných formátů zpráv viz níže. Tento jednoduchý protokol byl pro původní aplikaci naprosto dostačující. Nicméně, určitě jej lze ještě vylepšit či rozšířit o další funkce.
ŘÍDÍCÍ PŘÍKAZY PRO ZAŘÍZENÍ
- M1-999999999 m1 – jeď ve smyslu CCW na zadanou relativní pozici (zadávají se i nuly pozice zleva, tedy délka tohoto příkazu je neměnná)
- M1+999999999 m1 – jeď ve smyslu CW na zadanou relativní pozici
- M1-J m1 – ručně ve smyslu CCW
- M1+J m1 – ručně ve smyslu CW
- M1R m1 – resetuj integrátor polohy (tedy počet vyslaných impulzů do driveru motoru)
- M1S m1 – zastav (přeruš pohyb – ruční/polohování)
- M1DS m1 – nastav univerzální digitální výstup (otevřený kolektor)
- M1DR m1 – zruš univerzální digitální výstup (otevřený kolektor)
- M2-999999999 m2 – jeď ve smyslu CCW na zadanou relativní pozici (zadávají se i nuly pozice zleva, tedy délka tohoto příkazu je neměnná)
- M2+999999999 m2 – jeď ve smyslu CW na zadanou relativní pozici
- M2-J m2 – ručně ve smyslu CCW
- M2+J m2 – ručně ve smyslu CW
- M2R m2 – resetuj integrátor polohy (tedy počet vyslaných impulzů do driveru motoru)
- M2S m2 – zastav (přeruš pohyb – ruční/polohování)
- M2DS m2 – nastav univerzální digitální výstup (otevřený kolektor)
- M2DR m2 – zruš univerzální digitální výstup (otevřený kolektor)
- SPDx m1, m2 – nastav číslo rychlosti pohybu (číslo výstupní taktovací frekvence) – „x“ nabývá hodnot 0 až 7
- ALIVE reset watchdogu (cca 1,5s) – nutné cyklicky tento příkaz odesílat
označení | hodnota |
C1,C2,C3 | kondenzátor 1u/16V elyt |
C4,C5 | kondenzátor 22p keramika |
C6,C7,C8,C9,C11,C12,C15,C18,C19,C23, | kondenzátor 100n keramika |
C24,C25,C26,C27,C28,C29,C30,C31,C32 | kondenzátor 100n keramika |
C10 | kondenzátor 1000u/35V elyt |
C13,C14,C16,C17,C21,C22,C33 | kondenzátor 1u tantal |
C20 | kondenzátor 330n fóliový |
C34 | kondenzátor 100u/10V elyt |
D1,D2,D4,D5 | Zenerova dioda 4V7 |
D3 | dioda 1N4007 |
D6,D7,D8,D9,D10,D11 | dioda 1N4148 |
IC1 | mikrokontrolér ATMega8 nebo ATMega8A |
IC2 | převodník MAX232 |
IC3 | stabilizátor 7805T |
JP1 | pinová lišta 2×3 s jumpery |
LED1,LED2,LED3,LED4,LED5,LED6,LED7 | 3mm LED zelená (2mA) |
LED8,LED11 | 3mm LED červená (2mA) |
LED9,LED10 | 3mm LED žlutá (2mA) |
Q1 | krystal 2,4576MHz |
Q2,Q3,Q4,Q5,Q6,Q7,Q8,Q9,Q10,Q11,Q12,Q13 | NPN tranzistor BC337-40 |
R1,R3,R5,R7,R9,R11 | miniaturní rezistor (vel.0204) 5R6 |
R2,R4,R6,R8,R10,R12 | miniaturní rezistor (vel.0204) 1k5 |
R13,R14,R15,R16,R25 | miniaturní rezistor (vel.0204) 1k8 |
R17,R19,R21,R23 | miniaturní rezistor (vel.0204) 10k |
R18,R20,R22,R24 | miniaturní rezistor (vel.0204) 47k |
S1 | mikrospínač TC-0103-T |
X1 | konektor PSH02-06PG |
X2 | konektor Canon9 (90°) samice do DPS |
X3,X4,X5,X6,X7,X8,X9,X10,X11,X12,X13 | konektor PSH02-02P TP |
Článek byl otištěn v Praktické elektronice 4/2016 na str. 20-23