Inhaltsverzeichnis:

Nerf Chronograph und Feuerrate - Gunook
Nerf Chronograph und Feuerrate - Gunook

Video: Nerf Chronograph und Feuerrate - Gunook

Video: Nerf Chronograph und Feuerrate - Gunook
Video: Blaster Breakdown 33 (September 2022) - 200fps Banned Auto Swordfish - How to 2024, November
Anonim
Image
Image
Nerf Chronograph und Rate of Fire Barrel
Nerf Chronograph und Rate of Fire Barrel

Einführung

Als Tüftler ist es immer sehr befriedigend, die numerischen Ergebnisse Ihrer Tüftelei zu sehen. Viele von uns haben schon einmal Nerf-Guns modifiziert und wer liebt es nicht, Schaumstoffstücke mit über 100 fps durch das Haus zu schleudern?

Nachdem ich mein ganzes Leben lang viele Nerf-Guns modifiziert habe, angefangen als ich ~10 Jahre alt war mit meinem Vater bis jetzt, als ich und meine Mitbewohner weiterhin Schaum durch die Wohnung schleudern, wollte ich immer genau wissen, wie schnell die Darts fliegen, und wie viele Darts pro Sekunde mein Mitbewohner Rapid-Strike schießt. Es gibt kommerzielle Chronographen für Nerf und Airsoft, aber die hochpräzisen sind teuer, und es macht Spaß, selbst einen zu bauen. Wenn Sie einen kaufen möchten, hat Nerf ein Fass herausgebracht, das fast identisch mit dem in diesem Projekt vorgestellten ist (mit etwas besserem Industriedesign) und es kann hier gefunden werden:

Nerf Modulus Ghost-Ops Chrono Lauf

Die Nerf-Version ist auch batteriebetrieben und zeigt einen Zähler für abgefeuerte Darts an. Das Instructable hier enthält auch einen Bildschirm und eine Reset-Taste, verlässt sich jedoch auf die Dartlänge für die Geschwindigkeitsberechnung und scheint keine Interrupts zu verwenden. Das Hauptaugenmerk dieses Projekts liegt auf der seriellen Kommunikation (ein einfaches Beispiel wie dieses war online nicht am einfachsten zu finden) und die Verwendung von Interrupts für genaues Timing. Dies kann aus den gleichen Gründen mit einem engeren Gehäuse und einem besseren Befestigungssystem für Airsoft-Waffen wahrscheinlich leicht in einen Airsoft-Chronographen umgewandelt werden. Ohne die Verwendung von Interrupts kann der Code langsamer und weniger effizient sein, es ist auch viel schwieriger, in Mikrosekunden genau zu timen, da Millisekunden keine genauen Werte für die Dartgeschwindigkeit ergeben.

Ich werde mich nicht zu sehr auf das Gehäusedesign konzentrieren, obwohl STL-Dateien im GitHub verfügbar sind, da jeder nur die Nerf-Version kaufen kann, die für das eigentliche Spielen definitiv besser ist, aber eine zukünftige Version davon könnte die Ergebnisse mildern.

Grundprinzipien (Lernergebnisse):

  • Hat die Form eines Standard Nerf Barrels
  • Verwendung von Fototransistoren als Timing-Gates für den Dart.
  • Zeigt die Verwendung von Adruino-Interrupts für das Timing
  • Verwendung der Verarbeitung mit Arduino für die serielle Kommunikation

Projektumfang:

Ich plane, die meisten Besonderheiten dieses Projekts mit einigen kurzen Übersichten durchzugehen und empfehle, die Referenzen für Arduino und Processsing für genauere Informationen zu lesen. Dies wird Ihnen nicht das Löten beibringen, sondern eher, wie Sie Arduino und Processing integrieren und Interrupts verwenden. Ein Großteil dieses Lernens wird durch das Lesen des tatsächlich kommentierten Codes erfolgen. Bitte stellen Sie sicher, dass Sie den gesamten Code durchlesen, bevor Sie ihn blind hochladen und versuchen, ihn zum Laufen zu bringen.

