vorige Seite
Inhaltsverzeichnis nächste Seite

der erste Arbeitstag

Also Arbeitstag ist eigentlich falsch. Zwischen 21:00 Uhr und 08:00 Uhr hat die Schaltung konstant ihre Kreise gedreht:
2015.10.31 21:00:21 Verbindung geschlossen ESP8266-1 (192.168.42.101:13374)

2015.11.01 03:00:05 Verbindung hergestellt ESP8266-1 (192.168.42.101:37414)
2015.11.01 03:00:06 Autorisierung abgeschlossen
2015.11.01 03:00:06 Abweichung [sek]: 0
2015.11.01 03:00:06 Datum/Zeit übermittelt
2015.11.01 03:00:07 Zeiten-Tabelle ist aktuell
2015.11.01 03:00:07 Akku-Spannung: 0.94V
2015.11.01 03:00:07 Firmware-Version: 1.5.1
2015.11.01 03:00:07 Verbindung geschlossen ESP8266-1 (192.168.42.101:37414)

2015.11.01 06:30:08 Verbindung hergestellt ESP8266-1 (192.168.42.101:12751)
2015.11.01 06:30:08 Info: Rollladen hoch
2015.11.01 06:30:08 Verbindung geschlossen ESP8266-1 (192.168.42.101:12751)


Schaltung und Programm haben die Nacht also offenbar gut überstanden.
Praktischerweise trat dabei ein Monatswechsel auf, der korrekt verarbeitet wurde (sonst wäre die "Rollladen hoch"-Meldung bereits um 06:00 gekommen).

Nach Erweiterung der Schaltung um den Spannungsteiler zur Messung der eigenen Spannungsversorgung (hatte ich vorher vergessen), kamen erstmal sinnlose Werte heraus. Nach einigen fruchtlosen Test habe ich mir nochmal die Doku zu analogReference() zu Gemüte geführt. Wegen des unter "Warning" stehenden Textes habe ich die Verbindung von AREF (Pin 21 am ATmega328) mit VCC und AVCC entfernt. AREF hängt somit jetzt in der Luft.
Und nun klappt es. Auffällig war dabei, dass offenbar jeder ATmega328-Chip seinen eigenen Korrekturwert benötigt. Mal ist es -0.1V, mal passt es und mal brauchts +0.1V.
Die Schaltung sendet noch erfolgreich bei 4.4V Eingangsspannung. Das liegt zwar schon am untersten Limit des für den LM1117T3.3 möglichen Deltas zwischen Eingangs- und Ausgangsspannung, trotzdem liefert er stoisch seine 3.3V.
Wenn man den ESP8266 zu sehr mit nicht ausreichenden Spannungen quält, vergisst der schon mal seine Default-Einstellung oder kommt total durcheinander. Ein Exemplar musste ich via USB-zu-TTL-Modul und CuteCom erstmal mit AT+RESTORE ins Leben zurückholen .... bevor er wieder Konfigurationen annehmen wollte.

Weiterhin ist mir bei den Tests aufgefallen, dass das Python-Script mit einem  nmap localhost -p 2626  nicht klarkommt. Da brauchts noch zwei weitere try-except-Blöcke, um resistent gegen solche bösen Hacker-Tools zu werden.


Alles sehr schön soweit.
Nur ist das Hauptproblem ja gerade ausgeblendet: Das Ding zieht sinnloserweise konstant Strom im Milli-Ampere-Bereich.

Das Relais konnte ich ja schon ohne Reset des ATmega328 ein- und ausschalten.
Erst wenn der 3.3V-Regler über den Schließer des Relais mit Strom versorgt wurde, kam der ATmega328 aus dem Tritt.
Der ESP8266 war dabei nicht gesteckt. An dessen Einschalt-Strom lag es also nicht. Leider. Denn den könnte ich im Programm ja problemlos zeitverzögert aktivieren.

