Motortreiber DRV8835, Ansteuerung mit Arduino

IMG_2545Eins der wichtigsten Module eines Roboters, ist ein Motortreiber. Da der Mikrocontroller nur 20mA pro Ausgang liefern kann, benötigt man einen Treiber, der den Strom direkt von den Batterien/Akkus, zum Motor leiten kann.

Ich habe eine Zeit lang, den L293D Motortreiber IC verwendet und seit nicht so langer Zeit, ist der DRV8835 Motortreiber von Polou, ein meiner Favoriten. Den DRV8835 habe ich bereits bei meinen Robotern Follower und 8259 Lego Roboter eingesetzt.

DRV8835 Pinbelegung(Bildquelle: http://pololu.com)

Die kleine Platine des Treibers hat 14 Anschlüsse und davon zwei Kanäle (Channels), A und B.

An VCC für die Logik, kann eine Spannung zwischen 2V und 7V angeschlossen werden. An Vin eine Spannung zwischen 2V und 11V.

Ein Motor wird an AOUT1 und AOUT2 angeschlossen und der zweite Motor, wird an BOUT1 und BOUT2 angeschlossen.

Wenn man den MODE unbelegt lässt, wird der Motortreiber im erweiterten Modus betrieben, allerdings ist die Programmierung dann etwas komplizierter. Deswegen wir dieser Anschluß über einen 1kOhm Pull-Up Widerstand, an Vcc angeschlossen.

Jeder Channel hat zwei Steuerpins: ENABLE und PHASE. Je nach Kanal, steht noch ein A oder B davor.

Mit dem Signal an Pin APHASE wird die Drehrichtung des Motors an Kanal A bestimmt. Bei HIGH Signal dreht der Motor in eine Richtung und bei LOW Signal in die andere. Ohne die ENABLE Anschlüsse bzw. Signale, würden die Motoren ständig in die eine oder ander Richtung drehen und der Roboter würde nie stehen bleiben können. Also kann man LOW Pegel an AENABLE den Channel A deaktivieren. So bleibt der Motor stehen.

ENABLE Phase Motor
HIGH HIGH Motor dreht in die eine Richtung
HIGH LOW Motor dreht in die andere Richtung
LOW HIGH/LOW Motor bleibt stehen

 

Fritzing-Schaltplan

Da Bilder mehr als tausend Worte sagen, habe ich eine Skizze in Fritzing gezeichnet und da es den Motortreiber in der Fritzing’s Bibliothek nicht gab, den Treiber nachträglich in Paint eingezeichnet.

DRV8835 Arduino SteckbrettPinbelegung

VIN Pluspol der Batterie und Vin am Arduino
VCC 5V am Arduino
VMM Nicht verbunden
GND GND
AOUT1 Erster Anschluss Motor A
AOUT2 Zweiter Anschluss Motor A
BOUT1 Erster Anschluss Motor B
BOUT2 Zweiter Anschluss Motor B
APHASE Digital Pin 2 am Arduino
AENABLE Digital Pin 3 am Arduino
BPHASE Digital Pin 4 am Arduino
BENABLE Digital Pin 5 am Arduino
MODE Über 1k Widerstand an VCC

 

Programmierung

Wir fangen ersmal damit an, dass wir ein Motor nur ein und ausschalten, dann nehmen wir den zweiten Motor dazu. Danach werden wir die Drehzahl der Motoren verringern/ehöhen. Es ist empfehlenwert, dass man vorher ein paar kleine Tutorials mit Arduino abgeschlossen hat. Zumindest das Blink-Programmm 😉

Die Beschreibung de Programms bzw. der einzzelnen Anweisungen, kann man den Kommentaren, hinter einzelnen Befehlen entnehmen.

Vor jedem Wechsel der Drehrichtung, wird der Kanal erstmal abgeschaltet. Das zwar nicht bei allen Treibern notwendig, allerdings ist es empfehlenswert, sich diese Abschaltung vor Richtungswechsel und das wieder Einschalten danach, anzugewöhnen.

 

7 Replies to “Motortreiber DRV8835, Ansteuerung mit Arduino”

  1. Worin liegt der Unterschied zu den Servo/Motor Shields I’m Vergleich zu Motor Treiber? Ich Programmierung ist doch die selbe, also woran dann? Danke vorab

    • Die Programmierung ist nicht immer dieselbe. Es kommt aber oft vor, dass die Ansteuerung identisch bzw. ähnlich ist.
      Andere Unterschiede liegen eigentlich auf der Hand. Z.B. Preis, Leistung, Größe etc.

  2. Hallo,

    ich habe diese interessante Schaltung gefunden, war aber eigentlich auf der Suche nach einer Fritzingdatei xxx.fzpz des DRV8835-Motortreibers.
    Scheinbar hast du auch keine gefunden und dir selber eine erstellt.
    Könntest du mir diese zuschicken, dann könnte ich die auch in meiner Schaltung benutzen.
    Wenn ich dann mal eine „richtige“ Datei finde, würde ich dir diese auch schicken.

    Vielen Dank im Voraus.
    Gruß
    Michael

    • Hi,
      Ich habe damals kein neues Bauteil erstellt. Als ich die Zeichnung exportiert habe, war kein Motortreiber auf dem Steckbrett. Das habe ich dann manuell mit Paint oder Inkscape (weiß nicht mehr so genau) nachträglich gezeichnet 😉
      Finde Fritzing viel zu umständlich

  3. Hallo,
    ich bin auf deinen Beitrag gestoßen und habe anstatt zwei DC Motoren , einen. Stepper Motor angeschlossen , der als Autofokus für eine Kleine USB Kamera Linse dient. Wie muss ich den Code ändern für einen Stepper motor?

Schreibe einen Kommentar zu Mike Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

*

Bitte löse folgende Rechenaufgabe * Time limit is exhausted. Please reload CAPTCHA.