Projekt do MMIA
Knihovna pro řadič krokových motorů L6470
Jíří Moštěk, Jan Kohnheiser, UREL, FEEC, VUT Brno
Obsah:
- Úvod
- Realizace
- Závěr
- Literatura
Náš projekt se zabýval především vývojem knihovny pro řadič krokových motorů
L6470. Krom základní knihovny jse součátí projektu i vyřešená komunikace mezi
řadičem a mikrokontrolérem ATmega644P, který je součástí námi využívaného
vývojového kitu, a demonstrační program, pro představení většiny funkcí řadiče,
který využívá i tlačítka a grafický display.
Jak již bylo v úvodu zmíněno, pro vývoj jsme používali vývojový kit a to konkrétně
kit EvB 4.3 s mikrokontrolérem ATmega644P. K němu je pro účely demonstračního
programu připojen i grafický displej s řadičem.
Samotný řadič L6470 je připojen přes SPI rozhraní, k čemuž jsme vytvořili
samostatnou knihovnu SPI.cpp s hlavičkovým souborem SPI.h. Na
následujících obrázcích je deska s řadičem a krokový motor, který jsme používali
k testování funkcí a ladění demo programu. Jedná se o motor NEMA 14, který má
každou otáčku rozdělenou na 200 kroků (1,8° na jeden krok) a moment 0,14 Nm.
Na Následujících obrázcích je vyfoceno celé zapojení vývojkového kitu, desky
s řadičem i motoru pro kterou je demonstrační program připraven.
Zde můžete vidět úvodní snímek displeje, náhled do menu a zobrazení aktuálního
nastavení parametrů řadiče tak, jak je naprogramováno v demonstročním programu.
Pro ovládání a výběr v menu jsou použita tři tlačítka na desce vývojového kitu,
přičemž se u prvního a druhého tlačítka (TL1 a TL2) rozlišuje
krátký a dlouhý stisk pro volbu mezi prvích čtyř položek menu.
Náhledy na displej:
Samotná knihovna funkcí řadiče, která byla hlavním cílem zadání našeho projektu,
je v souborech driver.h a driver.cpp. Při jejich vývoji jsme se
drželi funkcí řadiče, které jsou popsány v jeho datasheetu [3] (str. 55).
Všem funkcím řadiče jsme v knihovně vytvořili ekvivalentní unkci s odpovídajícím
názvem. Je tak například možné roztčit motor v obou směrech, s konstantní rychlostí,
zrychlovat, či zpomalovat motor, postupovat po krocích, či ještě s jemnějším
mikrokrokem, posunout se s motorem do výchozí polohy, či přejít na libovolnou
předem stanovenou polohu a plno dalších funkcí, které jsou i v samotném
kódu pečlivě okomentovány.
K těmto funkcím řadič využívá své registry [3] (str. 40), kde je například uložena požadovaná
rychlost otáčení, zrychlení při rozjezdu i brždění, nebo nastavení parametrů
jako je proudové omezení a podobně. Všem registrům řadiče jsme vytvořili příslušné
jim odpovídající proměnné využívané v naší knihovně.
Projekt je kompletní a funkčí. Je logicky rozdělen do několika
souborů z čehož soubory driver.h a driver.cpp obsahují dle zadání
požadovanou knihovnu. Ostatní soubory jsou využívány k demonstračním
účelům a ke komunikaci přes zběrnici SPI. Knihovny pro grafický displej jsme
použili z cvičení předměru MMIA, ale knihovnu pro komunikaci po sběrnici SPI
(SPI.h a SPI.cpp) jsme vytvořili mi přimo pro tuto aplikaci
řadiče.
Celý projekt je ke stažení zde.
[1] BURKHARD M. C pro mikrokontroléry. BEN - technická literatura, 2003.
[2] NOVÁK P. Mobilní roboty - pohony, senzory, řízení. BEN - technická literatura, 2005.
[3] Datasheet řadiče L6470