rozhraní pro polohování krokovými motory

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.

Schéma

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).

Deska plošných spojů

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,C3kondenzátor 1u/16V elyt
C4,C5kondenzá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,C32kondenzátor 100n keramika
C10kondenzátor 1000u/35V elyt
C13,C14,C16,C17,C21,C22,C33kondenzátor 1u tantal
C20kondenzátor 330n fóliový
C34kondenzátor 100u/10V elyt
D1,D2,D4,D5Zenerova dioda 4V7
D3dioda 1N4007
D6,D7,D8,D9,D10,D11dioda 1N4148
IC1mikrokontrolér ATMega8 nebo ATMega8A
IC2převodník MAX232
IC3stabilizátor 7805T
JP1pinová lišta 2×3 s jumpery
LED1,LED2,LED3,LED4,LED5,LED6,LED73mm LED zelená (2mA)
LED8,LED113mm LED červená (2mA)
LED9,LED103mm LED žlutá (2mA)
Q1krystal 2,4576MHz
Q2,Q3,Q4,Q5,Q6,Q7,Q8,Q9,Q10,Q11,Q12,Q13NPN tranzistor BC337-40
R1,R3,R5,R7,R9,R11miniaturní rezistor (vel.0204) 5R6
R2,R4,R6,R8,R10,R12miniaturní rezistor (vel.0204) 1k5
R13,R14,R15,R16,R25miniaturní rezistor (vel.0204) 1k8
R17,R19,R21,R23miniaturní rezistor (vel.0204) 10k
R18,R20,R22,R24miniaturní rezistor (vel.0204) 47k
S1mikrospínač TC-0103-T
X1konektor PSH02-06PG
X2konektor Canon9 (90°) samice do DPS
X3,X4,X5,X6,X7,X8,X9,X10,X11,X12,X13konektor PSH02-02P TP
Seznam součástek

Článek byl otištěn v Praktické elektronice 4/2016 na str. 20-23

Diskuze

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *