[PYTHON] [Raspberry Pi] Schrittmotorsteuerung mit Raspberry Pi

Einführung

Ich kaufte eine Raspeltorte und dachte, ich könnte ein neues Hobby finden, das ich während des Lockdowns drinnen machen kann. Ich dachte, wenn ich den Motor steuern könnte, wäre er später in Experimenten nützlich, also kaufte ich zusammen einen Schrittmotor, also werde ich versuchen, ihn zu steuern. Es ist interessant, es nur mit konstanter Geschwindigkeit zu drehen, aber ich wollte jede Übung machen können. Kenntnisse über elektrische und elektronische Schaltkreise Ich habe bei fast Null angefangen, aber ich konnte es leicht tun, weil es im Internet viele Informationen gab. Ich weiß das wirklich zu schätzen. Es scheint, dass es auf verschiedene Arten gesteuert werden kann, aber ich möchte die Methode vorstellen, die ich am einfachsten fand.

Hardware-

Unten finden Sie eine Liste der verwendeten Hardware.

Rotation mit konstanter Geschwindigkeit

Erstens ist die grundlegende Drehung mit konstanter Geschwindigkeit. Verwenden Sie RpiMotorLib, eine Himbeer-Pi-Python-Motorbibliothek auf GitHub. Es scheint, dass Sie nicht nur Schrittmotoren, sondern auch Gleichstrommotoren und Servomotoren steuern können. Sie können es vom Terminal mit sudo pip install rpimotorlib installieren. Verdrahten Sie die Bibliothek nach der Installation gemäß Sehr höfliches Tutorial und kopieren Sie den Code und fügen Sie ihn ein, um den Motor zu drehen. Ich werde. Ich verdrahtete wie folgt (Entschuldigung für die handgezeichnete Rohzeichnung). Die Bildauflösung ist schlecht und schwer zu erkennen, die Verkabelung ist jedoch wie in der folgenden Tabelle gezeigt.

Raspeye GPIO Treiber Motor-
17 IN1 -
18 IN2 -
27 IN3 -
22 IN4 -
- OUT1 A-
- OUT2 B-
- OUT3 A+
- OUT4 B+

Die Hauptfunktion ist motor_run (GpioPins, wait, step, ccwise, verbose, steptype, initdelay). Die Erklärung jedes Arguments ist wie folgt.

Wenn Sie beispielsweise 5 Hz gegen den Uhrzeigersinn mit einer Drehzahl von 0,5 Hz im Halbschrittmodus drehen möchten, lautet der Code wie folgt. Es ist sehr einfach.

python


import time 
import RPi.GPIO as GPIO
from RpiMotorLib import RpiMotorLib  
    
GpioPins = [17, 18, 27, 22]  #GPIO-Pin. IN1 von links, IN2, IN3,Pin zur Verbindung mit IN4.

f = 0.5  #Drehzahl[Hz]
Rev = 5  #5 mal drehen
s_angle = 1.8  #Schrittwinkel[deg]
wait = (1/f)*(s_angle/360)/2  #Zeit zwischen den Impulsen. Hälfte-Teilen Sie für den Schrittmodus durch 2

#Geben Sie dem Motor den Namen und geben Sie den Motortyp an (Nema oder 28BYJ).
mymotortest = RpiMotorLib.BYJMotor('MyMotorOne', 'Nema') 

#Maine. Argumente sind GPIO-Pin, Warten, Anzahl der Schritte, Rückwärtsdrehung, ausführlich, Schrittmodus, erste Verzögerung von links[ms]
mymotortest.motor_run(GpioPins, wait, Rev*50, True, False, 'half', 0.05)

#Zum Schluss die Stifte aufräumen
GPIO.cleanup()

stepper_test.gif

angenehm!

Ich möchte jede Übung machen

Da ich es drehen konnte, denke ich, dass ich je nach Code jede Übung machen kann. Ich möchte den Motor willkürlich bewegen lassen. Nehmen wir als Beispiel eine sinusförmige Nickbewegung. 7 in 1 Schritt.Da es sich um 2 ° dreht, ist die Amplitude\theta_0Sollte ein Vielfaches davon sein. Diesmal sind es 72 °. ZeitraumTWurde auf 2 Sekunden eingestellt. Die Winkelgeschwindigkeit beträgt\omega = \dot{\theta}(In diesem Beispiel\cos)aber,waitKann nur einen positiven Wert annehmen, also einen absoluten Wertwait = (1/2)\times(1/|\omega|)\times(1.8/360)Ist bestanden. Und\omega < 0WannccwiseZu'True'Alles was Sie tun müssen, ist zu bestehen.\theta\omega|\omega|waitは下図のようZuなります.

Der Code lautet wie folgt.

python


GpioPins = [17, 18, 27, 22]

T = 2  # Period [s]
N_period = 2  # No. of periods
amp = 72
unit_angle = 7.2
s_angle = 1.8  # [deg]
N = int(4*amp/unit_angle)

theta = amp*sin(np.linspace(0, 2*pi, N))  # Angle time history [deg]
dt = T/len(theta)  # time-step [s]
omega = np.gradient(theta, dt)/360  # [Hz]
omega_pos = abs(omega)
pm = omega < 0  # boolean for CW/CCW 
wait = (1/omega_pos)*(s_angle/360)/2

