Forum: Mikrocontroller und Digitale Elektronik Erkennen ob Mikrocontroller im Ruhemodus ist


von Steff (Gast)


Lesenswert?

Hallo,
Hab ein Programm das jede Sekunde die Messwerte der Batterie abfgägt. 
Dies soll aber nur gemacht werden, wenn das zu betreibende Gerät auch 
gerade verwendet wird. Befindet sich das Gerät aber im Ruhemodus und 
wird gerade nicht benötigt, soll nur noch jede Stunde abgefragt werden.

Wie kann ich denn das am besten machen? Wo könnte ich denn das abfragen, 
ob gerade der Verbraucher in Betrieb ist und die Batterie in Anspruch 
genommen wird?

Danke schonmal im voraus

von Ralf (Gast)


Lesenswert?

Die Antwort ist: 42.

Was für ein Gerät? Das Gerät, an dem du bastelst? Oder ein 
angeschlossenes Gerät? Mehr Info...

Generell, wenn es um dein eigenes Gerät geht, wirst du ja selbst wissen, 
wann du im Ruhemodus bist und wann nicht.
Entsprechend dem Zustand richtest du einen Timer ein, der entweder jede 
Sekunde zuschlägt, oder nur jede Stunde. Falls es dein Gerät 
unterstützt, regel die Taktfrequenz runter, das macht es mit dem Timer 
evtl. ein bisschen leichter.

Ralf

von Steff (Gast)


Lesenswert?

Die Sekundenabfrage funktioniert ja schon. muss nur noch rausbekommen 
wann ich im ruhemodus bin. Die stundenabfrage ist dann nicht mehr so das 
Problem.

Das angeschlossene gerät ist beliebig. Man muss nur irgendwie abfragen 
ob gerade was von der Batterie gezogen wird oder nicht.

von ... .. (docean) Benutzerseite


Lesenswert?

dann miss die stromaufnahme (über shunt,...)

von Chris (Gast)


Lesenswert?

Dann musst du halt zusätzlich messen, wieviel von der Batterie gerade
gezogen wird, und wenn es >1mA ist, bist du aus dem Ruhemodus.

von Steff (Gast)


Lesenswert?

ahh ok

werds mal versuchen.danke

von Peter (Gast)


Lesenswert?

aber was hilft es am ende. Ob er jetzt nun die Spannung misst, oder jede 
Sekunde den Strom und dann bei bedarf die Spannung? Das erhöht doch die 
Stromaufname nur.
Das Feststellen ob das Gerät im Ruhezustand ist oder nicht, braucht doch 
mehr Energie als wenn man einfach jede Sekunde die Spannung misst.

von Steff (Gast)


Lesenswert?

das mit der zeit war nicht so genau zu nehmen. Werd es auch eventuell so 
machen das einfach nur alle 24 Stunden gemessen wird wenn es sich im 
Ruhemodus befindet. Dann würd es schon mehr Sinn machen,oder?

von Peter (Gast)


Lesenswert?

nein, woher willst du denn Feststellen ob das Gerät im Ruhezustand ist. 
Das ganze ist doch auch wieder eine Messung.

Also ist doch die Frage, wie schnell willst du wissen ob das Gerät im 
Ruhezustand oder nicht ist.

von Karl H. (kbuchegg)


Lesenswert?

Steff schrieb:
> das mit der zeit war nicht so genau zu nehmen. Werd es auch eventuell so
> machen das einfach nur alle 24 Stunden gemessen wird wenn es sich im
> Ruhemodus befindet. Dann würd es schon mehr Sinn machen,oder?

Das Problem ist ja nicht das Feststellen des Ruhemodus. Das Problem ist 
das Feststellen des Verlassens des Ruhemodus! Wenn du nur alle 24 
Stunden hinsiehst, verpasst du dass dein Gerät schon vor 8 Stunden 
aufgeweckt wurde und sich nach 1 Stunde wieder schlafen gelegt hat.

Du brauchst also einen Mechanismus, der ständig überwacht ob dein 
angeschlossenes Gerät noch ruht oder schon aktiv ist. Wenn du aber 
sowieso so einen Mechanismus zusätzlich brauchst (wenn ihn das Gerät 
nicht schon mitbringt), dann kannst du auch gleich deinen µC alle 
Sekunde nachsehen lassen.

von Steff (Gast)


Lesenswert?

Ja so schnell wie möglich, das ich weiß ob ich jede Sekunde oder nur 
jeden Tag messen muss. Das Abfragen ob das Gerät im Ruhemodus ist muss 
also immer erfolgen bis es im Ruhemodus ist. Würde es nicht so gehen das 
ich einmal Abfrag ob es im Normalbetrieb ist und lese dann jede Sekunde 
die Daten ein und Frag ab ob es sich im Ruhemodus befindet?
und dann wenn es sich im Ruhemodus befindet frag ich einfach nur alle 
24h ab.
Also dann einmal gleich am Anfang und wenn das gerät 24 Stunden nur 
rumliegt, einfach wieder nach 24 Stunden?

Würds so theoretisch gehn?

von Peter (Gast)


Lesenswert?

> und dann wenn es sich im Ruhemodus befindet frag ich einfach nur alle
> 24h ab.
und wie willst du jetzt mitbekommen ob das gerät nach 5min wieder 
aufwacht?

von Steff (Gast)


Lesenswert?

Also wäre es "wirtschaftlicher" jede Sekunde einfach zu messen, als 
einen großen Aufwand zu machen und den Ruhemodus auszuwerten?

von Karl H. (kbuchegg)


Lesenswert?

Steff schrieb:

> Würds so theoretisch gehn?

Du hast das Problem, das jeder Hellseher hat: Du kannst nicht in die 
Zukunft schauen :-)

Woher willst du wissen, das das Gerät nachdem es sich in den Ruhemodus 
begeben hat, dies auch für die nächsten 24 Stunden tun wird. Wer sagt 
dir, dass das Gerät in der Zwischenzeit nicht aufwacht und für 1 Stunde 
arbeitet? Im Extremfall schaust du alle 24 Stunden hin, erkennst den 
Ruhemodus und dein Auswertung ergibt dann, das das Gerät das letzte 
halbe Jahr nie den Ruhemodus verlassen hat, während in Wirklichkeit du 
immer nur zu den falschen Zeiten hingesehen hast.

Dein Problem ist eine Variante des Abtastproblems und die Lösung dazu 
liefert das Shannonsche Abtasttheorem: Die Hinschaufrequenz muss 
mindestens doppelt so hoch sein wie die 'Ruhephasenfrequenz' des 
Gerätes.
Sprich: Wenn du weißt, dass dein Gerät minimale Ruhepausen von 1 Stunde 
hat, dann musst du mindestens alle 1/2 Stunde hinsehen um keine 
Ruhephase zu übersehen.

von Peter (Gast)


Lesenswert?

JA,
du könntst aber mal etwas zu den Randbedingungen sagen.

Ist es eine "Uhrenbatterie" oder eine Autobatterie. Was hast du von der 
Messung, einfach messen und erebniss wegwerfen?

Hängt deine Messschaltung an der gleichen Batterie?

von Steff (Gast)


Lesenswert?

Die Daten werden von einem Überwachungsbaustein,der die Messdaten der 
batterie erfasst aufgenommen. Der Mirocontroller erfasst dann nur noch 
die Daten und wertet die auch aus.

Könnte man wenn der Controller im Ruhemodus ist und nichts mehr von der 
batterie gezogen wird den Controller nicht einfach "schlafen" legen und 
durch einen interrupt ihn nach 24 stunden wieder aufwecken um dann eine 
Messung durchzuführen?

von Karl H. (kbuchegg)


Lesenswert?

Erklär nochmal, wie da die Zusammenhänge sind. Wer überwacht wen? Wer 
macht was?

Irgendwie scheint mir das momentan noch ein Kuddelmudel zu sein.

> Könnte man wenn der Controller im Ruhemodus ist und nichts mehr
> von der batterie gezogen wird den Controller nicht einfach
> "schlafen" legen

Klar kann man. Das wird auch der Regelfall sein.

Hier sind alle davon ausgegangen, dass du 2 Schaltungen hast.

Schaltung A: die macht irgendwas und legt sich dann schlafen, braucht
    also wenig Strom. Auf diese Schaltung hast du keinen Einfluss.
    Insbesondere teilt dir diese Schaltung auch nicht vernünftig mit
    wenn sie ruht und wenn sie aktiv arbeitet

Schaltung B: Die soll Schaltung A überwachen. In Schaltung B sitzt der
    µC, dessen Aufgabe es ist, aus irgendeinem Grund rauszufinden, wann
    Schaltung A arbeitet und wann nicht.


Aber nach deinem letzten Post klingt das (zumindest für mich) alles ganz 
anders.

von Steff (Gast)


Lesenswert?

Hab eine Überwachungsschaltung, die die Messdaten der Batterie überwacht 
und Messdaten aufnimmt.
Der Mikrocontroller soll nur die Messdaten des überwachungsbausteins 
aufnehmen und auswerten und dann in einem Flash abspeichern. Das 
funktoniert auch alles soweit.

Wenn sich aber seit etwa 1 Stunde  nichts tut an der Batterie,also es 
wird nichts damit angetrieben und die batterie wird auch nicht geladen, 
dann soll sich alles in den Ruhemodus versetzten. Über eine externe Uhr 
soll es dann durch einen Interrupt aufgeweckt werden um kurz die 
aktuellen Messdaten zu erfassen. Danach wird es wieder schlafen gelegt.

von Karl H. (kbuchegg)


Lesenswert?

Steff schrieb:
> Hab eine Überwachungsschaltung, die die Messdaten der Batterie überwacht
> und Messdaten aufnimmt.
> Der Mikrocontroller soll nur die Messdaten des überwachungsbausteins
> aufnehmen und auswerten und dann in einem Flash abspeichern. Das
> funktoniert auch alles soweit.
>
> Wenn sich aber seit etwa 1 Stunde  nichts tut an der Batterie,also es
> wird nichts damit angetrieben und die batterie wird auch nicht geladen,
> dann soll sich alles in den Ruhemodus versetzten. Über eine externe Uhr
> soll es dann durch einen Interrupt aufgeweckt werden um kurz die
> aktuellen Messdaten zu erfassen. Danach wird es wieder schlafen gelegt.

Das heist doch aber auch, dass dein µC die Oberhand hat und die 
Überwachungsschaltung schlafen legen kann.

Also geht es im Grunde 'nur' darum rauszufinden, was mit der Batterie 
passiert. Wird exzessiv Strom entnommen oder reingeladen.

Ich würd trotzdem den µC jede Sekunde nachsehen lassen. Wenn der (samt 
Überwachungsschaltung) in der Zwischenzeit schläft, wird dein kompletter 
Stromverbrauch wahrscheinlich so niedrig sein, dass das die Lebensdauer 
der Batterie nicht wesentlich beeinflusst. Wenn es sich um eine 
vollgeladene Autobatterie (oder sowas ähnliches handelt) ist die 
Selbstentladeung höher, als das bischen, was der µC für sich braucht 
(von der Überwachungsschaltung kann man so nichts sagen. Hast du deren 
Stromaufnahme schon mal gemessen?)

von Steff (Gast)


Lesenswert?

wenn der mikrocontroller ja ebenfalls pennt kann er ja nicht mehr jede 
Sekunde messen. Der sollte dann schon über die externe Uhr wieder 
aufgeweckt werden. Im Ruhemodus soll nur noch die externe Uhr laufen, 
alles andere, wie der Mikrocontroller sind zu dieser Zeit komplett 
abgeschaltet.

in den Ruhemodus soll das ganze versetzt werden wenn mal 24 Stunden 
vergangen sind und die Batterie in der Zeit nicht geladen wird oder 
gerade ein verbraucher angeschlossen ist. Ist das alles mal im 
Ruhemodus, dann geht garnichts mehr und kann nur noch durch die externe 
Uhr aufgeweckt werden.

Ist die Erklärung bisschen besser?
Wie würdest du da vorgehen?

von Steff (Gast)


Lesenswert?

Bei dem Projekt geht es ja nicht so sehr darum ob es effizient mit oder 
ohne Ruhemodus ist. Es soll ja nur ein "Prototyp" für weitere Anwendung 
werden

von Peter (Gast)


Lesenswert?

> wenn der mikrocontroller ja ebenfalls pennt kann er ja nicht mehr jede
> Sekunde messen.
Das ist eine frage das ruhezustandes. Es gibt bei den Atmel auch ein 
Modus in dem er von einem Timer geweckt werden kann.

Die Frage ist aber immer noch WIE GROSS IST DENN DIE BATTERIE, geht es 
um jedes µA oder stört es dich auch nicht  wenn 1mA von µC verbaucht 
werden?

von Steff (Gast)


Lesenswert?

das würde eigentlich auch nicht stören. Ich glaub euch schon das es 
besser wäre einfach jede sekunde abzufragen, aber das Programm sollte 
halt mit der externen Uhr umgesetzt werden

von Karl H. (kbuchegg)


Lesenswert?

Steff schrieb:
> das würde eigentlich auch nicht stören. Ich glaub euch schon das es
> besser wäre einfach jede sekunde abzufragen, aber das Programm sollte
> halt mit der externen Uhr umgesetzt werden

Auch das lässt sich machen.
Der µC dreht sich selbst den Saft ab und die Uhr klemmt ihn wieder an.
Die Frage ist halt immer: wozu so kompliziert? Zusätzliche Komponenten 
bedeuten in erster Linie einfach nur zusätzliche Fehlerquellen.

von Steff (Gast)


Lesenswert?

Ja schon, aber die externe Uhr ist halt schon drauf und muss mitbenutzt 
werden. Hättest du mir da trotzdem ein Vorschlag?

von Karl H. (kbuchegg)


Lesenswert?

Steff schrieb:
> Ja schon, aber die externe Uhr ist halt schon drauf und muss mitbenutzt
> werden. Hättest du mir da trotzdem ein Vorschlag?

Wie soll den das gehen?
Bis jetzt schweigst du dich ja immer aus, wenn man mal nach Details 
nachfragt. Sogar der Batterietyp ist wieder mal top secret.

Wie ist die Uhr angeschlossen. Was kann die Uhr machen? Hat die einen 
Ausgang, mit dem sie etwas ansteuern kann? welche Uhr ist es eigentlich? 
Kann der µC die Uhr programmieren und ihr eine Alarmzeit vorgeben? ....

So wird das nichts.
Wenn du qualifizierte Hilfe haben willst, dann musst da mal ein paar 
Details mehr rausrücken als immer nur dieses 'Die Anwendung ist TOP 
Secret, das wird der Hammer wenns fertig ist' nichtssagend unkonkrete 
Geschwafel.

von Steff (Gast)


Lesenswert?

die externe Uhr ist ds1337. die wird über i2c mit dem mikrocontroller 
angschlossen.

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.