Verbesserungsvorschläge und Stromverbrauch eines AVR Weckers

#5363878
Lesenswert?

Hallo,

in den letzten Tage habe ich einen einfachen Wecker basierend auf einem 
ATMega88 gebaut. Das Projekt diente lediglich der Einarbeitung in die 
Mikrocontroller Programmierung und Elektronik.

Die Funktionalität umfasst
- Uhrzeit/Datum anzeigen
- Uhrzeit/Datum einstellen
- Alarmzeit setzen
- Alarm aktivieren/deaktivieren
- Alarm auslösen mit Schlummerfunktion
- Temperatur anzeigen
- Menüsteuerung mittels 4 Taster

Die Stromversorgung erfolgt durch 4 AAA Batterien.
Ich habe euch den Schaltplan angefügt.

Momentan befindet sich der Aufbau noch auf einem Breadboard. Soll aber 
später auf eine Steckplatine und die Bauteile in ein Gehäuse eingebaut 
werden.

Bevor ich dies mache, wollte ich euch bitten mir ggf. 
Verbesserungsvorschläge zu geben.

Insbesondere bei der Stromversorgung bin ich mir nicht ganz sicher.
Ich möchte gerne eine möglichst hohe Lebensdauer der Batterien 
erreichen.
Durch Messungen hat sich gezeigt das das LCD Display den meisten Strom 
benötigt (0,22A mit Hintergrundbeleuchtung). Ohne Hintergrundbeleuchtung 
sind es lediglich 0,01A für die Gesamtschaltung. Aus diesem Grund wird 
die Hintergrundbeleuchtung softwareseitig bei einem Knopfdruck für 10 
Sekunden aktiviert.

Grüße,

Timo
Angehängte Dateien:
#5363902
Lesenswert?

Ich bezweifel das die Schaltung wie gezeichnet funktioniert.
C1 ist zwei mal vorhanden und sollte 100n anstelle 100p sein.
AVCC gehört mit VCC verbunden und ebenfalls ein 100n nach GND.
J1 ist ISP und nicht JTAG.
Am LCD gehört VDD an 5V, VO an den Schleifer des Poti.
BC547 ist verkehrt, es fehlt ein Basiswiderstand und ein Widerstand im 
Kollektor.

Das nur beim schnellen drüber schauen, es wir sicher noch einiges zu 
verbessern sein.
#5363950
Lesenswert?

Hubert G. schrieb:
> Ich bezweifel das die Schaltung wie gezeichnet funktioniert.
> C1 ist zwei mal vorhanden und sollte 100n anstelle 100p sein.
> AVCC gehört mit VCC verbunden und ebenfalls ein 100n nach GND.
> J1 ist ISP und nicht JTAG.
> Am LCD gehört VDD an 5V, VO an den Schleifer des Poti.
> BC547 ist verkehrt, es fehlt ein Basiswiderstand und ein Widerstand im
> Kollektor.
>
> Das nur beim schnellen drüber schauen, es wir sicher noch einiges zu
> verbessern sein.

Danke für die Antwort. Die Schaltung funktioniert auf dem Breadboard 
bisher ohne Probleme aber genau aus solchen Gründen habe ich ja 
nachgefragt.

- C1 gibt es nur einmal und hängt zwischen 5V und GND. Ich wusste nur 
nicht wie ich das sonst zeichnen soll.
- C1 ist tatsächlich ein 100nF statt 100pF. Das war nur in der Zeichnung 
falsch.
- Das AVCC mit VCC verbunden werden soll wusste ich nicht. Hab es aber 
gerade nachgelesen. Vielen Dank. Das werde ich ändern
- Der Poti an VDD des LCD hatte den Hintergrund das mein LCD bei 6V der 
4 AAA Batterien nicht funktioniert hat. Der Poti dient dazu die Spannung 
zu regulieren. Poti an V0 ist doch primär für den Kontrast? Hab da nicht 
die Notwendigkeit gesehen
- Die Widerstände für den Transistor werde ich auch noch ergänzen.

@S. Landolt: Den Quarz und Controller hatte ich hier rumliegen. Was 
spricht gegen den Quarz? Mit einem 16 Bit Timer, 1024 prescaler und 
54736 Vorladewert bekomm ich ziemlich genau eine Sekunde.

@Jim Meba: Und wo siehst du Einsparpotential ohne die komplette HW zu 
ändern?
Gast #5363974
Lesenswert?

> LOL, 10 mA sind extrem viel für eine Quarzuhr.

Auch wenn das sehr wohl stimmt, verstehe ich dass es in diesem Vorhaben 
nicht so sehr darum geht den absolut kleinsten Strom/Energieverbrauch 
hin zu bekommen.
Vielmehr geht es wohl darum bei dieser nun (aus der Reste&Bastelkiste) 
gegebenen HW die hiermit mögliche maximale Optimierung zu realisieren.

