- PWM (Pulsweitenmodulation):
- Servomotor und PWM:
- Erforderliche Komponenten:
- Schaltplan:
- Arbeits- und Programmiererklärung:
Raspberry Pi ist ein Prozessor-basiertes Board mit ARM-Architektur, das für Elektronikingenieure und Bastler entwickelt wurde. Der PI ist derzeit eine der vertrauenswürdigsten Projektentwicklungsplattformen. Mit höherer Prozessorgeschwindigkeit und 1 GB RAM kann der PI für viele hochkarätige Projekte wie Bildverarbeitung und Internet der Dinge verwendet werden.
Um hochkarätige Projekte durchführen zu können, muss man die Grundfunktionen von PI verstehen. In diesen Tutorials werden wir alle grundlegenden Funktionen von Raspberry Pi behandeln. In jedem Tutorial werden wir eine der Funktionen von PI diskutieren. Am Ende dieser Raspberry Pi Tutorial-Reihe können Sie selbst hochkarätige Projekte durchführen. Gehen Sie die folgenden Tutorials durch:
- Erste Schritte mit Raspberry Pi
- Himbeer-Pi-Konfiguration
- LED Blinkend
- Raspberry Pi Button Interfacing
- Raspberry Pi PWM-Generation
- Steuerung des Gleichstrommotors mit Raspberry Pi
- Schrittmotorsteuerung mit Raspberry Pi
- Schnittstellen-Schieberegister mit Raspberry Pi
- Raspberry Pi ADC Tutorial
In diesem Tutorial steuern wir den Servomotor mit Raspberry Pi. Bevor wir zum Servo gehen, lassen Sie uns über PWM sprechen, da das Konzept der Steuerung des Servomotors davon herrührt.
PWM (Pulsweitenmodulation):
Wir haben bereits viele Male über PWM gesprochen in: Pulsweitenmodulation mit ATmega32, PWM mit Arduino Uno, PWM mit 555-Timer-IC und PWM mit Arduino Due. PWM steht für 'Pulse Width Modulation'. PWM ist eine Methode zum Abrufen einer variablen Spannung von einer stabilen Stromversorgung. Betrachten Sie zum besseren Verständnis von PWM die folgende Schaltung:
In der obigen Abbildung leuchtet die LED während dieser Zeit kontinuierlich, wenn der Schalter über einen bestimmten Zeitraum kontinuierlich geschlossen ist. Wenn der Schalter für eine halbe Sekunde geschlossen und für die nächste halbe Sekunde geöffnet ist, leuchtet die LED erst in der ersten halben Sekunde. Der Anteil, für den die LED über die Gesamtzeit leuchtet, wird als Arbeitszyklus bezeichnet und kann wie folgt berechnet werden:
Arbeitszyklus = Einschaltzeit / (Einschaltzeit + Ausschaltzeit)
Arbeitszyklus = (0,5 / (0,5 + 0,5)) = 50%
Die durchschnittliche Ausgangsspannung beträgt also 50% der Batteriespannung.
Wenn wir die EIN- und AUS-Geschwindigkeit auf ein Niveau erhöhen, wird die LED gedimmt, anstatt EIN und AUS zu sein. Dies liegt daran, dass unsere Augen Frequenzen über 25 Hz nicht klar erfassen können. Betrachten Sie einen 100-ms-Zyklus, wobei die LED 30 ms lang AUS und 70 ms lang EIN ist. Wir werden 70% der stabilen Spannung am Ausgang haben, so dass die LED kontinuierlich mit 70% der Intensität leuchtet.
Das Duty Ratio reicht von 0 bis 100. '0' bedeutet vollständig AUS und '100' ist vollständig EIN. Dieses Tastverhältnis ist für den Servomotor sehr wichtig. Die Position des Servomotors wird durch dieses Tastverhältnis bestimmt. Überprüfen Sie dies für die PWM-Demonstration mit LED und Raspberry Pi.
Servomotor und PWM:
Ein Servomotor ist eine Kombination aus Gleichstrommotor, Lageregelungssystem und Zahnrädern. Servos haben viele Anwendungen in der modernen Welt und sind damit in verschiedenen Formen und Größen erhältlich. Wir werden SG90 Servomotor in diesem Tutorial verwenden, es ist eines der beliebtesten und billigsten. SG90 ist ein 180-Grad-Servo. Mit diesem Servo können wir also die Achse von 0-180 Grad positionieren.
Ein Servomotor besteht hauptsächlich aus drei Drähten, einer für positive Spannung, einer für Masse und der letzte für die Positionseinstellung. Das rote Kabel ist an die Stromversorgung angeschlossen, das braune Kabel ist an Masse angeschlossen und das gelbe Kabel (oder WEISS) ist an das Signal angeschlossen.
Im Servo haben wir ein Steuersystem, das das PWM-Signal vom Signal-Pin nimmt. Es decodiert das Signal und erhält das Tastverhältnis daraus. Danach wird das Verhältnis mit den vordefinierten Positionswerten verglichen. Wenn es einen Unterschied in den Werten gibt, wird die Position des Servos entsprechend angepasst. Die Achsposition des Servomotors basiert also auf dem Tastverhältnis des PWM-Signals am Signalstift.
Die Frequenz des PWM-Signals (Pulse Width Modulated) kann je nach Typ des Servomotors variieren. Für SG90 beträgt die Frequenz des PWM-Signals 50 Hz. Überprüfen Sie das Datenblatt für das jeweilige Modell, um die Betriebsfrequenz Ihres Servos zu ermitteln. Sobald die Frequenz ausgewählt ist, ist das andere wichtige Element hier das PFLICHTVERHÄLTNIS des PWM-Signals.
Die folgende Tabelle zeigt die Servoposition für dieses bestimmte Tastverhältnis. Sie können einen beliebigen Winkel dazwischen erhalten, indem Sie den Wert entsprechend auswählen. Für 45º Servo sollte das Duty Ratio also '5' oder 5% betragen.
POSITION |
PFLICHTVERHÄLTNIS |
0º |
2.5 |
90º |
7.5 |
180º |
12.5 |
Bevor Sie den Servomotor an den Raspberry Pi anschließen, können Sie Ihr Servo mithilfe dieser Servomotor-Testschaltung testen. Überprüfen Sie auch unsere folgenden Servo-Projekte:
- Servomotorsteuerung mit Arduino
- Servomotorsteuerung mit Arduino Due
- Schnittstelle zwischen Servomotor und 8051-Mikrocontroller
- Servomotorsteuerung mit MATLAB
- Servomotorsteuerung durch Flex-Sensor
- Servopositionsregelung mit Gewicht (Kraftsensor)
Erforderliche Komponenten:
Hier verwenden wir Raspberry Pi 2 Model B mit Raspbian Jessie OS. Alle grundlegenden Hardware- und Softwareanforderungen wurden bereits erläutert. Sie können sie in der Raspberry Pi-Einführung nachschlagen.
- Verbindungsstifte
- 1000uF Kondensator
- SG90 Servomotor
- Steckbrett
Schaltplan:
A1000µF muss über die + 5V-Stromschiene angeschlossen werden, da sich der PI sonst zufällig abschaltet, während das Servo gesteuert wird.
Arbeits- und Programmiererklärung:
Sobald alles gemäß Schaltplan angeschlossen ist, können wir den PI einschalten, um das Programm in PYHTON zu schreiben.
Wir werden über einige Befehle sprechen, die wir im PYHTON-Programm verwenden werden.
Wir werden die GPIO-Datei aus der Bibliothek importieren. Mit der folgenden Funktion können wir die GPIO-Pins von PI programmieren. Wir benennen auch "GPIO" in "IO" um. Wenn wir also im Programm auf GPIO-Pins verweisen möchten, verwenden wir das Wort "IO".
importiere RPi.GPIO als IO
Manchmal, wenn die GPIO-Pins, die wir verwenden möchten, andere Funktionen ausführen. In diesem Fall erhalten wir während der Ausführung des Programms Warnungen. Der folgende Befehl weist den PI an, die Warnungen zu ignorieren und mit dem Programm fortzufahren.
IO.setwarnings (False)
Wir können die GPIO-Pins von PI entweder anhand der Pin-Nummer an Bord oder anhand ihrer Funktionsnummer referenzieren. Wie 'PIN 29' auf der Karte ist 'GPIO5'. Also sagen wir hier entweder, dass wir den Pin hier durch '29' oder '5' darstellen werden.
IO.setmode (IO.BCM)
Wir setzen PIN39 oder GPIO19 als Ausgangspin. Wir werden PWM-Ausgang von diesem Pin erhalten.
IO.setup (19, IO.OUT)
Nach dem Setzen des Ausgangspins müssen wir den Pin als PWM-Ausgangspin einrichten.
p = IO.PWM (Ausgangskanal, Frequenz des PWM-Signals)
Der obige Befehl dient zum Einrichten des Kanals und auch zum Einstellen der Frequenz des Kanals. “ 'p' ist hier eine Variable, es kann alles sein. Wir verwenden GPIO19 als PWM-Ausgangskanal. "Frequenz des PWM-Signals" wählen wir 50, da die SG90-Arbeitsfrequenz 50 Hz beträgt.
Der folgende Befehl wird verwendet, um die PWM-Signalerzeugung zu starten. ' DUTYCYCLE ' dient zum Einstellen des 'Turn On' -Verhältnisses wie zuvor erläutert.
p.start (DUTYCYCLE)
Der folgende Befehl wird als Forever-Schleife verwendet. Mit diesem Befehl werden die Anweisungen in dieser Schleife kontinuierlich ausgeführt.
Während 1:
Hier liefert das Programm zur Steuerung des Servos mit Raspberry Pi ein PWM-Signal am GPIO19. Das Tastverhältnis des PWM-Signals wird drei Sekunden lang zwischen drei Werten geändert. Der Servo dreht sich also für jede Sekunde in eine Position, die durch das Duty Ratio bestimmt wird. Das Servo dreht sich in drei Sekunden kontinuierlich auf 0º, 90º und 180º.