mymotortest = RpiMotorLib.BYJMotor, 'MyMotorOne', 'Nema')
time.sleep(0.002)

for _ in np.arange(N_period):
    for k in np.arange(N):
        mymotortest.motor_run(GpioPins, wait[k], 1, pm[k], False, "half", 0)

GPIO.cleanup()

Sinu_Pitch.gif

erledigt!

Andere Websites, auf die verwiesen wird

Recommended Posts

[Raspberry Pi] Schrittmotorsteuerung mit Raspberry Pi
Servomotorsteuerung mit Raspberry Pi
Den Servomotor SG-90 mit Himbeer-Pi betreiben
GPGPU mit Raspberry Pi
DigitalSignage mit Raspberry Pi
Steuern Sie den Motor mit einem Motortreiber mit Python auf Raspberry Pi 3!
Mutter pflanzt mit Raspberry Pi
Steuern Sie bürstenlose Motoren mit GPIO von Raspberry Pi Zero
Verwenden Sie vl53l0x mit RaspberryPi (Python)
Serielle Kommunikation mit Raspberry Pi + PySerial
Betriebssystem-Setup mit Raspberry Pi Imager
Herstellung eines Temperaturregelungssystems mit Himbeerkuchen und ESP32 (1)
Probieren Sie L Chika mit Himbeerpi
Aufbau eines VPN-Servers mit Raspberry Pie
Versuchen Sie, 3 Servos mit Raspeye zu bewegen
Verwenden einer Webkamera mit Raspberry Pi
Ich habe gelernt, wie die Infrarot-Fernbedienung mit Raspberry Pi funktioniert
Messen Sie die SIM-Signalstärke mit Raspberry Pi
Haustierüberwachung mit Rekognition und Raspberry pi
Hallo Welt mit Raspberry Pi + Minecraft Pi Edition
Erstellen Sie eine Tensorflow-Umgebung mit Raspberry Pi [2020]
Versuchen Sie, mit Raspberry Pi nach Wakasagi zu fischen
Normal programmieren mit Node-RED-Programmierung mit Raspberry Pi 3
Verbesserter menschlicher Sensor mit Raspberry Pi
Versuchen Sie die Objekterkennung mit Raspberry Pi 4 + Coral
Arbeiten mit Sensoren in Mathematica auf Raspberry Pi
Verwenden Sie einen PIR-Bewegungssensor mit Himbeer-Pi
Machen Sie einen Waschtrocknungs-Timer mit Raspberry Pi
Infer Custom Vision Modell mit Raspeye
Bedienen Sie das Oszilloskop mit dem Raspberry Pi
Erstellen Sie eine Auto-Anzeige mit Himbeer-Pi
Protokollieren des Werts von Inkbird IBS-TH1 mit Raspberry Pi
Arbeiten mit GPS in Python für Raspberry Pi 3
Verwenden Sie Python auf Raspberry Pi 3, um die LED mit Schaltersteuerung zu beleuchten!
Herstellung eines Temperaturregelungssystems mit Himbeerkuchen und ESP32 (2) Herstellung eines Übertragungsgeräts
Discord Bot Himbeere Pi Null mit Python [Hinweis]
Steuern Sie Akizukis I2C-verbundenes organisches EL-Display von Raspberry Pi
Medienprogrammierung mit Raspeye (Vorbereitung für Audio)
Ich habe L-Chika mit Razpai 4 (Python Edition) ausprobiert.
Genießen Sie die elektronische Arbeit mit GPIO von Raspberry Pi
MQTT Radicon Car mit Arduino und Himbeere
Schalten Sie Ihren PC mit Himbeer-Pi ein / aus
CSV-Ausgabe von Impulsdaten mit Raspberry Pi (CSV-Ausgabe)
Beobachten Sie die Futago-Meteorgruppe mit Raspberry Pi4
Holen Sie sich CPU-Informationen von Raspberry Pi mit Python
Holen Sie sich Temperatur und Luftfeuchtigkeit mit DHT11 und Raspberry Pi
Aktieninvestitionsanalyse-App mit Himbeerkuchen gemacht
Protokollieren des Werts von Inkbird IBS-TH1 mini mit Raspberry Pi
Stellen Sie mit Python auf Raspberry Pi eine Verbindung zu MySQL her
GPS-Tracking mit Raspeye 4B + BU-353S4 (Python)
Messen Sie die CPU-Temperatur von Raspeye mit Python
Erstellen eines Temperaturregelungssystems mit Himbeerkuchen und ESP32 (3) Empfangen einer Python-Datei
Notieren Sie Temperatur und Luftfeuchtigkeit mit systemd auf Raspberry Pi
Maschinelles Lernen mit Raspberry Pi 4 und Coral USB Accelerator
Führen Sie die LED-Matrix interaktiv mit Raspberry Pi 3B + auf Slackbot aus
Verwendung des digitalen Beleuchtungsstärkesensors TSL2561 mit Raspberry Pi
Was ist Raspberry Pi?