Leben

So bauen Sie einen Arduino-Flipper: 15 Schritte (mit Bildern)

Левитрон на Arduino Uno

Левитрон на Arduino Uno

Inhaltsverzeichnis:

Anonim

Wenn du wie ich bist, liebst du Flipper, hast aber nicht das Geld, um Platz für ein Spiel in voller Größe zu kaufen. Warum also nicht selbst bauen?

Hier erfahren Sie, wie Sie Ihr eigenes, von einem Arduino unterstütztes Flipperspiel erstellen. Das Spiel hat Lichter, Geräusche, echte Flipper-Teile, einschließlich Stoßstangen, Drop-Targets und Schleudern, und sogar eine Rampe.

Dieses Projekt erfordert eine sehr große Menge und Vielfalt an Materialien. Lesen Sie daher in den folgenden Abschnitten nach, welche neuen Materialien für die einzelnen Schritte erforderlich sind. Zunächst ist es sehr hilfreich, wenn Sie Zugriff auf einen Laserschneider oder CNC-Fräser sowie grundlegende Elektronik- und Hardware-Toolkits haben.

Anmerkung des Autors: Diese Anleitung wurde erst kürzlich veröffentlicht und nicht alle Design- und Softwaredateien wurden vollständig organisiert. Wenn Sie vorhaben, unsere Dateien zu verwenden, hinterlassen Sie bitte einen Kommentar, damit wir sicherstellen können, dass alle Dateien auf dem neuesten Stand sind.

Zubehör:

Schritt 1: Design

Oben ist ein Solidworks-Entwurf des Spielfelds und der tragenden Baugruppe dargestellt. Das Spielfeld ist rein benutzerdefiniert, aber die Schlaglinien (wie die Kurve des Backlooping-Schusses) wurden auf der Basis von echten Flipperautomaten entworfen, um ein reibungsloses Spiel zu gewährleisten. Eine Schwierigkeit dabei ist, dass die eigentlichen Flipper-Teile (z. B. die Stoßfänger und die Abwurfziele) aufgrund ihrer Komplexität nicht modelliert wurden, aber dennoch darauf geachtet werden muss, dass alles unter das Spielfeld passt - die Teile sind viel größer darunter als oben.

Die Dateien sind im Repository enthalten. Sie können das Design also ganz nach Ihren Wünschen anpassen.

Einige Highlights des Designs:

Das Spielfeld ist 42 "mal 20,25" Zoll groß, genau so groß wie die Bally-Spiele der 1980er Jahre. Es besteht aus ½-Zoll-Sperrholz, das Standard ist und nicht geändert werden sollte, da die Flipperteil-Baugruppen für diese Dicke ausgelegt sind. Die Wände bestehen hier aus einer 1/2-Zoll-Schicht auf einer 1/2-Zoll-Schicht. Im ersten Prototyp waren nur ½-Zoll-Wände enthalten, diese erwiesen sich jedoch als zu kurz und konnten den Flipper bei besonders harten Schlägen in die Luft jagen. Zweitens ermöglicht dieses Design eine leicht erhöhte Schusslinie (siehe Abbildung oben), sodass der Ball leicht ins Spielfeld fallen kann, aber nicht zurückfällt.

Die Rampe ist mit transparenten Acryl- und 3D-bedruckten Trägern ausgestattet. Es überquert das Spielfeld, so dass der Spieler die Möglichkeit hat, die Rampe mehrmals hintereinander vom linken Flipper aus zu treffen. Daher wird klares Acryl verwendet, um die Sicht des Spielers auf den Tisch nicht zu beeinträchtigen:

Schließlich wird das Spielfeld von kurzen Wänden an den vier Ecken gestützt, die das Spielfeld auf der Standardneigung von 6,5 Grad halten. Die Rückwand hat eine untere „Ablage“, die abgenommen werden kann und zur Montage der Elektronik dient. Dies führt zu einem Spiel mit einem Spielfeld voller Größe, ist jedoch viel kompakter als ein typisches Spiel und kann von einer Person von Hand getragen werden. Da das Spielfeld jedoch eine Standardgröße hat, können diese Halterungen entfernt werden, wenn Sie das Spielfeld in einen Standard-Flipper-Schrank stellen möchten. Zu diesem Zweck können Sie eine Kugelrückführungsanordnung hinzufügen, die in diesem Entwurf nicht enthalten ist.

Schritt 2: Schneiden Sie das Holz

Um die Schichten des Spielfeldes zu schneiden, verwendeten wir einen Laserschneider. Ein Laserschneider, der stark genug ist, um ½-Zoll-Sperrholz zu schneiden, ist jedoch schwer zu finden, erfordert hochwertiges Sperrholz und kann einen Brand verursachen, wenn Sie nicht vorsichtig sind. Typische Spielfelder werden mit einem CNC-Fräser geschnitten - während einige der Ecken möglicherweise nicht so scharf sind, sollten Sie dennoch anständige Ergebnisse erzielen. In den folgenden Schritten wird der Einfachheit halber davon ausgegangen, dass Sie Zugriff auf denselben Laserschneider haben, den wir auch ausgeführt haben. Es gibt einige Leute, die nur mit Bohrmaschine und Stichsäge gute Ergebnisse erzielt haben, aber Sie müssen sehr vorsichtig und sehr geduldig sein, wenn Sie diesen Weg gehen.

Der erste Schritt bei der Erstellung des Spielfelds besteht darin, das Design in .DXF-Dateien zu konvertieren, die in einen Laserschneider eingespeist werden können. Beispiel: Die DXF-Datei für das Wiedergabefeld ist unten abgebildet. Die in diesem Projekt verwendeten Dateien sind in unserem Repository enthalten.

Mit dem Laserschneider schneiden wir Formen für das Spielfeld, die ¼ ”-Zwischenschicht (wir verwendeten Duron, ein billigeres holzähnliches Prototyping-Material, aber ¼” -Sperrholz funktioniert auch), die ½ ”-Oberschicht und die ½” -Zwischenschicht aus. unterstützt.

Benötigte Materialien:

  • ½ ”Sperrholz für das Spielfeld und die Basis
  • ¼ ”Sperrholz oder Duron für die Zwischenwandschicht
  • ½ ”, ¾” und 1 ”Holzschrauben
  • Zugang zu einem CNC-Fräser oder Laserschneider

Schritt 3: Bauen Sie das Spielfeld zusammen

Beginnen Sie, indem Sie die Stücke aus der ¼-Zoll-Duronschicht an den entsprechenden Stellen auf das Sperrholz klemmen. Bohren Sie mit einer Handbohrmaschine zuerst mit einem 3/32 ”-Bit Pilotlöcher und befestigen Sie dann die ¼” -Schicht mit flachen ¾ ”-Holzschrauben auf dem Spielfeld. Es ist wichtig, dass Sie dies von oben nach unten tun (d. H so dass die Schraube zuerst durch die ¼-Zoll-Schicht, dann in die ½-Zoll-Basis geht), da die ¼-Zoll-Teile klein und dünn sind und sich von der Basisschicht wegbiegen, wenn sie in die entgegengesetzte Richtung gebohrt werden. Es ist auch wichtig, dass die Schraubenköpfe bündig mit der ¼ ”Schicht sind und keine zusätzliche Dicke aufweisen.

Ein letzter Hinweis: Diese Schrauben können fast überall eingesetzt werden, da diese Ebene für den Spieler nach dem Zusammenbau des Spielfelds größtenteils unsichtbar ist. Es gibt jedoch eine Ausnahme - stecken Sie keine Schrauben in die Schießspur. (Wir haben diesen Fehler anfangs gemacht).

Befestigen Sie als Nächstes die Seitenwände und bohren Sie sie mit den längsten Holzschrauben von der Oberseite der Platte aus so ein, dass die Schraubenköpfe bündig mit der Oberseite abschließen. Sobald dies erledigt ist, klemmen Sie die ½ ”Lagenstücke oben auf den Duron und schrauben Sie sie wie zuvor ein, außer diesmal von unten mit 1" Schrauben. Da die obere Lage ½ ”dick ist, ist es weniger wahrscheinlich Wenn Sie sich von der Basis wegbiegen und von unten schrauben, bleiben die Schrauben für den Player unsichtbar.

Befestigen Sie zum Schluss den Schützenblock (siehe Abbildung oben mit dem Schützen), indem Sie ihn von unten mit 2 Schrauben eindrehen, damit sich der Block nicht leicht verdrehen kann. Der Schützenblock hat einen U-förmigen Schlitz für den Schützen, der durch Anziehen der Mutter auf der anderen Seite installiert werden kann. Möglicherweise müssen Sie auch Schmiermittel verwenden, um die Reibung zwischen der Schießstange und der Kugel zu verringern.

Das Design muss an dieser Stelle möglicherweise angepasst werden. Beispielsweise war in unserem Design der Schnitt für die Abwurfziele zu eng und musste mit einem Dremel erweitert werden. Wenn Sie unsere Dateien nicht nur als Referenz verwenden, wenden Sie sich an die Autoren, die möglicherweise aktualisierte Dateien bereitstellen können. Es ist auch eine gute Idee, raue Stellen zu schleifen, insbesondere dort, wo sich zwei Holzstücke treffen.

Damit ist die Holzbearbeitung größtenteils abgeschlossen, und wir können zum Einsetzen von Bauteilen übergehen.

Benötigte Materialien:

  • 3/4 "Holzschrauben mit flachem Kopf
  • Shooter-Versammlung
  • Längere Holzschrauben
  • Handbohrmaschine mit 3/32 "Bit
  • Schmieröl
  • 1 "Holzschrauben mit flachem Kopf
  • Eine Feile und / oder ein Dremel und Sandpapier

Schritt 4: Fügen Sie die Komponenten hinzu

Zu diesem Zeitpunkt in der Entwurfsphase sollten Sie eine allgemeine Vorstellung von der Ausrichtung haben, die erforderlich ist, um sicherzustellen, dass alle Komponenten tatsächlich unter das Spielfeld passen. (Wenn Sie unser Design verwenden, beziehen Sie sich auf das Bild auf der Unterseite unserer obigen Tabelle).

Installieren Sie zuerst die Drop-Targets, Stand-Up-Targets und Slingshot-Baugruppen, indem Sie ½-Zoll-Holzschrauben durch die Befestigungslöcher in der Baugruppe stecken. Machen Sie dasselbe mit den Stoßstangen, aber stellen Sie sicher, dass Sie zuerst die Kappe entfernen, sonst passt die Baugruppe nicht in ihr Loch!

Zweitens installieren Sie die Flipper-Baugruppen. Stellen Sie sicher, dass sie sich in die richtige Richtung drehen. Wenn das Solenoid abgefeuert wird, wird der Stift in die Spule gedrückt, und dies sollte die Welle so drehen, dass sich der Flipper in Richtung Spielfeld dreht. Sobald die Flipper-Baugruppen installiert sind, befestigen Sie die Flipper-Fledermäuse von der anderen Seite.Ziehen Sie die Kontermutter in der Baugruppe mit einem Schraubenschlüssel fest und verwenden Sie dann die mit der Baugruppe gelieferte Feder, um sicherzustellen, dass die Flossen zurückgeschlagen sind, wenn sie nicht abgefeuert werden.

Installieren Sie auf ähnliche Weise alle Überrollschalter mit den 1/2 "-Schrauben, um sicherzustellen, dass sie leicht von oben hineingedrückt und zurückgefedert werden können. Bringen Sie mit den 6-32-Schrauben auch den Torschalter oben links an Dieser Torschalter dient auch als Einwegöffnung, durch die Schüsse von der rechten Seite und vom Schützen in die Stoßfänger fallen können. Dies ist ein konstruktiver Aspekt, der dazu führt, dass Schüsse in die rechte Rampe und die rechte Schleife gelangen verschiedene Orte und bringt mehr Abwechslung ins Spiel.

Um die Lichter zu installieren, platzieren Sie zuerst die Kunststoffeinsätze in ihren Löchern. Diese Einsätze sind ungefähr ¼ Zoll dick. Wenn Sie einen CNC-Fräser verwenden, können Sie diese ordnungsgemäß montieren, indem Sie eine ¼-Zoll-Schicht schneiden, die etwas größer ist als das Einsteckloch. Da der Laserschneider keine Teilschichten schneiden kann, haben wir in unserem Design 3D-gedruckte Klammern verwendet, die die Einsätze unterstützen. Verwenden Sie Epoxy, um die Einsätze in Position zu halten (rauen Sie die Kanten zuerst auf) und das Schleifpapier, um sicherzustellen, dass die Einsätze mit dem Spielfeld fluchten.

Setzen Sie als Nächstes die LEDs in ihre Halterungen ein, indem Sie sie einsetzen und drehen. Schrauben Sie dann die Halterungen so fest, dass diese LEDs direkt unter jedem Einsatz sitzen. Die unten angebrachten hellen Klammern sind ziemlich dünn und tatsächlich dünn genug, dass die 1/2 "-Schrauben die Tischplatte durchstoßen können. Verwenden Sie ein paar Unterlegscheiben, damit dies nicht passiert.

Die Spielfeldpfosten werden mit den 6-32 Schrauben montiert. Wickeln Sie nach der Installation die Gummis aus dem Gummisatz um sie, um passive Stoßstangen zu erhalten. Diese verleihen dem Tisch viel mehr „Leben“, als wenn das Design komplett aus Sperrholz wäre. Befestigen Sie die Spurführungen mit den gleichen Schrauben direkt über den Flippern. Kleben Sie auch den Spielende-Schalter fest.

Beachten Sie, dass die meisten Spiele eine spezielle Kugelrückführungsanordnung wie die hier haben. Dies wurde in diesem Entwurf jedoch hauptsächlich aus Kostengründen nicht berücksichtigt. Der Nachteil ist natürlich, dass der Spieler nun dafür verantwortlich ist, den Ball wieder in die Schießbahn zu legen, sobald er abläuft. Wir haben jedoch einen Schützen, der wie oben abgebildet am Schützenblock befestigt ist.

Die Flipperknöpfe und der Startknopf werden installiert, indem sie in die Löcher gesteckt werden und mit Palnüssen eingerastet werden. Die Flipperknopf-Flügelschalter sind mit 6-32 Schrauben in den Knöpfen verschraubt und schließen einen Schaltkreis, wenn die Knöpfe gedrückt werden.

Zu diesem Zeitpunkt ähnelt Ihr Spielfeld (von oben) einem nahezu vollständigen Flipper-Tisch! Es fehlt nur noch die Rampe. Fühlen Sie sich frei, sich unter Ihren Freunden darüber zu freuen, wie großartig es aussieht, während Sie sich privat davor fürchten, wie viel Verdrahtung und Löten dort zu tun ist.

Benötigtes Material (der Großteil wurde von PinballLife.com gekauft und kann einfach durch Durchsuchen der nachstehenden Begriffe gefunden werden).

  • 1 Drop-Target-Baugruppe mit 3 Bänken
  • 3x Pop-Stoßfänger
  • 1 linke Flossenbaugruppe
  • 1 rechte Flossenbaugruppe
  • 2 Flipper Fledermäuse
  • 2 Flipperknöpfe
  • 2 Flipperknopfpalnüsse
  • 1 Startknopf
  • 1 Gummiring-Set
  • ~ 30 Spielfeldsternpfosten (1 1/16 "gebraucht)
  • 2 Spurführer
  • 2 Flipperknopf-Blattschalter
  • 2 Schleuderbaugruppen
  • 1 Standup-Ziel
  • 10 Überrollschalter
  • 8 LED # 44 Bajonettlichter
  • 8 Lampenhalterungen im Bajonett-Stil (Miniatur-Bajonett-Sockel mit 2 Anschlüssen und langer Halterung)
  • 5 1-1 / 2 "x 13/16" blauer Pfeil einfügen
  • 3 1 "x 3/4" freier Kugeleinsatz
  • 6-32 Schrauben (2,5 ", sowie einige kleinere Größen), Muttern und Unterlegscheiben
  • ~ 2 "breiter Gate-Schalter (wie der hier, dieser ist möglicherweise schwer zu finden, wir haben unseren von einer alten kaputten Flipper-Rampe verschrottet, die bei ebay gekauft wurde)

Schritt 5: Bauen Sie die Rampe

Verwenden Sie für die Herstellung der Rampe ¼ "Acryl für die Basiselemente und ⅛" Acryl für die Seitenwände. Das klare Acryl sorgt für ein schönes, sauberes Erscheinungsbild, ohne dass der Spieler den Blick auf das Spielfeld verstellt. Die Verwendung von farbigem Acryl ist möglicherweise auch eine gut aussehende Option, es wird jedoch nicht empfohlen, ein vollständig undurchsichtiges Material wie Holz zu verwenden.

Die Halterungen für die Rampen werden mit einem Makerbot 3D-gedruckt und mit denselben 6-32 Schrauben mit dem Spielfeld und dem Kunststoff verschraubt.

Die Acrylteile werden hier mit Acrylkleber zusammengeklebt, einem Lösungsmittel, das den Kunststoff im Wesentlichen schmilzt und verschweißt. Stellen Sie sicher, dass Sie eine kleine Menge verwenden, da dies zu einer sehr starken Bindung führt, die fast unsichtbar ist.

Am Eingang der Rampe haben wir eine Rampenklappe wie auf dem Bild oben eingebaut. Dies ist ein dünnes Stück Metall, das einen sehr glatten Übergang vom Spielfeld zum Kunststoff der Rampe ermöglicht, anstatt dass der Flipper die ¼-Zoll-Dicke des Kunststoffs „hochspringen“ muss. Sie können eines davon günstig in einem Flipperfachgeschäft oder bei Ebay (wir haben es gemacht) kaufen oder einfach eines aus Blech selbst herstellen. Bei kommerziellen Spielen werden diese so vernietet, dass die Bolzen nicht herausragen und den Ball stören. Da wir dafür nicht die richtige Ausrüstung hatten, haben wir darauf geachtet, Flachkopfschrauben zu verwenden und ein Loch im Kunststoff und im Metall richtig anzufasen, um den gleichen Effekt zu erzielen.

An den 3D-Trägern in der vorderen rechten Ecke der Rampe befindet sich ein schmaler Torschalter, der sich dreht, um über das Spielfeld zu gelangen. Dieser Schalter zeichnet auf, wann ein erfolgreicher Rampenschuss getroffen wurde.

Benötigte Materialien:

  • 1/4 "klares Acryl (12x24" Blatt)
  • 1/2 "klares Acryl (12x24" Blatt)
  • Acrylzement
  • Zugriff auf einen 3D-Drucker und einen Laserschneider
  • Rampenklappe
  • Flachkopfschrauben 6-32 für die Rampenklappe
  • Kammerbohrer oder Handwerkzeug
  • Schmaler Torschalter

