Wald12
Lernender Modder
Es hat ein paar Tage länger gedauert aber nun habe ich es endlich geschafft mein aktuelles Projekt mit allen optionalen Bäumen niederzuschreiben:
µC-gesteuerter Flywheels ... warum? Wir geben uns bei unseren Blastern enorme Mühe die vorhandene Technik zu optimieren, was die Elektrik angeht gibt es aber meist nur AUS und VOLLE POWER ... dabei bietet die moderne Welt doch soviele Möglichkeiten..
Steuerung der Flywheels über einen µC, Ansteuerung der Motoren wahlweise per PWM und MosFet oder PPM und ESC:
Dies führt zu folgenden Projektzielen:
Proof of Concept erfolgreich abgeschlossen:
Vor mir liegt eine Stryfe mit verbauten DigiSparkPro, 20A ESC und 2 OOD Valkyrie Motoren, sowie einer zusätzlichen Lichtschranke im FW-Cage, das I2C OLED Display ist noch extern und sucht noch einen Einbauort.
Was funktioniert:
P0 - I2C Display
P2 - I2C Display
P1 - PWM/PPM Ausgang
P4 - Lichtschranke
P5 - FW-Trigger
P6- Analog Eingang für VCC und Jamdoor (etwas getrickst, bei geschlossener JamDoor wird die Spannung des LiPos über einen Spannungsteiler auf den Pin gelegt, beim Öffnen der Jamdoor werden +5V auf den Pin gelegt, bei der Auswertung wird über den zurück gemeldeten Wert entschieden ob eine Spannung gemessen werden soll oder ob die Jamdoor aufsteht)
To Dos:
Die "kleine Lösung":
DigiSpark mit ATTiny85, Ansteuerung der FWs per PWM (MosFet), mit OLED Display für Statusanzeigen, max. 3 unterschiedliche Geschwindigkeiten, Anzeige der abgegebenen Schüsse, Vakt. - nicht in einer Nerf verbaut, liegt auf dem Steckbrett zum testen / rumspielen.
Die "große" Lösung:
DigiSpark Pro, Ansteuerung der FWs per PPM (ESC), mit OLED Display, nahezu unbegrenzte Anzahl von Geschwindigkeiten, Anzeige der der abgegebenen Schüsse, Vakt, Vmin, Vmax, unterschiedliche Schriftarten.
Der Code ist so geschrieben dass er schnell auf andere Hardware angepasst werden kann (Define der PINs auf eindeutige Namen), allerdings müssen bestimmte Teile des Quelltexts für kleine Prozessoren auskommentiert werden, auf Dauer werde ich den Attiny85 nicht mehr nutzen da die Abmessungen des Digispark Pro nur unwesentlich größer sind und ich bestimmte Funktionen auf mehr PINs verteilen kann (JamDoor / Mag-Schalter).
Bilder des Ganzen kommen am langen Wochenende, die Komponenten sind jetzt fest eingebaut, allerdings ist der Akku noch extern und kein "Not-Aus" verbaut, dafür muss ich die Shell-bearbeiten und das geht nicht wenn die Kinder schlafen
Quellcode ist noch closed Beta (auf Anfrage gerne per PN), sobald ich meine Kommentare überarbeitet habe und die Benamung der Variablen etwas sprechender ist poste ich den hier in den Thread.
µC-gesteuerter Flywheels ... warum? Wir geben uns bei unseren Blastern enorme Mühe die vorhandene Technik zu optimieren, was die Elektrik angeht gibt es aber meist nur AUS und VOLLE POWER ... dabei bietet die moderne Welt doch soviele Möglichkeiten..
Steuerung der Flywheels über einen µC, Ansteuerung der Motoren wahlweise per PWM und MosFet oder PPM und ESC:
- Vorteil der PWM Steuerung: simpel, sehr kostenkünstig
- Nachteil der PWM Steuerung: ohne "komplexen" Aufbau mit H-Brücke dahinter keine Motorbremsung
- Vorteil der PPM Steuerung mit ESC: robustes Bauteil mit Überlastschutz, Akkuüberwachung und Motorbremse
- Nachteil der PPM Steuerung: Frisst wesentlich mehr Speicher und das Bauteil kostet zwischen 5 und 10€
Dies führt zu folgenden Projektzielen:
- möglichst kurze Spin-Up Zeit der Flywheels
- Einstellen von x möglichen Leerlaufgeschwindigkeiten
- Erhöhen der Spannung / Leistung des Motors bei Kontakt mit dem Dart
Proof of Concept erfolgreich abgeschlossen:
Vor mir liegt eine Stryfe mit verbauten DigiSparkPro, 20A ESC und 2 OOD Valkyrie Motoren, sowie einer zusätzlichen Lichtschranke im FW-Cage, das I2C OLED Display ist noch extern und sucht noch einen Einbauort.
Was funktioniert:
- Beim einschalten der Stryfe führt diese über das OLED-Display einen Selbsttest durch:
- Hochfahren der Flywheels für je 1 Sekunde mit den konfigurierten Geschwindigkeiten
- Aufforderung zum öffen und schliessen der JamDoor
- Aufforderung zum drücken und loslassen des FW-Triggers
- Beim drücken des Rev-Triggers beschleunigen die FWs für 500ms mit 100%, danach laufen diese mit der eingestellten Leistung weiter
- Sobald ein Dart die Lichtschranke im FW-Cage unterbricht während die FWs bereits laufen beschleunigen die FWs um einen Faktor X, sollte dies länger als eine Zeit Y der Fall sein wird ein Jam erkannt und die FWs stoppen, dieser wird erst durch öffnen und schliessen der JamDoor zurück gesetzt.
- Unterbricht ein Dart die Lichtschranke während die FWs im Ruhezustand sind beschleunigen die FWs ebenfalls für 500ms mit max. Leistung (Notfallplan für hektische Situation)
- Es kann eine beliebige Anzahl von Geschwindigkeitsstufen im Code hinterlegt werden (Array-basiert)
- Auswahl der Geschwindkeitsstufen über den FW-Trigger bei geöffneter Jam-Door
- Auf dem Display werden Statusmeldungen und die Anzahl der abgegebenen Schüsse angezeigt
- Anzeige der (geschätzten) Spannung (Vmin, Vmax, Vakt), bei unterschreiten eines bestimmten Wertes wird ein Spannungsalarm ausgelöst welcher nur durch öffnen und schliessen der Jamdoor zurück gesetzt werden kann
P0 - I2C Display
P2 - I2C Display
P1 - PWM/PPM Ausgang
P4 - Lichtschranke
P5 - FW-Trigger
P6- Analog Eingang für VCC und Jamdoor (etwas getrickst, bei geschlossener JamDoor wird die Spannung des LiPos über einen Spannungsteiler auf den Pin gelegt, beim Öffnen der Jamdoor werden +5V auf den Pin gelegt, bei der Auswertung wird über den zurück gemeldeten Wert entschieden ob eine Spannung gemessen werden soll oder ob die Jamdoor aufsteht)
To Dos:
- Zurücksetzen des Ammo-Counters bei einsetzen eines neuen Magazins
- Primär der Speicher des zuerst verwendeten Attiny85 (Digispark), bei Nutzung von OLED und PPM (Servo Steuerung) bleib nicht genug Speicher um unterschiedlich große Schriftarten zu verwenden, sowie die aktuelle Spannung zu errechnen.
Die "kleine Lösung":
DigiSpark mit ATTiny85, Ansteuerung der FWs per PWM (MosFet), mit OLED Display für Statusanzeigen, max. 3 unterschiedliche Geschwindigkeiten, Anzeige der abgegebenen Schüsse, Vakt. - nicht in einer Nerf verbaut, liegt auf dem Steckbrett zum testen / rumspielen.
Die "große" Lösung:
DigiSpark Pro, Ansteuerung der FWs per PPM (ESC), mit OLED Display, nahezu unbegrenzte Anzahl von Geschwindigkeiten, Anzeige der der abgegebenen Schüsse, Vakt, Vmin, Vmax, unterschiedliche Schriftarten.
Der Code ist so geschrieben dass er schnell auf andere Hardware angepasst werden kann (Define der PINs auf eindeutige Namen), allerdings müssen bestimmte Teile des Quelltexts für kleine Prozessoren auskommentiert werden, auf Dauer werde ich den Attiny85 nicht mehr nutzen da die Abmessungen des Digispark Pro nur unwesentlich größer sind und ich bestimmte Funktionen auf mehr PINs verteilen kann (JamDoor / Mag-Schalter).
Bilder des Ganzen kommen am langen Wochenende, die Komponenten sind jetzt fest eingebaut, allerdings ist der Akku noch extern und kein "Not-Aus" verbaut, dafür muss ich die Shell-bearbeiten und das geht nicht wenn die Kinder schlafen
Quellcode ist noch closed Beta (auf Anfrage gerne per PN), sobald ich meine Kommentare überarbeitet habe und die Benamung der Variablen etwas sprechender ist poste ich den hier in den Thread.