Forum: Mikrocontroller und Digitale Elektronik Mikrocontroller zeitgesteuert "aufwecken"


von Jan S. (schwubbel)


Lesenswert?

Guten Morgen!
Ich möchte einen Mikrocontroller zeitgesteuert automatisch starten 
lassen (nach bis zu 48h ausgeschaltet). Kann man sowas über den 
Squarewave-Ausgang des DS1307 machen, oder gibt es andere Möglichkeiten? 
Ich stelle mir vor, dass der Ausgang eines ICs ein Flipflop betätigt, 
das wiederum einen Transistor ansteuert, der den Strom für den µC 
freigibt...
Danke für die Antworten,
Dominik

von Wolfgang (Gast)


Lesenswert?

Jan S. schrieb:
> Ich möchte einen Mikrocontroller zeitgesteuert automatisch starten
> lassen (nach bis zu 48h ausgeschaltet).

Warum läßt du ihn nicht schlafen und durch seinen eigenen Timer ab und 
zu kurz aufwachen, so dass er nachsehen kann, ob die 48h schon um sind?

von Jan S. (schwubbel)


Lesenswert?

Wolfgang schrieb:
> Warum läßt du ihn nicht schlafen und durch seinen eigenen Timer ab und
> zu kurz aufwachen, so dass er nachsehen kann, ob die 48h schon um sind?

 okay, ich präzisiere: es handelt sich um einen raspberry Pi. Ich weiß 
nicht, ob der einen Timer hat, mit dem man sowas machen kann. Das ganze 
soll auch möglichst stromsparend ablaufen. ich fürchte, dass der Pi viel 
Strom ziehen wird...


Aktualisierung: Der Raspberry Pi hat keinen Sleepmodus. Um den 
Stromverbrauch zu reduzieren, muss ich deshalb extern den Strom 
anschalten können.

von Hmm (Gast)


Lesenswert?

Wenn ich jetzt auch zu faul bin einen konkreten Typ zu suchen, so gibt 
es doch, wenn ich mich recht entsinne, RTC (Real Time clock) chips, die 
einen Alarmausgang haben.

von Wolfgang (Gast)


Lesenswert?

Jan S. schrieb:
> okay, ich präzisiere: es handelt sich um einen raspberry Pi

Dann sag's doch gleich, damit man nicht erst rum rätseln muss.

von Cornelius Fillmore (Gast)


Lesenswert?


von Steven (. (ovular) Benutzerseite


Lesenswert?

Ich würde einen Atmel Tiny mit PicoPower bei 32kHz im Watchdog-Mode 
laufen lassen. Dann kann das RPi sogar dem µC beischeid geben, wenn 
wieder Zeit ist zum Schlafen...

Strombedarf im Sleepmode ca. 500nA
also so ca 3µW

Gruß
Ovular

von Jan S. (schwubbel)


Lesenswert?

Danke für die Antworten! Die Variante mit dem Atmel Tiny ist sicher die 
eleganteste! Allerdings müsste ich mich da erst einarbeiten, deshalb 
werde ich wahrscheinlich den RCT mit Alarm-Ausgang nehmen, zum beispiel 
hier: 
http://www.ebay.de/itm/5V-DS3231-IIC-Real-Time-Clock-Module-EEPROM-Memory-Temperature-Measure-Battery-/251300072934?pt=Elektromechanische_Bauelemente&hash=item3a82a6cde6

Cornelius Fillmore schrieb:
> Nimm das
>
> http://www.conrad.de/ce/de/product/494722/Wochenze...
>
> ist wie geschaffen für RPi Anwender.

aber nicht für mich! Der Timer muss auch über den Pi einstellbar sein, 
außerdem wird meine Anwendung per Akku versorgt.

von Steven (. (ovular) Benutzerseite


Lesenswert?

Wenn Du so einen Tiny programmieren kannst (Equipment hast...), ist das 
weniger das Problem.

Ich kann Dir einen kurzen Beispiel-Quellcode schicken.
Hab sowas noch in meinem Projektordner...

Gruß
Ovular

von Steven (. (ovular) Benutzerseite


Angehängte Dateien:

Lesenswert?

So, hier kannste mal gucken...

Soll ein Tiny861A gewesen sein.

Benötigt übrigends ca. 6µA

Gruß
Steven

von Steven (. (ovular) Benutzerseite


Lesenswert?

Ach ja,

man kann mit Atmel sogar noch mehr Strom sparen, er muss einen 32kHz 
Quarz zulassen und den PowerSave Mode haben (z.B. ATMega48A). Der 8-Bit 
Timer Timer2 kann den Controller wieder wecken.

In ca. 3-4Wochen werde ich das mal testen. Und vielliecht schreib ich 
sogar einen kleinen Artikel.

Gruß
Steven

von Alex (Gast)


Lesenswert?

Zwei Wochen sind vergangen.

von Steven (. (ovular) Benutzerseite


Lesenswert?

Dann hab ich ja nochmal so viel Zeit... :)

von Gerald G. (gerald_g)


Lesenswert?

Ich hatte das damals si gelöst, den avr nur mit dem watchdog Oszillator 
laufen lassen (den 32khz) und den watchdog interrupt auf die größte Zeit 
gesetzt (das ergab irgendwas um die 4 oder 8 Sekunden) und in den 
deepsleep versetzt.
Das sind insgesamt 3 oder 4 Register.
Wenn er aufwacht, einfach eine uint_32 variable hochzählen lassen. Bei 
erreichen eines Wertes der der Zeit entspricht, führst du die gewünschte 
Aktion durch, ansonsten wieder schlafen legen.
Nicht sonderlich genau (bestimmt +-20%) aber kann ja quasi kalibriert 
werden und ist unschlagbar im Verbrauch.

von Mike (Gast)


Lesenswert?

Alex schrieb:
> Zwei Wochen sind vergangen.

Steven () schrieb:
> Dann hab ich ja nochmal so viel Zeit... :)

Die zwei Wochen waren schon vor fast drei Wochen vorbei ;-)

von Dirk K. (dekoepi)


Lesenswert?

Das "+1 Jahr" hast du übersehen oder bist du durch ein Wurmloch hier? ;)

von Steven (. (ovular) Benutzerseite


Lesenswert?

@Gerald
Hat der Watchdog nicht 128kHz?
Auch wenn er 32kHz hätte, kann man laut Datenblatt ohne wdt mehr Strom 
sparen.
Damit man mit mit einem 32kHz Uhrenquarz Strom sparen kann, müsste man 
einen extern anschließen. Das ganze kann man vom Timer 2 steuern lassen.
D.h. Zählen und Interrupt auslösen.

Ich bin schon am zusammen suchen von Artikel Material.

Gruß
Ovu

von Gerald G. (gerald_g)


Lesenswert?

Attiny85 hat 32,xxx kHz.
Strom im power down:
Ohne watchdog timer: 2 uA
Mit: 10uA

Selbstentladung einer AA Batterie: 4% der 2500mAh: 11uA

Dass du bei einem externen Quarz strom sparst, bezweifle ich einfach 
mal.
Und die einzelnen Takte bei ein Quarz mit dem AVR Timer zu zählen geht 
auch nicht im power down mode. Intern mit dem watchdog im power down 
geht. Was eben Strom brauch, ist das aufwachen alle 4/8/16 Sekunden 
(weiß nicht mehr genau was mit dem Timer als Maximum geht)
Aber die paar Takte sind wahrscheinlich auch winzig im Stromverbrauch.
Ich denke nicht dass du es schaffst weniger zu verbrauchen, und ich 
denke auch nicht, dass es nötig ist.
(Es gibt auch etwas sparsamere Controller, aber hier bekommst du quasi 
von allen Ecken einen passenden Beispielcode)
Wie gesagt, die Batterie verliert von alleine schon mehr Energie, bei 
Akkus oder größeren Batterien ist das ein vielfaches davon.

: Bearbeitet durch User
von Steven (. (ovular) Benutzerseite


Lesenswert?

@Gerald
und doch sind es 128kHz. Zum Glück hab ich nachgeschaut, sonst hätte ich 
mir das so gemerkt.

Nicht jeder hat so eine "große Batterie" wie Du. Mir gehts (immernoch 
aktuell) darum mit einem Lithium-Ionen-Akku möglichst viel Laufzeit 
hinzubekommen. Ein solcher hat <2% pro Monat und 100mAh also etwa 2µA 
"Selbstentladestrom". Und wenn man jetzt eine Primärzelle hätte, läge 
der Strom sogar bei 0,1µA. Und da macht viel Stromsparen schon Sinn, 
gerade wenn es um sehr kleine Projekte geht.

Und 1µA mit laufendem Timer2 könnten schon möglich sein...
Aber ich will mal noch nicht zu viel versprechen.

Gruß
Ovu

: Bearbeitet durch User
von Steven (. (ovular) Benutzerseite


Lesenswert?

da gibts ja schon ein paar Hinweise:

Ultra low power

oder

Sleep Mode

Fehlt nur noch ein Beispielcode und ein Testaufbau.
Mal sehen, ob das wieder ein Jahr bei mir dauert. :)

: Bearbeitet durch User
von Gerald G. (gerald_g)


Lesenswert?

Ja, hast recht. Die 32kHz sind für einen externen Quarz angegeben.

Aber wie du 1uA himbekommen willst, wenn der AVR in power down schon 2uA 
benötigt ist mir schleierhaft. Aus diesem status kommt er übrigens nur 
nur einen externen interrupt, oder dem watchdog.

Wie gesagt, andere Hardware, oder mich überraschen. Bin sehr gespannt ob 
es eine Rückmeldung mit einem Prototyp gibt (wäre eigentlich eher 
überrascht).

von Steven (. (ovular) Benutzerseite


Angehängte Dateien:

Lesenswert?

Sooo, meine Damen und Herren!

Hier ist ein Programm im Anhang, einem ATMega88PA zugehörig.
Der Code ist recht globig, und kann und wird noch etwas reduziert.

Bei 3,3V Versorgungsspannung ergeben sich folgende Ströme.

Im PowerDown:
0,3µA
Im PowerSave mit Timer2 (1s sleep, 100µs awake(1MHz)):
1,2µA

Das ganze gemessen mit einem 220µF-Elko und einem Fluke 289 mit 10MOhm 
Innenwiderstand.
Gemessen habe ich einfach die Zeit, in der der Verbraucher den 
Kondesator um 10mV entläd.

(Hinweis: bei 3,3V!)
Nur Messgerät 65s -> 0,3µA
PowerDown     34s -> 0,6µA -> Iµc = 0,3µA
PowerSave     13s -> 1,5µA -> Iµc = 1,2µA  bei 1sec sleep und 100µs 
awake

Ein Präzisionspreis gewinne ich damit nicht, aber ich denke nicht dass 
die Summe aller Fehler über 20% liegen. Natürlich liese sich das auch 
genauer messen, aber für mich persönlich reicht das.


Jetzt mach ich mal noch ein neues Projekt, kopiere den Code und 
komprimiere ihn mal aufs Wesentiche. Mal sehen was mit dem 128kHz dann 
rauskommt.

Gruß
Steven

: Bearbeitet durch User
von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Steven () schrieb:
> Jetzt mach ich mal noch ein neues Projekt, kopiere den Code und
> komprimiere ihn mal aufs Wesentiche. Mal sehen was mit dem 128kHz dann
> rauskommt.

 Und was kommt bei diesem Projekt überhaupt raus ?
 Was macht dein uC überhaupt (abgesehen davon, daß er die meiste
 Zeit ohnmächtig ist) ?

von Amateur (Gast)


Lesenswert?

Ich hätte eine externe I²C-Uhr genommen und meinen µC via Interrupt 
aufwecken lassen.

Notfalls mittels FET in der Versorgung.
Letzteres sollte den µC-Stromverbrauch in die Nähe von Null drücken.

Die Uhren sind relativ genau, ich kann also die tatsächliche Zeit 
jederzeit auslesen. Wenn mich nicht alles täuscht bist Du mit 0,4µA 
dabei.
Irgendwo habe ich mal eine gesehen, die das 32KHz-Signal ausgibt, 
wodurch man sich den µC-Quarz spart.

von Steven (. (ovular) Benutzerseite


Lesenswert?

Er ist für das Powermanagement eines 50mAh Li-Ion-Akkus tätig.

-schaltet die Versorgungsspannung zum Rest der Schaltung per P-Kanal 
Mosfet.
-soll Tiefentladung vermeiden, geht dann in den Power-Down, und lässt 
sich nur durch eine Lade-Kontrollspannung wecken.
-Die versorgte Schaltung soll an- und ausgeschaltet werden können, per 
Taster.

Also nix besonderes.

Gruß
Steven

von avr (Gast)


Lesenswert?

Gerald G. schrieb:
> Attiny85 hat 32,xxx kHz.
> Strom im power down:
> Ohne watchdog timer: 2 uA
> Mit: 10uA

Das kommt mir zu viel vor. Sind die Portpins auf einem definiertem 
Level? Welche Versorgungsspannung? BOD aktiv?

von Steven (. (ovular) Benutzerseite


Lesenswert?

Amateur schrieb:
> Ich hätte eine externe I²C-Uhr genommen und meinen µC via
> Interrupt
> aufwecken lassen.
>
> Notfalls mittels FET in der Versorgung.
> Letzteres sollte den µC-Stromverbrauch in die Nähe von Null drücken.
>
> Die Uhren sind relativ genau, ich kann also die tatsächliche Zeit
> jederzeit auslesen. Wenn mich nicht alles täuscht bist Du mit 0,4µA
> dabei.
> Irgendwo habe ich mal eine gesehen, die das 32KHz-Signal ausgibt,
> wodurch man sich den µC-Quarz spart.

Und die Gesamtschaltung soll weniger Stromverbrauchen als meine Lösung?
Gerne lese ich mir ein Datenblatt dazu durch, wenn du mir ein Link 
schickst.

Außerdem darf diese Schaltung nicht mehr Fläche verbrauchen als grob 
35mm².
Und es sollen variable Sleep-Zeiten von 60µs bis mehrere Sekunden 
programmierbar sein.

Gruß
Steven

von Joachim B. (jar)


Lesenswert?

Steven () schrieb:
>> Ich hätte eine externe I²C-Uhr genommen und meinen µC via
>> Interrupt
>> aufwecken lassen.

ich auch mit dem DS3231, statt 32kHz Quarz MC

> Außerdem darf diese Schaltung nicht mehr Fläche verbrauchen als grob
> 35mm².

das könnte ein Problem werden

> Und es sollen variable Sleep-Zeiten von 60µs

das auch

> bis mehrere Sekunden programmierbar sein.

das nicht

aber hinterher die Bedingungen zu nennen ist nicht die feine englische 
Art ....

von Steven (. (ovular) Benutzerseite


Lesenswert?

Joachim B. schrieb:
> aber hinterher die Bedingungen zu nennen ist nicht die feine englische
> Art ....

Ich schildere auch kein Problem, sonder versuche dem TE bzw. anderen 
Interessenten zu helfen.

von Amateur (Gast)


Lesenswert?

Schau Dir mal die PCF8563 von NPX an. Muss aber nicht sein.
Die gibt es in verschiedenen Büchsen (8-10Anschlüsse).
Ein Nachteil: Fixe Anschrift (A2/A3)

von Steven (. (ovular) Benutzerseite


Lesenswert?

Amateur schrieb:
> Schau Dir mal die PCF8563 von NPX an. Muss aber nicht sein.
> Die gibt es in verschiedenen Büchsen (8-10Anschlüsse).
> Ein Nachteil: Fixe Anschrift (A2/A3)

Das liest sich tatsächlich interessant. Ist auch relativ klein.
Danke für den Tipp, merke ich mir.

von Joachim B. (jar)


Lesenswert?

Steven () schrieb:
> Ich schildere auch kein Problem, sonder versuche dem TE bzw. anderen
> Interessenten zu helfen.

OK der TE hat sich hier nie wieder blicken lassen und hatte als 
Bedingung keine 35mm² sondern einen PI der zwar eine RTC auch mit Int 
über I2C programmieren kann, aber kein sleep beherrscht und 32kHz Quarz 
und sowieso auch runtergefahren weiter Strom frisst....


aber egal, wenn Programmierbarkeit ab 60µs besteht und 32kHz Quarze 
angeschlossen werden können und keine Fläche für einen DS3231 zur 
Verfügung steht dann hilft dein Tipp wirklich.

von Steven (. (ovular) Benutzerseite


Lesenswert?

@Joachim
Es wurde ja auch nach meinem Problem gefragt, also hab ich darauf 
geantwortet.
Mir waren die RTCs nicht mit so geringen Strömen bekannt, hilft mir aber 
so oder so nicht weiter.
Jedenfalls versuche ich gerade, den Stromverbrauch eines AtMega88PA auf 
ein Minimum zu reduzieren. In wie weit das für Euch Sinn macht, wenn ihr 
auf ein RTC zurückgreifen wollt, ist dahingestellt.
Jedenfalls habe ich den Code schon vor einem Jahr versprochen 
einzustellen, und jetzt ist er da. Wers nicht braucht kann gern den 
nächsten Thread aufmachen.

Das mag sein, dass das etwas zickig klingt, aber für mich ist es 
jedenfalls nützlich.

Gruß
Steven

von Steven (. (ovular) Benutzerseite


Lesenswert?

Jo, Fehler hab ich auch ein paar eingebaut.
Neue Version kommt demnächst...

von Gerald G. (gerald_g)


Lesenswert?

avr schrieb:
> Gerald G. schrieb:
> Attiny85 hat 32,xxx kHz.
> Strom im power down:
> Ohne watchdog timer: 2 uA
> Mit: 10uA
>
> Das kommt mir zu viel vor. Sind die Portpins auf einem definiertem
> Level? Welche Versorgungsspannung? BOD aktiv?

Das sind die Werte aus dem Datenblatt :P

von avr (Gast)


Lesenswert?

Stimmt, aber auch nur im gesamten Temperaturbereich. Bei 25°C sieht es 
deutlich niedriger aus.

von Steven (. (ovular) Benutzerseite


Angehängte Dateien:

Lesenswert?

Mal wieder etwas weiter gekommen...

benötigt ca. 1,2µA


EDIT:
Hoppla, die Sleep-Zeit war nicht auf 1sec eingestellt

: Bearbeitet durch User
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.