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.
#include "Grove_I2C_Motor_Driver.h" // default I2C address is 0x0f #define I2C_ADDRESS 0x0f void setup() { Serial.begin(9600); Motor.begin(I2C_ADDRESS); } void loop() { // Set speed of MOTOR1, Clockwise, speed: -100~100 Motor.speed(MOTOR1, 50); // Set speed of MOTOR2, Anticlockwise Motor.speed(MOTOR2, -70); delay(2000); // Change speed and direction of MOTOR1 Motor.speed(MOTOR1, -100); // Change speed and direction of MOTOR2 Motor.speed(MOTOR2, 100); delay(2000); // Stop MOTOR1 and MOTOR2 Motor.stop(MOTOR1); Motor.stop(MOTOR2); delay(2000); } // End of file
Wichtige Links für die ersten Schritte:
Weiterführende Hintergrundinformationen:
- Gleichstrommotor – Wikipedia Artikel
- Schrittmotor – Wikipedia Artikel
- I2C – Wikipedia Artikel
- SPI – Wikipedia Artikel
- UART – Wikipedia Artikel
- GitHub-Repository: Motortreiber