Schritt 6: Planen Sie den Elektronikblock und die Stiftbelegung

(Update des Autors: Bei längerer Verwendung können einige der Transistoren in dieser Konfiguration mit 48 V durchgebrannt werden. Ich würde empfehlen, mit dieser Elektronik 35 V oder weniger zu verwenden oder eine professionellere Steuerkarte wie die hier aufgeführten zu verwenden: http: // pinballmakers .com / wiki / index.php / Construction)

Diese Maschine verfügt über 3 Spannungsstufen: 48 V für die Magnetspule, 6,3 V für die LEDs und 5 V für die Logik und den Ton. Um diese Spannungspegel bereitzustellen, verwendeten wir ein CNC-Netzteil für die 48 V und handelsübliche DC-Adapter für die 6,3 V und 5 V. (Es könnte möglich sein, nur die 6,3 V zu verwenden, da der Arduino seine Versorgungsspannung auf den 5 V-Ausgangspin herunterreguliert, aber wir haben diese Netzteile isoliert). 48 V sind eine hohe Spannung und können, obwohl sie nicht tödlich sind, Teile beschädigen und bei Problemen mit der Schaltung schnell zu einer Überhitzung der Komponenten führen. Verwenden Sie eine träge 5-A-Sicherung sowohl am Eingang als auch am Ausgang des 48-V-Hauptnetzteils, um einen Brand zu vermeiden, wenn einer der Transistoren kurzgeschlossen ist.

Auf dem Arduino-Schild haben wir Drähte mit Molex-Steckbuchsen angebracht, die den Eingangs- und Ausgangsanforderungen der drei Unterplatinen entsprachen: der Solenoid-Treiberplatine, der Licht- / Sound-Treiberplatine und der Eingangsplatine.

In unserem Design hatten wir die folgenden Pinbelegungen. Das ist natürlich sehr flexibel. Pin 0 wurde offen gelassen. (Instructables lässt uns keine Nummernlisten erstellen, die mit 0 beginnen.)

  1. Öffnen
  2. Öffnen
  3. Interrupt / Input Active Pin
  4. Codierter Eingangspin
  5. Codierter Eingangspin
  6. Codierter Eingangspin
  7. Codierter Eingangspin
  8. Codierter Eingangspin
  9. Rechter Stoßfängerausgang
  10. Mittlerer Stoßfängerausgang
  11. Ausgang Stoßstange links
  12. Zielausgabe löschen
  13. Flipper Hauptschalter Ausgang
  14. Ausgang des Hauptlichtschalters
  15. Lichtausgangsstift
  16. Lichtausgangsstift
  17. Lichtausgangsstift
  18. Tonausgabestift
  19. Öffnen

Obwohl in unserem Design nicht implementiert, können die SCL- und SDA-Pins für ein Display verwendet werden und die verbleibenden Pins können für eine zusätzliche Steuerung verwendet werden, z.

Benötigte Materialien:

  • 48V CNC Stromversorgung (wie diese hier)
  • Standard 6,3 V- und 5 V-Netzteile (wie dieses)
  • 5A träge Sicherungen und Sicherungshalter sowie Schrumpfschlauch für den Anschluss
  • Molex-Steckverbinder
  • Arduino Prototyp Schild Board
  • Viel 22AWG Draht, Lötzinn und Geduld

Schritt 7: Machen Sie die Treiberkarten

Die Treiberplatine ist dafür verantwortlich, die Eingaben vom Arduino, die Flippertasten und die Schleuderschalter in das Abfeuern der Spulen zu verwandeln. Da die Signale bei 5 V und die Magnetspulen bei 48 V liegen, sind kräftige Leistungs-MOSFETs erforderlich, um das Signal weiterzuleiten. Die in diesem Design verwendeten Transistoren sind diese 100-V-MOSFETs von Mouser.

Oben sind drei Schemata abgebildet, darunter die Flossen, die Schleudern und die Stoßstangen / Abwurfziele. Jeder hat leicht unterschiedliche Anforderungen, aber in allen Fällen öffnet sich, wenn der Transistor ein 5-V-Signal erhält, ein Strompfad für das Solenoid und 5-8 Ampere werden durch die Spule gedrückt, um einen kraftvollen Kick zu erzeugen. Das ist viel Strom! Tatsächlich brennt so viel Strom die Komponenten durch, wenn der Transistor länger als einen sehr kurzen Impuls eingeschaltet bleibt. Stellen Sie beim Testen dieses Schaltkreises mit Software oder anderen Methoden sicher, dass ein Elektromagnet niemals länger als etwa eine Sekunde vollständig mit Strom versorgt wird.

Die Hauptquelle für Probleme bei der obigen Schaltung ist der induktive Stoß. Die Magnetspulen sind leistungsstarke Induktoren, und wie Sie vielleicht wissen, kann sich der Strom in den Induktoren nicht sofort ändern. Wenn also der Transistor ausgeschaltet wird, gibt es immer noch einen kurzen Moment, in dem 5-8 Ampere durch den Solenoid fließen und all dieser Strom irgendwo hingehen muss. Wird kein Erdungspfad vorgegeben, treibt dieser Strom die Spannung am Transistor-Drain auf Hunderte von Volt und zerstört den Transistor. Wenn der Transistor zerstört wird, werden alle drei Anschlüsse kurzgeschlossen, wodurch ein kontinuierlicher Strom fließt und der Elektromagnet zerstört werden kann, wenn keine ordnungsgemäße Sicherung installiert ist. (Wir haben bei unserer Entdeckung 8 Transistoren zerstört und versucht, dieses Problem zu lösen, aber zum Glück keine Magnetspulen, da wir die Stromversorgung immer schnell manuell abschalteten).

Es gibt zwei Methoden, um einen induktiven Kick zu verhindern: Erstens sollte jede Flipper-Baugruppe mit einer Diode ausgestattet sein, die vom Transistor-Drain zurück zur Versorgung zeigt. Dies sollte theoretisch verhindern, dass der Transistor-Drain die Versorgungsspannung jemals überschreitet, da in diesem Fall die Diode durchschaltet und die gesamte verbleibende Energie aus der Induktivität abfließt. Leider schalten sich diese Dioden in der Realität nicht schnell genug ein, um den induktiven Kick von selbst genug zu unterdrücken.

Um das Problem zu lösen, haben wir eine RC-Überspannungsschutzschaltung hinzugefügt. Diese Schaltung verfügt über einen Kondensator in Reihe mit einem Widerstand. Der Kondensator nimmt genügend Strom von der Induktivität auf, so dass die Diode Zeit hat, einzuschalten und ihre Funktion auszuführen. Weitere Informationen zu RC-Dämpfungsschaltungen finden Sie hier.

Die Ansteuerschaltung für das Stoßfänger- / Droptarget-Solenoid ist recht einfach und hat nur den Transistor, das Solenoid, den Dämpfer und eine Verbindung, um den Eingang vom Arduino zu empfangen. Stellen Sie bei dieser und den nachfolgenden Karten sicher, dass der Elektromagnet so verdrahtet ist, dass die Diode (im Schaltplan nicht gezeigt) zur Hochspannungsseite zeigt.

Die Flippertreiberschaltung ist aus drei Gründen etwas komplizierter. Erstens wird empfohlen, um eine schnelle Reaktion zwischen dem Drücken der Taste und der Flipper-Aktion zu erzielen, diese Reaktion direkt in der Schaltung zu erstellen und nicht als separate Ein- und Ausgänge, die vom Arduino verarbeitet werden. Die Verzögerung, die durch den Arduino verursacht wird, ist gering, aber ein erfahrener Spieler kann dies sofort feststellen und wird durch die mangelnde Kontrolle frustriert.

Zweitens verfügen die Flipper über zwei verschiedene Spulen (eine Spule mit niedriger und eine Spule mit hoher Leistung), einen Endschalter, der bei hohem Flipper auslöst. Dieser Schalter hat die wichtige Funktion, dass die Hochleistungsspule anfänglich zündet, um einen kraftvollen Hub zu erzeugen, schaltet jedoch auf die Niedrigleistungsspule (~ 130 Ohm gegenüber 4 Ohm) um, die genug Leistung bietet, um den Flipper "hochzuhalten" Solange der Knopf platziert ist, verbraucht er jedoch nicht so viel Strom, dass der Elektromagnet durchgebrannt ist. In der Abbildung unten ist der EOS-Schalter normalerweise geschlossen, aber unsere Baugruppe hatte einen normalerweise offenen Schalter und erforderte einen anderen Transistor, um dies in ein normalerweise geschlossenes Signal umzuwandeln.

Drittens, während wir wollten, dass der Knopf die Flipper direkt steuert, haben wir auch ein "Master" -Schaltsignal vom Arduino eingefügt, mit dem die Flipper aktiviert oder deaktiviert werden können, je nachdem, ob der Ball im Spiel ist. Dies führt zur Verwendung des dritten Transistors in der Schaltung.

Ebenso hat das Slingshot Board seine eigenen Komplikationen. Während es nur einen Transistor verwendet, sollte es, wie die Flipper, direkt von den Eingangsschaltern (die wir in Reihe geschaltet haben) gesteuert werden, um eine schnelle Reaktion zu erzielen und um keine zusätzlichen Ausgangspins auf dem Arduino zu benötigen. Wenn das Gate des Transistors direkt mit dem Schalter verbunden ist, ist die Reaktion leider viel zu schnell, um mehr als einen kaum wahrnehmbaren Tritt zu haben, da der Schalter nicht sehr lange geschlossen bleibt. Um einen stärkeren Kick zu erzielen (dh den Schleudermagneten "durchlaufen zu lassen"), haben wir eine Diode und einen großen Widerstand am Gate der Transistoren hinzugefügt, was eine schnelle Reaktion ermöglicht, aber eine große Zeitkonstante für den Spannungsabfall erzeugt an diesem Knoten, so dass das Gate nahe an 5 V (und der Transistor an) bleibt, um einen spürbaren Kick zu haben, selbst nachdem die Schleuderschalter wieder geöffnet wurden. Eine weitere Schwierigkeit besteht darin, diesen Eingang an das Arduino zu senden, wie es die Eingangskarte (wie wir später sehen werden) erfordert niedrig Eingänge, und die Schleuder funktioniert, wenn ein Eingang hochgeschoben wird. Um dieses Problem zu lösen, haben wir einen dritten Transistor eingebaut, der immer dann schließt, wenn einer der Eingänge auf "high" geht, und so wie jeder andere Eingangsschalter auf dem Spielfeld behandelt werden kann

Die Treiberplatine (eigentlich zwei Platinen) besteht aus zwei Flippertreibern, zwei Schleudertreibern und vier Einzelschaltertreibern für die verbleibenden Solenoide. Anstatt direkt zu löten, verwendeten wir 0,1-Zoll-Molex-Steckverbinder, um diese Platine an den Magneten, dem Netzteil und den Schaltern zu befestigen, damit Reparaturen oder Einstellungen einfacher durchgeführt werden können.

Wir haben lötbare Steckbretter für unsere Designs verwendet, aber das Entwerfen von tatsächlichen Leiterplatten mit diesen Funktionen hätte ein viel saubereres Ergebnis und würde dazu beitragen, den Kabelsalat, den diese Maschinen unvermeidlich haben, zu verringern.

Materialien:

  • 12 Leistungstransistoren mit 100 V Nennspannung
  • 10-50 uF Kondensatoren (wenn möglich unpolar)
  • 300-, 5k- und 500k- sowie 3M-Widerstände
  • 1 kleinerer Transistor für Slingshot-Schalter
  • Mehrere 1N4004-Dioden
  • Prototyp lötbarer Steckplatinen (oder noch besser, entwerfen Sie Ihre eigenen Leiterplatten)

Schritt 8: Erstellen Sie die Sensoreingangskarte

Da wir nur ein Arduino verwenden, sind wir auf 20 digitale Pins beschränkt. Der Flipper verfügt jedoch über ein paar Dutzend eindeutige Schaltereingänge, ganz zu schweigen von den Ausgängen, die für Licht, Ton und Antriebsmagnete benötigt werden. Um dieses Problem zu beheben, gingen wir davon aus, dass keine zwei Eingänge gleichzeitig ausgelöst werden (wodurch wir uns darauf beschränken, nur einen Ball zu verwenden). Diese Annahme ermöglicht es uns, die Schaltereingänge zu "codieren", indem sie in ein 5-Bit-Binärregister mit einem sechsten Pin konvertiert werden, der bei jedem Empfang eines gültigen Schaltereingangs einen Interrupt auslöste. Zu diesem Zweck haben wir eine Kaskade von 8-zu-3-Encodern verwendet, um einen 24-zu-5-Encoder mit diesem Encoder in dem in den obigen Bildern gezeigten Layout zu erstellen.

Dies war eine der wichtigsten Entwicklungen des Projekts, da wir die Komplexität unserer Maschine ausgehend von unserem ursprünglichen Plan, nur Flipper, Stoßfänger und ein oder zwei Ziele zu haben, erheblich steigern konnten.

Eine zweite Prototyp-Platine wurde verwendet, um jeden der 24 Molex-Stecker zu platzieren. Jeder Schalter auf dem Spielfeld hat eine Buchse am Ende eines langen Kabels, das an diese Platine angeschlossen wird. Die Ablageziele sind ein einzigartiger Fall, der auf verschiedene Arten gehandhabt werden kann. Wir haben jeden Drop-Target-Schalter in Reihe geschaltet, sodass der Eingang geschlossen wird, wenn alle Schalter ausgeschaltet sind, und der Arduino ein Signal an den Solenoid senden kann, um die Drop-Targets wieder einzuschalten.

Materialien:

  • 4 3-Zustands-Ausgangs-Prioritäts-8-zu-3-Encoder

Schritt 9: Machen Sie die Licht / Ton / Partitur-Peripheriekarte

Um die Pins ähnlich wie beim Encoder zu speichern, haben wir einen 3-zu-8-Decoder verwendet, um unsere Lichter zu steuern. Dies bot uns die Einschränkung, dass wir nicht mehr als ein Licht gleichzeitig anzünden konnten, aber dies war ein akzeptabler Kompromiss, um die Stifte für andere Elemente freizugeben. Wir haben auch einen vierten "Master" -Lichtausgang eingebaut, der alle Lichter gleichzeitig steuern kann. Dies könnte zum Beispiel dazu führen, dass wir beim ersten Einschalten des Spiels alle Lichter mehrmals aufleuchten lassen (was ein starkes Indiz dafür ist, dass dem Spieler tatsächlich etwas passiert, wenn er den Startknopf drückt, was ansonsten ohne a schwierig ist) Balltrog oder bunte Anzeige).

Das obige Schema enthält eine Transistorschaltung, die den Treibern ähnlich ist, jedoch viel einfacher ist, da die im Spiel befindlichen niedrigeren Spannungen (6,3 V für die Lichter) kleinere Transistoren benötigen und nicht so viele Schutzschaltungen erfordern. Wir verwendeten ein Dioden-ODER-Gatter für die Transistoren, um das Hauptschaltersignal und das einzelne Lichtsignal zu isolieren. Dies ermöglicht es uns, nur einen Transistor pro Licht anstelle von zwei zu verwenden und verhindert, dass der Arduino- und der Encoder-Chip „kämpfen“, um Strom zu liefern oder zu senken.

Während wir für jedes der Spielfeldlichter (die unter den Einsätzen) Niedrigstrom-LEDs verwendeten, wurden der Startknopf und die 3 Pop-Stoßfänger mit Glühlampen geliefert, die jeweils etwa 250 mA verbrauchen. Die Transistoren sind für 530 mA Dauerstrom ausgelegt. Um diesen Wert nicht zu überschreiten, haben wir sichergestellt, dass nur zwei Glühlampen einen einzelnen Transistor durchlaufen.

Wir haben auch einen passiven 5-V-Piezo-Summer angeschlossen, mit dem wir rudimentäre Sounds auf diesem Board spielen können.

Benutzerdefinierte Licht- und Tonsequenzen können mit den Funktionen light_sequence + sound_sequence oder über die Oberfläche von Pinball Language programmiert werden.

  • 10 Leuchttransistoren (wir haben diese verwendet)
  • 5V Piezosummer

Schritt 10: Schritt 11: Gestalten Sie Ihre Spielregeln

Es gibt zwei Möglichkeiten, die Regeln des Flipperspiels zu definieren. Sie können mit dem Spiel interagieren, indem Sie ein anpassbares Flipper-Dokument oder Spielregeln mit festem Code verwenden. Fest codierte Spielregeln ermöglichen mehr Flexibilität, einschließlich aufeinanderfolgender Schüsse und zeitgesteuerter Boni, während die Verwendung des Flipper-Dokumenten- / Parsersystems flexiblere, aber einfachere Regeln ermöglicht. Wir beginnen mit der Benutzeroberfläche für das konfigurierbare Spiel und erläutern dann einige der hartcodierten Spielregeln, damit Sie die gewünschte Konfiguration für Ihr eigenes Flipperspiel auswählen können.

Im Github-Repository finden Sie die Dateien, auf die in diesem Projekt verwiesen wird.

Teil 1. Gestalte deine Spielregeln

Die Standardzustandsmaschine für ein Flipperspiel ist in der Abbildung dargestellt.

Dies ist im Standard-Startcode enthalten. Jetzt haben Sie zwei Möglichkeiten: Sie können entweder Ihren eigenen Code für den Computer schreiben oder die angegebene Formatierung für das Flipperspiel verwenden.

Schritt 11: Option 1. Schreiben Sie Ihre eigene Pinball.txt-Datei

Im Flipper-Textdokument finden Sie drei Abschnitte: einen für Teile, einen für "Zustände" und einen für "Aktionen". Hier können Sie die spezifischen Aktionen für jede Komponente definieren. Bei den meisten Komponenten möchten Sie sich wahrscheinlich an eine Zustandsmaschine mit einem Zustand halten. Wenn zum Beispiel jedes Mal, wenn ein Stoßfänger getroffen wird, der Spieler 100 weitere Punkte erzielen, ein Rampenlicht aufleuchten und 100 Punkte erzielen sollte, würde das Zustandsdiagramm wie in Abbildung 1 mit dem entsprechenden Code aussehen. Wenn Sie möchten, dass eine Komponente eine Zustandsmaschine mit mehreren Zuständen hat, beispielsweise, dass ein Licht eingeschaltet wird, wenn ein Stoßfänger getroffen wird, und dann ausgeschaltet wird, wenn er erneut getroffen wird, sieht Ihr Zustandsdiagramm / die entsprechenden Zustände wie in Abbildung 2 aus Unsere spezielle Maschine bietet die Strukturen wie in Abbildung 3, für die Sie Regeln definieren können. Ihre Namen, internen codierten Makros (über die Sie sich keine Gedanken machen müssen, die jedoch hilfreich sein könnten, wenn Sie den Quellcode untersuchen möchten) und Interrupt-Codes sind in Abbildung 3 dargestellt. Abbildung 4 verbindet diese Namen mit Spielfeldkomponenten.

Tipps zum Schreiben Ihres Flipperspiels
Da die Spielkomponenten an bestimmte Interrupts gebunden sind (angezeigt durch das Feld „pos“), die wiederum von der Hardware definiert werden, empfehlen wir, den Abschnitt „parts“ nicht zu stark außerhalb des Felds „states“ zu ändern Reservierung von Status 0 und Aktion 0 für Komponenten, die keine Auswirkung auf die Wertung haben, wie z. B. Startknopf und Spielschalter. Unser Code sieht aus wie in Abbildung 5 dargestellt.

Schritt 12: Definieren Sie Licht- und Tonsequenzen

Die acht Lichter auf der Platine werden wie zuvor beschrieben mit einem 3-zu-8-Decoder + einem Hauptschalter gesteuert. Spezifische Lichter können durch Schreiben der Stifte entsprechend der binär codierten Version des Teilecodes hoch beleuchtet werden. Die Hilfsfunktion light_sequence stellt dem Benutzer eine Schnittstelle zur Verfügung, über die er das Licht angeben kann, das er anzünden möchte. Makros sind im Dokument state_machine_headers.h definiert. Für Ihre Programmierfreundlichkeit wurde erneut eine Tabelle bereitgestellt. Für Sound haben wir die Arduino-Tonbibliothek verwendet, um kurze Tonsequenzen für verschiedene Spielereignisse zu programmieren. Wir haben vier vorgefertigte Sounds, aus denen Sie auswählen können (mit executeSound (<Anzahl der gewünschten Sounds>)). Diese Klänge entsprechen einer langen, fröhlichen Sequenz, einer kurzen fröhlichen Sequenz, einer kurzen traurigen Sequenz und einer langen traurigen Sequenz. Wenn Sie Ihre eigenen Sounds programmieren möchten, können Sie hier nachsehen, wie das geht (pitch.h wurde in das Repository aufgenommen): http://www.arduino.cc/en/Reference/Tone

Schritt 13: Laden Sie die Datei Pinball.txt auf das Arduino

Sobald Sie mit dem Schreiben des FSM fertig sind, erfahren Sie, wie Sie Ihr Spiel auf Ihr Arduino laden (vorausgesetzt, Sie verwenden einen Mac). Alle Dateien befinden sich im Github-Repository.

  1. Entpacken Sie die arduino-serial zip-Datei.
  2. Navigiere zu der arduino-serial-Datei und speichere deine Spielkonfigurationsdatei hier. "Pinball.txt" enthält eine Beispielvorlage, die Sie verwenden können.
  3. Öffnen Sie Arduino. Laden Sie die Flipperspielskizze hoch.
  4. Öffnen Sie das Terminal und geben Sie die folgenden Befehle ein:
    • machen
    • ./arduino-serial -b 9600 -p pinball.txt
  5. Jetzt sollten wir Daten im internen Speicher des Arduino lesen und speichern. Wenn es fehlerhafte Linien gibt, druckt der Arduino eine Fehlermeldung und Sie können wählen, die Datei erneut zu senden.
  6. Wenn Sie mit dem Hochladen des Codes über das Terminal fertig sind, z. Wenn Arduino eine "beendete" Nachricht druckt, können Sie die Arduino-Seriennummer öffnen, um Nachrichten aus dem laufenden Spiel zu lesen.

Allgemeine Probleme / Optimierungen für das Software-Spiel

  1. Hardcodierte vs. konfigurierbare Spiele - Wir haben festgestellt, dass die Interrupts im hartcodierten Spiel viel genauer reagierten als im anpassbaren Spiel. Dies könnte daran liegen, dass das anpassbare Spiel viele allgemeine Funktionen hatte, die bedingte Anweisungen erforderten. Dies verlangsamte die Lesegeschwindigkeit der Schleife, was dazu führte, dass wir mehrere Interrupts verpassten und die Gesamtbetriebsgeschwindigkeit des Spiels beeinträchtigten. Um dieses Problem zu lösen, haben wir einige Anpassungsmöglichkeiten des Konfigurationsdateispiels reduziert, um akzeptable Antwortzeiten in der Schaltung zu erzielen. Ursprünglich hatten wir Bedenken hinsichtlich der RAM-Kapazität des Arduino und der Menge der darin gespeicherten Spielregeln, aber dies stellte sich als weniger problematisch heraus als ursprünglich erwartet und es war die Geschwindigkeit der Schleife, die den größeren begrenzenden Faktor darstellte.
  2. Entprellen von Interrupts - Aufgrund der schnellen Aktionen des Flipperspiels gab es mehrere Fälle, in denen der Interrupt-Pin mehrere Interrupts für den Flipper erhielt, die nur eine Spielkomponente trafen. Da diese Interrupts empfangen wurden, bevor der Encoder Zeit zum korrekten Lesen aller Eingänge hatte, wurden die Interrupts außerdem mit falschen Komponenten verknüpft. Um dieses Problem zu lösen, haben wir eine externe Entprellungsbibliothek verwendet, die 1 ms nach dem Empfang des ersten Interrupts reagiert und den Encoder-Pins Zeit gibt, einen hohen Pegel zu erreichen, bevor das Spiel den Eingangscode liest.
  3. Anzeige - Obwohl die serielle Anzeige es dem Spiel ermöglicht, detaillierte Nachrichten auszudrucken, ist es für einen Spieler schwierig, die ausgegebenen Nachrichten zu lesen, wenn er ein schnelles Flipperspiel spielt. Es ist auch unhandlich, wenn der Spieler das Spiel mit einem angeschlossenen Computer spielen muss. Wir hoffen, dass wir in Zukunft eine digitale Anzeige implementieren können, die den Spielstand und andere Spielinformationen auf einem für den Benutzer gut sichtbaren Display anzeigt, z. B. einer LED-Matrix oder einer 7-Segment-Anzeige.

Schritt 14: Option 2: Ratschläge zur Hardcodierung Ihres eigenen Spiels

Lesen Sie zuerst das Dokument state_machine_headers.h durch, um die globalen Datenstrukturen zu verstehen, in denen Informationen über die Zustandsmaschine gespeichert sind. Sie sollten diese Datenstrukturen mit Ihren Spielregeln in der Arduino IDE initialisieren, bevor Sie sie in den Arduino-Code laden. Folgende Datenstrukturen werden bereitgestellt:

Spielstrukturen zum Speichern von Informationen über die einzelnen Teilzustände zum Speichern von Informationen über Zustandsübergänge Aktionen zum Speichern von Informationen über auszuführende Aktionen Diese Strukturen werden von der gelesenen Datei ausgefüllt. Definieren Sie Ein- / Ausgänge für alle Pins. Interrupt-Pins sollten als INPUT-Pins definiert werden.

Überprüfen Sie in der Hauptschleife jeden Zyklus, um festzustellen, ob für jede Spielkomponente ein Interrupt ausgelöst wurde. Definieren Sie jede Spielkomponente in einer switch-Anweisung.

Die Hilfsfunktion executeState aktualisiert den aktuellen Status des Teils und führt Aktionen basierend auf den eingegebenen Informationen aus.

Die fest codierte erste Version des Spielcodes finden Sie in der Datei "simplepinballgame.ino".

Schritt 15: Alles anschließen

Um das Arduino mit unseren Treiberplatinen zu verbinden, haben wir ein Protoschild verwendet, um den Zugriff auf die Pins der anderen Platinen zu erleichtern. Es gibt viele Drähte, seien Sie also vorsichtig! Folgen Sie dem in Electronic Pins and Layout angegebenen Layout, um Ihre Arduino-Steckdosen mit den entsprechenden Pins zu verbinden. Molex-Steckverbinder sollten dabei helfen, herauszufinden, welche Steckverbinder mit welchen verbunden sind.

Hier finden Sie eine kurze FAQ zur Fehlerbehebung, falls Sie auf eines der häufigsten Probleme stoßen sollten:

Die Natur des Eingangscodierers ist, dass das Arduino 6 Eingangspins enthält: 5, die zusammen anzeigen, welcher Eingang ausgelöst wird, und ein 6. Pin, der hoch geht, wenn ein einzelner Eingang ausgelöst wird. Der geschriebene Code erkennt nur, wenn dieser sechste Stift von niedrig nach hoch wechselt. Wenn der Arduino also keine Eingaben empfängt und Sie sicher sind, dass alle oder zumindest die meisten Schalter funktionieren, überprüfen Sie, ob Schalter geschlossen sind. Wenn zum Beispiel alle Drop-Ziele inaktiv sind und nicht wieder in Betrieb genommen wurden, ist dies ein geschlossener Schalter und verhindert, dass der Arduino andere Eingaben empfängt.

Vergewissern Sie sich, dass die Mutter, die den Schützen hält, fest angezogen ist oder dass der Schützenblock nicht locker ist. Alternativ können Sie die Schützenstange ölen.

Dies kann ein mechanisches / konstruktives Problem sein, wenn sich die Schalter in einer zu breiten Bahn befinden und der Ball sie „umrunden“ kann. Andernfalls kann dies auf eine zu lange Verzögerung im Code zurückzuführen sein. Wenn Sie beispielsweise mit der Klangbibliothek und einer delay () - Anweisung beschäftigt sind, kann der Arduino während dieser Zeit keine Eingaben entgegennehmen. Eine Problemumgehung bestand darin, nur Sounds für den Ramp-Shot, das Standup-Target, den Startknopf und den End-of-Game-Schalter abzuspielen, da wir wussten, wie viel Zeit wir nach diesen Aufnahmen haben würden, bevor wahrscheinlich eine neue Eingabe ausgelöst wird .

Zugegeben, wir haben keine bestimmten Header für bestimmte Lichter oder bestimmte Solenoide zugewiesen, was bedeutet, dass die Ausgangspins (oder die Codierung der Ausgangslichter) angeschlossen werden, wenn Sie das erste Mal alles einstecken (oder wenn Sie sie nicht irgendwie beschriften) beliebige Reihenfolge. Verwenden Sie Trial-and-Error, um herauszufinden, welche Pins welchem ​​Ausgang entsprechen, und passen Sie den Code entsprechend an. Für die Lichter und Stoßfänger ist dies nicht so schlimm - aber beschriften Sie auf jeden Fall alle Eingänge und notieren Sie sich, was was ist, da dieser Vorgang bis zu 24 Werte haben kann und etwas länger dauert, um zu kalibrieren.

Der Encoder hat die unglückliche Eigenschaft, manchmal den Anzeigestift hoch zu pulsieren, bevor die 5 Encoderstifte ihre Werte vollständig aufgelöst haben. Wir wussten, dass dies geschehen war, als die Nummer des Schalters nacheinander gedrückt wurde, aber es kann für Sie anders aussehen. Wir haben dieses Problem gelöst, indem wir eine Entprellungsbibliothek verwendet haben, um eine kleine Verzögerung zwischen dem Zeitpunkt, an dem wir feststellen, dass sich ein Switch geändert hat, und dem Zeitpunkt, an dem wir aufzeichnen, um welchen Switch es sich handelt, zu erzeugen. Vorsicht, eine zu große Verzögerung (mehr als 15-20 ms) kann dazu führen, dass Sie Eingaben völlig verpassen.

Entschuldigung, aber wir haben noch keine gute Lösung für dieses Problem gefunden.