Aktualisierung (25 / 05 / 2024): Wir haben alle unsere Produkte auf Lager, finden Sie uns auch auf und    Jetzt shoppen

Verbinden Sie verschiedene Motoren mit Ihrem SBC

In diesem Tutorial erfahren Sie, wie Sie die gängigsten Motortypen an den anschließen SBC. Außerdem zeigen wir Ihnen anhand einiger Beispiele, wie Sie damit umgehen. Die gängigsten Motortypen sind:

  • Gleichstrommotoren sind billig und einfach zu steuern, es wird nur ein Leistungsausgang benötigt und dieser kann mit einem PWM-Signal aktiviert werden.

  • Servomotoren ähneln Gleichstrommotoren, enthalten jedoch eine kleine Elektronik und ein internes Potentiometer, um einen geschlossenen Regelkreis zu bilden, mit dem der Drehwinkel gesteuert werden kann. Die Ansteuerung erfolgt ebenfalls per PWM, allerdings ist in diesem Fall das Ansteuersignal leistungsarm und die Endstufe im Stellmotor selbst integriert.

  • Schrittmotoren haben mehrere Wicklungen und erfordern eine zu steuernde Sequenz, bieten dafür aber eine hohe Präzision, da sie bei jedem Umpolen ihrer Wicklungen Schritt für Schritt vorrücken.

1. Gleichstrommotoren

Um einen Gleichstrommotor zu steuern, schließen wir ihn an den SBC an, wie im folgenden Diagramm dargestellt:

Wir müssen einige Parameter unseres Motors kennen, insbesondere die Beziehung zwischen angelegter Spannung und Motordrehzahl oder Kv.

Die Dc_Motor-Klasse stellt den DC-Motor dar, der von einem PWM bei 50 Hz gesteuert wird. Wie zu sehen ist, müssen einige Parameter angegeben werden, wie die Versorgungsspannung und die Kv-Konstante, sowie der zu verwendende Pin. Dafür erhalten wir zwei Funktionen: set_voltage und set_speed.

 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Klasse Gleichspannungs Motor: FREQ_Hz = 50
    def __init__( selbst, pin, vm, kv ):
        selbst.vm = vm
        selbst.kv = kv
        selbst.Stift = Stift
        selbst.Zweifel = SBC.Dout()
        selbst.Zweifel.set_pwm( selbst.Stift, selbst.FREQ_Hz, 0 )
        selbst.set_spannung( 0 )
    
    def set_spannung( selbst, v ): pulse_percent_on = 100 *v/selbst.vm
        selbst.Zweifel.set_pwm( selbst.Stift, selbst.FREQ_Hz, 100-puls_percent_on )
    
    def Geschwindigkeit einstellen( selbst, Drehzahl ):
        selbst.set_voltage (rpm/selbst.kv)

Ein Anwendungsbeispiel wäre folgendes:

>>> Importzeit
>>> sbc_mtr importieren
>>> motor = sbc_mtr.Dc_Motor( "DOUT3", vm=12, kv=0.5 )
>>> print( "Spannungsregelung" )
Spannungsregelung
>>> motor.set_voltage( 6 )
>>> time.sleep( 1 )
>>> motor.set_voltage( 0 )
>>> print( "Geschwindigkeitsregelung" )
Drehzahlregelung
>>> motor.set_speed( 100 )
>>> time.sleep( 1 )
>>> motor.set_speed( 0 )

2. Servomotoren

Der Servomotor verwendet einen einzigen Steuerstift, um den Drehwinkel eines Motors zu steuern.

 Der Code der Klasse Servo_Motor:

 1 2 3 4 5 6 7 8 9 10 11 12 13 14
Klasse Servomotor: FREQ_Hz = 50
    DUTY_MIN_ms = 0.5
    DUTY_MAX_ms = 2.5
    
    def __init__( selbst, Stift ):
        selbst.Stift = Stift
        selbst.Zweifel = SBC.Dout()
        selbst.Zweifel.set_pwm( selbst.Stift, selbst.FREQ_Hz, 0 )
        
    def set_angle( selbst, angle_deg ): duty_ms = selbst.DUTY_MIN_ms + (selbst.DUTY_MAX_ms-selbst.DUTY_MIN_ms)*angle_deg/ 180
        puls_percent_on = selbst.FREQ_Hz*Pflicht_ms/ 10
        selbst.Zweifel.set_pwm( selbst.Stift, selbst.FREQ_Hz, 100-puls_percent_on )

Und ein Anwendungsbeispiel:

