Skip to content
Reclof edited this page Jan 24, 2023 · 22 revisions

Welcome to the pyrostepper wiki!

Safety First! Sicherheit geht vor!

Falls du diese Projekt nachbauen willst, beachte immer die Sicherheit! Prüfe deine Anlage, ob sie so reagiert, wie sie soll. Testen, testen, testen und nochmals testen!

In eigener Sache:

Beim Nachbau musst du mit einem Lötkolben umgehen können und wissen, wo das heiße Ende ist. Auch solltest du dich ein wenig mit dem Arduino beschäftigt haben oder beschäftigen. Du weist, was ein Widerstand ist und kannst Strom und Spannung auseinanderhalten. Alles, was du hier beschrieben findest, kann auch in der einen oder anderen Weise in anderen Projekten im Netz gefunden werden. Ich habe auf Standardbauweisen gesetzt. Komplizierte Schaltungen gibt es nicht. Wenn doch, sind sie fertig aufgebaut im Netz verfügbar.

Vorgeschichte

Vor einigen Jahren ging mit das gehörig auf den Pinsel, in der Silvesternacht immer eine Batterie nach der anderen zu zünden: Karton aufreissen, Zündschnur suchen und auspacken, nach vorne rennen und Batterie hinstellen, wieder Zündschnur suchen, Feuerzeug rauskramen, wieder Zündschnur suchen und anzünden, zurückrennen und dann endlich die Feuerwerksbatterie geniessen. Und wieder von vorn. Bei 15 oder 20 Batterien (Ja ich bin ein Feuerwerksliebhaber) ging mir das also so auf den Geist, sodass ich meine Programmierkentnisse beim Arduino und meine Eletkrotechnikkenntnisse ebenso auspackte und mal wieder ein Arduino Projekt an den Start brachte.

Mittlerweile hat sich die Anlage im vierten Jahr (2023) als sehr zuverlässig erwiesen, sodass ich das Projekt hier auf GitHub veröffentliche.

Verwendet habe ich:

  • einen Arduino Uno
  • 3 Platinen mit je 8 Relais für die Zündungen
  • die insgesammt 24 Relais werden mit frei hintereinandergeschalteten 74HC595 Shift Registern angesprochen
  • Dazu ein zweites Schieberegister, um eine 7-Segementanzeige anzusteuern
  • 24 LEDs als kleine Info, (die LEDS sind parallel zu den Relais geschaltet, die über die Schieberegister angesprochen werden. Der Strom der Schieberegister reicht für die Optokoppler der Relais und einer LED je Kanal aus)
  • 12 Lautsprecherterminals mit den einfachen Klemmanschlüssen (Doppelausführung) dienen zum zügigen Anschließen der Zündbrücken.
  • Dieses Jahr habe ich dann ein LCD Display (4 Zeilen a 20 Zeichen) per I2C integriert
  • Sowie 5 Taster, die für die Programmierung der einzelnen Sequenzen vorhanden sind. (Angeschlossen an einem Analogeingang mittels Widerstandsnetzwerk - klassisch halt)
  • Die Zeiten für die Sequenzen werden im Eeprom des Arduino gespeichert.
  • Dazu habe ich noch den Resettaster des Arduino nach Aussen gelegt, da das Display bei Anschluss der Powerbank nicht immer direkt startet.
  • Mittels eines Kippschalters starte das Feuerrwerkprogramm (oder per Kippschalter wieder aus)
  • Für die Sicherheit habe ich die Betriebsspannung der Relaisplatinen separat geschaltet, da die Schieberegister bei Einschalten einen undefinierten Zustand haben und die Relaus somit vorzeitig anziehen können. Also erst die Relais einschalten, wenn der Arduino im Betrieb ist.
  • Und zum zusätzlichen Schutz habe ich die Zündspannung für die elektrischen Zünder noch mal mit einem separatem Schalter abgesichert.
  • Messung aller 24 Kanäle mit einem MUX (74HC4067, 16 Kanal Multiplexer). Alle 24 Kanäle werden geprüft, ob eine Zündbrücke angeschlossen ist. Hier könnte auch der Widerstand errechnet werden, aber hier reicht es für meine Bedürfnisse aus - es wird am Display nur ein * oder ein - angezeigt. (Anmerkung: Niederohmiges Messen ist ggf. für das Netzteil des Arduino ein wenig zu viel, ich habe es erst gar nicht ausprobiert...)

