Briefkasteninnenbeleuchtung

Aus Hobbyelektronik.org
Version vom 31. Dezember 2016, 18:24 Uhr von Chris (Diskussion | Beiträge) (Seite erstellt)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Zugegeben, es hört sich nicht nur bescheuert an, es ist auch so. Trotzdem hatte ich das Bedürfnis, eine Briefkasteninnenbeleuchtung zu bauen. Warum? Nein, nicht (nur) weil ich es kann, sondern weil sie durchaus praktisch ist

Problemstellung

Die Briefkästen vom Mietshaus hier sind freistehend und in der dunklen Jahreszeit sieht man durch aufgrund der etwas ungünstig installierten Außenbeleuchtung den Einwurf nicht, ob Post gekommen ist. Durch das Öffnen der Frontklappe sieht und bekommt man zwar den Inhalt, aber dazu bin ich schlicht zu faul.

Umbauten müssen rückstandsfrei sein, schließlich will ichs nicht mit meinen Vermietern verscherzen.

Idee

In den Briefkasten soll mindestens eine LED, die durch das Öffnen des Deckels aktiviert wird. Die Befestigung findet über Magnete statt, die Stromversorgung durch Batterien. Damit diese nicht unnötig leergesaugt werden, soll die Beleuchtung zeitlich begrenzt sein.

Umsetzung

Zumindest bei der LED ist die Sache schnell klar: weiße PLCC2 liegen hier mehr als genug herum. Um sie sinnvoll zu betreiben, kommen 3 Mignon-Batterien in Serie zum Einsatz. Bei 3,3 Volt (also wenn die Zellen schon halb-platt sind) sind 7 mA mehr als genug, der passende Widerstand hierfür wäre 171 Ohm. Wäre, weil ein einfacher Vorwiderstand an dieser Stelle dumm ist - die Batteriespannung wird mit dem Ladestand fallen - und damit der Strom durch die LED.

LED-Treiber

Besser ist es deshalb, eine Konstantstromquelle zu verwenden. Die lässt sich sehr einfach aufbauen, zwei Transistoren und zwei Widerstände reichen. Der Strom wird über den unteren Widerstand und Transistor definiert: letzterer wird leitend, wenn seine Basis-Emitter-Spannung über ca. 0,7 Volt steigt - diese Spannung muss beim gewünschten Strom eingeprägt werden. Für den Widerstand gilt also\[\textrm{R}=\frac{0.7}{\textrm{I}_\textrm{out}}\]

Der obere Transistor steuert den Strom durch die LED. Der Widerstand dient lediglich als Pull-up und ist daher eher unkritisch. Wer ihn hinreichend groß Dimensionierung will, muss sich den LED-Strom und den Verstärkungsfaktor ansehen.

Die mechanische Integration ist einfach: ich habe noch kleine Leiterkärtchen, eigentlich für einen anderen Zweck, aber es passt alles für diese Schaltung drauf. Schrumpfschlauch drüber, kleine Magnete ran, nochmal Schrumpfschlauch.

Bild von den Innereien gibt es leider keine.

Schalter

Für die Erkennung ob der Deckel offen ist gibt es viele Möglichkeiten: mechanischer Taster, Näherungssensoren, Neigungsschalter, Hallswitches, etc..

Ich habe mich bewusst für einen Reed-Kontakt entschieden - mechanische Schalter brauchen in aller Regel viel Kraft (und viel Gegenkraft kann ich bei der Montage nicht bieten) und sind oft empfindlich auf Feuchte. Viele Näherungssensoren (optisch, kapazitiv und induktiv) sind aktiv und haben einen relativ großen Ruhestrom. Nichts für langen Batteriebetrieb. Neigungsschalter geht, war aber früher dank Quecksilber eine ziemliche Sauerei; die aktuellen sind wahrscheinlich besser aber ich habe Vorbehalte.

Schlussendlich habe ich einen Reed-Kontakt verwendet. Hermetisch abgeschlossen, kraftfrei und kein Ruhestrom. Wenn man mechanisch faul ist oder nicht genug Grips in der Birne hat, braucht man einen Öffner - genau das (bzw.einen Wechsler) habe ich bestellt.

Um die Integration vorweg zu nehmen: der Kontakt ist auf einer kleinen länglichen Leiterkarte gelandet - lang genug, um einen Magnet zur Montage am Briefkasten verwenden zu können. Jetzt kommt auch die Sache mit dem Grips: Der "Montagemagnet" war stark genug, damit das durch das Metall laufende Feld den Kontakt öffnete. Mit geschickter Positionierung beider Magnete (der zur Montage und dem im Deckel) hätte ich die Felder so ausrichten können, dass sie sich im Deckel-zu-Fall neutralisiert hätten. Hätte-hätte...

Aber auch so funktioniert es.

Um vor Feuchtigkeit besser geschützt zu sein, kommt alles in Schrumpfschlauch und wird natürlich auf der etwas besser geschützten Seite des Briefkastens installiert.

Foddo

Abschaltautomatik

AVR
Typ ATtiny45
Takt 0,6 MHz
Fuses
High 0xFF
Low 0x61
Engbedded com logo.png Details


Eigentlich wäre diese prädestiniert für eine Analogschaltung oder einen NE555. Schlussendlich wurde es aber ein ATtiny13. Der ist mit der Aufgabe zwar gänzlich unterfordert, braucht dafür im Schlaf nahezu keinen Strom und zudem fast keine Außenbeschaltung

Das Programm könnte sehr einfach sein: Port initialisieren, Pin an, warten, Pin aus.

Mit 4,8 MHz Takt braucht der Controller einige Milliampere, was in beiderlei Hinsicht unnötig viel ist. Über die CLKDIV-Fuse kann der Takt auf ein Achtel reduziert werden - besser aber trotzdem nicht überragend. Was ich beim Programmieren übersehen habe: den Watchdog als Taktquelle - 128 kHz und noch etwas stromsparender. Im Datenblatt kann man sich dazu Figure 19-1 und 19-5 anschauen. Demnach braucht der Chip bei 600 kHz (bei externer Taktquelle) zwischen 0,3 und 0,5 mA - mit dem Watchdog wären es lediglich 0,06 bis 0,09 mA.

Statt warten per Delay kann man auch den internen Timer verwenden und die CPU bei Overflow wecken. Nur leider kann man mit weiterlaufendem Takt den Tiny nicht tief genug schlafen schicken, damit es richtig gut wird. Geht man in den Tiefschlaf, bleibt der Takt komplett weg und das war dann für den Timer. Glücklicherweise kann man den Watchdog so konfigurieren, dass er keinen Reset sondern einen Interrupt auslöst. Da er einen eigenen Oszillator hat, ist er zudem unabhängig vom Systemtakt. Sein Vorteiler lässt sich bis in den angenehmen Sekundenbereich einstellen. Im Power-Down und aktivem Watchdog braucht der Prozessor (Figure 19-14) zwischen 4,5 und 7,0 µA. Nachdem das Programm durch ist und sich der Bursche schlafen legt, sinkt der Stromverbrauch (Figure 19-13) auf sehr niedrige 0,2 bis 1,2 µA. Wo liegt nochmal die Selbstentladung von Alkali-Zellen?

Batteriewächter

Darf's ein bisschen mehr sein?

Der ATtiny13 hat einen ADC, warum also nicht noch zusätzlich eine Warnung für bald leere Batterien einbauen?

Einige AVRs können den ADC verkehrte Welt spielen lassen: Man kann die interne Referenz als Eingang wählen und die Versorgungsspannung als Referenz. Dadurch wird das Ergebnis zwar reziprok aber die Messung braucht keine externe Beschaltung und ist zudem sehr stromsparend. Geht hier leider nicht (Figure 14-1).

Es muss also ein externer Spannungsteiler her. Der braucht permanent einen gewissen Strom und das ist Mist. Man kann die Widerstände zwar nach oben dimensionieren, dann wird die Messung durch ADC-bedingte Verfälschungen ungenauer. Ich bin einen etwas faulen (im Sinne von: warum mehr Zeit verschwenden) Kompromiss eingegangen: Der Spannungsteiler wird vom Schaltsignal für die LEDs versorgt. Dadurch haut der Strom nur für die maximal 30 Sekunden ab und zugleich hat der FET einen Pull-Dowm am Gate, falls der IO doch mal floatet. Der Treiber im AVR ist einen leichten Spannungsabfall haben, aber zum einen kann man kalibrieren und zum anderen wird keine besonders hohe Genauigkeit benötigt.

Bei der Dimensionierung muss man - wie bereits erwähnt - darauf achten, dass die Messung halbwegs sauber funktioniert aber gleichzeitig nicht unnötig viel Strom verbraucht wird. Natürlich muss auch der Teiler passen. Für diesen Zweck verwende ich gerne [Widerstand ist zwecklos https://www.muellerzumhagen.de/widerstand-ist-zwecklos-pointless-resistance/], das die Paarung 33 kOhm (top) und 10 kOhm (bottom) ausspuckte. Damit ergibt sich eine maximal messbare Spannung von 4,73 V und ein Stromverbrauch von nicht ganz 105 µA bei 4,5 V. Die Auflösung wäre damit nicht ganz 4,6 mV - deutlich mehr als genug.

Der ADC-Wert berechnet sich theoretisch wie folgt\[\textrm{ADC}= \textrm{U}_{\textrm{bat}} \cdot \frac{10\textrm{ k}\Omega}{10\textrm{ k}\Omega+33\textrm{ k}\Omega} \cdot \frac{1024}{1.1\textrm{ V}}\]

Die Messung selbst ist geradeaus: Auswählen der Referenz und Eingang (PB4), Takt festlegen, Interrupt an und los geht's. Um etwas sinnvolles zu machen während die Messung durchgeführt wird, legt sich der Kern schlafen und wird wieder geweckt, sobald diese durch ist (sei(); nicht vergessen!). Anschließend wird der ADC-Wert ausgelesen und der Block wieder deaktiviert.

Um etwas bessere Ergebnisse zu erlangen, wird die Batteriespannung nicht direkt nach dem Start sondern nach einer Sekunde durchgeführt. Dadurch lassen sich zwei Dinge verknüpfen: Die Batterien sehen eine Last und man ist am richtigen Zeitpunkt, um die LEDs kurz auszuschalten.

Kalibrierung

Aufgrund der Beschaltung sah ich mich genötigt, den ADC zu testen. Der einfachste Weg dafür wäre UART, den es aber nicht gibt. Zumindest nicht in Hardware. Das Format ist relativ einfach, siehe Wikipedia. Idle high, Startbit, Daten und ein bisschen Pause fürs Stopbit (die ich mir gespart hab).

Mit dem Wissen, wie lange ein NOP in der CPU dauert die Timings angepasst und los geht's. Mit "normalen" USB<>UART-Adaptern hat man allerdings wenig Spaß: meine Implementierung verwendet - der Faulheit wegen - 10 Datenbits und eine ziemlich krumme Baudrate, die halt einfach gerade gepasst hat. Der Logic Analyzer kann das, die meisten Wandler aber nicht. Aber wer will schon Interoperabilität?

Das Ende vom Lied: die Berechnung von oben ist hinreichend genau.

Einbau

Es geht besser!

Kein Projekt würde mal zweimal genau gleich machen. So auch hier.

Ich würde die LED-Treiber mit FET statt Bipolar-Transistoren bauen und dann auch gleich den gemeinsamen FET zum Schalten der Treiber sparen, indem die Versorgung von den Transistoren direkt vom Mikrocontroller kommt.

Den Spannungsteiler würde ich eine Nummer größer dimensionieren und etwas mehr Ungenauigkeit (who cares?!) in Kauf nehmen. Genauso würde ich im AVR gleich den Watchdog als Taktquelle nehmen. Läuft ja eh.

Beim Reedkontakt würde ich wahrscheinlich einen Schließer nehmen, ihn durch den Befestigungsmagnet "vorspannen" und das Feld durch den Magnet im Deckel neutralisieren. Geht sicher auch auf länger gut und senkt die Bauteilkosten.

Genauso würde ich die Betriebsdauer wahrscheinlich auf 10 Sekunden verringern. Wer starrt schon 30 Sekunden in einen Briefkastenschlitz?

Um die Schaltung etwas zu verbessern, kann man den oberen NPN-Transistor durch einen n-Kanal-FET ersetzen und den Pull-up größer dimensionieren. Spart zumindest ein bisschen Strom.