SB3201

Řadič čtyř krokových motorů, ovládaný asynchronní sériovou linkou 115200bps 8N1.



Řadič ovládá pomocí výstupů DIR a STEP budiče krokových motorů. Výstup DIR určuje směr krokování a kladný puls na vývodu STEP požadavek na provedení kroku. Umožňuje současný pohyb čtyř krokových motorů tak, že interpoluje jejich pohyb po úsečce a umožňuje současné ovládání čtyř os. Rampuje rychlost rozběhu a doběhu krokových motorů tak, že není porušena vzájemná koordinace pohybu všech čtyř motorů.


Vlastnosti:

  • Rozsah rychlosti krokování 1 až 10000 kroků za sekundu.
  • Rozsah počtu kroků 0 až 16777215 kroků vpřed/vzad pro každý motor zvlášť.
  • Rampa (zrychlení/zpomalení) 0 až 10000 kroků za sekundu mezi každými dvěmi kroky.
  • Možnost připojení dvou koncových spínačů pro každý motor (jeden pro každý směr) s okamžitým zastavením krokování.
  • Možnost ovládání snížení proudu krokovými motory s nastavením zpoždění pro vypnutí při nečinnosti.


Popis vývodů:

/RESET

Vstup. Reset SB3201 a nastavení defaultních hodnot. V úrovni L převádí všechny výstupy do stavu vysoké impedance. Pokud se tato funkce v aplikaci nepožaduje, ošetří se rezistorem 100R až 10k, zapojeným mezi VDD a vstup /RESET.

/SLEEP

Výstup. Za nastavený čas od posledního pohybu krokových motorů přechází do úrovně L. Je určen pro snížení proudu krokovými motory v době jejich nečinnosti. Po resetu je nastaven do L.

/ENDR3

Vstup. Slouží pro připojení koncového spínače krokového motoru číslo 3. Pokud je v úrovni L, a je požadován pohyb ve směru k tomuto spínači (příkaz R-xxxxxxxx), přerušuje krokování všech motorů a odesílá chybove hlášení na sériový port. Pokud není požadováno krokování tímto motorem (zadáno nula kroků příkazem R nebo krokování opačným směrem), na tento signál se nereaguje. Totéž platí pro příkaz A s tím, že směr je určen požadovanou absolutní pozicí proti pozici aktuální.

/ENDF3

Vstup. Slouží pro připojení koncového spínače krokového motoru číslo 3. Pokud je v úrovni L, a je požadován pohyb ve směru k tomuto spínači (příkaz R+xxxxxxxx), přerušuje krokování všech motorů a odesílá chybove hlášení na sériový port. Pokud není požadováno krokování tímto motorem (zadáno nula kroků příkazem R nebo krokování opačným směrem), na tento signál se nereaguje. Totéž platí pro příkaz A s tím, že směr je určen požadovanou absolutní pozicí proti pozici aktuální.

/ENDR2

Vstup. Slouží pro připojení koncového spínače krokového motoru číslo 2. Pokud je v úrovni L, a je požadován pohyb ve směru k tomuto spínači (příkaz R-xxxxxxxx), přerušuje krokování všech motorů a odesílá chybove hlášení na sériový port. Pokud není požadováno krokování tímto motorem (zadáno nula kroků příkazem R nebo krokování opačným směrem), na tento signál se nereaguje. Totéž platí pro příkaz A s tím, že směr je určen požadovanou absolutní pozicí proti pozici aktuální.

/ENDF2

Vstup. Slouží pro připojení koncového spínače krokového motoru číslo 2. Pokud je v úrovni L, a je požadován pohyb ve směru k tomuto spínači (příkaz R+xxxxxxxx), přerušuje krokování všech motorů a odesílá chybove hlášení na sériový port. Pokud není požadováno krokování tímto motorem (zadáno nula kroků příkazem R nebo krokování opačným směrem), na tento signál se nereaguje. Totéž platí pro příkaz A s tím, že směr je určen požadovanou absolutní pozicí proti pozici aktuální.

/ENDR1

Vstup. Slouží pro připojení koncového spínače krokového motoru číslo 1. Pokud je v úrovni L, a je požadován pohyb ve směru k tomuto spínači (příkaz R-xxxxxxxx), přerušuje krokování všech motorů a odesílá chybove hlášení na sériový port. Pokud není požadováno krokování tímto motorem (zadáno nula kroků příkazem R nebo krokování opačným směrem), na tento signál se nereaguje. Totéž platí pro příkaz A s tím, že směr je určen požadovanou absolutní pozicí proti pozici aktuální.

/ENDF1

Vstup. Slouží pro připojení koncového spínače krokového motoru číslo 1. Pokud je v úrovni L, a je požadován pohyb ve směru k tomuto spínači (příkaz R+xxxxxxxx), přerušuje krokování všech motorů a odesílá chybove hlášení na sériový port. Pokud není požadováno krokování tímto motorem (zadáno nula kroků příkazem R nebo krokování opačným směrem), na tento signál se nereaguje. Totéž platí pro příkaz A s tím, že směr je určen požadovanou absolutní pozicí proti pozici aktuální.

/ENDR0

Vstup. Slouží pro připojení koncového spínače krokového motoru číslo 0. Pokud je v úrovni L, a je požadován pohyb ve směru k tomuto spínači (příkaz R-xxxxxxxx), přerušuje krokování všech motorů a odesílá chybove hlášení na sériový port. Pokud není požadováno krokování tímto motorem (zadáno nula kroků příkazem R nebo krokování opačným směrem), na tento signál se nereaguje. Totéž platí pro příkaz A s tím, že směr je určen požadovanou absolutní pozicí proti pozici aktuální.

/ENDF0

Vstup. Slouží pro připojení koncového spínače krokového motoru číslo 0. Pokud je v úrovni L, a je požadován pohyb ve směru k tomuto spínači (příkaz R+xxxxxxxx), přerušuje krokování všech motorů a odesílá chybove hlášení na sériový port. Pokud není požadováno krokování tímto motorem (zadáno nula kroků příkazem R nebo krokování opačným směrem), na tento signál se nereaguje. Totéž platí pro příkaz A s tím, že směr je určen požadovanou absolutní pozicí proti pozici aktuální.

GND

Napájení, zem. SB3201 obsahuje 2x tento vývod a je nutno propojit se zemí oba.

OSC1

Vstup externího oscilátoru 10MHz nebo pro připojení krystalu 10MHz.

OSC2

Výstup pro připojení krystalu 10MHz. Pokud je použit externí oscilátor 10MHz, zůstává nezapojen.

/POWER

Výstup s otevřeným kolektorem. Úrovní L indikuje správnou funkci. Při aktivním signálu /RESET přechází do vysoké impedance.

RTS

Vstup. Handshaking na sériové lince. Je určen k propojení se stejnojmeným signálem sériového portu. Pokud je nepoužit, ošetřuje se připojením ke GND.

CTS

Výstup. Handshaking na sériové lince. Je určen k propojení se stejnojmeným signálem sériového portu. Pokud je nepoužit, zůstává nezapojen.

RXD

Výstup. Sériová data směrem z SB3201. Je určen k propojení se stejnojmeným signálem sériového portu.

TXD

Vstup. Sériová data směrem do SB3201. Je určen k propojení se stejnojmeným signálem sériového portu.

VDD

Napájení 4.2V až 5.5V.

STEP0

Výstup kladného pulsu pro provedení kroku krokovým motorem číslo 0.

DIR0

Výstup úrovně pro určení směru kroku krokového motoru číslo 0. Úroveň L = pohyb vpřed (příkaz R+), úroveň H = pohyb vzad (příkaz R-). Po příkazu A se nastavuje do odpovídající úrovně pro směr krokování do požadované pozice.

STEP1

Výstup kladného pulsu pro provedení kroku krokovým motorem číslo 1.

DIR1

Výstup úrovně pro určení směru kroku krokového motoru číslo 1. Úroveň L = pohyb vpřed (příkaz R+), úroveň H = pohyb vzad (příkaz R-). Po příkazu A se nastavuje do odpovídající úrovně pro směr krokování do požadované pozice.

STEP2

Výstup kladného pulsu pro provedení kroku krokovým motorem číslo 2.

DIR2

Výstup úrovně pro určení směru kroku krokového motoru číslo 2. Úroveň L = pohyb vpřed (příkaz R+), úroveň H = pohyb vzad (příkaz R-). Po příkazu A se nastavuje do odpovídající úrovně pro směr krokování do požadované pozice.

STEP3

Výstup kladného pulsu pro provedení kroku krokovým motorem číslo 3.

DIR3

Výstup úrovně pro určení směru kroku krokového motoru číslo 3. Úroveň L = pohyb vpřed (příkaz R+), úroveň H = pohyb vzad (příkaz R-). Po příkazu A se nastavuje do odpovídající úrovně pro směr krokování do požadované pozice.


Aplikační poznámky

Protože jsou výstupy v době aktivního signálu /RESET (úroveň L) ve stavu vysoké impedance, je vhodné ošetřit výstupy DIRx a STEPx rezistory o hodnotě 1k až 10k zapojenými mezi výstup a GND. Nedojde tak k nedefinovaným úrovním na těchto vývodech v době aktivního signálu /RESET. Pokud se v aplikaci nevyužívají všechny výstupy DIRx a STEPx, není potřeba nevyužité vývody ošetřovat.

Pokud je využit signál /SLEEP, pak je vhodné jej ošetřit rezistorem o hodnotě 1k až 10k zapojeným mezi výstup a GND. Pokud tento signál není v aplikaci využit, není potřeba jej ošetřovat.

Obvod obsahuje ošetření resetu při podpětí a pokud není vývod /RESET v aplikaci využit, stačí jej ošetřit rezistorem o hodnotě 100R až 10k, zapojeným mezi vývod a Vdd.

Pokud je vývod /RESET využit, je vhodné jej do nízké úrovně přivádět přes rezistor alespoň 50R a ne přímo připojením ke GND.

Pro správnou funkci obvodu je nutno mezi vývody VDD a GND připojit blokovací kondenzátor o hodnotě 100n a to co nejblíže k těmto vývodům.

Protože je pro sériovou komunikaci využit handshaking, je potřeba v případě jeho nepoužití pro správnou funkci ošetřit vstup RTS přímým připojením ke GND. Potom je možno použít pro komunikaci pouze TXD a RXD.

Pro připojení SB3201 k sériové lince v úrovních RS232C (například k sériovému portu PC) je nutno použít převodník úrovní, jako například MAX232 atp. SB3201 pracuje s úrovněmi CMOS, nikoli s úrovněmi RS232C!

Pokud aplikace nevyžaduje koncové spínače, pak se nepoužité vývody ENDFx a ENDRx ošetřují rezistorem o hodnotě 100R až 10k, zapojeným mezi vývod a Vdd.

Výstupy DIRx ovládají příkazy R a A. Pokud některý nevyužijeme pro volbu směru krokování, lze je použít jako jednobitové výstupy a příkazem R+ převádět do úrovně L a příkazem R- do úrovně H.


Komunikace

Se odehrává po sériové lince 115200bps 8N1 a to stylem příkaz - odpověď. Další příkaz nelze zadat, dokud nebylo odpovězeno na předchozí.

ENTER v dalším popisu znamená posloupnost znaků #13#10. Řetězce vystupující sériovým portem z SB3201 jsou vždy zakončeny ENTER jako posloupnost znaků #13#10. Řetězce vstupující sériovým portem do SB3201 se zakončují znakem ENTER #13 nebo #13#10, tedy znak #10 není povinný.

Komunikace začíná tím, že po připojení napájení nebo po resetu SB3201 vyšle na linku RXD ASCII znaky READY ENTER. Nyní SB3201 čeká na příkaz. Příkazy se do SB3201 zasílají na linku TXD jako ASCII znaky zakončené ENTER. ASCII znaky s hodnotou nižší než 32, s vyjímkou ENTER jsou ignorovány.

Po resetu jsou nastaveny defaultně parametry M0, P10, S10, E100, R0 (pro všechny motory), T30, C0, O0 (pro všechny motory).


Příkazy:

Mx

Volba motoru, kde x je v rozsahu ASCII znaků 0 až 3. Nastavuje, pro který motor budou určeny následující příkazy. Odpovědˇ je OK nebo ERROR.

Pxxxxx

Volba sklonu rampy nárůstu rychlosti krokování v rozsahu 0 až 10000. Zadává se v krocích za sekundu a udává o kolik se maximálně změní rychlost krokování po každém kroku. Příkazem P0 je rampa vypnuta a krokování se děje konstantní minimální rychlostí nastavenou příkazem Sxxxxx. Tento příkaz je společný pro všechny motory a lze zadat při jakémkoli nastavení příkazem Mx.

Sxxxxx

Minimální rychlost krokování v krocích za sekundu v rozsahu 1 až 10000. Tento příkaz je společný pro všechny motory a lze zadat při jakémkoli nastavení příkazem Mx.

Exxxxx

Maximální rychlost krokování v krocích za sekundu v rozsahu 1 až 10000. Pokud je nižší než minimální rychlost krokování nastavená příkazem Sxxxxx, pak se bere minimální rychlost krokování zároveň jako maximální. Tento příkaz je společný pro všechny motory a lze zadat při jakémkoli nastavení příkazem Mx.

Rxxxxxxxxx

Nastavení počtu kroků v rozsahu -16777215 až 16777215. Nastaví počet kroků pro aktuálně zvolený motor předchozím příkazem Mx. Příkaz pouze nastavuje hodnotu, po tomto příkazu není provedeno krokování. Příkaz přímo nastavuje příslušný výstup DIRx do úrovně L při kladných hodnotách a do H při záporných hodnotách(DIRx zvolený posledním příkazem Mx).

Axxxxxxxx

Nastavení absolutní cílové pozice pro krokový motor zvolený posledním příkazem Mx v rozsahu -8388607 až +8388607. Příslušný výstup DIRx je nastaven ihned po tomto příkazu do odpovídající úrovně vzhledem k aktuální absolutní pozici.

L

Příkaz vrací absolutní pozici krokového motoru zvoleného posledním příkazem Mx v rozsahu -8388608 až +8388607. Při podtečení minimální absolutní pozice vrací OVER ENTER. Při přetečení maximální absolutní pozice vrací UNDER ENTER. UNDER nebo OVER pak vypisuje až do nastavení absolutní pozice příkazem O.

G

Příkaz pro provedení krokování pro všechny krokové motory zároveň podle parametrů nastavených před voláním tohoto příkazu. Lze zadat při jakémkoli nastavení příkazem Mx. Pokud byl v době volání příkazu G signál SLEEP v úrovni H, je nejprve převeden do úrovně L, vyčká se 500ms a až poté je provedeno krokování. Pokud byl signál SLEEP v úrovni L, provede se krokování bez čekání.

Txxxxx

Příkaz pro nastavení času pro snížení proudu krokovými motory po posledním provedeném krokování. Po uplynutí zadaného času v sekundách v rozsahu 0 až 65535 po posledním krokování se signál SLEEP převede do vysoké úrovně. Při hodnotě 0 se vypíná a signál SLEEP nikdy nepřechází do úrovně H. Pokud je SLEEP v úrovni H, změní úroveň do L pouze po příkazu G a to v případě, že se provedl alespoň jeden krok kterýmkoli krokovým motorem.

Cx

Po příkazu C1 ENTER vrací obdržený příkaz sériovým portem zpět ještě před jeho provedením. Volbou C0 ENTER jej nevrací. Zadané příkazy vrací až po odeslání jejich závěrečného ENTER.

Oxxxxxxxx

Příkaz nastavuje absolutní pozici pro krokový motor zvolený posledním příkazem Mx v rozsahu -8388607 až +8388607.

I

Získání aktuálního stavu koncových spínačů. Vrací bbbbbbbb ENTER, kde bbbbbbbb jsou znaky 0 a 1 reprezentující stav na vstupech pro koncové spínače v pořadí ENDF0, ENDR0, ENDF1, ENDR1, ENDF2, ENDR2, ENDF3, ENDR3.

Pokud za příkazem vyžadujícím hodnotu není tato vyslána, je hodnota nulová. Například samotné R odpovídá R+0 nebo R0. Kladné znaménko u příkazů s hodnotou není povinné.

Po provedení příkazu bez návratové hodnoty je vráceno sériovým portem buď OK ENTER nebo ERROR ENTER v případě, že příkaz nelze z jakéhokoli důvodu provést. Příkazy vracející hodnotu vypisují na sériový port pouze tuto hodnotu ve tvaru znaménko, hodnota v desítkovém vyjádření jako ASCII znaky a ENTER.

Pokud během provádění krokování (po příkazu G) dojde ke stavu sepnutého koncového spínače ve směru pohybu krokového motoru, je okamžitě další krokování ukončeno a vrací se sériovým portem hlášení o sepnutém koncovém spínači a počtu provedených kroků u motoru s největším zvoleným počtem kroků se znaménkem dle jeho směru pohybu. Sepnutým koncovým spínačem se rozumí úroveň L na vstupech ENDF0, ENDR0, ENDF1, ENDR1, ENDF2, ENDR2, ENDF3 nebo ENDR3. Hlášení mohou být následující:

EF0xxxxxxxxx ENTER

