View on GitHub

motorsteuerung

DRV8833 Dual-Motor + Encoder - Motorsteuerung

DRV8833 Dual-Motor + Encoder (Calliope mini v3)

Steuerung von zwei DC-Getriebemotoren über DRV8833 mit Quadratur-Encodern und PID-Drehzahlregelung.
Optimiert für Calliope mini v3 und getestete N20-Encoder (DFRobot, 120:1, ~960 CPR @ 2×).

Features


Hardware & Pinbelegung

⚠️ Gemeinsame Masse: GND von Calliope und DRV8833 verbinden.
⚠️ VM (Motorversorgung) separat einspeisen (z. B. 6 V, je nach Motor).

Treiber / Motoren (DRV8833)

Motor DRV8833 IN1 DRV8833 IN2 Calliope-Pin
Links AIN1 AIN2 P1 (PWM), P0 (PWM)
Rechts BIN1 BIN2 P3 (PWM), P2 (PWM)
Treiber-Sleep nSLEEP (SLP) C8 (Digital)

Encoder (Quadratur)

Rad Kanal A Kanal B Calliope-Pin
Links A B C9, C13
Rechts A B C14, C15

Encoder-Zählung: Im Beispiel gilt CPR_1X = 1920, das entspricht 2×-Zählung (Rising+Falling eines Kanals).

ℹ️ In der Quelldatei heißen die Variablen ENC_A/B/C/D. Entscheidend sind die physischen Pins laut Tabelle. Wenn Drehrichtung „vertauscht” ist, kannst du die Vorzeichen in der ISR tauschen oder die Motorkabel am DRV8833 kreuzen.


Schnellstart

// In on start:
Motorsteuerung.begin()

// Einfach: 1,5 Umdrehungen LINKS vorwärts
Motorsteuerung.rotateSimple(Motorsteuerung.Motor.Links, Motorsteuerung.RichtungEinfach.Vorwaerts, 1.5)

// Einfach: auf der Stelle 0,25 Umdrehungen nach Links (also gegen den Uhrzeigersinn)
Motorsteuerung.rotateOnSpotSimple(Motorsteuerung.RichtungEinfach.Links, 0.25)

// Pro: Drehzahl LINKS = +60 RPM, RECHTS = -60 RPM (gegensinnig)
Motorsteuerung.setRPM_Pro(Motorsteuerung.Motor.Links, 60)
Motorsteuerung.setRPM_Pro(Motorsteuerung.Motor.Rechts, -60)

// Stop
Motorsteuerung.stopAll()

Blöcke

Gruppe „Einfach”

Gruppe „Pro” (direkte Vorzeichen/Parameter)


Treiber-Hinweise (DRV8833)


Troubleshooting


Lizenz

Metadaten (verwendet für Suche, Rendering)