Je modul určený pro buzení krokových motorů. Vzhledem k tomu, že moment krokového motoru je závislý na proudu tekoucím vinutím (magnetické napětí), tak je třeba pro zachování momentu motoru i ve vysokých otáčkách budit vinutí motoru zdrojem proudu. Který působí proti indukčnosti vinutí změnou efektivního napájecího napětí. Což umožní rychle dosáhnout nominálního napájecího proudu i při rychlém přepínání vinutí (minimalizuje se tím vliv indukčnosti).
Existují dvě hlavní konstrukce motorů z hlediska způsobu jejich řízení.
Jejich vinutí je konstruováno tak, že obsahuje napájecí odbočky, které umožňují měnit polaritu magnetického pole na pólech motoru bez přepólování napájecího napětí. To umožňuje elektronicky jednodušší ovládání motoru protože k řízení pak není potřeba plný spínačový most. Ale pouze spínače, které uzemňují jednotlivá vinutí proti napájecímu napětí.
Nevýhodou je že každý pól motoru musí obsahovat dvojnásobné množství závitů (pro jednu a druhou polarizaci magnetického pole), což přináší menší užitný výkon motoru. Proto se tyto motory už obvykle nevyužívají a jsou zastaralé. Nové budiče krokových motorů je už ani neumožňují řídit.
Tento typ motorů má na pólovém nástavci navinuto pouze jedno vinutí a je tudíž nutná komutace jeho napájecího napětí a tedy i použití plného spínačového mostu.
Výhodou je hlavně vyšší výkon a moment motoru při malých rozměrech a hmotnosti vzhledem k unipolárním motorům.
Modul je určen pro řízení jednoho krokového motoru pracujícího v bipolárním režimu (většinu unipolárních motorů lze v tomto režimu provozovat za cenu použití vyššího napájecího napětí). Tj. modul obsahuje dva plné spínačové můstky. Pro konstrukci modulu byl vybrán integrovaný obvod L6470.
Modul se ovládá přes rozhraní SPI, kterým se komunikuje přímo s integrovaným obvodem L6470. Pro ovládání motoru je napsáno několik knihoven pro různé architektury.
V SW dokumentačním adresáři na MLAB SVN je dostupný demonstrační program pro LABduino napsaný ve Wiringu.
Propojení obou modulů provedeme vodiči MLAB podle následující tabulky:
Modul ATmegaTQ3201A | Modul HBSTEP01A |
---|---|
PB2 | CS |
PB3 | SDI |
PB4 | SDO |
PB5 | CK |
Protože ve stavebnici MLAB je tento RTOS systém využíván ta mikrokontrolérech ARM STM32. Byla do chibiOS pro ARM naportována knihovna přímo z webu ST.
Firmware pro toto zapojení je k dispozici na githubu
Použitý demo kód ovládá dva krokové motory. A připojení přes SPI je multiplexováno mezi oběma obvody přes ChipSelect pin.
Připojení prvního motoru
Modul STM32F10xRxT01A | Modul HBSTEP01A |
---|---|
PA4 | CS |
PA5 | CK |
PA6 | SDO |
PA7 | SDI |
PC4 | BUSY/SYNC |
Připojení druhého motoru
Modul STM32F10xRxT01A | Modul HBSTEP01A |
---|---|
PC5 | CS |
RA5 | CK |
RA6 | SDO |
RA7 | SDI |
Modul je možné přímo řídit z PC při použití modulů USBI2C01B a I2CSPI01A, které vytvoří SPI rozhraní ovladatelné z počítače.
Modul I2CSPI01A | Modul HBSTEP01A |
---|---|
#SS0 | CS |
MOSI | SDI |
MISO | SDO |
CLK | CK |
V případě, že je potřeba řídit více motorů současně, tak je běžným řešením připojení více HBSTEP budičů na jedno SPI rozhraní. Obvykle je to realizováno použitím více chip-select signálů (ke každému SPI slave zvlášť). Taková konstrukce je ale nepraktická.
U modulů HBSTEP01B je ale možné použít takzvané daisy-chain zapojení, které umožňuje připojit více SPI slave zařízení na jeden Chip-select. Tím se značně zjednodušší konstrukce takového zařízení. A počet ovládaných motorů pak není limitován počtem chip-select signálů.