ER0xxxxxxxxx ENTER

EF1xxxxxxxxx ENTER

ER1xxxxxxxxx ENTER

EF2xxxxxxxxx ENTER

ER2xxxxxxxxx ENTER

EF3xxxxxxxxx ENTER

ER3xxxxxxxxx ENTER

Znaky xxxxxxxxx jsou ASCII vyjádřením počtu provedených kroků v desítkové soustavě se znaménkem + nebo -. Tato hlášení se neodesílají v případě, že se požaduje krokování opačným směrem od koncového spínače, nebo se požaduje u příslušného krokového motoru nula kroků. Znaky xxxxxxxxx určují počet kroků na nejdelší ose z důvodu, že tak lze identifikovat přesně polohu, kde přesně došlo k najetí na koncový spínač. Ostatní motory krokují v závislosti na krokování motoru s nejvyšším počtem kroků a tedy jejich polohu lze z vypsaného údaje dopočíst.

Pokud požadujeme na počátku najetí krokových motorů na koncový spínač, můžeme tak učinit buď postupným najížděním každého motoru zvlášť s nastavením R+16777215 nebo R-16777215 a s čekáním na hlášení o dojetí na koncový spínač, nebo zvolit krokování všemi motory současně a po každém najetí na koncový spínač příslušnému krokovému motoru nastavit R+ nebo R- a dále krokovat zbývajícími motory. Opakováním tohoto postupu dosáhneme najetí všech krokových motorů na koncový spínač. Pro určení počáteční polohy najetím na koncový spínač se nedoporučuje používat maximální rychlost krokování z důvodu, že zastavení krokování najetím na koncový spínač proběhne okamžitě a ne po rampě.


Elekrické parametry:

Odpovídají PIC18F252 firmy Microchip. SB3201 je naprogramovaným PIC18F252.

Katalogový list PIC18F252 jako PDF soubor je k dispozici na http://www.microchip.com/.


Nejdůležitější parametry a parametry dané aplikací:

Napájecí napětí VDD proti GND:

4.5V až 5.5V, při napětí pod 4.5V je obvod ve stavu resetu (4.16V až 4.5V)

Vlastní proudová spotřeba:

<25mA

Napětí na vývodech proti GND:

-0.3V až VDD+0.3V

Maximální proud do VDD:

250mA

Maximální proud z GND:

300mA

Maximální proud z/do výstupu:

25mA

Součet všech proudů DIRx, STEPx a SLEEP nesmí překročit 200mA v žádném směru.

Maximální povolená výkonová ztráta:

1W

Úroveň L pro vstupy:

GND až 0.2*VDD

Úroveň H pro vstupy:

0.8*VDD až VDD

Úroveň L na výstupech:

max. 0.6V při Iol=8.5mA a VDD=4.5V

Úroveň H na výstupech:

min. VDD-0.7V při Ioh=-3mA a VDD=4.5V

Taktovací kmitočet na OSC1:

10MHz

Délka kladného pulsu na výstupech STEPx:

17us

Sériová linka:

115200bps 8N1, CMOS úrovně

Pracovní teplotní rozsah:

-40°C až +85°C

Skladovací teplotní rozsah:

-65°C až +150°C

Pouzdro:

PDIP28(300mil) nebo SOIC28


Typické zapojení:

Linka DTR ovládá /RESET vstup SB3201. Tímto je zajištěna možnost kdykoli okamžitě z nadřízené aplikace zastavit krokování zneaktivněním linky DTR nebo resetovat SB3201 z aplikace.


Software:

Pro účely vyzkoušení s PC lze použít libovolný terminálový program komunikující sériovým portem 115200bps 8bitů bez parity s jedním stopbitem (8N1). Tento dokument obsahuje veškeré nutné informace k plnému ovládání SB3201 z Vaší vlastní aplikace. Vlastní specifickou aplikaci pro PC lze objednat také u nás na zakázku.


Související hardware:

Budiče krokových motorů ovládané signály STEP+DIR.


Cena:

SB3201 lze zakoupit v naší obchodní kanceláři za 595 Kč (cena včetně DPH). Lze objednat také e-mailem s dodáním dobírkou, kdy k ceně účtujeme náklady na dopravu. Standardně dodáváme provedení v pouzdře PDIP28(300mil), pro pouzdro SOIC28 specifikujte tento požadavek v objednávce.

siliconbrain@siliconbrain.biz
[CNW:Counter]