Anleitung Arduino Selectfire Rapidstrike

Dieses Thema im Forum "Elektrik" wurde erstellt von Bmag, 5. Mai 2019.

  1. Bmag

    Bmag Erfahrener Modder

  2. Jetzt anmelden Die Community freut sich auf dich! Exklusive Features und Content warten.

  3. Nach geraumer Zeit kann ich auch meine Version einer Selectfire Rapidstrike auf Arduinobasis präsentieren. Komplett neu ist mein Entwurf jetzt nicht, er basiert zu großen Teilen auf der Anleitung von @02134, wobei ich mir auch Inspirationen bei tungstenexe geholt habe. Leider konnte ich noch nicht alle Features so implementieren, wie ich mir das wünsche. So fehlt vor allem die Anzeige und das Messen der LiPo-Spannung. Da aber verschiedene Leute jetzt immer wieder nach meiner Version gerufen haben (@Crash Override , @Moggih ) Veröffentliche ich hier und heute eine robuste Grundversion, welche folgende Anforderungen erfüllt:
    • 3 Feuermodi: Einzelfeuer, Burst (Standardmäßig 3er Salven, läßt sich im Code simpel ändern), Dauerfeuer
    • Anzeige von aktuellem Dartvorrat und Magazingröße
    • Wahl von voreingestellten Magazingrößen
    • Feinanpassung der Magazingrößen
    • Reset der Dartzahl bei Magazinwechsel
    Ich liste jetzt nicht jeden einzelnen Widerstand oder ähnliche Bauteile auf, nur die wichtigsten:
    Für das Gehäuse des LCDs habe ich auf ein 3D-Druckteil von thingiverse zurückgegriffen.
    Die Steuerung der Flywheels läuft auch über den Arduino, so dass wie oben geschrieben ein Logic Level Mosfet nötig ist. Beim Pusher habe ich auf ein Relais zurückgegriffen, da ich somit sehr einfach eine Motorbremse realisieren konnte. Ich bin auf diese Idee bei einem Schaltplan für die Rhinofire gestoßen:

    4Cb08WO.png

    Als Schalter für die Wahl des Feuermodus bzw. der Magazingröße (durch Öffnen der Jamdoor) habe ich einen großen Button als Daumenschalter für die linke Hand installiert, der sich hervorragend in die "Zähne" schmiegt:

    20190505_172138.jpg

    Der Rest der Verkabelung sieht jetzt nicht gerade überragend aus, ich habe versucht alles in dem Gehäuse unterzubringen:

    20190427_121827.jpg

    Das Relais habe ich dabei oberhalb des Pushermechanismus verlegt:

    20190427_173711.jpg

    An dieser Stelle noch eine Anmerkung zu dem Pusher, genauer gesagt zum Cyclecontrol: es kann sein, dass es an dem Alter und Zustand meiner Rapidstrike lag, aber für andere mag es auch hilfreich sein. Teilweise schafft es der Schalter des Cyclecontrol nicht schnell genug gegen die Reibung anzuarbeiten, so dass ich bei diesem Schalter die Feder gegen eine stärkere tauschen musste. Danach schaltete er zuverlässig.

    Den Code pack ich als txt in den Anhang. Ihr müsst nach dem Runterladen einfach die Dateiendung wieder in .ino ändern. Ich bin kein professioneller Programmierer, was sich wohl auch in einem leicht konfusen Stil äußert, da meine Gedanken manche Sprünge machen. Vor dem Veröffentlichen habe ich noch versucht, den Code etwas zu ordnen, und ein paar Kommentare eingefügt. Falls ihr Fragen habt, könnt ihr mir gerne schreiben. Auch für Anmerkungen und Kritiken habe ich ein offenes Ohr.

    Und nun zum Abschluss eine Demonstration der Funktionen

     

    Anhänge:

  4. Crash Override

    Crash Override Auf Blasted zuhause

    Sehr interessant... Ich werd' auf dich zurückkommen, falls ich eine meiner beiden RS umbaue und da sowas realisieren würde. Allerdings werden nicht beide umgebaut, da eine von den beiden beabsichtigter weise noch "komplett analog" bleiben sollte.

    Die Spanung könnte man da mit nem spannungsteiler abgreifen - man müsste sich die Widerstandswerte nur ausrechnen und mit nem Multiplikator dem Arduino zufügen. Wie man das aber auf nem OLED anzeigt, das ist etwas, was ich auch erst in Erfahrung bringen müsste - inkl. dem dazugehörigen Code...
     
    Bmag gefällt das.
  5. Bmag

    Bmag Erfahrener Modder

    Das habe ich auch genau so auch schon auf der Platine verlötet und den Code dazu geschrieben:

    Spoiler: 

    float Voltage = 0.0;
    float voltValue = 0.0;
    float vout;
    long R1 = 100000; // resistance of R1 (100K)
    long R2 = 10000; // resistance of R2 (10K)

    voltValue = analogRead(SpannungsPin);
    vout = (voltValue * 4.87) / 1024.0;
    Voltage = vout / (R2/(R1+R2)); // Spannungsteiler: (R1 + R2) / R2
     
    Crash Override und Moggih gefällt das.

Diese Seite empfehlen