Projekt do MMIA
Knihovna pro řadič krokových motorů L6470

Jíří Moštěk, Jan Kohnheiser, UREL, FEEC, VUT Brno

Obsah:

  1. Úvod
  2. Realizace
  3. Závěr
  4. Literatura

Úvod

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.

Realizace

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.
Displej Vývojový kit
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.
L6470 Motor - Nema14
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.
zapojení-detail zapojení
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:
Displej-Úvodní obraz Displej - Menu
Displej - Kontrola nastavení


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

Závěr

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.

Literatura

[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