Eine Zündung über MosFets wollte ich vermeiden. Ich habe da lieber in die Fertigbauteilkiste gegriffen und entsprechend Relaiskarten mit kompletter Beschaltung (Optokopplter, Verstärkerschaltung etc) ausgewählt.

Schaltungen

Ansteuerung Relaiskarten

Zur Ansteuerung habe ich fertige Relaiskarten mit Optokoppler gewählt. Da die Schieberegister nur geringe Ströme schalten können, musste eine möglichst praktikable Lösung her, ohne irgendwelche Verstärker dafür zu bauen. In der "Bucht" gibt es diverse fertige Platinen. Suche dort mal nach "8 Kanal Relais Modul Optokoppler". Dann wirst du schnell fündig. In diesem Bild habe ich hauptzächlich die Verschaltung der ICs untereinander dargestellt. Spannungversorgungen der Schieberegister sind nur am ersten Register mit dargestellt. Der Rest sollte selbsterklärend sein. Der Schaltstrom reicht aus, um parallel zum Eingang zu den jeweiligen Relais eine LED leuchten zu lassen. Die Verschaltung habe ich der Übersicht halber nicht im Bild.

Ansteuerung 7-Segment-Anzeige

Bevor ich das LCD und die Programmiertasten mit integriert hatte, wurde der Status nur über eine 7-Segment-Anzeige ausgegeben. Dies war mit aber zu dürftig. Aber ich habe sie einfach mit dran gelassen - man könnte sie auch gut weglassen. Die 7-Segmentanzeige wird über ein zusätzliches Schieberegister angesteuert:

Steuerungstasten

Für die Steuerung innerhalb der App habe ich 5 Tasten per Widerstandsnetzwerk an einen Analogeingang angeschlossen. Die Widerstandswerte dürfen natürlich auch andere sein. Auf jeden Fall muss der Sketch angepasst werden (in der Funktion void getTaste() )! Nimm dazu die Serielle Schnittstelle mit dem Terminal zur Hilfe, um die richtigen Werte zu finden.

Tasten

LCD Display

Für informationen und zur Programmierung der Sequenzen habe ich dieses Jahr der Anlage auch ein LCD Display gespendet. Das LCD ist am I2C-Bus angeschlossen. Eine grafische Darstellung baue ich hier vorerst nicht ein. Der Anschluss erfolgt ganz einfach am I2C Bus des Arduino mittels der 2 Datenleitungen sowie der Spannungsversorgung und die Masse. Wer nicht weis, wie das geht: Ein wenig googlen hilft da schnell. Suche nach "arduino i2c LCD 20x4".

Resettaster

Da das LCD nach dem Start manchmal rumspackt - ich vermute, es ist nicht schnell genug initialisiert - habe ich den Reset mit nach drausen geführt: Beim Einschalten bleibt das Display ohne Anzeige. Mache ich einen Reset mittes Resettaste, so startet der Arduino neu und die Anzeige kommt mit hoch:

Resettaster

Zündbrückenmessung

Die Zündbrücken werden je Kanal einzeln ausgelesen. Dazu nutze ich 2 MUX, die paralel mittels 4 Bit angesteuert werden. Die Ausgänge der beiden Mux werden dann an zwei unterschiedliche Analogeingänge des Uno angeschlossen. So kann ich die 24 Kanäle einfach auslesen und auswerten. Die Schaltung ist hier schematisch zu sehen, sonnst verliert chman hier ggf die Übersicht: Ich habe nur 2 Kanäle eines Mux komplett dargesellt. Die kleinen Widerstände (3.3 Ohm) sollen die Zündbrücken darstellen. Die 1.5k Ohm sind Reihenschaltungen von Widerständen, die üblicherweise zum Messen von Widerstandswerten (bzw Spanungen!) genutzt werden. Wird eine Spannung gemessen, ist eine Brücke vorhanden. Wird keine Spannung gemessen, (also Hochohmig), so ist keine Spannung messbar und es ist keine Zündbrücke vorhanden - oder es liegt halt eine Unterbrechung vor.

Bilder

Ich habe alles in eine selbstgebaute Holzkiste eingebaut. Wer die Verkabelung sieht, schlägt evtl. die Hände über den Kopf zusammen. Doch bendenke, das ist ein Prottyp, und ich habe 'zig mal umgebaut. Wenn ich das Gerät neu aufbauen würde, wüsste ich jetzt, wo ich alle hinsetze...

Als Holz kann ich nur Siebdruckplatten empfehlen, dann kann man die Kiste einfach auf die Erde stellen - trotz Schnee oder Regen. Koffer oder andere Behälter gehen natürlich auch!