MI03 Řadič dvou krokových motorů

Kategorie: MI (inteligentní modul)

Základom modulu ovládača dvoch krokových motorov MI03 je dvojica integrovaných obvodov L6228 a jednočipový mikropočítač ATmega48PA (AVR). AVR komunikuje s nadradeným systémov cez zbernicu I2C, a riadi obe obvody L6228. Obvod L6228 je DMOS ovládač bipolárneho krokového motora. Modul MI03 je napájaný z externého 9V zdroja (adaptér).

Integrovaný obvod L6228 je ovládač bipolárneho krokového motora s DMOS výkonovými tranzistormi. L6228 môže pracovať s napájacím napätím od 8 do 52V (podľa použitého motora). Cievkou motora môže tiecť prúd s maximálnou veľkosťou 1,4 A (2,8 A krátkodobo). Obvod obsahuje výkonovú DMOS časť, riadiacu logiku, nadprúdovú ochranu a tepelnú ochranu.

Rozmery plošného spoja MI03 sú 46,5 mm x 46,5 mm. Montážne otvory s priemerom 4,2 mm sú rozmiestnené v rastri 10 mm (podľa kovového konštrukčného systému Eitech).

Modul MI03 má na vrchnej strane DPS dve indikačné LED. Oranžová LED (LED2) svieti, ak je senzor napájaný. Modrá LED (LED1) bliká ak senzor komunikuje cez I2C. Komunikačným rozhraním moduluMI03 je rozhranie I2C vyvedené na 6-pinový konektor MLW06 (SV1).Napájacie napätie je k modulu privedené cez konektor X3.

Základné parametre modulu MI03 sú zhrnuté v nasledujúcej tabuľke:

Parametr Hodnota Jednotka
Napájecí napětí 9 V
Odběr <2 A
Pracovní teplota –20 .. 85 °C

Ke stažení

SKP model: 
PDF dokumentace: 

Příklad Java

/*
 * Příklad slouží k ovládání jednoho krokového motoru připojeného na portu A. K řízení slouží
 * tlačítka na jBotBrainu II (výchozí rychlost je 0, takže motor po zapnutí stojí):
 * 
 * – Tlačítko S1 slouží k přepínání mezi nekonečným krokováním a zadaným počtem kroků (v našem případě 40).
 * – Tlačítko S2 přepíná mezi polovičním a plným krokováním.
 * – Tlačítko S3 přepíná směr otáčení motoru.
 * – Tlačítko S4 slouží ke zvyšování rychlosti. Výchozí rychlost je 0 Hz.
 */
package jBotBrain2.StepperMotorExample;
import jBotBrain2.hw.*;
import jBotBrain2.devices.*;

public class StepeprMotorExampleMain {
    public static void main(String[] args) throws InterruptedException {
        Led.GREEN1.set(Led.MODE_BLINK, 300);
        StepperMotorDriver driver = new StepperMotorDriver();
        StepperMotor motor = new StepperMotor(driver, StepperMotorDriver.STEPPER_PORT_A);
        boolean direction = StepperMotor.DIRECTION_CLOCKWISE;
        int speed = 0;
        boolean stepping = StepperMotor.STEP_FULL;
        int count = 0;
        Led.RED.on();
        while (true) {
            Button.waitForPress();

            // Změna směru otáčení
            if (Button.S3.isPressed()) {
                if (direction == StepperMotor.DIRECTION_CLOCKWISE) {
                    direction = StepperMotor.DIRECTION_COUNTERCLOCKWISE;
                } else {
                    direction = StepperMotor.DIRECTION_CLOCKWISE;
                }
                while (Button.S3.isPressed());
            }

            // Nastavení krokování
            if (Button.S2.isPressed()) {
                if (stepping == StepperMotor.STEP_FULL) {
                    stepping = StepperMotor.STEP_HALF;
                } else {
                    stepping = StepperMotor.STEP_FULL;
                }
                while (Button.S2.isPressed());
            }

            // Nastavení rychlosti
            if (Button.S4.isPressed()) {
                speed += 10;
                while (Button.S4.isPressed());
            }

            // Nastavení počtu kroků
            if (Button.S1.isPressed()) {
                if (count == 0) {
                    count = 40;
                    Led.ORANGE.on();
                    Led.RED.off();
                } else {
                    count = 0;
                    Led.ORANGE.off();
                    Led.RED.on();
                }
                while (Button.S1.isPressed());
            }
            motor.set(speed, stepping, direction, count);
        }
    }