~2 €
2 h
Ein Attiny braucht in seinem tiefsten Ruhezustand nur wenige µA Strom. Dies wird für einen ewigen Blinker ausgenutzt, der ausgestattet mit zwei Lithiumzellen über eine lange Zeit hinweg blinken soll.
Diese kleine Schaltung ist wunderbar für Anfänger, die in das SMD-Löten schnuppern wollen geeignet und ist perfekt zum Nerven von Freunden, Nachbarn und Familie.
Bauanleitung
Bau
Die Kosten sind grob geschätzt. Der tatsächliche Preis hängt von den Kosten des Attiny13, der Batterien und der Platinenfertigung ab.
Die Arbeitszeit hängt davon ab, wie man es rechnet. Bis das Design fertig, die Platine geätzt und bestückt und der Code geschrieben war, hat es etwas länger gedauert, da ich immer nur kurz daran gearbeitet habe. Das reine Nachbauen kann bei einem geübtem Bastler auch nur eine halbe Stunde oder weniger dauern. Der begrenzende Faktor ist hier das Fertigen der Platine.
Angefangen habe ich damit mir die Grundfunktion zu überlegen. Die LED soll kurz aufblitzen. Deswegen versorge ich sie mit einer eigentlich zu hohen Spannung und aktiviere sie über den Mikrocontroller nur für wenige Millisekunden. Das führt zum Eindruck eines Blitzes. Deswegen werden auch zwei Batterien benötigt.
Weiter zum Layout. Für den „Konnektor“ habe ich einzelne Pins statt einem kompletten Stecker genommen. Dadurch lassen sie sich besser an die benötigten Stellen verteilen und im späteren Betrieb werden die Programmierkabel ohnehin abgelötet.
Erstellt wurde die Platine mit KiCAD.
Der Programmcode ist eigentlich recht einfach. Zunächst startet der Mikrocontroller und verbindet dann die LED mit Masse. Nach wenigen Millisekunden schaltet er wieder ab und stellt einen Watchdogtimer auf etwa 2 Sekunden. Als letzten Schritt legt sich der Controller in den Tiefschlaf (dank der eingestellten Konfiguration wacht er jetzt nicht mehr auf) Das Resultat ist ein sehr niedriger Energieverbrauch. Nach Ablauf der Zeit stellt der Timer der Ausfall fest und erzeugt ein Resetsignal. Der Controller startet neu und die Prozedur beginnt von vorne.
Das Projekt steht unter der angegeben Lizenz. EIne Außnahme dazu ist der Code, der unter der GPLv3 steht. Siehe dazu den Quelltext. Der SourceCode ist auch über GitHub bereit gestellt.
Zum Kompilieren ist eine avr-libc nötig.
Nach dem Ätzen wird die Platine bestückt und Kabel zum Programmieren angelötet. Aus den Batterien baut man einen Stapel und verbindet diesen mit Klebeband und Anschlusskabeln. Für letztere ist auch Anlöten möglich. Dies erfodert jedoch einiges an Fingerspitzengefühl, um die Batterie nicht zum Explodieren zu bringen, weshalb ich das nicht empfehlen kann.
Zum Programmieren steckt man die Kabel in einen geeigneten ISP. Die Spannungsversorgung kann entwederbereits über die Batterie oder durch eine externe Spannungsquelle geschehen.
Analyse
Zur Analyse des Stromverbrauches trennt man die Batterieverbindung auf und lötet zum Beispiel einen 1k Ohm Widerstand ein. Die über diesen Widerstand gemessene Spannung kann gemäß U=RI in einen Strom umgerechnet werden. Mit dem Oszilloskop wird dazu im Singleshot-Modus ein Blitzen aufgezeichnet. Das Bild sollte in etwa ein Rechteck mit einem nachfolgenden, größeren Rechteck zeigen. Dabei steigt das erste Rechteck auf 1,5mA für 75ms und das zweite beträgt 2,6mA für 40ms.
Daraus lässt sich dann die Energieaufnahme der Schaltung berechnen:
Im Mittel wird pro Blitz 1,88mA über 115ms aufgenommen. Bei einer Batterieladung von 160mAh ergäbe das eine Dauerleuchtzeit von etwa 80h. Wenn ein Blitz 115ms dauert ist die Schaltung zu etwa 2,6*10^6 Blitzen fähig. Wenn man bedenkt, dass ein Blitz etwa alle 2s erfolgt kommt man damit auf eine Laufzeit von etwa 4-5 Jahren. Das sit zwar recht beträchtlich, aber für einen ewigen Blinker doch recht kurz. Maximalgrenze ist die Lebensdauer einer Lithiumbatterie. Diese halten jedoch sehr lange (meist werden 10 Jahre angegeben).
Optimierungsmöglichkeiten gibt es hierbei sicherlich noch: Man könnte die Schaltung umbauen, sodass sie einen kleinen Dauerstrom entnimmt und dann mithilfe eines schwingungsfähigen Systems einen starken, kurzen Impuls erzeugt. Außerdem könnte man versuchen den Programmcode zu optimieren. Eventuell kann der Mikrocontroller schneller starten. Dies ist durchaus relevant, da die Startzeit 75ms in Anspruch nimmt.