Forum: Projekte & Code Gleichstrommotoren über die Digilent Pmod-H-Brücke mit Rückkopplungseingängen und einem Arduino Uno


von Alex W. (Firma: Digilent) (alexwong)


Angehängte Dateien:

Lesenswert?

Dieses Projekt verwendet das Pmod HB5 von Digilent. Es bietet eine 
2-A-H-Brückenschaltung zur Ansteuerung kleiner bis mittelgroßer 
Gleichstrommotoren und wurde speziell für den Einsatz mit dem 
Getriebemotor von Digilent entwickelt, der über einen Quadratur-Encoder 
verfügt. Das Pmod HB5 kommuniziert mit dem Arduino Uno mittels 
GPIO-Protokoll. Um den Motor mit einer bestimmten Geschwindigkeit zu 
betreiben, muss der Benutzer zunächst die Drehrichtung über den 
Direction-Pin auswählen (um die Welle im Uhrzeigersinn zu drehen, muss 
ein Low-Pegel an den Direction-Pin angelegt werden, beziehungsweise ein 
High-Pegel, um die Welle gegen den Uhrzeigersinn zu drehen) und dann am 
Enable-Pin eine Pulsbreitenmodulation durchführen. Der Motor dreht sich 
umso schneller, je öfter ein logischer High-Pegel innerhalb einer 
bestimmten Zeitspanne am Enable-Pin anliegt

Die Funktionsweise besteht darin, dass der Motor beim Anlegen einer 
Spannung durch die sich ändernden Magnetkräfte angetrieben wird. Wird 
die Spannung abgeschaltet, bewirkt das Drehmoment, dass der Motor sich 
noch eine Weile weiterdreht. Ist die Frequenz ausreichend hoch, 
ermöglicht dieser Prozess des Speisens und Nachlaufens des Motors eine 
gleichmäßige Drehbewegung, die leicht mit einer digitalen Logik 
gesteuert werden kann. Die Änderung der Spannung erfolgt dabei über das 
Pmod BTN – einem Pmod mit vier entprellten Drucktasten – und einer 9 
V-Batterie, die am Pmod HB5 angeschlossen ist.

Die nachfolgende Tabelle zeigt die für den Anschluss des Pmod HB5 an das 
Arduino Uno Board und das Pmod BTN notwendige Verdrahtung:
Pmod HB5 <----------> Arduino Uno <----------> Pmod BTN
  VCC         auf         5V           auf       VCC
  GND         auf         GND          auf       GND
  DIR         auf         2            auf         –
  EN          auf         3            auf         –
  –           auf         4            auf       BTN0
  –           auf         5            auf       BTN1
  –           auf         6            auf       BTN2

Für dieses Projekt unterstützt der Arduino-Code die folgenden Befehle:
•Der Drucktaster BTN0 ändert die Richtung des Motors.
•Der Drucktaster BTN1 erhöht die Motordrehzahl.
•Der Drucktaster BTN2 verringert die Motordrehzahl.
•Die Geschwindigkeit des Motors wird auf dem seriellen Monitor 
angezeigt.

Sobald der Arduino-Code kompiliert ist, erhält der Anwender einen voll 
funktionsfähigen Gleichstrommotor, der mittels Pmod HB5 als 
H-Brückenschaltung und Pmod BTN als Befehlsgeber angesteuert wird. Dabei 
werden alle Befehle (für Richtung und Geschwindigkeit des Motors) auf 
dem seriellen Monitor angezeigt.

: Verschoben durch Moderator
von Jens M. (schuchkleisser)


Lesenswert?

Kann es sein, das das ganz unverschämte kommerzielle Werbung ist?
Neeeeein, niemals!

Alex W. schrieb:
> Das Pmod HB5 kommuniziert mit dem Arduino Uno mittels
> GPIO-Protokoll.

LOL
"Protokoll" ist für zwei Pins mit Freigabe- und PWM-Signal leicht 
übertrieben, oder?
"Die LED kann einfach über das simple 
Didschitell-dschi-pi-ei-oh-singel-wire-Protokoll gesteuert werden: ein 
Aufruf von digitalWrite(H) schaltet das Licht ein, digitalWrite(L) 
dagegen aus."

Das Sketch ist schlecht & fehlerhaft.

Alles in allem kein gutes Beispiel, einer von 5 Sternen.

: Bearbeitet durch User
von Alex W. (Firma: Digilent) (alexwong)


Lesenswert?

Vielen Dank für die Anmerkung. Können Sie uns vielleicht mitteilen, wo 
es schlechte und fehlerhafte Verbindungen gibt? In Bezug auf das 
GPIO-Protokoll: Jeder Satz von Regeln, der während einer Kommunikation 
verwendet wird, ist ein Protokoll. Wenn also der logische Wert die 
Richtung und die Impulsdauer die Geschwindigkeit des Motors festlegt, 
kann dies als Protokoll betrachtet werden. Das Projekt wurde bereits 
einige Male getestet. Es wurden keine Probleme festgestellt.

von Jens M. (schuchkleisser)


Lesenswert?

Naja, Pläne in Fritzing und der schlechte Code, der nicht auf Überläufe 
testet oder gesichert ist, und aus vollem Lauf eine Richtungsumkehr 
erlaubt, das passt schon zusammen.
Fehlende Entprellung ist da noch das i-tüpfelchen.

Irgendwoher muss de schlechte Ruf der Arduino-Benutzer ja kommen. :D

von Alex W. (Firma: Digilent) (alexwong)


Angehängte Dateien:

Lesenswert?

Vielen Dank für die Rückmeldung! Es gibt einen Exception-Handler, wenn 
der Endbenutzer absichtlich einen Wert > 255 eingibt (siehe den 
untenstehenden Code). Eine aktualisierte Skizze ist beigefügt.

//Motordrehzahl inkrementieren, wenn die Taste 1 gedrückt wird (und wenn 
möglich)
  if (spd + 5 <= 255 && b1) {
    spd += 5;
  }
//Motordrehzahl dekrementieren, wenn die Taste 2 gedrückt wird (und wenn 
möglich)
  if (spd - 5 >= 0 && b2) {
    spd -= 5;
  }

Aufgrund der Trägheit des Gleichstrommotors dreht sich der Rotor nach 
einer Richtungsänderung in der bisherigen Richtung weiter, wodurch ein 
Strom induziert wird. Auf diese Weise kann der Spannungsabfall auf den 
Motorleitungen die Spannung der Stromversorgung übersteigen und so die 
Treibertransistoren beschädigen. Um dies zu verhindern, sind im Pmod HB5 
Leistungsdioden zwischen Drain und Source der treibenden MOSFETs 
geschaltet, die diese Spannung abfangen. Alles in allem ist es nicht 
notwendig, Richtungsänderungen bei voller Geschwindigkeit zu vermeiden, 
da die Treiberschaltung auf Hardware-Ebene gegen alle möglichen 
negativen Auswirkungen geschützt ist.
(https://reference.digilentinc.com/_media/reference/pmod/pmodhb5/pmodhb5_sch.pdf)

Da das Pmod BTN eigene Entprellungsfilter enthält, sind die Taster 
bereits auf Hardware-Ebene entprellt. Damit ist die Implementierung 
einer Entprellung per Software nicht erforderlich.
(https://reference.digilentinc.com/_media/reference/pmod/pmodbtn/pmodbtn_sch.pdf)

Das Ziel von Arduino ist Creative Commons und Lernen. Wir schätzen 
dieses Feedback, es ist ein guter Beitrag für die Gemeinschaft. In der 
Welt der Technik gibt es kein perfektes Programm. In Programmen finden 
wir immer Bugs. Manchmal können sie durch Software behoben werden, 
manchmal geht es aber auch um Hardware-Abhängigkeiten.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.