Also, läuft das jetztige Programm die ganze Zeit oder wird bereits des 
uCs Schlafmodus genutzt?
In welchem Zeitintervall "geschieht etwas" an dieser Uhr? (jede s? Jede 
1/2s?)
Was kann dann geschehen? (Anzeigesegment an/aus, etc...)
Wielange benötigt der uC dafür? (irgendwelche xx...xxxx us)
--> die restliche Zeit bis zum nächsten "Geschehnis" MUSS der uC in den 
Stromspar&Schlafmodus gehen, danach wieder geweckt werden.
#5364015
Lesenswert?

Verlustleistungsphobiker schrieb:
>> LOL, 10 mA sind extrem viel für eine Quarzuhr.
>
> Auch wenn das sehr wohl stimmt, verstehe ich dass es in diesem Vorhaben
> nicht so sehr darum geht den absolut kleinsten Strom/Energieverbrauch
> hin zu bekommen.
> Vielmehr geht es wohl darum bei dieser nun (aus der Reste&Bastelkiste)
> gegebenen HW die hiermit mögliche maximale Optimierung zu realisieren.
>
> Also, läuft das jetztige Programm die ganze Zeit oder wird bereits des
> uCs Schlafmodus genutzt?
> In welchem Zeitintervall "geschieht etwas" an dieser Uhr? (jede s? Jede
> 1/2s?)
> Was kann dann geschehen? (Anzeigesegment an/aus, etc...)
> Wielange benötigt der uC dafür? (irgendwelche xx...xxxx us)
> --> die restliche Zeit bis zum nächsten "Geschehnis" MUSS der uC in den
> Stromspar&Schlafmodus gehen, danach wieder geweckt werden.


Vielen Dank für deine Antwort.

Der Controller tritt zuerst in die state machine ein. Falls er sich im 
Display State befindet (der Normalfall wenn nicht gerade Eingaben 
erfolgen oder der Alarm ausgelöst ist), aktualisiert er mit jedem 
Schleifendurchlauf der Mainloop das LCD.

Danach werden die Taster abgefragt und der Temperatursensor ausgelesen.
Im Sekundentakt bekommt der Controller einen Interrupt der die Zeit 
erhöht.

Du hast aber vollkommen recht. Es reicht ja eigentlich wenn die Anzeige 
ausgelöst durch den Interrupt aktualisiert wird. Ich werde mich mit dem 
Sleep Mode beschäftigen. Das war mir bisher noch unbekannt.
Gast #5364086
Lesenswert?

- BC547 hat kein Vorwiderstand
- die Labels führen alle ins Leere
- AVCC, AREF und GND am Pin 22 würde ich nicht einfach offen lassen
- C2 und C2 sind auf einer Seite nicht mit GND verbunden
- 11MHz als Takt für eine Uhr? Da kannste auch was langsameres nehmen.
- wenn RV1 nicht richtig hochohmig ist, macht er dir die Batterie leer, 
ohne dass der Mikrocontroller läuft
- ob C1 mit den 5V verbunden ist, steht auch nicht fest

Da gibt es noch einiges zu tun am Schaltplan, bevor man überhaupt mit 
Software anfangen kann. Möglicherweise reicht auch ein kleinerer 
Prozessor, schließlich wird es nur eine Uhr.
Gast #5364088
Lesenswert?

Timo B. schrieb:
> Durch Messungen hat sich gezeigt das das LCD Display den meisten Strom
> benötigt

Richtig.
Ich habe zwar kein Datenblatt zum DC162C gefunden und du hast keines 
verlinkt, aber diese alphanumerischen Displays sind bekannt für hohen 
Stromverbrauch.
Nimm ein nacktes Glas mit 4 7-Segment Stellen.
Dazu dann einen Controller mit vielen Anschlüssen (oder 74HC595).
Dann einen 32768Hz Quartz.
Dann lass den Controller möglichst lange schlafen, aufwachen per Timer 
so 100x pro Sekunde, man multiplext so ein Display locker mit 100Hz, 
damit fragt man auch die Tasten ab und alle 50x schaltet man den 
Doppelpunkt um.

Dann läuft das auch mit Batterie.

Den DS1820 noch schlafen legen oder per PortPin abklemmen.
#5364562
Lesenswert?

Nochmal vielen Dank für die zahlreichen Antworten und Anregungen.
Ich habe den Schaltplan nochmal akualisiert. Die Änderungen im Folgenden 
aufgeliestet:

- C1 zwischen GND und 5V gesondert in Zeichnung dargestellt
- C1 Label auf den richtigen Wert gesetzt (100nF)
- Pin 22 mit GND verbunden
- AREF mit VCC verbunden
- AVCC mit VCC verbunden
- Typo bei Y1 verbessert
- J1 auf ISP geändert
- Poti von VDD des LCD entfernt
- Basiswiderstand für Transistor eingefügt
- Widerstand an Kollektor des Transistor eingefügt

Offene Punkte:
- Reicht C1 für die Verbindung von AVCC mit VCC oder muss noch ein 
zusätzlicher Kondensator nach GND?
- Durch die Entfernung des Poti von VDD des LCD hat sich der Strom von 
10mA auf 8mA reduziert. Ist ein Poti an V0 notwendig?
- Ist der Basiswiderstand des Transistor richtig gewählt?
- Wie bestimmte ich die Größe des Widerstand für den Kollektor des 
Transistor?
- Ich habe mir jetzt mal einen 32kHz Quarz bestellt. Ist es damit 
dennoch möglich die notwendige Baudrate für eine spätere serielle 
Kommunikation zu ermöglichen?


Bezüglich des Stromverbrauchs der HGB des LCD habe ich nochmal im 
Datenblatt nachgeschaut. Die Angaben sind max. 220mA und typ. 130mA.
(http://cdn-reichelt.de/documents/datenblatt/A500/LCD162C%23DIS.pdf)
Wie bekomme ich den Verbrauch von meinen 220mA auf die 130mA?

Sobald die Schaltung soweit es geht optimiert ist kümmer ich mich um die 
Umstrukturierung der Software (Verwendung des Sleep Mode)

Wäre super wenn ihr bitte nochmal über die Schaltung schauen könntet und 
mir bei der Beantwortung der offenen Punkte behilflich sein könntet.
Angehängte Dateien:
Gast #5364656
Lesenswert?

Timo B. schrieb:
> - Widerstand an Kollektor des Transistor eingefügt
Wenn du den Transistor jetzt noch richtig rum einbauen würdest.....
Dann würde sich mein Augenkrebs, direkt und deutlich, mildern.

Frage:
Ist im Display schon eine Strombegrenzung für die LED eingebaut?


Du hast Aref an Vcc geklemmt!
Das ist unnötig, und aus meiner Sicht sogar grotten falsch!



Timo B. schrieb:
> - Ich habe mir jetzt mal einen 32kHz Quarz bestellt. Ist es damit
> dennoch möglich die notwendige Baudrate für eine spätere serielle
> Kommunikation zu ermöglichen?
Der µC kann dann mit 8MHz intern laufen.
Damit sind einige Baudraten recht gut möglich.
Eine Kalibrierung mit Temperaturkompensation, wäre dann kein großer 
Fehler.
Gast #5364720
Lesenswert?

Timo B. schrieb:
> AREF mit VCC verbunden

Wie kommst du denn jetzt auf DAS?

Timo B. schrieb:
> Ist es damit dennoch möglich die notwendige Baudrate für eine spätere
> serielle Kommunikation zu ermöglichen?

Notfalls Software-UART.

Timo B. schrieb:
> Wie bekomme ich den Verbrauch von meinen 220mA auf die 130mA

Anderes Exemplar kaufen. Das sind Exemplar- (und 
Umgebungsbedingungen)streuungen.

Aber ob 220 oder 130: Beides ist um Grössenordnungen zu viel, es ist das 
falsche Display.

Timo B. schrieb:
> Ist ein Poti an V0 notwendig?

Bei solchen Displays: Ja. Man kann auch ein mal einstellen und danach 
mit Temperaturkompensation nachregeln, Schaltungen finden sich öfter in 
den Datenblättern, aber weniger Strom braucht das auch nicht.
#5364728
Lesenswert?

Arduino F. schrieb:
> Wenn du den Transistor jetzt noch richtig rum einbauen würdest.....
> Dann würde sich mein Augenkrebs, direkt und deutlich, mildern.
>
> Frage:
> Ist im Display schon eine Strombegrenzung für die LED eingebaut?
>
>
> Du hast Aref an Vcc geklemmt!
> Das ist unnötig, und aus meiner Sicht sogar grotten falsch!
>
> Der µC kann dann mit 8MHz intern laufen.
> Damit sind einige Baudraten recht gut möglich.
> Eine Kalibrierung mit Temperaturkompensation, wäre dann kein großer
> Fehler.

Danke für den Hinweis mit dem Transistor auch wenn man das deutlich 
zurückhaltender ausdrücken kann.

Deine Frage mit der Strombegrenzung kann ich nicht beantworten. Habe 
dazu im Datenblatt nichts gesehen. Inwiefern ist das notwendig?

Wenn ich es nicht falsch verstanden habe, wurde mir ein paar Posts 
weiter oben dazu geraten AREF nicht offen zu lassen. Hab ich das falsch 
interpretiert oder gehen da die Meinungen einfach auseinander?


@MaWin: Gibt es denn 16x2 Displays die besser geeignet wären oder ist 
das ein generelles Problem dieser Displays? Ich würde nämlich nur ungern 
7-Segment Anzeigen verwenden.
#5364765
Lesenswert?

AREF kannst du unbeschaltet lassen, wenn du den ADC des atmega nicht 
nutzen möchtest. Wenn du den Adc mit interner referenz benutzen 
möchtest, baue einen Kondensator von Aref nach Gnd ein und schließe 
sonst nichts an. Wenn du Vdd als referenz für den adc verwenden 
möchtest, dann kondensator nach masse und anschließen an Vdd.
AVCC, VCC am atmega und VDD am LCD bekommen jeweils einen eigenen 
100nF-C gegen Gnd.

Den Vorwiederstand für die HGB kannst du einfach durch Probieren 
herausfinden. Oder du rechnest ihn aus. Flussspannung der Led aus dem 
LCD-Datenblatt und maximaler Strom, der Rest ist dann wie für jede 
andere Led. Dunkler kannst du dann über Pwm machen.

Und versorge den Temperatuesensor aus einem Portpin des Atmega, dann 
kannst du den auch komplett abschalten um strom zu sparen.
#5364773
Lesenswert?

Arduino F. schrieb:
> Timo B. schrieb:
>> - Ich habe mir jetzt mal einen 32kHz Quarz bestellt. Ist es damit
>> dennoch möglich die notwendige Baudrate für eine spätere serielle
>> Kommunikation zu ermöglichen?
> Der µC kann dann mit 8MHz intern laufen.
> Damit sind einige Baudraten recht gut möglich.
> Eine Kalibrierung mit Temperaturkompensation, wäre dann kein großer
> Fehler.

mit einer genauen 2^15Hz Referenz oder schlicht Uhrenquarz) kann man den 
internen RC-Oszi einfach kalibrieren. Suchfunktion im Forum sollte dazu 
einiges liefern. Dann ist auch die Baudrate wunschgemäß.
Gast #5364786
Lesenswert?

> @MaWin: Gibt es denn 16x2 Displays die besser geeignet wären oder ist
> das ein generelles Problem dieser Displays? Ich würde nämlich nur ungern
> 7-Segment Anzeigen verwenden.

Tja, 4 Stellen * 7 Segmente sind erst einmal viel weniger als 16 Stellen 
 2 Zeilen  5 * 7 Segmente.
Dann kommt noch die umfangreichere Ansteuerlogik (Zeichendecoder, 
Anzeigespeicher, uC-Schnittstelle) hinzu. Will alles auch von der Tafel 
speisen
Gast #5364797
Lesenswert?

Timo B. schrieb:
> Danke für den Hinweis mit dem Transistor auch wenn man das deutlich
> zurückhaltender ausdrücken kann.

Im vorherigen Threadverlauf, hast du die Ansage "Transistor falsch rum" 
ignoriert, oder übersehen.
Und so immerhin bemerkt.

Timo B. schrieb:
> Wenn ich es nicht falsch verstanden habe, wurde mir ein paar Posts
> weiter oben dazu geraten AREF nicht offen zu lassen. Hab ich das falsch
> interpretiert oder gehen da die Meinungen einfach auseinander?
Nein, da gehen die Meinungen nicht auseinander, soweit ich weiß.
1. Eine Beschaltung ist empfehlenswert.
2. Aber auf Vcc zu klemmen ein Fehler.
Also: Falsch interpretiert.
Im Datenblatt des µC steht, wie man es machen sollte, falls du uns/mir 
nicht glaubst.
Beitrag #5364851 wurde von einem Moderator gelöscht.
#5364855
Lesenswert?

Ok vielen Dank. Habe die angesprochenen Punkte nun verbessert und V3 vom
Schaltplan angefügt.

Geändert wurden jetzt:
- AREF mit 100nF C nach GND
- AVCC mit 100nF C nach GND
- VDD vom LCD mit 100nF nach GND
- Richtung des Transistor geändert

Noch offene Punkte:
- Könnte ich z.b. VDD von T1 an PB1 hängen. Wie sieht das dann mit dem
erwähnten Widerstand R2 aus? Das ist mir nicht ganz klar.

Danke für die Vorschläge für ein anderes Display. Ich glaub ich belass 
es jetzt aber mal bei dem LCD und beobachte wielange die Batterien 
halten.
Bei dem Projekt geht es ja primär nur um den Lerneffekt.
Angehängte Dateien:
Gast #5364893
Lesenswert?

Timo B. schrieb:
> Gibt es denn 16x2 Displays die besser geeignet wären oder ist das ein
> generelles Problem dieser Displays? I

Die üblichen alphanumerischen Matrixdisplays haben nicht genügend 
Anschlüsse für jeden einzelnen LCD Punkt, das müssten bei 16 x 2 x 5 x 7 
ja 1120 sein, also Multiplexen sie, und das kostet Strom, auch weil 
Analogspannungen erzeugt werden müssen, sie brauchen also prinzipbedingt 
mehr, daher verwenden batteriebetriebene Uhren 7-Segmente.

Es gäbe stromsparendere als deines, z.B. EA DOG, oder Sharp LS013B4DN04 
oder eben e-Paper, aber selbst die brauchen mehr Strom als ein 7-Segment 
LCD.
Persönliche Seite #5364916
Lesenswert?

Timo B. schrieb:
> Gibt es denn 16x2 Displays die besser geeignet wären

Schau mal bei Electronic Assembly rein.
Zumindest die grafischen Displays brauchen ca. 100-150 µA; ohne 
Beleuchtung.
Ich würde für einen Wecker transreflektive Displays verwenden. Die 
brauchen im Normalfall nicht beleuchtet werden. Im Dunkeln kann man dann 
ja mal kurz die Beleuchtung aktivieren.
#5364937
Lesenswert?

So auch die Änderungen habe ich eingearbeitet.
Der aktuelle Schaltplan sieht nun wie angefügt aus.

Ich habe jetzt auch die Software etwas umstrukturiert.
Es wird alle 250ms ein Interrupt ausgelöst.
Bei jedem Interrupt werden die Buttons abgefragt und ggf. darauf 
reagiert.
Bei jedem vierten Interrupt wird die Zeit um eine Sekunde erhöht und die 
Anzeige aktuallisiert.

In der Zwischenzeit geht der Controller in den Idle Mode. S. Landolt 
hatte vorhin bemerkt das mit meinem 11,0592MHz Quarz nur dieser Modus 
möglich wäre.
Durch was begründet sich das?

Ich habe nun (dank eurer Hilfe) den Stromverbrauch im normalen Modus auf 
~5mA (von 10mA) reduziert bekommen. Sobald die HGB aktiviert wird, 
braucht er weiterhin 220mA. Ich glaub damit kann ich leben.

Kann man irgendwie berechnen wie lange damit die 4 AAA Batterien halten?

Ich würde gerne zusätzlich noch die Möglichkeit bieten den Wecker auch 
im Netzbetrieb zu betreiben. Was müsste ich hierfür beachten? Ich geh 
mal davon aus das ich nicht einfach die zweite Stromquelle parallel zu 
den Batterien hängen kann?
Angehängte Dateien:
Gast #5364948
Lesenswert?

Timo B. schrieb:
> Kann man irgendwie berechnen wie lange damit die 4 AAA Batterien halten?

Klar, suche wieviel Kapazität die Batterien haben und teile die durch 
die Stromaufnahme. Geschätzt haben die AAA 1000 mAh, bei 5 mA halten die 
dann ca. 200 h, damit ist die Uhr teuer und Umweltunfreundlich im 
Unterhalt.
Ca. 200 h weil die Kapazität bei höheren Strömen sinkt.
Zweite Stromquelle geht über Dioden (Schottky mit geringem 
Spannungsabfall)
Gast #5364958
Lesenswert?

> ... Idle Mode ... Durch was begründet sich das?

Die Tabelle im Abschnitt 'Sleep Modes', in meiner Datenblattversion 
Table 10-1.
Man benötigt für eine Uhr ja ein fortlaufendes Zeitsignal, das liefert 
ein Quarzoszillator; der Oszillator für 11 MHz braucht mehr Strom, 
außerdem läuft bei ihm der gesamte Controller mit; der asynchrone 32 
KiHz-Oszillator hingegen kommt mit wenig Strom aus und er läuft alleine, 
nur der Timer2 hängt noch dran.
#5364964
Lesenswert?

Jede Woche die Batterien wechseln ist natürlich weniger cool.
Das heißt ich komm an einem anderen Display nicht vorbei.
Dann werd ich mir die genannten mal näher anschauen und eins bestellen.
Aufjedenfall hab ihr mir sehr geholfen und ich hab was gelernt. Um mehr 
geht es bei dem Projekt ja eigentlich auch nicht. Meine Freundin hat 
sich eh schon über den Piezobuzzerton beklagt und somit wird der Wecker 
in seiner aktuellen Form eh keinen Einzug in unser Schlafzimmer finden.
#5365331
Lesenswert?

Timo B. schrieb:
> Insbesondere bei der Stromversorgung bin ich mir nicht ganz sicher.
> Ich möchte gerne eine möglichst hohe Lebensdauer der Batterien
> erreichen.
> Durch Messungen hat sich gezeigt das das LCD Display den meisten Strom
> benötigt (0,22A mit Hintergrundbeleuchtung). Ohne Hintergrundbeleuchtung
> sind es lediglich 0,01A für die Gesamtschaltung. Aus diesem Grund wird
> die Hintergrundbeleuchtung softwareseitig bei einem Knopfdruck für 10
> Sekunden aktiviert.

Hallo,
ich habe ein paar Vorschläge, um Strom zu sparen.

1. LCD mit Blau-Beleuchtung verbrauchen wie regel viel weniger, als 
grün. Z.B. 2004 braucht ca. 25 mA. Wenn Transistor für Beleuchtung nicht 
an PB0, sondern an PD6/OC0A oder PD5/OC0B hängt, kannst du 
LCD-Beleuchtung nicht nur einfach ein/ausschalten, sondern auch per PWM 
Lichtstärke anpassen und auch damit Strom sparen.

2. AVR hat auch CLKPR-Register. Somit kann man F_CPU runtersetzen, wenn 
keine großen Berechnungen notwendig sind - falls man nicht komplett 
schlafen will. Je niedriger bleibt F_CPU, um so geringer bleibt 
Stromverbrauch. Quarz 11,0592 MHz hat hier kaum etwas zu suchen. Das ist 
Quarz für USART, um übliche Baud Rate zu ermöglichen. Für eine 
Verwendung ohne USART - hier bringt das eher Komplikationen. Quarz ist 
für CPU gar nicht notwendig, es reicht RC-Oszillator. Auf XTAL1-2 lieber 
32768 Hz-Quarz hängen und mit Timer2 arbeiten. Noch mehr Strom kann man 
sparen mit einem Uhr-Modul, per I2C geschaltet. Die gibt es für 2 €. 
Dort hat man auch IRQ-Ausgang, so kann AVR auch schlafen, wenn nicht 
gebraucht. So ein Modul hat auch Platz für eine Li-Batterie, somit ohne 
zusätzlichen Aufwand wird Problem mit Uhr-Arbeit, wenn Strom 
abgeschaltet ist, gelöst..

AVR kann fast ganze Zeit schlafen und von Timer2 oder von IRQ von 
Uhr-Modul erweckt werden, um die Zeit zu zählen und um die Tasten zu 
befragen, dann wieder schlafen. PRR-Register: alles abschalten, was 
nicht gebraucht: ADC, USART, SPI, TWI
So kannst du viel Strom sparen.

Und noch etwas: Wenn Lautsprecher nicht an PC4 sondern an PB1/OC1A 
hängt, kannst du mit Timer1 in CTC einfache Melodien durchspielen.
C1 sollte natürlich nicht 100 p sein, das ist Quatsch. Am besten zwei in 
parallel: 100n und 10u, beides Keramik.
Auch für Reset schadet 100n-Kondensator nicht.

Timo B. schrieb:
> Es wird alle 250ms ein Interrupt ausgelöst.
> Bei jedem Interrupt werden die Buttons abgefragt und ggf. darauf
> reagiert.
> Bei jedem vierten Interrupt wird die Zeit um eine Sekunde erhöht und die
> Anzeige aktualisiert.

Die Tasten reagieren dann zu langsam. Hier wäre eine andere Lösung 
besser. Z.B. dass AVR durch Tastendruck aus dem Schlafen erweckt wird. 
Dann mit 10 ms entprellen, auf Tastendruck etwas machen und wieder 
schlafen - so lange nächste Sekunde oder nächsten Tastendruck kommt.

Kurz gefasst:
Timer 2 oder Uhr-Modul -> Uhr-Tik
Timer 1 in CTC -> alles mit Klang
Timer 0 in PWM -> LCD-Beleuchtung
Und wenn Rechenleistung nicht gebraucht, dann statt auf Tastendruck oder 
nächste Sekunde blöd warten -> Extended Standby
So bleibt AVR Hauptzeit mit Verbrauch ein paar uA und wird nur sehr kurz 
auf ein paar mA kommen.

Viele Grüße,

P.S.: auf dem zweiten Bild steht Transistor im Sinn Stromsparen sehr 
ungünstig. Erste Variante (natürlich mit pnp-Transistor) war besser. 
Noch besser hier wäre MOSFET, so wie IRLML2030
Gast #5365356
Lesenswert?

> Noch mehr Strom kann man sparen mit einem Uhr-Modul, per I2C geschaltet.

Auch wenn es hier konkret wegen der Anzeigenproblematik keine Rolle 
spielt, möchte ich doch diese Aussage relativieren: ein eigenes 
RTC-Modul halte ich für unnötigen Aufwand, falls die oben genannten 7.5 
uA tatsächlich zuviel sein sollten, nähme ich lieber einen neueren 
ATmega88PA, damit kommt man unter 1 uA, und das sollte dann doch 
reichen.
#5365952
Lesenswert?

Uhr-Modul vereinfacht vieles.
Wenn die Uhr von Stromnetz gehen sollte, dann wird sie so ohne 
zusätzlichen Aufwand auch ohne Strom weiter zählen. Wenn das mit Timer 2 
gemacht wird, so sollte man AVR in jedem Fall irgendwie weiter speisen.
Natürlich wenn die Uhr nur von Batterien läuft, gibt es Problem nicht.

So große "unnötigen Aufwand" ist das auch nicht: TO will sowieso 
Programmieren lernen, so schreibt er. Damit kann er I2C programmieren 
lernen.

Was Kosten betrifft: mit so einem Modul bekommt man gleich auch Quarz 
und Kondensatoren. Heutige RTC kann man im Programm auch abstimmen, also 
kein Trimmkondensator notwendig. Da von RTC auch ISR benutzt sein kann, 
bleibt Timer 2 für andere Zwecke verwendbar.
#5365966
Lesenswert?

S. Landolt schrieb:
> ein eigenes
> RTC-Modul halte ich für unnötigen Aufwand

und was ist mit Stromausfall?

Maxim B. schrieb:
> Uhr-Modul vereinfacht vieles.
> Wenn die Uhr von Stromnetz gehen sollte, dann wird sie so ohne
> zusätzlichen Aufwand auch ohne Strom weiter zählen. Wenn das mit Timer 2
> gemacht wird, so sollte man AVR in jedem Fall irgendwie weiter speisen.
> Natürlich wenn die Uhr nur von Batterien läuft, gibt es Problem nicht.
>
> So große "unnötigen Aufwand" ist das auch nicht: TO will sowieso
> Programmieren lernen, so schreibt er. Damit kann er I2C programmieren
> lernen.

sehe ich genauso, AVR schläft zu 99% und wird von der RTC geweckt wenn 
die Anzeige sich ändern soll oder er wecken soll, weitere Vorteil, der 
AVR baucht viel weniger Saft und die RTC übernimmt die Sekunden zählen 
und passend der Wecker für den AVR bereit zu stellen.

https://www.ebay.de/itm/DS3231-AT24C32-IIC-precision-Real-time-clock-module-memory-modul-DS3231/172320069240?_trkparms=aid%3D555018%26algo%3DPL.SIM%26ao%3D2%26asc%3D49134%26meid%3D1e263b30065b4843a05dbbe5fa99c807%26pid%3D100011%26rk%3D5%26rkt%3D12%26sd%3D300938684376%26itm%3D172320069240&_trksid=p2047675.c100011.m1850
#5365970
Lesenswert?

Es gibt sogar welche mit SPI.
Nachteil: die sind etwas teurer als mit I2C. Außerdem lernt TO dann I2C 
nicht.

Mit diesem Modul wäre sogar so möglich: man taktet AVR mit 32768 
Hz-Ausgang von Modul. Somit bleibt Schlafen überflüssig, AVR wird auch 
so wenig verbrauchen. Dann aber lernt TO Schlafmodus nicht...

Aber TO kann alle Varianten einfach ausprobieren.
#5366042
Lesenswert?

S. Landolt schrieb:
> Aber egal, jedem das Seine, was mich betrifft, so programmiere ich meine
> Uhrenfunktionen lieber selbst und versorge sie bei Stromausfall, wie
> gesagt, aus 0.22 F.

hatte ich bei meinem ersten Timer auch, aber 10,-€ nur für den DS3231 
Chip hier beim local Dealer oder 1,-€ mit LiR, EEPROM und Platine aus 
China machen mir heute die Wahl leichter.
Gast #5366061
Lesenswert?

S. Landolt schrieb:
> Wass nich all gibbt! Und das zu solchem Preis.
Es ist nicht alles Gold, was glänzt....

Viele dieser Uhren werden ohne Akku geliefert, und unbedarfte User 
klemmen da eine CR2032 in den Halter.
Das geht natürlich nicht lange gut...
Manche der CR versagen einfach, andere machen den den Deckel auf.

Abhilfe:
Ladeschaltung weg machen.


Ich finde diese besser, ebay 272553300625
Dort wird eine CR1220 verwendet.
Da spart man sich das EEPROM ein, und man kann die I2C Pullup so 
bestücken, wie man möchte.
Gast #5366106
Lesenswert?

Maxim B. schrieb:
> Was ist so schlecht mit CR2032? In PKW-Schlüssel arbeitet diese
> Li-Batterie ganz gut.
Ich habe gar nichts gegen diese Batterien!
Nur haben sie nichts in einer Schaltung mit Akkuladeeinrichtung zu 
suchen.

Das geht einfach nicht zusammen.
Gibt auch einige Berichte im Internet dazu.

Unter anderem, auch die Empfehlung, bei der Kombination, eine 
Schutzbrille zu tragen.
#5371505
Lesenswert?

Vielen Dank für eure Antworten. Ich kam die letzten Tage leider nicht 
dazu mich weiter mit dem Wecker zu beschäftigen. Über Ostern will ich 
jetzt die Zeit jedoch wieder dafür nutzen.

Ich habe mir jetzt ein DS3231 Modul besorgt und verwende wieder den 
internen 8Mhz Quarz. Die I2C Kommunikation mit dem Modul funktioniert 
auch bereits. Jedoch benötigt das Modul alleine 3,4mA (gemessen). Damit 
habe ich ja erstmal nichts gewonnen. Das Modul ist mit GND, 5V der 
Stromquelle sowie SDA und SCL des Controllers verbunden. Ist das 
vielleicht noch eine Konfigurationssache oder wie könnte man den 
Stromverbrauch des Moduls reduzieren?

Oder handelt es sich bei dem Stromverbrauch lediglich um das Laden des 
LIR2032 und der Verbrauch reduziert sich sobald dieser geladen ist?

Bei dem Modul handelt es sich um dieses:
https://www.amazon.de/DS3231-AT24C32-Clock-Memory-Arduino/dp/B00P9278HM/ref=sr_1_7?ie=UTF8&qid=1522425646&sr=8-7&keywords=ds3231
#5371550
Lesenswert?

Timo B. schrieb:
> Oder handelt es sich bei dem Stromverbrauch lediglich um das Laden des
> LIR2032 und der Verbrauch reduziert sich sobald dieser geladen ist?

möglich, oder sind Ladeverluste die immer anstehen oder das ist nur der 
Verbrauch bei Betrieb.

Ladeschaltung ausser Betrieb nehmen noch mal messen, evtl. ist eine CR 
2032 ohne Ladeschaltung günstiger.

Ich würde auch messen wenn keine I2C Kommunikation läuft.

Ausserdem gilt wer misst misst Mist, also mal die Meßschaltung 
untersuchen!
#5372133
Lesenswert?

G. H. schrieb:
> ich würde mal die LED verdächtigen ...

Danke für den Tipp. Habe die LED ausgelötet und den Stromverbrauch des 
Moduls auf 1,7mA reduziert.

Joachim B. schrieb:
> möglich, oder sind Ladeverluste die immer anstehen oder das ist nur der
> Verbrauch bei Betrieb.

Die Batterie läd jetzt seit ca. 5 Stunden und müsste ja eigentlich bald 
voll sein. Der Verbrauch hat sich dadurch noch nicht reduziert.
#5372159
Lesenswert?

Timo B. schrieb:
> Die Batterie läd jetzt seit ca. 5 Stunden und müsste ja eigentlich bald
> voll sein. Der Verbrauch hat sich dadurch noch nicht reduziert.

wie sollte er sich auch ohne echte Ladeschaltung reduzieren, das sind 
Ladeverluste, vermutlich wird der nie weiter runter gehen

http://www.produktinfo.conrad.com/datenblaetter/250000-274999/252279-da-01-en-KNOPFZELLENAKKU_LITHIUM_LIR2032.pdf
Rechnen wir mal

5V Versorgung
0,7V an der Diode
gibt ca. 4,3V
an
200 Ohm
4,2V bei voll
gibt 0,1V Differenz und damit

es fliesst weiterhin ein Strom von 0,5mA

da aber die typische Vf eine Si Diode stromabhängig ist und bei 1mA
https://www.vishay.com/docs/81857/1n4148.pdf
schon unter 0,7V liegt (hier 0,6V bei 1mA) haben wir einen Strom von

5V Versorgung
<0,6V an der Diode
gibt ca. >4,4V
an
200 Ohm
4,2V bei voll
gibt 0,2V Differenz

es fliesst weiterhin ein Strom von 1mA

mit jeder Menge Abweichung möglich.

Diese ewige Ladung liegt aber bei der LiR2032 mit 50mAh bei ca. 1/50 C 
und ist somit unkritisch

http://www.produktinfo.conrad.com/datenblaetter/250000-274999/252279-da-01-en-KNOPFZELLENAKKU_LITHIUM_LIR2032.pdf

Seite 4
#5372206
Lesenswert?

Das leuchtet mir ein. In dem Fall werde ich Ladeschaltung ausser Betrieb 
nehmen. Die CR2032 müsste ja auch einige Monate durchhalten?

Die Frage die bleibt ist jetzt nur wie ich die Ladeschaltung entfernen 
kann?
Reicht es die Si-Diode zu entfernen?

Nochmal vielen Dank für die ganze Hilfe in diesem Thread. Wirklich 
überraschend wie hilfbereit und freundlich die Leute hier sind. Ist man 
aus anderen Foren garnicht gewohnt :-)
#5372216
Lesenswert?

Timo B. schrieb:
> Die Frage die bleibt ist jetzt nur wie ich die Ladeschaltung entfernen
> kann?
> Reicht es die Si-Diode zu entfernen?

entweder die Diode oder den R201
https://i.ebayimg.com/images/g/~wcAAOSwgZ1XwBMc/s-l1600.jpg

wenn du sie aber noch mal nutzen willst ist es wohl besser den R201 
etwas zu verschieben das er nur noch mit einem "Bein" auf dem Lötpad 
liegt.

1. ist ein R201 leichter und billiger zu beschaffen als die Melf und
2. nimmt er weniger Platz ein wenn man den leicht versetzt lötet.

aber wie du es magst und schaffst.

Ich gebe zu die Diode ist besser zu packen weil größer.

Timo B. schrieb:
> Nochmal vielen Dank für die ganze Hilfe in diesem Thread. Wirklich
> überraschend wie hilfbereit und freundlich die Leute hier sind.
Beitrag "(Warum) ist das Forum (so) anfängerfeindlich?"

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren