Anleitung µC-Steuerung von FlyWheels

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...

Und es hat gut nochmal ein Jahr gedauert bevor ich diesen Thread hier wieder rauskrame ...
Das Projekt hat durch zuviel "echte" Arbeit arg gelitten und ein paar technische Fallstricke hatten mir zwischendurch auch die Lust am basteln genommen - so hatte der DigiSpark z.B. nach einbinden der I2C Bibliothek immer zuwenig Speicher um alle gewünschten Funktionen zu realisieren und die Ansteuerung des Display hat so hohe Waits verursacht dass zum Teil das Taktsignal unterbrochen wurde ...

Wie es der Zufall allerdings wollte "musste" ich die Tage etwas anderes über einen Digispark realisieren und habe dabei festgestellt das:

a) Der "Erfinder" des Digispark diesen nicht mehr betreut, aber die Community um so aktiver ist und dies zu
b) einem neuem Bootloader geführt hat der fast 1kByte mehr Speicher frei lässt (bei 8kByte Gesamtspeicher ist das schon krass...)

Und auch in der Arduino IDE hat sich eine Menge getan, viele Libs wurden optimiert - unter anderem hat jemand einen neuen Treiber für die kleinen 128x64 OLEDs geschrieben der zum einen wesentlich kleiner UND schneller ist ...

Also das Projekt wieder rausgekramt, den DigiSpark von Bootloader 1.6 auf 2.5 gebracht, die Libs ausgetauscht, Quellcode an die neuen Namen und Übergabeparamater angepasst, viel Kaffee getrunken und Tadaaaa ... von der ursprünglichen kompilierten Größe von ca. 5.9kB mit OLED und PPM ging es runter auf 4.8kB, die Zykluszeit von ca. 15-20ms auf 5-8ms.

Dementsprechend ließen sich alle gewünschten Optionen realisieren:

  • Beim einschalten der Stryfe führt diese über das OLED-Display einen Selbsttest durch:
    • Hochfahren der Flywheels für je 2 Sekunden 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 2000ms 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 schließen der JamDoor zurück gesetzt.
  • Unterbricht ein Dart die Lichtschranke während die FWs im Ruhezustand sind beschleunigen die FWs ebenfalls für 2000ms mit max. Leistung (Notfallplan für hektische Situation)
  • Es kann eine nahezu beliebige Anzahl von Geschwindigkeitsstufen im Code hinterlegt werden (Array-basiert)
  • Es kann eine nahezu beliebige Anzahl von Magazingrößen im Code hinterlegt werden (Array-basiert)
  • Auswahl der Geschwindkeitsstufen über den FW-Trigger bei geöffneter Jam-Door
  • Auswahl der Magazingröße über den Trigger wenn kein Magazin gesteckt ist
  • Auf dem Display werden Statusmeldungen und die Anzahl der abgegebenen Schüsse angezeigt
  • Anzeige der (geschätzten) Spannung (Vmin, Vmax, Vakt)
  • Anzeige der insgesamt verschossenen Darts
  • Anzeige der noch im Magazin verbliebenen Darts (sofern Magazingröße stimmt und dies voll war beim einstecken)

Ein paar Randdaten - die Brushed Motoren sind seeeeeehr effektive Störsender, selbst mit einem Hardware Debounce des Triggers hatte ich manchmal "merkwürdige" Reaktionen des µC, deswegen lese ich den Trigger jetzt als analogwert ein , welchen ich mit dem Basiswert im Leerlauf vergleiche - so bekomme ich ein sehr valides Ergebnis (und mit den ca. 1ms Latenz die ein weiterer analogRead braucht kann ich durchaus leben ...
 

scritch

Neuling
Tolle Arbeit erst einmal soweit. Ich bin zwar noch recht frisch in der Blasterwelt, habe da aber vielleicht einigen geistigen Input zu deinem Projekt, falls du Interesse daran hast. Ich beschäftige mich seit einigen Jahren privat mit µControllern. Vll. hast du ja an einem kleinen Austausch Interesse :)
 

Being blasted

Du bist Dartblaster Fan? Dann lass' dir blasted.de nicht entgehen!
Wir sind die größte deutsche Community rund um Nerf und Dartblaster-Modding.
Finde tausende Anleitungen für Mods, Hilfe bei Problemen, Antworten auf deine Fragen.
Verpasse keine Neuigkeiten aus der großartigen, bunten Welt der Schaumstoff-Guns.
Die Mitgliedschaft im Forum ist kostenlos und die Community freut sich auf dich!

Noch Fragen? Dann kontaktiere uns. Wir sind nur ein bisschen verrückt. ;)

Get blasted

Oben Unten