Vorteile gegenüber ähnlichen Projekten:

  • Verwendung von Interrupts zur genauen Messung hoher Geschwindigkeiten
  • Umfangreicher Debug-Bereich für Fototransistoren
  • Berechnung der Feuerrate (ROF) mit Ausgabe von Runden pro Sekunde (RPS)
  • Vollbild-Computeroberfläche - nicht nützlich während des Kampfes, aber großartig, wenn Sie anderen die Ergebnisse im Stream oder auf Youtube mit einem Bildschirmrekorder zeigen möchten.
  • Möglichkeit zur Anpassung an Airsoft oder Paintball durch Modifikation nur des Gehäuses
  • Keine Notwendigkeit für kundenspezifische PCBs (Wäre in einem zukünftigen Update schön, aber jeder kann dies zu relativ geringen Kosten herstellen)
  • Gesamtkosten von unter 10 USD, wenn Teile geteilt werden und ein 3D-Drucker verfügbar ist - Auf Augenhöhe mit den kommerziellen Kosten, mit ROF-Zusatz

Schritt 1: Erforderliche Teile und Werkzeuge

Erforderliche Teile und Werkzeuge
Erforderliche Teile und Werkzeuge

Wenn Sie einen 3D-Drucker haben, ist dies ein großartiges Projekt für Sie, da ich die Dateien für das Gehäuse bereitstelle. Fühlen Sie sich frei, das Gehäuse zu aktualisieren. Ich hatte keine LCDs zur Hand, aber eine zweite Version wird hoffentlich ein LCD haben und ein WEMOS D1 oder ein ähnliches WiFi / BT-fähiges Board und eine Batterie verwenden. Dies ermöglicht die Datenprotokollierung auf Mobilgeräten und Echtzeit-Feedback - zum Beispiel, wie viele Darts noch in der Waffe sind. Etwas Löterfahrung wird empfohlen, wenn Sie sich nicht wohl fühlen, empfehle ich, einem Instructable zum Löten zu folgen und wahrscheinlich zusätzliche elektronische Komponenten für den Fall zu kaufen.

Notwendige Werkzeuge:

  1. Lötkolben
  2. Heißluftgebläse / Heißluftgebläse / Feuerzeug (bei Verwendung von Schrumpfschlauch)
  3. Abisolierzangen
  4. Mini - B USB-Kabel (oder welches Kabel auch immer für Ihren Mikrocontroller benötigt wird)
  5. Heißklebepistole oder Ähnliches (ich habe einen 3D-Druckstift verwendet, um alle Komponenten an dem 3D-gedruckten Gehäuse zu befestigen)

Benötigtes Material:

  1. 22AWG Solid-Core-Draht, z. B.: Solid-Core-Draht-Set 22AWG
  2. Arduino Nano (oder ähnlich, ich habe einen Klon verwendet) ex: 3 x Arduino Nano (Klon)
  3. Widerstands-Kit (2 x 220 Ohm, 2 x 220 k Ohm) Sie können möglicherweise Pulldown-Widerstände mit niedrigeren Werten wie 47 k erfolgreich verwenden. Ich habe zufällig festgestellt, dass ich diesen Wert brauche, damit er funktioniert. In der Anleitung zur Fehlerbehebung wird beschrieben, wie Sie feststellen können, ob der Pulldown-Widerstand der richtige Wert für Ihren spezifischen Fototransistor und Ihr LED-Set ist. Aus diesem Grund empfehle ich, einen Satz zu bekommen: z. B.: Widerstandssatz
  4. 2 x IR-LED, z. B.: IR-LED und Fototransistor-Set
  5. 2 x Fototransistor
  6. 1 x 3D-gedrucktes Gehäuse - In einem IR-undurchlässigen Filament (Hatchbox Silver Worked und war die einzige Farbe, die ich getestet habe)
  7. Vollständige Projektdateien sind hier auf GitHub sowie in der angehängten Zip-Datei verfügbar. Die STLs sind auch hier auf Thingiverse verfügbar.

Schritt 2: Breadboard-Tests

Breadboard-Tests
Breadboard-Tests
Breadboard-Tests
Breadboard-Tests

Sobald die Elektronik angekommen ist, Lötkabel zu den Fototransistoren und IR-LEDs ~20-30cm zum Debuggen, empfehle ich, diese zu schrumpfen. Ich hatte nicht die richtige Größe Schrumpfschlauch und musste für diesen Prototyp Isolierband verwenden. Dadurch können Sie sie zum Testen im Gehäuse verwenden. Wenn Sie das Gehäuse gedruckt haben und LEDs und Fototransistoren in den richtigen Positionen haben, können Sie mit dem Testen beginnen.

Stellen Sie sicher, dass Arduino und Processing installiert sind.

Die Zip-Datei am Anfang enthält den gesamten Code sowie die STL-Dateien zum Drucken der Anlage.

Verwenden Sie Arduino zuerst zum Debuggen und verwenden Sie die Verarbeitung nur für abschließende Tests (Sie können alles im seriellen Monitor von Arduino sehen).

Sie können versuchen, einfach einen Nerf-Dart durch den Chronographen abzufeuern, wenn Chronogrpah_Updated.ino auf dem Arduino installiert ist. Wenn dies funktioniert, sind Sie fertig. Wenn dies nicht funktioniert, müssen Sie wahrscheinlich die Widerstandswerte anpassen. Dies wird im nächsten Schritt besprochen.

Ein wenig zur Funktionsweise des Codes:

  1. Interrupt stoppt den Code, wenn ein Dart durch ein Gate geht und bestimmt die Zeit in Mikrosekunden
  2. Daraus wird die Geschwindigkeit berechnet und die Uhrzeit gespeichert
  3. Die Zeit zwischen den Schüssen wird berechnet und in Runden pro Sekunde umgerechnet
  4. Die Zeit zwischen den Toren wird berechnet und basierend auf dem Torabstand in Fuß pro Sekunde umgerechnet.

    Die Verwendung von zwei Gates ermöglicht bessere Ergebnisse bei identischem Timing (wie viel des Sensors muss abgedeckt werden) und reduziert die Hysterese

  5. Die Geschwindigkeit und Feuerrate werden per Seriell durch ein Komma getrennt entweder an den seriellen Monitor in Arduino oder an die Verarbeitungsskizze gesendet, die eine schöne Benutzeroberfläche ermöglicht (konzentrieren Sie sich auf die Verarbeitung, wenn alles andere funktioniert!).

Schritt 3: Testen und Debuggen

Wenn Sie beim ersten Test keinen Erfolg hatten, müssen wir herausfinden, was schief gelaufen ist.

Öffnen Sie das Arduino-Beispiel AnalogReadSerial, das Sie in Datei -> Beispiele -> 0.1 Basics -> AnalogReadSerial finden

Wir möchten sicherstellen, dass die Fototransistoren so funktionieren, wie wir es erwarten. Wir möchten, dass sie HIGH lesen, wenn der Pfeil sie nicht blockiert, und LOW, wenn dies nicht der Fall ist. Dies liegt daran, dass der Code Interrupts verwendet, um die Zeit aufzuzeichnen, wenn der Dart den Sensor passiert, und der verwendete Interrupt-Typ FALLING ist, was bedeutet, dass er beim Übergang von HIGH auf LOW ausgelöst wird. Um sicherzustellen, dass der Pin HIGH ist, können wir die analogen Pins verwenden, um den Wert dieser Pins zu bestimmen.

Laden Sie das Arduino-Beispiel AnalogReadSerial hoch und springen Sie vom digitalen Pin D2 oder D3 auf A0.

D2 sollte der erste Sensor sein und D3 sollte der zweite Sensor sein. Wählen Sie 1, um dort zu lesen und zu beginnen. Befolgen Sie die nachstehende Anleitung, um die richtige Lösung basierend auf den Messwerten zu bestimmen:

Wert ist 0 oder sehr niedrig:

