Speichercodes

Was sind Speichercodes?

Die Idee mit den Speichercodes stammt von keogarl und ist als erstes in seinem Wherigo paranoia@night realisiert worden. Dort war das Ganze als Defibrillator betittelt und half den Spielern nach Komplettabstürzen wieder an der richtigen Stelle im Spiel weiterzuspielen.

Speichercodes bestehen aus einer mehrstelligen Zahl, enthalten den aktuellen Spielstand und sind auf allen Geräten gleich. Man kann sie nutzen um z.b. ein abgestürztes Gerät wieder auf den selben Stand wie ein anderes zu bekommen. Oder wenn bei einem Gerät der Akku leer geht und man auf einem anderem Gerät weiterspielen will. Im Inventar befindet sich das Speichercode Menü, wo man die Codes abfragen oder eingeben kann. Spielt man mit nur einem Gerät, wählt man das am Anfang aus und man bekommt immer mitgeteilt, wenn sich der Code ändert, sodass man ihn auf Papier mitschreiben kann. Aber auch für Owner oder Wartungsteams sind Speichercodes eine praktische Sache. Man muss nicht den Wherigo immer von Anfang spielen, sondern kann an beliebiger Stelle im Spiel einsteigen, zwischen verschiedenen Abschnitten hin und herspringen oder einzelne Bereiche im Spiel mehrmals spielen.

Im folgenden eine kleine Anleitung zu Einbindung des Speichercode-Systems in Wherigo Cartridges mit Urwigo.

Wie funktioniert das Speichercode-System?

Wenn man so ein System in seinen Wherigo einbauen will, sollte man am besten von Anfang an auf bestimmte Sachen achten. Prinzipiell teilt man seinen Wherigo in mehrere Speichercodeabschnitte/Level ein, wie bei einem Computerspiel. Jedes Level enthält dabei eine andere Zahl, den sogenannten Speichercode. Bei meinen Wherigos sind diese Speichercodes sechsstellig und absolut zufällig generiert. Zwischen den einzelnen Leveln findet allerdings keine Unterbrechung statt. Der Spielfluss geht einfach wie gehabt weiter.

Wichtig für den Programmierer zu wissen ist, welche Zonen, Items und Tasks am Anfang jedes Levels aktiv sind. Jedes mal wenn sich ein Level/Speichercode ändert – egal ob regulär im Spiel oder per manueller Speichercodeeingabe – wird erstmal alles inaktiv gemacht. Dabei wird eine Funktion aufgerufen, welche ein LUA-Skript enthält. Dieses Skript macht nichts anderes, wie alle Zonen, Items und Aufgaben in einer Schleife durchzulaufen und sie auf „inactive“ zu stellen. Das Ergebnis ist ein komplett leerer Wherigoplayer. Das hat denn Sinn, dass alles was vor dem Absturz oder vorherigen Level war jetzt weg ist. Das kann auch Fehler in der Programmierung oder im Player ausbügeln, wenn eine Zone, Item oder Task mal außversehen nicht deaktiviert wurde.

Jetzt wird die wichtigste Funktion aufgerufen. In dieser Funktion wird festgelegt bei welchem Speichercode, welche Zone, welches Item und welcher Task aktiviert wird. Diese Funktion wird sowohl bei einer manuellen Speichercode-Eingabe vom Spieler als auch beim regulären Spielverlauf aufgerufen. Dies hat den Vorteil, dass man nur einmal im Wherigo festlegen muss, welche Dinge am Anfang eines neuen Speichercode Abschnitts aktiv sind.

Ab hier kann man ganz regulär innerhalb der Zonen, Gegenstände usw… weiter programmieren, wie man es sonst auch immer macht. Es können innerhalb der Level natürlich auch neue Zonen, Gegenstände oder Aufgaben aktiviert werden. Wenn es allerdings einen Absturz gibt, landet man natürlich immer am Anfang des Levels/Speichercodeabschnitt. Ich habe immer darauf geachtet, dass immer bei langen physischen Wegen zwischen den Stages ein neues Level beginnt, damit man bei einem Absturz nicht zurücklaufen muss und kein Frust bei den Spielern entsteht. Vorausgesetzt natürlich der aktuelle Speichercode ist bekannt oder wird bei einem anderen Spieler ausgelesen.

Im Prinzip beschränkt sich die Einbindung des Speichercodes-System auf das Erstellen zwei zentraler Funktionen, drei Variablen, einen Input und das Speichercode-Menü Item im Inventar.

Wie binde ich das Speichercode-System ein?

1. Variablen und Funktionen

Als erstes legen wir drei Variablen an:

Speichercode
type: value
value: 0
Diese Variable enthält den aktuellen Speichercode. Sie wird im regulären Spielverlauf an der entscheidenen Stelle bzw beim Beginn eines neuen Levels auf die neue Nummer gesetzt.

SpeichercodeAbfrage
type: value
value: 0
Diese Variable dient als Zwischenspeicher, wenn eine manuelle Speichercodeeingabe im Menü erfolgt. Der aktuelle Speichercode wird in dieser Variable zwischengespeichert und der vom Spieler eingegebene Code durchläuft die changeLevel Funktion. Falls die Nummer vom Spieler falsch ist, wird in der changeLevel Funktion die Speichercode Variable wieder auf die SpeichercodeAbfrage Variable gesetzt. Somit geht bei einer falschen Eingabe der aktuelle gültige Speichercode nicht verloren.

Einzelspieler
type: flag
value: false
Wie schon erwähnt, kann man am Anfang des Spiels auswählen, ob man alleine oder im Team spielt. Diese Einstellung wird in dieser Variable gespeichert. Falls man alleine unterwegs ist, wird dem Spieler immer per Message mitgeteilt, wenn sich der Speichercode ändert. Die Variable wird dann auf true gesetzt.

VirtualBox_Windows_14_03_2017_15_40_30

 

Jetzt zu den Funktionen:

resetAll

Diese Funktion deaktiviert in erster Linie alle Zone, Items und Tasks über das LUA-Skript. Außerdem beinhaltet sie die Ansage des neuen Speichercodes im Einzelspielermodus. Das bietet sich an, da resetAll immer aufgerufen wird, wenn es eine Leveländerung gibt und der neue Speichercode gültig ist. Sie sieht in etwa so aus:

speichercode4

 

changeLevel

Wie schon erwähnt ist dies die wichtigste Funktion des Speichercode-Systems. Bei der Programmierung der Cartridge muss diese Funktion natürlich immer erweitert und bearbeitet werden, da sie ja die Speichercodeabschnitte festlegt. Dabei kann man die einzelnen If-Blöcke einfach kopieren und einfügen. Hier ist auch im Else-Block der Fall behandelt, wenn es zu einer falschen Speichercodeeingabe kommt.

VirtualBox_Windows_13_03_2017_22_23_48

 

2. LUA-Funktion

Es macht überhaupt nichts, wenn man noch nie mit LUA-Skripten im Wherigo gearbeitet hat. Alle LUA-Funktionen werden einmal zentral eingegeben und dann per dem „Lua User code“ aufgerufen. Die LUA-Funktionen findet man im Menü View/Lua user functions:

speichercodes1

Es erscheint ein leeres Textfeld über die komplette Seite. Hier muss man folgendes LUA-Skript eingeben:

function DeactivateAll()
for k,v in ipairs(cartridge.AllZObjects) do
if tostring(v) == „a Zone instance“ or tostring(v) == „a ZTask instance“ then
v.Active = false
end;
if tostring(v) == „a ZItem instance“ and v.Name ~= speichercodemenu.Name then
v.Visible = false
end;
end
end

Wie schon erwähnt ist dies der Code, der alle Zonen, Tasks und Items deaktiviert. Er wird in der resetAll Funktion ausgeführt. Eine kurze Erklärung zum Skript: Es werden alle Objekte der Cartridge ausgelesen und nacheinander abgefragt. Handelt es sich um eine Zone oder Task, werden diese deaktiviert (siehe Zeile 3,4 und 5). In Zeile 6,7 und 8 werden alles Items bis auf das Speichercode-Menü versteckt. Das ist natürlich ziemlich wichtig, sonst würde nach dem ersten Level-Wechsel das Speichercode-Menü auch deaktiviert/versteckt werden.

Ganz wichtig ist noch, dass wir die LUA-Identifier für die komplette Cartridge eingeben. Urwigo legt diese Namen normalerweise automatisch fest. Da wir aber im Skript die Wherigo-Cartridge mit cartridge.AllZObjects ansprechen, muss der Identifier der Cartridge mit „cartrige“ festgelegt werden:

speichercodes2

Im Anschluss müssen wir dann auch den Identifier für das Speichercode-Menü-Item mit „speichercodemenu“ festlegen.

 

 3. Speichercodemenü

Für das Speichercodemenü brauchen wir natürlich ein so betiteltes Item mit einer kleinen Beschreibung und zwei Commands. Bitte nicht vergessen den Identifier auf „speichercodemenu“ zu setzen.

speichercode10

Die zwei Commands im Speichercodemenü sind denkbar einfach. Für den Command „Speichercode eingeben“ muss natürlich ein Input angelegt werden. Hier die Programmierung für „Speichercode abfragen“:

speichercode7

Unter „Speichercode eingeben“ befindet sich nur der Aufruf des Inputs:

speichercode8

Hier die Einstellungen und die Programmierung für den Input:

speichercode9

Hier findet das Zwischenspeichern des Speichercodes in SpeichercodeAbfrage statt. Anschließend wird die Variable Speichercode auf die Eingabe vom Spieler gesetzt und changeLevel aufgerufen. Das wars auch schon. Der Fehlerfall wird ja in der changeLevel Funktion behandelt.

 

4. Leveländerung im Spielverlauf

Das Aktivieren eines neuen Levels ist auch denkbar einfach. Speichercode Variable auf den nächsten Code setzen und anschließend changeLevel ausführen.

VirtualBox_Windows_14_03_2017_16_40_15

 

5. Einzelspieler / Mehrspieler

Hier ein Beispiel für die Auswahl des Spielermodus am beim Starten der Cartridge:

speichercode11

 

Hier die Democartridge mit allen oben gezeigten Funktionen zum herunterladen:

Speichercodes.zip

 

18650 Zusatzakkus fürs iPhone

Die Dauernutzung beim iPhone zieht gerade beim Geocachen extrem viel Strom (bis zu 500mA!). Irgendwann kommt man um einen Zusatzakku nicht herum. Es gibt ja mittlerweile ein großes Sortiment an Zusatzakkus. Kleinere Akkus, die mit in die Taschen passen, schaffen maximal eine Vollladung. Sobald man aber Tagestouren plant wird’s auch hier eng. Außerdem verknotet sich ständig das Ladekabel in der Hosentasche. Es war also an der Zeit, etwas eigenes zu entwickeln 😉

Zusatzakku Gesamt-Oben

 

Zusatzakku Gesamt-Unten

Das Teil wird mit Klettband ans iPhone befestigt. Auf dem Bumper von meinem iPhone sind 2 Reihen Flauschband, am Zusatzakku ist das Hakenband.

Die Elektronik und die 2 18650-Halter sind auf eine 3mm Kunststoffplatte befestigt, die genau die Maße vom iPhone hat. Das Klettband auf der Oberseite dient zur Kabelverstauung und hält das Elektronikgehäuse fest zusammen.

Hier die Elektronik:

Zusatzakku Elektronik

Die 18650 Akkus sind parallel geschalten. Das hat den Vorteil, dass das Teil auch nur mit einem Akku läuft. Die Elektronik ist einfacher Aufwärtswandler mit USB Buchse, welche es als „Mobile Boost“ oder „Step Up iPhone Charger“ für unter 5€ in eBay gibt. Allerdings gibt es hier ein paar Sachen zu beachten. iPhones haben den Nachteil/Vorteil, dass sie nicht einfach laden, wenn sie 5V an den USB-Versorgungspins bekommen. Sie benötigen noch Spannungen an den Data-Pins, die festlegen mit welcher Stromstärke das iPhone läd:

           Data+   Data-
 500 mA    2,0V    2,0V
1000 mA    2,0V    2,8V

Die von mir gekaufte Elektronik hatte die beiden Datenpins kurzgeschlossen. Alle anderen Smartphones brauchen kurzgeschlossene Datenpins um zu laden. Es kann auch sein, dass das iPhone sich damit zufrieden gibt und mit 1000mA lädt. Bevor man sich also die Mühe macht und die Widerstände einlötet erstmal ausprobieren ob’s nicht schon so funktioniert (iPhone min. 30 Sekunden dran hängen). Falls das iPhone nicht lädt oder „Zubehör wird nicht unterstützt“ angezeigt wird, müssen Widerstände eingelötet werden. Die von mir gekaufte Platine hatte auf der Unterseite unbenutzte Lötpads für die Data-Pin-Beschaltung. Hier muss zuerst die Brücke zwischen Data+ und Data- entfernt und anschließend 4 SMD 0805 Widerstände als Spannungsteiler eingelötet werden. Für die 2,0V nimmt man am besten 22k und 33k Widerstände. Für die 2,8V nimmt man 47k und 33k (2,9V passt auch).

Zusatzakku Widerstände

Jetzt sollte das iPhone laden. Ich habe noch zusätzlich eine 5,6V Z-Diode als Schutz eingelötet, denn so ganz vertraue ich der 2€ Platine nicht 😉

Und nun habt ihr einen superkompakten, superstarken und aufgeräumten Zusatzakku!

Der eingebaute iPhone Akku hat ca. 1500mAh. Nehmen wir als Akku die Panasonic NCR18650B mit 3400mAh und gehen von 75% Wirkungsgrad aus.

2x3400mAh*0.75=5100mAh

5100mAh / 1500mAh = 3,4

Wir können also das iPhone fast 3,5mal aufladen! Falls das immer noch nicht reicht, einfach ein zweites NCR18650B Paar in die Hosentasche – damit kann man schonmal ein paar Tage ohne Steckdose überleben 😉

Viel Spaß beim Nachbauen – falls es Fragen gibt, einfach kommentieren!

Geocaching IR-Reaktivlicht

Aufbauend auf das Reaktivlicht mit normalen Lichtsignalen, ist dieses nur durch eine  Infrarot Fernbedienung auslösbar. Ein großes Problem hierbei, war der hohe Stromverbrauch des IR-Empfängers. Das von mir verwendete Modul hat einen Stromverbrauch von 700µA. Die Schaltung würde so mit 2 AA Batterien nichtmal 2 Monate halten. Die Lösung ist, dass man das Modul immer nur für kurze Zeit einschaltet um so den Durchschnittsstromverbrauch zu senken. Zusätzlich gibt es noch eine Tag/Nacht Erkennung, die das IR-Modul tagsüber dauerhaft abschaltet. Der Durchschnittsstromverbrauch wurde somit auf ca 35µA gesenkt. Ebenso erfolgt keine Erkennung ob es sich um ein gültiges RC-5 Protokoll handelt. Der Attiny13 zählt einfach 25ms die Pegeländerungen und ab 5 Änderungen löst das Licht aus. Dies hat den Vorteil, dass das Reaktivlicht mit jeder beliebigen Fernbedienung funktioniert.

Die Pins am Attiny13 wurden so gewählt, dass das IR-Modul kompakt direkt neben dem Mikrocontroller eingelötet werden kann. Der Vorwiderstand für die LED muss natürlich an die verwendete LED angepasst werden.

SchaltplanIR

 

Die Programmierung zum herunterladen:

IR-Reaktivlicht

WICHTIG:

– Manchmal lässt sich der Mikrocontroller nicht flashen, wenn das IR-Modul schon dran hängt, da der PB1/MISO auf GND gezogen wird.

– Sobald der Mikrocontroller Strom hat muss erst eine Pegeländerung an PB4 statt finden, damit er auf den richtigen Tag/Nacht Modus schaltet.

– Das hier verwendete IR-Modul hat die Belegung (wenn man auf die Kugel schaut von links nach rechts) : OUT – GND – VCC. Bei allen IR-Modulen umbedingt erst ins Datenblatt schauen und ggf andersrum einlöten.

Hier das ganze verlötet:

IR-Reaktivlicht verlötet

 

Viel Spaß damit!

Halogen-Metalldampf Scheinwerfer: Verbindungskabel

In diesem Artikel geht es um die Verbindung zwischen Vorschaltgerät und Lampenkopf bei Tageslichtscheinwerfern.

Als Verwechslungsschutz, der zusätzlichen Steuerfunktionen, der Sicherheitsfreischaltung und des Zündsignals werden ausschließlich mehrpolige Stecker bzw. Leitungen mit mehreren Adern verwendet. Typisch sind hierbei 5-7 Adern.

Was fließt aber nun über das Verbindungskabel?

1. Betriebsstrom

Der vom EVG geregelte Konstantstrom muss natürlich irgendwie zur Lampe gebracht werden. Im Betrieb läuft deshalb der komplette Lampenstrom über 2 Leitungen. Der Zündimpuls selber erfolgt ja durch die Zündeinheit im Lampenkopf. Allerdings wird diese Zündung durch das EVG gesteuert und dabei gibt es 2 Möglichkeiten:

1.1 Spannungsgesteuerte Zündaktivierung (2-Draht Zündung)

Diese Art der Zündsteuerung lässt sich relativ leicht realisieren und wird bei kleineren Leistungen angewandt. Da das EVG technisch gesehen ja nur eine Konstantstromquelle ist, geht die Ausgangsspannung im unbelasteten Zustand (also unmittelbar nach dem Einschalten) auf das maximale hoch (ca. 150-300V). In der Zündeinheit im Lampenkopf befindet sich ein Gasableiter/Funkenstrecke in Reihe zum Hochspannungstrafo, die ab 150V oder 200V durchschlägt und Strom durch den Trafo fließen kann und somit die Lampe gezündet wird. Sobald das Gas im Leuchtmittel ionisert wird, beginnt der Betriebsstrom zu steigen und wegen der Konstantstromquelle bricht die Spannung erstmal auf unter 50V. Durch den Gasableiter schlägt nichts mehr durch und der Hochspannungstrafo ist aus dem Stromkreis genommen.

Vorteil: Man spart sich eine Leitung vom EVG zur Lampe. Es ist leichter zu realisieren.

Nachteil: Wenn das Leuchtmittel fehlt, versucht der Trafo zu zünden und die Hochspannung kann nicht über die Lampe abfließen. Folge ist, dass entweder der Hochspannungstrafo überhitzt oder es einen Durchschlag auf der Platine gibt.

Beispiel-Scheinwerfer: Desisti Rembrandt 200W

2-draht Zündung

(Oben sieht man den zusätzlichen Gasableiter, der ab 230V durchschlägt)

 

1.2 Zündaktivierung mit seperater Leitung (3-Draht Zündung)

Bei dieser Ausführung wird der Hochspannungstrafo über eine seperate Leitung versorgt und nutzt als Rückleiter eine von den Betriebsstromleitungen. Legt das EVG im Zündmoment also auf dem Zündpin Spannung an, läuft der Hochspannungstrafo und die Lampe wird gezündet.

Vorteil: Das EVG kann genau festlegen wie lange die Zündung dauert und es kann keine Überhitzung geben.

Nachteil: Eine Leitung zwischen EVG und Kopf wird nur kurz im Einschaltmoment benötigt und hat dann keine Funktion mehr.

2. Steuerleitungen

Bei allen Scheinwerfern, bei denen man die Linse zum Lampenwechseln aufklappen kann, muss es einen Torschutzschalter geben, der verhindert, dass die Lampe ohne UV-Schutz weiterbrennt und somit nach einigen Minuten starke Hautverbrennungen hervorrufen würde. Bei den weit verbreiteten Stufenlinsenscheinwerfern befindet sich der UV-Schutzfilter teilwiese in der Linse eingearbeitet. Fällt das Licht des Leuchtmittels also nicht mehr durch die Linse, enthält es noch den kompletten UV Anteil und ist gefährlich für die menschliche Haut. Um das zu verhindern unterbricht ein Taster den Stromfluss sobald die Linse weggeklappt wird oder zerspringt.

Man benötigt also mindestens 2 Steuerleitungen zwischen denen der Schutzschalter/Freigabetaster vom EVG erkannt wird. Zünden kann man die Lampe also nur, wenn das EVG die Freigabe vom Kopf bekommt.

Bei einigen Herstellern befindet sich auch noch ein Einschalttaster am Lampenkopf, mit dem man direkt die Lampe am Kopf zünden kann. In dem Fall wird eine weitere Steuerleitung benötigt, die sich aber ein Potential von der Freigabe teilt. Hat man also einen Kopf mit Einschalter, so werden allein 3 Steuerleitungen benötigt.

Bei Scheinwerfern, die Leuchmittel mit unterschiedlichen Leistungen unterstützen können (Kombi-Köpfe), gibt es noch zusätzliche Steuerleitungen um dem EVG zu sagen, was für ein Leuchmittel im Kopf sitzt oder es werden Dioden dazwischengeschalten, die mit ihrer Durchlassrichtung angeben welche Leistung aktiv ist.

Verwendete Steckverbinder und Kabel

Da effektiv nur über 2 Kontakte/Leitungen hoher Strom fließt, würde sich es anbieten einen Steckverbinder zu wählen, der 2 Kontakte + PE mit hohem Querschnitt hat und zusätzlich 3 Kontakte für „Daten“ bzw. den Steuerkontakten. Zusätzlich sollte er für den Außeneinsatz wasserdicht sein und robust für den Transport. Leider gibt es in der Richtung keine Standards, die sich so richtig durchgesetzt haben. Am Verbreitetsten sind Bajonett-Stecker von VEAM International. Ein paar Hersteller vertrauen auf die Schaltbau M1 und M3 Serie. Einige setzen auf Harting Modular. Mittlerweile kann man beim Neukauf bei vielen Herstellern angeben, in welcher Ausführung die Steckverbinder sein sollen. Wenn man schon Bestand an Scheinwerfern hat, macht es natürlich Sinn, alle mit baugleichen Steckverbindern auszustatten.

Als Kabel wird manchmal Ölflex Classic 110 verwendet. Alternative ist einfach eine schwarze Gummischlauchleitung. Da Kabel mit gleichem Querschnitt (also z.b. 7 x 2,5mm²) im Durchschnitt günstiger sind als Hybridkabel mit Strom und Daten getrennt, werden diese verwendet. Technisch gesehen ist es natürlich nicht so sinnvoll, eine 2,5mm² Leitung für ein Steuersignal mit ein paar mA zu verwenden.

Halogen-Metalldampf Scheinwerfer: Allgemeines

In den folgenden Artikeln gehts um den Einsatz von Halogen-Metalldampflampen in der Veranstaltungstechnik und im Film und Fernsehen.

Häufige Bezeichnungen für diese Lampen sind herstellerbedingt HMI, HQI, HTI oder beim Film und Fernsehen sogenannte Tageslichtscheinwerfer. Da fast ausschließlich Leuchtmittel mit einer hohen Farbtemperatur (ca. 5600 Kelvin) verwendet werden, ähneln sie dem Sonnenlicht und werden deshalb Tageslicht (oder engl. Daylight) genannt.

Wie die Leuchtmittel technisch gesehen einzuordnen sind, ist am besten auf Wikipedia erklärt: http://de.wikipedia.org/wiki/Halogen-Metalldampflampe

Scheinwerfertypen

Theoretisch gesehen kann man in jedes Scheinwerfer-Gehäuse ein Halogen-Metalldampf Leuchtmittel einbauen. Am Verbreitesten sind aber wie beim Glühlicht die Stufenlinsenscheinwerfer. Viele Hersteller bieten deshalb die gleichen Scheinwerfer mit Halogen-Glühlicht und Halogen-Metalldampflampe an.

Hier die Glühlicht-Version 1kW:

desisti1kw

Hier die Tageslicht-Version 575W, einziger Unterschied in der Bauform ist die zusätzliche Zündeinheit an der Unterseite:

desisti575w

Ansonsten gibt es fast jeden Glühlicht Scheinwerfer-Typ auch in der Tageslicht Version. Teilweise kann man den Unterschied nur anhand des Steckers und des Leuchtmittel feststellen.

 

Vorschaltgerät

Wie bei jeder Entladungslampe braucht man zum Betrieb ein Vorschaltgerät. Die früher verwendeten Drosselvorschaltgeräte (DVG) sind fast vollständig durch die elektronischen Vorschaltgeräte ersetzt worden.

Anders als bei Leuchtstoffröhren oder anderen Entladungslampen, ist bei Tageslichtscheinwerfern das Vorschaltgerät immer getrennt von dem eigentlichen Scheinwerfer/Kopf. Das hat einerseits den Grund, dass wegen der hohen Leistung die EVG’s relativ schwer sind. Ein Scheinwerfer mit integriertem Vorschaltgerät am Kopf würde deshalb bei 1200W ca. 20 kg wiegen.

arrikit

Ein anderer Grund ist die Lautstärke. EVG’s und DVG’s brummen und/oder pfeifen ab einer gewissen Leistung und haben Lüfter zum Kühlen der Leistungsbauteile. Bei Filmaufnahme, wo möglichst immer vermieden werden sollte Fremdgeräusche mit aufzuzeichnen, wäre ein Vorschaltgerät nahe des Mikrofons oder der Kamera störend.

tageslichtscheinwerferkirche

Wenn man die Scheinwerfer an der Decke oder im Rigg montiert, muss zu jedem Kopf ein Kabel vom EVG gelegt werden. Die EVG’s werden wie bei Dimmern in einer City aufgebaut und man kann zentral alle Scheinwerfer einschalten, dimmen und eventuelle Störfälle beheben.

 

Zündeinheit

Das Vorschaltgerät ist wie bei allen Entladungslampen hauptsächlich dazu da, den Betriebsstrom zu regeln. Bevor jedoch der Betriebsstrom fließen kann, müssen ein oder mehrere Hochspannungsimpulse, welche in der Zündeinheit entstehen, das Gas zum Ionisieren bringen.

Bei allen Scheinwerfern befindet sich die Zündeinheit im Lampenkopf!

Meist sitzt diese direkt unter dem Leuchtmittel oder in einer Kammer unter dem Scheinwerfergehäuse. Die Zündeinheit in das EVG zu bauen wäre sehr sinnlos, da man dann zwischen dem EVG und der Lampe ein Hochspannungskabel bräuchte, welches aber nur für den 1 Sekunde langen Zündmoment gebraucht werden würde.

Hier eine Zündeinheit einer 200W Akkulampe:

zündplatine200W

Genaueres über Zündeinheiten findet man hier:

http://www.hbernstaedt.de/knowhow/leuchtmittel/zuendgeraete.htm

Leistungen

Halogen-Metalldampflampen gibt es auf dem Markt von 35W bis 18000W. Bei den Tageslicht-Scheinwerfern fängt es so bei 200W an und kann bis zu 18000W gehen. Gängig sind aber Leistungen wie 200W, 400W, 575W, 1200W, 2500W, 4000W, 6000W. Die Staffelung ist hierbei etwas anders wie beim Halogen-Glühlicht. Der Hintergedanke war dabei, dass man allein durch die Leistung herausfinden konnte ob es sich um ein Tageslicht- oder Glühlicht-Leuchtmittel handelt. Inzwischen gibt es aber so viele verschiedene Leistungstypen, dass man das Prinzip nicht mehr darauf anwenden kann.

WICHTIG:

Das EVG muss auf den Scheinwerfer und die verwendete Leistung abgestimmt sein!

Eine Entladungslampe zieht nicht einfach den Strom, mit dem sie angegeben ist!

Das EVG legt fest, mit welcher Leistung die Lampe läuft!

Deshalb ist es absolut wichtig, dass das EVG weiß welche Lampe an ihm hängt. Bei DVG’s ist es mechanisch festgelegt welcher Strom fließt, deswegen funktioniert jedes DVG nur für eine bestimmte Leistung/Strom. Früher als es nur DVG’s gab, konnte man also in einen Lampenkopf nur ein Leuchtmittel mit einer Leistung einsetzen. Bei EVG’s kann man ganz einfach die gewünschte Leistung bzw den Strom festlegen. Deswegen gab es daraufhin Vorschaltgeräte und Köpfe die mit verschiedenen Leistungen betrieben werden konnten, sogennante Kombi-Köpfe und Kombi-Vorschaltgeräte. Derzeit werden Vorschaltgeräte angeboten, die maximal 3 verschiedene Leistungen bereitstellen können. Verbreiteter ist aber die Variante mit 2 Leistungen. Typisch hierbei sind kombinierte Leistungen wie 1200W/2500W und 4000W/6000W oder 575W/1200W.

Die Unterscheidung, welche Leistung jetzt nun gilt, erfolgt herstellerabhängig und meist durch die zusätzlichen Steuerleitungen zwischen EVG und dem Scheinwerfer.

Wenn man Kombi-Köpfe verwendet, erfolgt die Unterscheidung durch die Höhenverstellbarkeit des Lampensockels. Da bei einem 2,5kW Leuchtmittel die Lichtquelle höher sitzt als bei einem 1,2kW Leuchtmittel, muss die Lampe anders positioniert werden, damit die Lichtquelle im Mittelpunkt des Reflektors sitzt. Durch einen simplen Mechanismus kann man den Sockel auf 2 Höhen einrasten. Ein Taster erkennt dann, auf welcher Position der Sockel sitzt und gibt diese Information an das Vorschaltgerät. Dementsprechend wird dann am Vorschaltgerät der Strom für 2,5kW oder 1,2kW bereitgestellt.

Wird das Ganze falsch eingestellt oder vergessen umzustellen, kann man damit das Leuchtmittel zerstören.

 

Ausgebrannte Platinen reparieren

Durch einen Defekt bei einem Halogen-Metalldampf-Scheinwerfer ist auf der Zündplatine ein Kondensator explodiert. Leider schaltete das EVG erst später ab, so dass der Kondensator noch ein paar Minuten vor sich hin brannte. Das Ergebnis war dann ein schwarzer Krater, gefüllt mit Kondensator-Flüssigkeit. Leider habe ich keine Fotos mehr davon.

1. Entfernen der verbrannten Platinenreste

Beim Explodieren und Verbrennen vermischen sich die aufgedampfte Kupferschicht und das Innenleben der Bauteile mit der Platine. Die schwarzen Überreste werden so leitend und verursachen Kurzschlüsse und Fehlfunktionen. Deshalb muss das Ganze herausgefräst, gebohrt oder gefeilt werden. In meinem Fall habe ich die grobe Fläche mit einem Dremel entfernt und die Ecken mit einer Metallfeile gerade gemacht.

ausgebrannt1

 

2. Aufgießen mit Harz

Das herausgefräste Stück muss jetzt natürlich wieder aufgegossen werden. Am besten dafür eignen sich Gießharze oder Harzkleber. Ich verwendete in diesem Fall den 2-Komponenten Epoxydharz-Kleber von Uhu. Bevor man aufgießt, klebt man auf die Vorder- und Rückseite Tesafilm, damit das Harz in der richtigen Form aushärtet.

verbrannt2

verbrannt3

 

Da der Kleber nicht auf Tesafilm haftet, kann dieser nach dem Aushärten einfach abgezogen werden. Jetzt kann man den Kleber anmischen, mit einem Heißluftföhn erhitzen und in die Fuge laufen lassen. Das Erhitzen bewirkt, dass der Kleber flüssiger wird und sich besser verteilt. Bei diesen Klebern wird die Festigkeit erhöht, wenn man ihn bei höherer Temperatur trocknen lässt. Außerdem härter er viel schneller aus. Bei mehr als 80° würde ich es allerdings nicht versuchen, da sonst der Tesafilm schmilzt. Nach einer Stunde sollte das Harz ausgehärtet sein. Sicherheitshalber hatte ich das Ganze noch eine Nacht bei Zimmertemperatur aushärten lassen.

verbrannt4

 

3. Leiterbahnen legen und fertigstellen

Da auf der Platine etwas höhere Ströme fließen, verwendete ich als „Leiterbahn“ einen 1mm² Kupferdraht. Als Erstes die Isolierung der alten Bahn entfernen und anschließend den neuen Draht anlöten. Mit einem 1,5mm Bohrer können dann problemlos die neuen Löchern gebohrt werden. Die Bauteile werden dann direkt an den Kupferdraht gelötet. Wenn alles fertig ist, kann man die Rückseite noch mit Lack versiegeln.

verbrannt5

 

verbrannt6

 

verbrannt7

 

Viel Spaß damit!

Fake-Geigerzähler

Für einen Geocache (http://coord.info/GC4AVA3) brauchte ich einen Geigerzähler/Strahlendosismesser, mit dem man radioaktive Überreste eines Flugzeugabsturzes aufspüren musste. Mehr verrate ich hier aber nicht 😉

Natürlich wäre es ein bisschen gefährlich gewesen, radioaktive Stoffe im Wald zu vergraben, deswegen löste ich den Detektor anders…

Die Grundidee des Ganzen war, mittels des Geigerzählers eine bestimmte Kompassrichtung zu suchen, bei der die Strahlendosis am stärksten ist. Anschließend errechnet man sich durch das Abstandsgesetz den Abstand in Metern aufgrund der gemessenen Strahlendosis. Hat man die 2 Werte, kann man eine einfache Koordinatenpeilung durchführen und man kommt auf die finale Dose.

Realisiert wurde das Ganze durch ein Kompassmodul siehe http://www.roboter-teile.de/Oxid/Navigation/Kompassmodul-CMPS10.html.

Da ich ein fertiges Modul verwendete, fielen aufwändige Korrektur- und Kalibriertätigkeiten weg. Das Modul ist neigungskompensiert und gibt die Richtung per I²C an den Mikrocontroller weiter.

Beispielscripts hierfür gibts auf der Herstellerwebseite (http://www.robot-electronics.co.uk/htm/cmps10doc.htm).

Der Mikrocontroller empfängt die Daten und gibt diese auf einer LED-Anzeige aus. Parallel dazu gibt es eine einfache If-Abfrage. Sobald die Kompassrichtung passt, wird der Strahlenwert auf den Segmenten angezeigt. Andernfalls wird ein Zufallswert (ADC-Messung an einem Pin) angezeigt.

Das Ganze musste jetzt nur noch in ein glaubhaftes Gehäuse. Ich ersteigerte dafür ein kaputtes Infrarot-Thermometer aus ebay und baute die Elektronik dort rein. Hier das Ergebnis:

strahlendosismesser#1

 

strahlendosismesser#2

 

Falls sich jemand für Schaltplan oder die Programmierung interessiert, einfach kommentieren!

Ich hoffe, ich hab den einen oder anderen auf eine gute Idee gebracht!

Viel Spaß damit!

Geocaching Reaktivlicht

Vor ein paar Jahren bin auf die außergewöhnliche Freizeitbeschäftigung Geocaching gestoßen. Für Nicht-Cacher werden diese Lichter relativ nutzlos sein. Die ersten Begegungen mit technischen Spielereien in Geocaches hatte ich beim hitec1@night, bei dem Morse-Reaktivlichter verbaut sind. Kurz darauf war ich natürlich ganz scharf darauf, meine eigenen Lichter zu bauen.

Das Reaktivlicht reagiert auf einfache Lichtsignale/Lichtblitze. Bei jedem Wechsel von Dunkel auf Hell leuchtet die LED kurz auf. Es gibt keine Tag/Nacht Erkennung, wie bei anderen Reaktivlichtern.

Schaltung

Hauptbestandteil der Schaltung ist ein Attiny13. An ihm ist der Fotowiderstand mit einem Pulldown Widerstand angeschlossen und die Power-LED. Die ganze Schaltung läuft mit 3V und kann deshalb ohne Probleme mit 2 AA oder AAA Batterien versorgt werden.

ReaktivlichtSchaltplan

 

Je nachdem was für eine LED hier verwendet wird, muss noch ein Vorwiderstand dazwischen- geschalten werden. Als LDR verwende ich den günstigsten vom Conrad (Art.Nr. 145475). Bei der Verwendung von anderen LDR’s muss entsprechend der Pulldown-Widerstand angepasst werden.

Programm

Hier kann das Programm heruntergeladen werden:

Reaktivlicht

Die Programmierung ist für sehr niedrigen Stromverbrauch optimiert. Der LDR bildet mit dem 1MOhm Widerstand einen Spannungsteiler der an PB1 gemessen wird. Fällt mehr Licht auf den LDR so sinkt der Widerstand und die Spannung an PB1 steigt. Der Attiny befindet sich fast immer im Tiefschlaf und wird bei jedem Wechsel an Pin PB1 aufgeweckt. Anschließend wird abgefragt, ob er auf High oder Low steht. Steht er nun auf High, so dimmt er die LED per PWM kurz hoch und anschließend wieder runter. Steht der Pin auf Low, so geht er wieder unmittelbar in den Sleep Mode. Das PWM Signal wird durch den Output Compare Match OCRA realisiert.

Der durchschnittliche Stromverbrauch beträgt 3µA, somit sollte das Licht selbst mit normalen AA Batterien mehrere Jahre halten.

Fertigung

Ich empfehle jede Elektronik für Außeneinsatz bei Geocaches einzugießen. Am besten hat sich einfaches Neutralvernetzendes Silikon aus dem Baumarkt bewährt. Vorher die komplette Schaltung darin eintauchen, damit es keine Luftlöcher gibt. Dann zusammen mit den Batterien in ein Gehäuse packen und es von beiden Seiten mit Silikon auffüllen.

WICHTIG: ES DARF AUF KEINEN FALL ESSIGSÄURE-/ACETATVERNETZENDES SILIKON VERWENDET WERDEN, DA DIESES DAS KUPFER WEGFRISST! AM BESTEN FUNKTIONIERT ES MIT NEUTRALVERNETZENDEM SILIKON (N-SILIKON).

Hier ein Beispiel für eine kompakte Bauform mit 2 AAA-Batterien, eingegossen in ein 25mm Aufputzrohr für Elektroinstallationen.

platine_unten

IMG_0891

 

reaktivlicht eingegossen

Viel Spaß damit!

Erste Schritte mit AVR’s unter Mac

Dies ist eine Anleitung für Einsteiger, die noch nie was mit AVR Programmierung gemacht haben. Ich programmiere alle meine AVR’s unter Mac und nutze Freeware-Tools. Diese Anleitung zeigt die kostengünstigste Variante für AVR Programmierung unter Mac.

Hardware

Beim Flashen von AVR’s kommt man ohne Programmieradapter nicht weit. Ich verwende für alle meine AVR’s den AVR ISP2 USB mk2 (http://www.atmel.com/tools/AVRISPMKII.aspx). Zusätzlich zu dem Adapter benötigt man entweder ein Programmierboard von Atmel oder man baut sich eine „Kabelpeitsche“ selber und verwendet ein handelsübliches Steckboard. In dieser Anleitung verwende ich einen Attiny13. Das ganze wird wie folgt verkabelt und mit einem 5V Netzteil versorgt…

Programmieraufbau

 

belegung

 

grundschaltung platine

 

Die Pins Reset, SCK, MISO, MOSI am Mikrocontroller gibt es bei allen AVR’s und sollten bei anderen Controllern entsprechend aus dem Datenblatt herausgesucht werden. Mit diesen Pins wird der Controller geflashed. Sobald die Programmierung auf dem Chip ist, können diese Pins (mit Außnahme des Reset-Pins) ganz normal als Eingang oder Ausgang verwendet werden. Der 100nF Kondensator gehört bei jeder AVR-Schaltung mit dazu, da er Stromschwankungen ausgleicht. Er sollte in der Nähe des Chips angebracht werden.

Der AVRISP kann jetzt mit dem Mac verbunden werden und es sollte nun die Status-LED im AVRISP leuchten.

 

Software

Nun muss die entsprechende Software installiert werden, um den Programmieradapter anzusteuern.

Unter http://www.obdev.at/products/crosspack/index.html das „Crosspack“ herunterladen, entpacken und installieren. Diese Software compiliert die C-Programmierung und gibt sie dem AVRISP weiter.

Als nächstes das Terminal unter Programme/Dienstprogramme/Terminal öffnen und folgenden Befehl eingeben:

sudo port install avr-libc

Sollte jetzt ein Fehler angezeigt werden, dann fehlt die Paketverwaltung „MacPorts“, sie kann unter http://www.macports.org kostenlos heruntergeladen und installiert werden. MacPorts kontrolliert und steuert Installationen von freien Entwicklersoftwaren, indem es alle zugehörigen Pakete aus dem Internet lädt und sie zusammenfassend installiert. Ist MacPorts erfolgreich installiert, muss der Befehl erneut eingegeben werden.

Nun Ihr Passwort eingeben, mit Return bestätigen und die Installation beginnt.

Das ganze kann eine Zeit dauern, da erst alle Pakete aus dem Internet geladen werden.

 

Ansprechen des Mikroprozessors

Die komplette Kommunikation mit dem Chip findet über das Terminal statt. Es gibt ein paar Befehle, mit denen man die wichtigsten Funktionen ausführen kann. Beim ersten Versuch empfiehlt sich eine Statusabfrage, ob alles richtig angeschlossen ist und der AVRISP mit dem Chip kommunizieren kann. Dafür muss einfach folgender Befehl ins Terminal eingegeben werden:

avrdude -c avrispv2 -P usb -p t13

Wenn alles gut läuft, sollte Folgendes danach im Terminal erscheinen:

 

terminal1

In der „device signature“ sind grundlegende Informationen zum Chip enthalten. Der verschlüsselte Wert bestätigt, dass es sich um einen Attiny13 handelt.

Bei jedem Befehl, den man ins Terminal eingibt, muss man angeben um welchen AVR-Mikrocontroller es sich handelt. Oben geschieht dies mit der Abkürzung t13, welche für den Attiny13 steht. Dies ist komplette Liste der Abkürzungen für AVR-Typen:

t10 ATtiny10 m169 ATMEGA169 x128a4 ATXMEGA128A4
t11 ATtiny11 m16u2 ATmega16U2 x16a4 ATXMEGA16A4
t12 ATtiny12 m2560 ATMEGA2560 x192a1 ATXMEGA192A1
t13 ATtiny13 m2561 ATMEGA2561 x192a3 ATXMEGA192A3
t15 ATtiny15 m32 ATMEGA32 x256a1 ATXMEGA256A1
t2313 ATtiny2313 m324p ATMEGA324P x256a3 ATXMEGA256A3
t24 ATtiny24 m324pa ATmega324PA x256a3b ATXMEGA256A3B
t25 ATtiny25 m325 ATMEGA325 x32a4 ATXMEGA32A4
t26 ATTINY26 m3250 ATMEGA3250 x64a1 ATXMEGA64A1
t261 ATTINY261 m328p ATMEGA328P x64a3 ATXMEGA64A3
t4 ATtiny4 m329 ATMEGA329 x64a4 ATXMEGA64A4
t4313 ATtiny4313 m3290 ATMEGA3290 1200 AT90S1200
t44 ATtiny44 m3290p ATMEGA3290P 2313 AT90S2313
t45 ATtiny45 m329p ATMEGA329P 2333 AT90S2333
t461 ATTINY461 m32u2 ATmega32U2 2343 AT90S2343
t5 ATtiny5 m32u4 ATmega32U4 4414 AT90S4414
t84 ATtiny84 m48 ATMEGA48 4433 AT90S4433
t85 ATtiny85 m64 ATMEGA64 4434 AT90S4434
t861 ATTINY861 m640 ATMEGA640 8515 AT90S8515
t88 attiny88 m644 ATMEGA644 8535 AT90S8535
t9 ATtiny9 m644p ATMEGA644P c128 AT90CAN128
m103 ATMEGA103 m645 ATMEGA645 c32 AT90CAN32
m128 ATMEGA128 m6450 ATMEGA6450 c64 AT90CAN64
m1280 ATMEGA1280 m649 ATMEGA649 pwm2 AT90PWM2
m1281 ATMEGA1281 m6490 ATMEGA6490 pwm2b AT90PWM2B
m1284p ATMEGA1284P m8 ATMEGA8 pwm3 AT90PWM3
m128rfa1 ATMEGA128RFA1 m8515 ATMEGA8515 pwm3b AT90PWM3B
m16 ATMEGA16 m8535 ATMEGA8535 ucr2 32UC3A0512
m161 ATMEGA161 m88 ATMEGA88 usb1286 AT90USB1286
m162 ATMEGA162 m88p ATMEGA88P usb1287 AT90USB1287
m163 ATMEGA163 m8u2 ATmega8U2 usb162 AT90USB162
m164p ATMEGA164P x128a1 ATXMEGA128A1 usb646 AT90USB646
m168 ATMEGA168 x128a1d ATXMEGA128A1REVD usb647 AT90USB647
m168p ATMEGA168P x128a3 ATXMEGA128A3 usb82 AT90USB82

 

Beispielscript: LED Blinker

Als Nächstes soll natürlich ein Programm auf den Chip geflashed werden. Unter folgendem Link befindet sich eine Zip-Datei mit einem C Beispielscript:

DemoScriptBlinker

(Das Script sollte normalerweise bei jedem AVR funktionieren, der Pins mit der Bezeichung PB1,PB2,PB3, etc.. besitzt. Getestet ist das Programm von mir bisher mit dem Attiny13, Attiny45 und Attiny2313)

Prinzipiell macht es Sinn, für jedes Script einen Ordner (hier DemoScriptBlinker) anzulegen, in dem sich die Scriptdatei main.c befindet. Man behält so den Überblick und der Terminal-Befehl fürs Compilen und Flashen bleibt gleich.

Anschließend wieder das Terminal öffnen und mit folgendem Befehl das Verzeichnis des Ordners auswählen.

cd /Users/(Hier den Pfad zum Ordner angeben)/DemoScriptBlinker

Einfacher gehts auch, indem man erst nur „cd “ eintippt und schließlich per Drag&Drop den Ordner ins Terminal zieht. Nun mit Return bestätigen und es sollte nun ab sofort „DemoScriptBlinker“ am Anfang jeder Terminal-Zeile stehen. Der Ordner ist jetzt dauerhaft im Terminal festgelegt und kann jederzeit mit dem cd-Befehl geändert werden. Das Verzeichnis wird nicht übernommen, wenn man ein neues Fenster öffnet oder Terminal schließt.

Nun den 5-zeiligen Terminal-Befehl eingeben und mit Return bestätigen:

avr-gcc -Wall -Os -DF_CPU=1000000 -mmcu=attiny13 -c main.c -o main.o
avr-gcc -Wall -Os -DF_CPU=1000000 -mmcu=attiny13 -o main.elf main.o
rm -f main.hex
avr-objcopy -j .text -j .data -O ihex main.elf main.hex
avrdude -c avrispv2 -P usb -p t13 -U flash:w:main.hex

Nach kurzer Zeit sollte dann das Programm auf den Chip geflashed sein. Der Verlauf im Terminal sollte dann etwa so aussehen:

terminal2

Beim Compilen wurden mehrere Dateien im Ordner angelegt und er sollte nun so aussehen:

  • main.c
  • main.elf
  • main.hex
  • main.o

Was macht aber jetzt der 5-zeilige Terminal Befehl?

In den ersten 2 Zeilen wird das main.c Script compiliert und es entstehen die Dateien main.o und main.elf. Wichtig ist hier, wie beim Ansprechen/Flashen des Chips, dass der Typ angegeben wird. Allerdings wird hier der vollständige Name angegeben „attiny13“. Ebenso muss der Compiler wissen, mit welcher Taktung der Chip läuft um delay-Warteschleifen im Script zeitkorrekt ausführen zu können. Die Angabe erfolgt hierbei in Hertz. Je nachdem wie der attiny13 vom Werk her konfiguriert ist, variiert diese Angabe. Wir nehmen einfach mal an, dass er mit 1MHz getaktet ist. WICHTIG: Die Taktung wird hierbei nicht verändert und muss auch nicht mit der echten Taktung übereinstimmen! Diese Angabe ist nur für den Compiler, um Zeitschleifen in Programmen richtig zu errechnen!

avr-gcc -Wall -Os -DF_CPU=1000000 -mmcu=attiny13 -c main.c -o main.o
avr-gcc -Wall -Os -DF_CPU=1000000 -mmcu=attiny13 -o main.elf main.o

Nun wird (falls es schon eine gibt) die alte main.hex Datei gelöscht:

rm -f main.hex

Jetzt wird die main.elf Datei in eine hexfile-Datei umgewandelt:

avr-objcopy -j .text -j .data -O ihex main.elf main.hex

Dies ist schließlich der Befehl, mit dem die main.hex Datei auf den Chip geflashed wird. Wie bei der Statusabfrage muss hier der AVR-Typ, in dem Fall der Attiny13, angegeben werden. Der Ausdruck avrispv2 gibt an, dass es sich um den AVR ISP Mk2 Programmieradapter handelt.

avrdude -c avrispv2 -P usb -p t13 -U flash:w:main.hex

 

Das Programm bewirkt, dass an allen I/O Pins des Mikrocontrollers jetzt abwechselnd 5V und 0V anliegen. Es kann jetzt direkt eine LED mit Vorwiderstand für 5V (z.b. 220 Ohm) an dem Pin 2,3,5,6 oder 7 nach GND angeschlossen werden.

ledblinker

Viel Spaß damit!