Ein möglicher Test wäre, die Schaltung jetzt so umzufrickeln, dass ich den 3.3V-Regler per Schalter oder Drahtbrücke im laufenden Betrieb des ATmega328 an- und ausschalten könnte. Der ATmega328 würde mit einem Blink-Programm (z.B. mit jew. drei Sekunden Pause zwischen AN-AUS-AN) laufen. Wenn die Blink-Frequenz durcheinander käme, wüsste ich, dass der ATmega328 gerade einen Reset gemacht hat.
Aber was würde mir diese Erkenntnis bringen...?
Wenn der ATmega328 keinen Reset macht, ist das zwar schön, nützt mir als Erkenntnis aber nicht viel.
Und wenn er einen Reset macht, weiß ich auch nur, dass ich den 3.3V-Regler tauschen muss.
Da kann ich mich auch gleich nach einem neuen 3.3V-Regler umsehen.
Vorzugsweise einer, mit einem Enable-Pin.
Dadurch könnte ich das Relais einsparen. Hätte dann allerdings keine "abschaltbaren 5V" mehr für den Spannungsteiler zum Messen der eigenen Versorgungsspannung.
Also doch erstmal den Test machen.
Und siehe da: das Einschalten des Reglers reicht für den Reset.
Eine Nachfrage im mikrocontroller.net-Forum hat mich dann auf die Idee gebracht, die beiden Tantal-Elkos vor und hinter dem Regler auszubauen.
Und schon gehts.
Auch mit dem Relais.
Weil der erste zeitgesteuerte Connect nach PowerOn oft nicht so wollte, wie ich wollte, habe ich noch je einen 100nF Keramik-Kondensator zwischen Vcc und GND in unmittelbarer Nähe zu ATmega328 und ESP8266 gelegt.

Meine Selbst-Quälerein zum Stromverbrauch haben sich ausgezahlt.
Wenn der ATmega328 schläft, zieht die Schaltung 13µA.
Wenn er aufwacht und die Lebenszeichen-LED blinken lässt, irgendwas um die 20mA (mein Multimeter kann so kurze Impulse nicht vernünftig messen).
Und bei WLAN-Traffic um die 210mA (also Relais + ESP8266).

Jetzt bin ich glücklich :-)

Aber warum zieht sie im Tiefschlaf eigentlich 13µA ... statt der 0.35µA von oben ?
Egal. War nur Spaß.

Bei 13µA sollten Akkus mit 1900mAh über 16 Jahre reichen, wenn man mal von sowas wie Selbstentladung absieht....
Bei 20mA für 95 Stunden.
Und bei 210mA für 9 Stunden.

Nach 8 Sekunden braucht die Schaltung für 0.05 Sekunden 20mA.
Also pro Tag 24*60*60 / 8.05 = 10733 mal 0,05 = 536,65 Sekunden bzw. 9 Minuten lang.
Bei 1900mAh und 9 Minuten pro Tag mit 20mA:
    1900 [Milli-Ampere / Stunde] / 20 [Milli-Ampere] * 60 [Minuten/Stunde] / 9 [Minuten/Tag]=633 Tage.

Dann kommt noch zweimal am Tag ca. 30 Sekunden WLAN-Kommunikation und zweimal am Tag ca. 2 Sekunden IR-LED-Ansteuerung hinzu.

Somit sollten die Akkus durchaus ein Jahr durchhalten.

Mit der neusten Version des Schaltplanes und der Programme warte ich noch, bis die Sende-Einheit gebaut ist und funktioniert.


Und noch eine kleine nachträgliche Rechnung ... speziell für den zweifelnden Marcel H aus B:
Ein kurzes IR-Bit ist 600µs lang, ein langes 3700µs.
Bei angenommener Gleichverteilung von kurz/lang bzw. 0/1 also (3700µs+600µs)/2=2150µs pro Bit.
Nun kommt da noch die Träger-Frequenz von 40KHz drauf (oder auch drunter). Und die hat 50% duty cycle.
Also nochmal durch zwei. Macht 1075µs lang Stromverbrauch pro Bit.
Jedes zweite Bit ist ein Dunkel-Bit. Nochmal durch zwei. Macht 538µs.
Ein Signal hat 70 Bit, zwei Signale werden pro Ansteuerung gesendet. Zwei Ansteuerungen pro Tag.
Macht zusammen 70*2*2*538µs=150640µs=151ms pro Tag, an denen durch beide IR-LEDs je ca. 0.9A fließen.
Okay, meine 2 Sekunden waren etwas hoch gegriffen. Aber geht weiter:
2*0.9A=1.8A oder zur Vereinfachung 1.9A...weil es dann besser zu den 1900mAh der Akkus passt.
Akkus mit 1900mAh können die IR-LEDs mit 1900mA so rein rechnerisch also genau eine Stunde lang leuchten lassen.
Da ich aber pro Tag nur 151ms lang aktiv sende, reichen die Akkus für 1[h]*60[m/h]*60[s/m]*1000[ms/s]/151[ms/t]=23841[t] Tage oder auch 65 Jahre.
So Meister....und nun kommst du....was wird mir da wohl die Akkus leerlutschen?  ;-)

Abgesehen davon, dass wir beiden alten Säcke uns dann schon lange die Radieschen von unten angucken, ist in 65 Jahren eh längst Zombi-Apokalypse.
Und da bleiben die Rollläden natürlich lieber dauerhaft unten.

vorige Seite
nächste Seite