>>> Importzeit
>>> sbc_mtr importieren
>>> motor = sbc_mtr.Servo_Motor( "DOUT3" )
>>> print( "Winkel auf 90 Grad setzen" )
Winkel auf 90 Grad einstellen
>>> motor.set_angle( 90 )
>>> time.sleep( 1 )
>>> print( "Winkel auf 0 Grad setzen" )
Winkel auf 0 Grad einstellen
>>> motor.set_angle( 0 )

3. Schrittmotoren

Um einen Schrittmotor anzuschließen, folgen wir einem Schema ähnlich dem in der Abbildung:

Der Klassencode Stepper_Motor ist im Grunde eine Zustandsmaschine, die die oben gezeigte Tabelle implementiert.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Klasse Schrittmotor:
   
    def __init__( selbst, Stifte ):
        selbst.Stifte = Stifte
        selbst.Zweifel = SBC.Dout()
        selbst.Zustand = 0
        selbst.Schritte = 0
        selbst.dir = 1
        selbst.Timer = Maschine.Timer( -1 )
    
    def Step( selbst, Richtung ):
        if( selbst.Zustand == 0 ):
            selbst.Zweifel.schreiben( selbst.Stifte[0], 1 )
            selbst.Zweifel.schreiben( selbst.Stifte[1], 1 )
            selbst.Zweifel.schreiben( selbst.Stifte[2], 0 )
            selbst.Zweifel.schreiben( selbst.Stifte[3], 0 )
        elif( selbst.Zustand == 1 ):
            selbst.Zweifel.schreiben( selbst.Stifte[0], 0 )
            selbst.Zweifel.schreiben( selbst.Stifte[1], 1 )
            selbst.Zweifel.schreiben( selbst.Stifte[2], 1 )
            selbst.Zweifel.schreiben( selbst.Stifte[3], 0 )
        elif( selbst.Zustand == 2 ):
            selbst.Zweifel.schreiben( selbst.Stifte[0], 0 )
            selbst.Zweifel.schreiben( selbst.Stifte[1], 0 )
            selbst.Zweifel.schreiben( selbst.Stifte[2], 1 )
            selbst.Zweifel.schreiben( selbst.Stifte[3], 1 )
        elif( selbst.Zustand == 3 ):
            selbst.Zweifel.schreiben( selbst.Stifte[0], 1 )
            selbst.Zweifel.schreiben( selbst.Stifte[1], 0 )
            selbst.Zweifel.schreiben( selbst.Stifte[2], 0 )
            selbst.Zweifel.schreiben( selbst.Stifte[3], 1 )
        selbst.Schritte += Richtung
        selbst.Zustand = (selbst.Zustand + Richtung) & 0x03
    
    def Geschwindigkeit einstellen( selbst, Schritte_s, Richtung ):
        if( Schritte_s und Richtung):
            selbst.Timer.init( zeitraum=int(1000 /steps_s), Modus=Maschine.Timer.PERIODISCH, Rückruf=Lambda tmr: selbst.Schritt (Richtung) )
        sonst:
            selbst.Timer.deinit()

Abschließend ein Anwendungsbeispiel:

>>> Importzeit
>>> sbc_mtr importieren
>>> motor = sbc_mtr.Stepper_Motor ( ["DOUT1", "DOUT2", "DOUT3", "DOUT4"] )
>>> print( "Schritt für Schritt" )
Schritt für Schritt
>>> für i im Bereich ( 100 ):
... motor.step( 1 )
... time.sleep_ms( 10 )
>>> print( "Fortlaufend" )
Kontinuierlich
>>> motor.set_speed( 100, -1 )
>>> time.sleep( 1 )
>>> motor.set_speed( 0, 0 )

Wenn Ihnen dieser Inhalt gefallen hat, können Sie uns weiter folgen Twitter, YouTube, Facebook or LinkedIn um über solche Inhalte auf dem Laufenden zu bleiben.

Hast du Fragen oder Wünsche?
Kontaktiere uns! Wir antworten <24 Stunden!

Symbol
Kontakt ArduSimple
Menu

Möchten Sie mehr über GPS/RTK erfahren?

1. Unser Engineering-Team wird sich mit Ihnen in Verbindung setzen, um alle Fragen zu klären
2. Wir halten Sie über Werbeaktionen und neue Produktveröffentlichungen auf dem Laufenden
3. Sie hören nur von uns, wenn wir wichtige Neuigkeiten haben, wir spammen Ihre E-Mail nicht zu