Der Wert sollte anfangs bei etwa 1000 liegen. Wenn er einen sehr niedrigen Wert oder Null anzeigt, stellen Sie sicher, dass Ihre LEDs richtig verdrahtet und nicht durchgebrannt sowie gut ausgerichtet sind. Ich habe meine LEDs beim Testen durchgebrannt, wenn ich einen 100-Ohm-Widerstand anstelle des 220-Ohm-Widerstands verwendet habe. Es ist am besten, das Datenblatt der LEDs zu Rate zu ziehen, um den richtigen Widerstandswert zu bestimmen, aber die meisten LEDs funktionieren wahrscheinlich mit dem 220-Ohm-Widerstand.

LEDs funktionieren, und der Wert ist immer noch 0 oder sehr niedrig:

Das Problem liegt wahrscheinlich daran, dass der Pulldown-Widerstand zu niedrig ist. Wenn Sie ein Problem mit dem 220k-Widerstand haben, können Sie ihn vielleicht höher erhöhen, aber es kann zu Rauschen kommen. Sie sollten sicherstellen, dass Ihr Fototransistor nicht durchgebrannt ist.

Der Wert ist ein mittlerer Bereich:

Dies wird viele Probleme verursachen, meistens falsche Trigger oder nie ein High verursachen. Wir müssen sicherstellen, dass ein HIGH empfangen wird, dazu brauchen wir einen Wert von ~600, aber streben wir 900+ an, um sicher zu sein. Ein zu nahe an diesem Schwellenwert kann zu falschen Triggern führen, daher möchten wir Fehlalarme vermeiden. Um diesen Wert anzupassen, möchten wir den Pulldown-Widerstand (220K) erhöhen. Ich habe dies bereits ein paar Mal in meinem Design getan und Sie müssen dies wahrscheinlich nicht tun, da dies ein sehr großer Wert für einen Pull-Down-Widerstand ist.

Wert ist sehr laut (vieles Herumspringen ohne äußere Reize):

Stellen Sie sicher, dass Ihre Verdrahtung mit dem Pulldown-Widerstand korrekt ist. Wenn dies korrekt ist, müssen Sie möglicherweise den Wert des Widerstands erhöhen.

Wert bleibt bei 1000+ hängen, auch wenn der Sensor blockiert wird:

Stellen Sie sicher, dass Ihr Pull-Down-Widerstand richtig verdrahtet ist. Dies tritt wahrscheinlich auf, wenn kein Pull-Down erfolgt. Wenn dies immer noch ein Problem ist, versuchen Sie, den Pulldown-Widerstandswert zu reduzieren.

Der Wert ist hoch und geht auf Null, wenn das Licht blockiert wird:

Dies sollte ausreichen, damit der Sensor funktioniert, aber wir reagieren möglicherweise nicht schnell genug, wenn der Pfeil den Weg kreuzt. Es gibt eine gewisse Kapazität in der Schaltung, und mit dem 220K-Widerstand kann es einige Zeit dauern, bis die Spannung unter den erforderlichen Schwellenwert fällt. Wenn dies der Fall ist, reduzieren Sie diesen Widerstand auf 100 K und sehen Sie, wie die Tests funktionieren.

SICHERSTELLEN, DASS ALLE WIDERSTANDSÄNDERUNGEN KONSEQUENT ZWISCHEN BEIDEN SENSOREN SIND

Durch Sicherstellen identischer Schaltkreise für beide Sensoren wird die gleiche Latenz zwischen den Widerständen beibehalten, was die beste Messgenauigkeit ermöglicht.

Wenn Sie weitere Probleme haben, schreiben Sie unten einen Kommentar und ich werde mein Bestes tun, um Ihnen zu helfen.

Schritt 4: Hardware-Montage

Hardware-Montage
Hardware-Montage
Hardware-Montage
Hardware-Montage
Hardware-Montage
Hardware-Montage

Löten Sie die Komponenten wie hier zu sehen auf die kleine Platine:

Die Leitungen für die LEDs und die Fototransistoren sollten auf Länge geschnitten werden, ungefähr _.

Löten Sie das Arduino auf die Platine und verdrahten Sie die Widerstände von der Masse zu zugänglichen Pins. Stellen Sie außerdem sicher, dass die 4 Plusdrähte einfach miteinander verbunden werden können. Wenn Sie Probleme damit haben, können Sie ein Stück des Drahtes abisolieren und am Ende über alle Leitungen löten.

Ich habe die Sensoren mit der gegenüberliegenden Seite des Gehäuses verdrahtet, aber Sie können sie auch verdrahten, solange Sie die Seiten konsistent halten. Ich schneide die Drähte auf Länge und lötete die Drähte zuletzt an jede der Dioden. Ich habe die Kabelführung leicht aktualisiert, um mehr Platz und weniger Sorgen zu haben, weil einige Drähte unter der Platine und andere darüber liegen, um die Verwendung zu vereinfachen. Die STLs befinden sich in der vollständigen Projekt-ZIP-Datei am Anfang des Projekts.

Schritt 5: Endmontage

Endmontage
Endmontage
Endmontage
Endmontage
Endmontage
Endmontage

Wenn Ihre PCB-Löcher nicht mit den Löchern auf dem Hauptgehäuse des Chronographen übereinstimmen, können Sie die Elektronik wahrscheinlich mit etwas Klebeband oder Heißkleber im Gehäuse befestigen vorhanden waren, Ihre Ergebnisse können jedoch variieren. Es ist so konzipiert, dass 1,75-mm-Filament in die Schraublöcher gedrückt werden kann, um das Heat Staking durchzuführen, die Platine kann jedoch auch eingeschraubt oder geklebt werden. Der wichtigste Teil hier ist, sicherzustellen, dass der USB-Anschluss zugänglich ist.

Decken Sie die Elektronik mit der Elektronikabdeckung ab. Die aktualisierten Dateien sollten besser passen als meine und werden hoffentlich einrasten, aber ich habe einen 3D-Druckstift verwendet, um die Abdeckungen zu schweißen. Sie sind jetzt bereit, einige Darts abzufeuern!

Ein zukünftiges Update kann eine interne Führung für die Drähte verwenden, aber die Abdeckungen geben in diesem Fall der Nerf-Ästhetik leicht nach.

Schritt 6: Chronograph in Aktion

Image
Image
Chronograph in Aktion
Chronograph in Aktion

Das Öffnen der Verarbeitungsdatei: Chronograph_Intitial_Release ermöglicht eine wirklich schöne Benutzeroberfläche für den Chronographen, die sowohl FPS als auch RPS (Rounds per Second) anzeigt. Wenn Sie Probleme mit der Verbindung haben, stellen Sie sicher, dass Sie Ihren seriellen Arduino-Monitor geschlossen haben. Möglicherweise müssen Sie auch den seriellen Port im Code ändern, aber dies ist kommentiert und sollte einfach sein. Um die Maximalwerte zurückzusetzen, drücken Sie einfach die Leertaste auf Ihrem Computer.

Ein wenig darüber, wie der Code funktioniert (Foto der Benutzeroberfläche ist oben zu sehen):

  1. Empfängt Eingaben vom Arduino
  2. Vergleicht dies mit früheren Eingaben, um den Maximalwert zu finden
  3. Zeigt die aktuellen und maximalen Werte im Vollbildmodus für einfaches visuelles Feedback an
  4. Setzt den maximalen Wert zurück, wenn die Leertaste gedrückt wird

Schritt 7: Zukunftspläne

Ein zukünftiges Update dafür wird die folgenden Verbesserungen beinhalten. Wenn Sie zusätzliche Funktionen haben, die Sie wünschen, lassen Sie es mich wissen und ich werde versuchen, diese zu implementieren.

  1. LCD-Bildschirm einschließen
  2. Batterien einschließen
  3. Nerf-kompatible Befestigungspunkte
  4. Aktualisiertes Gehäuse
  5. Visier