Skip to content

fabse-hack/motor_controller_micropython

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DCMotor und AS5600 Rotary Encoder Controller mit Micropython

📝 Einleitung

Dieses Projekt bietet eine vollständige Lösung für die Steuerung von DC-Motoren (z. B. mit L298N) und die präzise Messung von Drehimpuls (RPM) über einen AS5600 Rotary Encoder. Das System kombiniert Hardware-Steuerung mit Mikropython-Software und unterstützt PID-Regelung, automatische Kalibrierung sowie Echtzeit-Datenvisualisierung.


🧰 Hardware-Komponenten

  • AS5600 Rotary Encoder (I2C-Adresse: 0x36)
  • DC-Motor (z. B. 15000Hz-Modell)
  • L298N Motor-Treiber
  • ESP32/Pico (mit I2C/PWM-Schnittstellen)
  • 9V/12V Stromversorgung für den Motor
  • 3D-Druckteile (Verkabelungshalter, Sensorhalter, Motorhalter)
  • USB-Adapter für die Stromversorgung

🔍 Funktionen & Features

  • Motorsteuerung mit Duty-Cycle-Regelung (links/rechts/stop)
  • AS5600-Integration für Winkelposition- und RPM-Messung
  • PID-Regler zur dynamischen Geschwindigkeitsanpassung
  • Automatische Kalibrierung des Minimums Duty Cycle
  • Echtzeit-Datenvisualisierung (RPM/Duty Cycle-Diagramm)
  • Statusleuchten (Neopixel) für Fehler-/Betriebsstand-Anzeige

🧩 Kernkomponenten

🔹 DCMotor-Klasse

Steuert den Motor mit dutyCycle-Regelung und Reverse-Funktion.

dc_motor1.set_speed(50)  # 50 RPM im Uhrzeigersinn

🔹 AS5600-Klasse

Liest Winkelwerte über I2C und wandelt sie in RPM um.

sensor1.read_registers()  # Liest aktuelle Position
sensor1.count_rounds()    # Zählt vollständige Drehungen

🔹 MotorController-Klasse

Implementiert PID-Regelung für genaue Geschwindigkeitssteuerung.

controller.set_target_rpm(80)
controller.control_motor_with_rpm()  # Regelt RPM über 10 Sekunden

📦 3D-Druckteile (CAD)

  • AS5600_brick_mount.stl: Halter für den Encoder
  • dc_motor_brick_mount.stl: Halter für den Motor
  • Download: https://bit.ly/dcmotor-cad

🚀 Beispieldatenvisualisierung

# Implemente in `code_for_computer.py`
plt.ion()  # Sofortiges Zeichnen
fig, ax = plt.subplots(figsize=(10, 6))
line1, = ax.plot(rpm_data, label='RPM', color='blue')
line2, = ax.plot(duty_data, label='Duty Cycle', color='orange')
ax.legend()
plt.draw()  # Aktualisiert das Diagramm

⚙️ Installation & Aufruf

  1. Hardware vorbereiten: AS5600 mit ESP32 verbinden.
  2. Code laden:
    • main.py → Hauptprogramm für Motor- und Sensorlogik
    • code_for_computer.py → Für Datenvisualisierung (PC)
  3. Kalibrierung:
    min_duty = calibrate_min_duty(dc_motor1, sensor1)  # Automatische Bestimmung

📋 TODO-Liste

  • Optimiertes PID-Trainingsystem
  • Sicherheitsschalter (z. B. Überhitzungschutz)
  • Web-Oberfläche für Fernsteuerung (Flask/JSON)
  • Full-Realtime-Grafik-Export (CSV/PNG)

📲 Hilfe & Support


Letzte Aktualisierung: 2023-10-05
Erstellt von: fabsehack

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages