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
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
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.