Im Allgemeinen reichen die Stromstärken, die ein Mikrocontroller liefern kann, nicht aus, um einen Motor direkt anzusteuern. Deshalb gibt es unterschiedliche Arten von sogenannten Motortreibern. Diese werden eingangsseitig am Mikrocontroller und ausgangsseitig am Motor angeschlossen. Sie übersetzen die Kommandos des Mikrocontrollers in die vom Motor benötigten Stromstärken. Gleichzeitig wird der Mikrocontroller von etwaigen Kurzschlüssen oder Überspannungen, die seitens des Motors entstehen könnten, geschützt.
Die vorliegende Ausführung kann einen vieradrigen Schrittmotor oder bis zu zwei Gleichstrommotoren ansteuern. Falls zwei Gleichstrommotoren angeschlossen werden, können diese unabhängig voneinander sowohl bezüglich der Richtung und Geschwindigkeit gesteuert werden.
Der Motortreiber wird direkt oder mithilfe des Grove Shields an einen Arduino oder Raspberry Pi über die serielle Schnittstelle I2C angeschlossen. Der Treiber benötigt dabei eine separate Stromversorgung zwischen 6V und 15V.
Ein Beispielprojekt könnte ein Roboter sein, der ein frei drehbares und zwei angetriebene Räder besitzt. Die zwei Räder können mithilfe des Motortreibers sowohl vorwärts als auch rückwärts gesteuert werden. So kann der Roboter in alle Richtungen navigiert werden.
Alle weiteren Hintergrundinformationen sowie ein Beispielaufbau und alle notwendigen Programmbibliotheken sind auf dem offiziellen Wiki (bisher nur in englischer Sprache) von Seeed Studio zusammengefasst. Zusätzlich findet man über alle gängigen Suchmaschinen durch die Eingabe der genauen Komponentenbezeichnung entsprechende Projektbeispiele und Tutorials.
Wichtige Hinweise:
Programmierung und RESET: Beim Heraufladen eines Programms auf einen Mikrocontroller über einen Computeranschluss („Upload-Vorgang“) wird der Mikrocontroller automatisch kurz vom Strom getrennt, damit das neu geladene Programm komplett von vorne ablaufen kann. Der hier vorliegende Motortreiber wird aber zusätzliche mit einer externen Stromquelle betrieben, zum Beispiel mit einem Netzteil oder einem Akku. Sind Motortreiber, externe Stromquelle und Mikrocontroller während des Upload-Vorgangs miteinander verbunden, kommt es teilweise zu Problemen. Der Grund ist, dass der Mikrocontroller nicht richtig vom Strom getrennt werden kann, wenn er (zusätzlich zur Stromversorgung über einen Computer) an einer externen Stromquelle hängt. Deshalb sollte man Mikrocontroller und Motortreiber während des Upload-Vorgangs von allen Stromquellen außer dem PC-Anschluss trennen. Soll der Mikrocontroller resettet werden, also in den Ausgangszustand versetzt werden, sollte er ebenfalls von allen externen Stromquellen getrennt werden.
// verbinde den Motortreiber mit einem der I2C Steckplätze auf dem Grove shield.
// schließe je einen DC-Motor an die beiden Ausgänge an.
// installiere die Grove_I2C_Motor_Driver library mithilfe des Library-Managers.
// lade den Sketch auf den Arduino
// drücke den Reset Knopf auf dem Motortreiber und dem Arduino
// nun sollten sich beide Motoren wie unten beschrieben Drehen
// einbinden der Motortreiber-Bibliothek
#include "Grove_I2C_Motor_Driver.h"
// Das ist die I2C Standardadresse
#define I2C_ADDRESS 0x0f
void setup() {
// Verbinde mit Motortreiber
Motor.begin(I2C_ADDRESS);
}
void loop() {
// Die Drehgeschwindigkeit kann von -255 bis 255 eingestellt werden
// oft drehen sich die Motoren bei Werte kleiner als 50 nicht.
// drehe Motor1 schnell im Uhrzeigersinn
Motor.speed(MOTOR1, 255);
// drehe Motor2 langsam gegen den Uhrzeigersinn
Motor.speed(MOTOR2, -80);
// warte 2 Sekunden
delay(2000);
// lasse Motor1 langsam gegen den Uhrzeigersinn laufen
Motor.speed(MOTOR1, -90);
// lasse Motor2 langsam mit dem Uhrzeigersinn laufen
Motor.speed(MOTOR2, 100);
delay(2000);
// Stoppe MOTOR1 und MOTOR2
Motor.stop(MOTOR1);
Motor.stop(MOTOR2);
delay(2000);
}
// verbinde den Motortreiber mit einem der I2C Steckplätze auf dem Grove shield.
// schließe einen 5V Stepper-Motor am Pin-Header an.
// wenn der StepperMotor 5 Kabel hat, bleibt wahrscheinlich das Rote-Kabel übrig.
// dieses hat dann keine Verbindung zum Motortreiber.
// installiere die Grove_I2C_Motor_Driver library mithilfe des Library-Managers.
// lade den Sketch auf den Arduino
// drücke den Reset Knopf auf dem Motortreiber und dem Arduino
// nun sollten sich der Stepper-Motor wie unten beschrieben Drehen
// einbinden der Motortreiber-Bibliothek
#include <Grove_I2C_Motor_Driver.h>
// Das ist die I2C Standardadresse
#define I2C_ADDRESS 0x0f
void setup() {
// Verbinde mit Motortreiber
Motor.begin(I2C_ADDRESS);
}
void loop() {
// Drehe 512 Schritte im Uhrzeigersinn
Motor.StepperRun(512);
// Warte eine halbe Sekunde
delay(500);
// Drehe 1024 Schritte gegen den Uhrzeigersinn
Motor.StepperRun(-1024);
// Warte eine halbe Sekunde
delay(500);
}
Sie sehen gerade einen Platzhalterinhalt von YouTube. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.
Wichtige Links für die ersten Schritte:
Weiterführende Hintergrundinformationen: