Melodiegenerator mit Abschalt-Taste und Akku-Leer-Alarm mit Tiny15 für Batteriebetrieb...

Nachdem nun die Lautstärke durch den Einsatz des Gegentakt-Emitterfolgers drastisch erhöht wurde, fängt das Teil an zu nerven. Deshalb muss ein Abschalt-Taster her, mit dem man das Teil abwürgen kann, wenn man an der Tür ist. Weiterhin halte ich eine Spannungsprüfung des Akkus für sinnvoll. Zugunsten dieser neuen Features wurde auf die bedingte Calibration und die Tempowahl per Jumper / DIP-Schalter verzichtet. Die Auswahl der Melodie (1 aus 4) per Jumper / DIP-Schalter bleibt aber bestehen.

Die Variante 3 hat also nun folgende Ausstattung:

Die Schaltung sieht nun so aus:

An PB0 ist nun ein Taster angeschlossen, mit dem die laufende Melodie abgebrochen werden kann. PB2 wird als Analogeingang benutzt. Die beiden roten LEDs haben bei aktiviertem internen PullUp einen Spannungsabfall von 3,22V. Der Widerstand R3 beeinflusst diesen Wert nicht, da er gegenüber des internen PullUps zu niederohmig ist. Er hat die Aufgabe, beim Programmupdate per ISP die SCK-Leitung nicht unnötig durch die LEDs zu belasten. Der zweikanalige DIP-Schalter dient der Melodieauswahl.

Die beiden LEDs dienen in Kombination mit dem internen PullUp als Referenzspannung für die Ermittlung der Akkuspannung. Hier wird allerdings "rückwärts" gemessen, also die stabile Spannung der LEDs an den ADC-Eingang gelegt und als ADC-Referenzspannung die (variable) Betriebsspannung (Akku) genutzt.

Es wird also immer die feste Spannung von 3,22V gegen die variable Referenz gemessen. Das ergibt

bei vollem Akku (4,8V): 256 * 3,22V / 4,8V = 172
bei leerem Akku (4,2V): 256 * 3,22V / 4,2V = 196
als ADC-Wert bei 8 Bit Auflösung. Während des Abspielens der Melodie wird alle 10ms der ADC-Wert gemessen und aus den Messwerten der Mittelwert über 256 Messungen gebildet. Als Startwert für die Mittelwertbildung wird der Grenzwert für leeren Akku genutzt, wodurch sich schon nach wenigen Messungen ein korrektes Ergebnis (Tendenz) abzeichnet.
Am Ende der Melodie (oder beim Abbruch mittels Stoptaste) wird der errechnete Mittelwert mit dem Grenzwert verglichen und beim Überschreiten des Grenzwertes (ja, beim Überschreiten, denn je höher der Messwert, desto leerer ist der Akku...) eine weitere Tonfolge ausgegeben, die im Programmquelltext unter "Alarm" definiert wird. Ich habe dazu vorerst die Tonfolge des Feuerwehr-Martinshorns gewählt.

Auch alle 10ms wird der Stoptaster abgefragt. Er muss achtmal direkt hintereinander betätigt sein, um als betätigt zu gelten. Dies ist eine sehr einfache Entprellung, die aber nur in Richtung Tastendruck wirkt, nicht in Richtung Loslassen, das ist nicht erforderlich, denn der Stoptaster versetzt ja den AVR in den Power-Down-Mode.

Vor dem Sleep im Power-Down-Mode werden noch die PullUps für Stop-Taster und Referenz-LEDs deaktiviert um den Ruhestrom zu senken.

Der ASM-Quelltext des Programms ist wieder recht üppig kommentiert. Die Schaltung existiert erstmal nur auf dem Steckbrett:

Variante 3 des Melodiegenerators auf Steckbrett

Vorerst ist auch kein Bau eines finalen Gerätes vorgesehen. Das kann sich aber schnell ändern, wenn das Teil im Bekanntenkreis auf Interesse stoßen sollte. Dann wird es aber auch nur eine selbstgeflexte Rasterplatine für Oberflächenbestückung werden...


Inzwischen gibt es auch eine Weiterentwicklung, bei der gedämpfte Sinustöne über die Highspeed-PWM (100kHz) des Tiny15 ausgegeben werden.