Forum: Mikrocontroller und Digitale Elektronik Uhrzeitbaustein I2C Schaltausgang


von Markus M. (poesel)


Lesenswert?

Hi,

ich möchte flexibel zeitgesteuert einen uC komplett von der 
Spannungsversorgung trennen.
Das Problem hatten schon andere und das wurde hier ausgiebig diskutiert:
Beitrag "Zeitgesteuertes Schalten eines Verbrauchers ohne Mikrocontroller"

Die Lösung dort war, entweder einen ATTiny zu bentzen oder einen 
Uhrenbaustein. Der Baustein wäre die von mir bevorzugte Lösung.
Leider kenn ich mich in der Materie nicht gut aus.

Meine Frage: welcher Baustein ist geeignet?

Anforderung:
- per I2C muss die Wartezeit eingestellt werden können (entweder schlafe 
<x> Sekunden oder schlafe bis <Datum, Uhrzeit>
- Schaltausgang für einen MOSFET
- geringer Stromverbrauch

Optional:
- Eingang zum aufwecken

Ideal wäre ein Breakout-board, weil das auch von Laien verdrahtet werden 
soll.

Danke!

von Axel S. (a-za-z0-9)


Lesenswert?

Markus M. schrieb:
> ... entweder einen ATTiny zu bentzen oder einen
> Uhrenbaustein. Der Baustein wäre die von mir bevorzugte Lösung.
> Meine Frage: welcher Baustein ist geeignet?
>
> - geringer Stromverbrauch

Den hat jede RTC.

> - per I2C muss die Wartezeit eingestellt werden können (entweder schlafe
> <x> Sekunden oder schlafe bis <Datum, Uhrzeit>

Das zweite hat jede RTC mit Weckfunktion. Das erste ist trivial auf das 
zweite zurückzuführen.

> - Schaltausgang für einen MOSFET

Der Schaltausgang ist typischerweise ein open-drain oder open-collector 
Ausgang (hochohmig wenn inaktiv). Je nachdem was und wie du schalten 
willst, muß da noch etwas Elektronik dazwischen.

> Optional:
> - Eingang zum aufwecken

Typischerweise "wacht" eine RTC auf, wenn die normale Stromversorgung 
anliegt. Dann ist sie auch per I²C ansprechbar. Wenn die Stromversorgung 
aus ist, läuft sie dann aus Batterie/Akku/Goldcap bei minimalem 
Stromverbrauch weiter.

> Ideal wäre ein Breakout-board, weil das auch von Laien verdrahtet
> werden soll.

Mittlerweile ein Klassiker sind die DS3231 Boards vom Chinamann. Gibt es 
wahlweise bei Ali-Express, ebay, Amazon.

von K. S. (the_yrr)


Lesenswert?

DS3231 wäre eine Option, kannst einen Alarm setzen und dann über dein 
_INT_/SQW Pin aufwecken (Interrupt auf fallende Flanke/ low und nen 
Pullup dran oder den Internen vom µC nutzen). Problem ist dass bei 
einigen Breakout boards der Pin nicht auf den Pfostenstecker geführt 
wird (zumindest bei denen die ich habe), dafür aber noch eine Pfosten 
unbenutzt ist.

: Bearbeitet durch User
von Sebastian S. (amateur)


Lesenswert?

Übliche RTCs erfüllen Dir Deine gewünschten Anforderungen.

Sie sind oft auch sparsamer als ein Mikrocontroller.

Manche haben sogar einen Quarz eingebaut.

Die meisten haben EINEN Schaltausgang. Der wird aber üblicherweise dazu 
verwendet, einen µP aufzuwecken. Der kann aber seinerseits dann alles 
Mögliche tun. Also auch ein Relais schalten.

Intern sehen die Teile oft folgendermaßen aus:

Eine Uhr. Achtung: Die musst DU stellen, da die hellseherischen 
Fähigkeiten gering sind. Auch ist alle paar Monate eine Korrektur nötig.

Ein Wecker. Der ist, wie die Uhr von Dir zu programmieren und kann zu 
JEDEM gewünschten Zeitpunkt, den µP wecken bzw. den Schaltausgang, meist 
ein offener Kollektor, "betätigen".
Die Meisten können nicht "in 10 Minuten" wecken, sondern nur genau um: 
Tag+Monat+Jahr+Stunden+Minuten+Sekunden. D.h. nach jedem Wecken, ist der 
Wecker neu zu programmieren. Ich kenne aber nicht alle.

Außenbeschaltung:
2 Pins Versorgung (Normale Versorgung und
2 Pins Quarz (falls nicht eingebaut)
  Achtung: Meist ein 32KHz Uhrenquarz.
  Der µP braucht weiterhin seinen eigenen Quarz, meist im MHz Bereich.
2 Pins I2C
1 Pin Akku/HiCab/Solarzelle oder so. Manchmal auch zwei Pins (+/-)
1 Pin Schaltausgang. Häufig offener Kollektor.
ev. 1 Pin Takt Ausgang. Ob und wie der zu nutzen ist, hängt vom
    jeweiligen µP ab.
Oder so.

Also ist ein Stand-Alone ohne jeden Kontakt zur Außenwelt nicht möglich, 
da die Uhr gelegentlich gestellt werden muss. Der Wecker kann nach jedem 
"Auslösen" vom µP gestellt werden, bevor dieser ins Bettchen hüpft.

: Bearbeitet durch User
von HildeK (Gast)


Lesenswert?

Markus M. schrieb:
> Die Lösung dort war, entweder einen ATTiny zu bentzen oder einen
> Uhrenbaustein. Der Baustein wäre die von mir bevorzugte Lösung.

Markus M. schrieb:
> Anforderung:
> - per I2C muss die Wartezeit eingestellt werden können (entweder schlafe
> <x> Sekunden oder schlafe bis <Datum, Uhrzeit>

Die beiden Aussagen passen nicht zusammen.
Wenn der Uhrenbaustein I2C hat, wie willst du ihn ohne µC bedienen?
Ich jedenfalls habe keinen I2C-Anschluss am PC oder am Android-Teil.

von Markus M. (poesel)


Lesenswert?

Danke an alle! Der DS3231 ist das, was ich gesucht habe.

@HildeK: ich will den nicht ohne uC bedienen. Der uC sagt dem DS3231 per 
I2C wann er wieder geweckt werden will und schaltet sich dann selber ab 
(über einen MOSFET). Der DS3231 läuft mit Batterie weiter bis zum 
Alarmzeitpunkt - dann schaltet er den uC wieder ein und das Spiel 
beginnt von neuem.

von Joachim B. (jar)


Lesenswert?

Markus M. schrieb:
> ich möchte flexibel zeitgesteuert einen uC komplett von der
> Spannungsversorgung trennen.

Markus M. schrieb:
> Der DS3231 läuft mit Batterie weiter bis zum
> Alarmzeitpunkt - dann schaltet er den uC wieder ein und das Spiel
> beginnt von neuem.

ohne Spannung?
ein schlafender µC muss doch nicht von der Spannung getrennt werden!

Ich verstehe den Sinn da nicht!

von Sebastian S. (amateur)


Lesenswert?

Irgendwie ist das ziemlich matschig.

Üblicherweise schaltet man einen µP nicht ab, sondern schickt ihn in den 
sleep mode.

Wie soll er denn sonst auch wieder aufwachen? Nur weil ein Pin wackelt?

Nicht nur "ohne Moos nichts los" sondern auch ohne Spannung.

Den Gedanken solltest Du auch nicht unter den Tisch plumpsen lassen, da 
Dein Relais auch im Schlaf angezogen sein soll. Oder etwa nicht.

von Rene K. (xdraconix)


Lesenswert?

HildeK schrieb:
> Ich jedenfalls habe keinen I2C-Anschluss am PC

Ich kenne so gut wie keinen PC der KEINEN i2c Ausgang hat. ? Gut, meist 
nur als THT auf dem Board. Und mit etwas Glück sogar auf zwei Pins 
rausgeführt. Und in der "Neuzeit" meist nur 1v8. Aaaaaaber da sind se in 
99% auf dem Mainboard irgendwo.

von Sebastian S. (amateur)


Lesenswert?

Wer unbedingt I2C am PC betreiben will: Dafür gibt es Schnittstellen.
Einfach mal nach "I2C USB" gurgeln.
Gibt es in verschiedenen Variationen.

von Axel S. (a-za-z0-9)


Lesenswert?

Joachim B. schrieb:
> Markus M. schrieb:
>> Der DS3231 läuft mit Batterie weiter bis zum
>> Alarmzeitpunkt - dann schaltet er den uC wieder ein und das Spiel
>> beginnt von neuem.
>
> ohne Spannung?
> ein schlafender µC muss doch nicht von der Spannung getrennt werden!

Er muß nicht. Man kann es aber so bauen.


Sebastian S. schrieb:
> Üblicherweise schaltet man einen µP nicht ab, sondern schickt ihn in den
> sleep mode.

Richtig. "Üblicherweise". Das heißt aber nicht, daß man es nicht anders 
machen könnte.

> Wie soll er denn sonst auch wieder aufwachen? Nur weil ein Pin wackelt?

Da hast du dich wohl ver-formuliert. Denn tatsächlich ist "am Pin 
wackeln" die übliche Methode, einen µC aufzuwecken. Genausogut kann man 
ihm aber den Strom auch ganz abschalten und ihn dadurch wecken, daß man 
den Strom wieder anschaltet. Ob abgeschaltet oder im deep sleep, das tut 
sich nicht viel. Der µC macht jeweils nichts. Deep sleep hat ganz 
offensichtlich den Vorteil, daß alle Variablen erhalten bleiben. Aber 
wenn man das gar nicht braucht ...

von HildeK (Gast)


Lesenswert?

Rene K. schrieb:
> Ich kenne so gut wie keinen PC der KEINEN i2c Ausgang hat. ? Gut, meist
> nur als THT auf dem Board.

Ich schrieb am PC, nicht im PC.
Intern gibt es vieles, worauf ich extern keinen HW-Zugriff habe. Und: 
I2C ist auch nicht gedacht für die Kommunikation nach extern.
Aber ich habe dein Smiley gesehen ...

Markus M. schrieb:
> @HildeK: ich will den nicht ohne uC bedienen. Der uC sagt dem DS3231 per
> I2C wann er wieder geweckt werden will und schaltet sich dann selber ab
> (über einen MOSFET). Der DS3231 läuft mit Batterie weiter bis zum
> Alarmzeitpunkt - dann schaltet er den uC wieder ein und das Spiel
> beginnt von neuem.
Ok. Hatte ich so nicht verstanden.

Aber dann wäre meine erste Wahl auch der Deep Sleep, bzw. sie war es vor 
zwei Jahren:
Tiny861, DS3231-Modul (billig, Fake-DS3231), betrieben mit 3 AA-Zellen. 
Der RTC weckte täglich einmal den µC (INT0-IRQ), der schaut im EEPROM 
des Moduls nach, ob ein Alarm für den aktuellen Tag ansteht (2-4/Woche) 
und lässt ggf. ein oder zwei LEDs aufblitzen - bis es quittiert wird. 
Das kann auch mal Stunden dauern. Selbst die Pausen bei den LED-Blitzen 
werden über den Tiefschlaf überbrückt. Das Ganze läuft nun seit Beginn 
mit dem damals bereits angebrauchten Batteriesatz.
An den INT0 habe ich über eine Diode den Quittungstaster mit 
angeschlossen, das wäre wäre auch für für dein Vorhaben der optionale 
"Eingang zum aufwecken".
Siehe Beitrag "Re: Mülltonnen-Blinker"

Ohne Alarm resp. ohne LED-Betrieb (bei dir ist es nur die 
MOSFET-Ansteuerung) und ohne Tastendruck, nur Tiny und RTC, benötigt die 
Anordnung nach meiner Hochrechnung keine 30mAh pro Jahr (3µA 
Stromaufnahme - die Modulbatterie des 3231 habe ich durch einen GoldCap 
ersetzt). Wenn man die RTC-Modulbatterie weiter nutzt, dann bleiben noch 
ein Rest für den schlafenden µC von deutlich unter 1µA! Das ist viel 
weniger sein als die Selbstentladung der Zellen.
Schon die Beschaltung für den Power-Schalter, den du suchst, wird nur 
mit Anstrengung in den Bereich kommen.

von HildeK (Gast)


Lesenswert?

Nachtrag:
Der Tranistortester im Unterforum "Projekte und Code" nutzt eine 
Schaltung ähnlicher Art.
Dort wird mit Taste aufgeweckt (müsste dein Alarmausgang übernehmen) und 
nach getaner Arbeit schaltet sich der µC selbst ab.

In dem Beitrag ist ein Schaltplan veröffentlicht (u.a.).

von Axel S. (a-za-z0-9)


Lesenswert?

HildeK schrieb:
> Aber dann wäre meine erste Wahl auch der Deep Sleep, bzw. sie war es vor
> zwei Jahren:
...
> Siehe Beitrag "Re: Mülltonnen-Blinker"

Der Mülltonnenblinker ist ein gutes Beispiel für eine Anwendung, wo man 
den µC genausogut komplett abschalten könnte statt ihn nur in den deep 
sleep zu schicken. Wenn für den aktuellen Tag kein Alarm ansteht oder 
wenn der Alarm quittiert wurde, gibt es nichts, was sich der µC bis zum 
nächsten Alarm merken müßte.

Wie sinnvoll das ist, steht natürlich auf einem anderen Blatt. Die 3µA 
die du für den deep sleep gemessen hat, dürften geringer sein als die 
Selbstentladung der Batterien. Ganz zu schweigen von der (mittleren) 
Stromaufnahme, wenn eine LED blinkt.

von Joachim B. (jar)


Lesenswert?

Axel S. schrieb:
> Joachim B. schrieb:
>> Markus M. schrieb:
>>> Der DS3231 läuft mit Batterie weiter bis zum
>>> Alarmzeitpunkt - dann schaltet er den uC wieder ein und das Spiel
>>> beginnt von neuem.
>>
>> ohne Spannung?
>> ein schlafender µC muss doch nicht von der Spannung getrennt werden!
>
> Er muß nicht. Man kann es aber so bauen.

wozu?

um die Energie die der µC abgeschaltet beim Schlafen verbraucht HÄTTE 
beim Einschalten wieder zu benutzen?

Das soll mal einer vorrechnen, der µC müsste auf der VCC getrennt werden 
die immer da sein muss, dazu einen Hi-Side Schalter, etwas Aufwand an 
Bauteile, das soll sparen?

von Axel S. (a-za-z0-9)


Lesenswert?

Joachim B. schrieb:
> Axel S. schrieb:
>> Joachim B. schrieb:
>>> Markus M. schrieb:
>>>> Der DS3231 läuft mit Batterie weiter bis zum
>>>> Alarmzeitpunkt - dann schaltet er den uC wieder ein und das Spiel
>>>> beginnt von neuem.
>>>
>>> ohne Spannung?
>>> ein schlafender µC muss doch nicht von der Spannung getrennt werden!
>>
>> Er muß nicht. Man kann es aber so bauen.
>
> wozu?

Das ist die falsche Frage.

Der TE wollte es so bauen. Und er kriegte jede Menge Antworten (wenn 
auch nicht exakt von dir) mit dem Tenor "das geht ja gar nicht". Doch, 
das geht. Wie sinnvoll es ist, ist eine andere Frage.

> um die Energie die der µC abgeschaltet beim Schlafen verbraucht HÄTTE
> beim Einschalten wieder zu benutzen?

Warum sollte der µC beim Einschalten mehr Energie verbrauchen als beim 
Aufwachen? Das ist praktisch genau das gleiche. Sogar daß der µC erstmal 
darauf warten muß, daß sein Oszillator wieder läuft.

> Das soll mal einer vorrechnen, der µC müsste auf der VCC getrennt werden
> die immer da sein muss, dazu einen Hi-Side Schalter, etwas Aufwand an
> Bauteile, das soll sparen?

Einfaches Beispiel: eine Schaltung die an einem unzugänglichen Ort 
möglichst lange aus Batterien laufen muß. Wenn ein Batteriewechsel 
€10.000,- kostet (weil man - sagen wir mal - eine Bergungsaktion mit dem 
Hubschrauber dafür braucht) dann sind die Kosten für den extra H-Side 
Schalter total irrelevant.

Aber ich wiederhole gerne nochmal, was ich schon gesagt habe: nein, ich 
halte das auch nicht für sinnvoll. Denn es gibt µC, die im deep sleep 
mit deutlich weniger als 1µA auskommen. Die weitaus meisten Batterien 
haben eine deutlich größere Selbstentladung. Und ein H-Side Schalter hat 
auch einen Leckstrom. Ein Laufzeitvorteil durch Abschalten gegenüber 
deep sleep wäre nur marginal oder evtl. auch gar nicht vorhanden.

von Markus M. (poesel)


Lesenswert?

Ich finde das spannend, das - insbesonders in diesem Forum - oft die 
grundsätzliche Sinnhaftigkeit der Aufgabe in Frage gestellt wird. Vor 
allem nachdem schon eine zufriedenstellende Antwort gefunden wurde.
Ein bischen mehr Vetrauen in den OP. :)

Also: der verwendete uC ist zu stromhungrig für den Dauerbetrieb und das 
leider auch im Deepsleep. Er läßt sich auch nicht mit vertretbarem 
Aufwand dazu erziehen. Alternativen zu diesem uC scheiden aus 
Kosten/Aufwandsgründen aus. Der Verlust des Speicherinhalts durch die 
Abschaltung stellt kein Problem dar.

von Joachim B. (jar)


Lesenswert?

Axel S. schrieb:
> Wenn ein Batteriewechsel
> €10.000,- kostet

war mir klar! WENN, aber egal

Axel S. schrieb:
> Denn es gibt µC, die im deep sleep
> mit deutlich weniger als 1µA auskommen. Die weitaus meisten Batterien
> haben eine deutlich größere Selbstentladung. Und ein H-Side Schalter hat
> auch einen Leckstrom

und kostet Geld und ist Aufwand also sind wir uns auch einig

Axel S. schrieb:
> ich
> halte das auch nicht für sinnvoll

von Tiefseeforscher (Gast)


Lesenswert?

ACHTUNG! Bei dem empfohlenen DS3231 und seinem Kollegen den DS3232 
funktioniert das WakeUp bzw. der _INT nur wenn der DS323x aktive 
gepowert wird und nicht auf der Backup Batterie läuft.  Es gibt auch 
noch andere Tücken die zu berücksichtigen sind, so lässt sich kein Monat 
und kein Jahr Programmieren, sondern nur ein Kalendertag oder ein 
Wochentag... hier ist also etwas Hirnschmalz in die Programmierung zu 
stecken... aber dafür gibt es ja Datenblätter, steht ja alles drin.

von Axel S. (a-za-z0-9)


Lesenswert?

Tiefseeforscher schrieb:
> ACHTUNG! Bei dem empfohlenen DS3231 und seinem Kollegen den DS3232
> funktioniert das WakeUp bzw. der _INT nur wenn der DS323x aktive
> gepowert wird und nicht auf der Backup Batterie läuft.

Das finde ich nicht im Datenblatt (Rev 7; 3/10 von Maxim). Kannst du das 
mal zeigen?

Außerdem betreibt HildeK seine Version des Mülltonnenblinkers eben so. 
Er schaltet Vcc des DS3231 ab und läßt ihn vom Backup-Goldcap laufen. 
Trotzdem funktioniert bei ihm das Aufwecken des µC durch den DS3231.

von Axel S. (a-za-z0-9)


Lesenswert?

Noch ein Hinweis an den TE: wenn du diese China-Module mit DS3231 und 
24C32 EEPROM verbaust, dann achte darauf, daß die eine Diode in Reihe 
mit 200Ω zwischen Vcc und Vbat bestückt haben. Das mag für eine 
aufladbare Li-Knopfzelle a'la VL2032 passen, jedoch nicht für eine 
CR2032 Einwegzelle.

Ich habe bei meinem Modul (für den Mülltonnenblinker ;) beide Bauteile 
entfernt. Dito die rote LED und ihren Vorwiderstand, die bei angelegter 
Vcc permanent leuchtet (Einschaltkontrolle).

Der Mülltonnenblinker-Thread (von HildeK oben verlinkt) enthält noch 
mehr Hinweise zu diesem Modul.

von HildeK (Gast)


Lesenswert?

Axel S. schrieb:
> Er schaltet Vcc des DS3231 ab und läßt ihn vom Backup-Goldcap laufen.
> Trotzdem funktioniert bei ihm das Aufwecken des µC durch den DS3231.

Korrekt.
Dass 'Tiefseeforscher' hier eine andere Erfahrung gemacht hat, mag daran 
liegen, dass auf dem Modul Pullups sind, die an VCC des Moduls hängen 
und nicht an der Backupbatterie!
Die PUs hatte ich entfernt und beim dauerversorgten µC eingebaut. Auch 
das EEPROM hat an den Adressleitungen PUs, man sollte also nicht die 
Subadresse 0 nehmen.
Ohne Modifikation ist es stromsparend nicht einsetzbar. Das fängt schon 
mit der LED an.

Die genannten 3µA werden hauptsächlich vom DS3231 verbraucht, der µC 
braucht ca. 10-20mal weniger (Auflösungsgrenze meines Multimeters).
Trotzdem: ein Satz AA mit ca. 2000mAh und den 3µA Standby (Sleep + RTC) 
rechnen sich zu mehr als 75 Jahre. Erstens erlebe ich das nicht mehr und 
zweitens ist die Mignonzelle längst selbstentladen und ausgelaufen.

Markus M. schrieb:
> Also: der verwendete uC ist zu stromhungrig für den Dauerbetrieb und das
> leider auch im Deepsleep. Er läßt sich auch nicht mit vertretbarem
> Aufwand dazu erziehen.

Die Info fehlte bisher, denn dann hätten die Deep-Sleep-Vorschläge 
wegfallen können.

Axel S. schrieb:
> Noch ein Hinweis an den TE: wenn du diese China-Module mit DS3231 und
> 24C32 EEPROM verbaust, dann achte darauf, daß die eine Diode in Reihe
> mit 200Ω zwischen Vcc und Vbat bestückt haben. Das mag für eine
> aufladbare Li-Knopfzelle a'la VL2032 passen, jedoch nicht für eine
> CR2032 Einwegzelle.

Interessanterweise wurden meine (China-)Module mit einer CR2032 
ausgeliefert; D und R waren bestückt :-).
Aber ich will mich nicht beklagen: sie waren billig, billiger als eine 
CR2032 alleine im Baumarkt ...

von Joachim B. (jar)


Lesenswert?

HildeK schrieb:
> Markus M. schrieb:
>> Also: der verwendete uC ist zu stromhungrig für den Dauerbetrieb und das
>> leider auch im Deepsleep. Er läßt sich auch nicht mit vertretbarem
>> Aufwand dazu erziehen.
>
> Die Info fehlte bisher, denn dann hätten die Deep-Sleep-Vorschläge
> wegfallen können.

eben lieber TO, erst mal wichtige Infos verschweigen und sich dann 
wundern das unbrauchbare Tipps kommen?

So stromhungrige µC im deepsleep gibts ja nicht so häufig, evtl. doch 
keinen PI nehmen :)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.