Forum: Mikrocontroller und Digitale Elektronik Sparsamer uC mit Timer Funktion


von Sven (Gast)


Lesenswert?

Hi Leute,

ich suche einen extrem sparsamen uC mit Timer Funktion. In meiner 
Anwendung muss der Timer gestartet und gestoppt werden können. Das 
Resultat kann ich notfalls auch über ein paar io-Pinne übertragen.

Es muss auch nicht ein uC sein, vielleicht gibt es ja sowas wie einen 
Timer-Baustein bzw Timer-Slave, das würde ausreichen. Nur muss dieser 
sehr wenig Strom verbrauchen.

Für die Zeit brauche ich eine Auflösung von 1ms. Mein Ansatz ist bis 
dato einen uC mit RC-Oszillator zu nehmen. Kennt dir da welche ?

Vielen Dank schon mal für eure Hilfe.

von 50c (Gast)


Lesenswert?


von 50c (Gast)


Lesenswert?

...und zum Thema:

Sven schrieb:
> In meiner
> Anwendung muss der Timer gestartet und gestoppt werden können.

...hat was zu bedeuten? Wäre schön, wenn du das mehr detaillierst...

von Sven (Gast)


Lesenswert?

Das hat zu bedeuten das der Haupt-uC einen Pin HIGH bzw LOW setzen kann, 
damit der uC mit RC Oszillator die Timer Funktion startet bzw stoppt.

von Schorschi (Gast)


Lesenswert?

Sven schrieb:
> Das hat zu bedeuten das der Haupt-uC einen Pin HIGH bzw LOW setzen
> kann,
> damit der uC mit RC Oszillator die Timer Funktion startet bzw stoppt.

Und was sind deine Anforderungen and "sparsam"?

von MaWin (Gast)


Lesenswert?

Sven schrieb:
> Kennt dir da welche ?

Im Prinzip jeden und keinen,

da du KEIN Wort üer 'wie sparsam' (wieviel Mikroampere), kein Wort über 
'wie genau' (RC ist ja wohl nicht besonders genau), kein Wort über die 
Art der Zeiteinstellung (Poti? fest programmiert?) genannt hast.

Vielleicht tut es ein CD4536.

von Sven (Gast)


Lesenswert?

Der Haut-uC startet die Zeitmessung des RC-Oszillators. Danach muss der 
Haupt-uC schlafen gehen. Der uC mit RC-Oszillator muss nun im Stande 
sein mit einem 100uF Stützkondensator eine Zeit von maximal 200ms zu 
messen.

Vielleicht ist sogar ein Frequenzzähler und ein Keramik-Oszillator 
besser geeignet. Genau darüber wollte ich hier Diskutieren.

von Einer K. (Gast)


Lesenswert?

Eine Logik kann ich bisher nicht erkennen.

Tipp:
Beschreibe das Ziel, nicht deinen Weg, auf dem du in die Irre gelaufen 
bist.

von Peter D. (peda)


Lesenswert?

Der ATmega48A braucht mit 32kHz Uhrenquarz <1µA.
Das Compareregister auf 32 eingestellt ergibt 1,007ms.

von Mario (Gast)


Lesenswert?

ein paar Details wären schon nicht schlecht
bei längeren Zeiten ginge auch eine RTC DS3231

von Alfons der Desinfektionsmittelspritzer (Gast)


Lesenswert?

Ein Haupt-µC? Du willst sparsam sein und zwei µC benutzen?

von MaWin (Gast)


Lesenswert?

Probiers mal mit der Cortex-M0 Serie.

von MaWin (Gast)


Lesenswert?

Sorry, ich meinte die L0 Serie :)

von 2⁵ (Gast)


Lesenswert?

Sven schrieb:
> Der Haut-uC startet die Zeitmessung des RC-Oszillators. Danach muss der
> Haupt-uC schlafen gehen.

Normalerweise macht das der "Haupt-µC" mit einem eigenen Timer. Ist da 
keiner mehr frei? Welchen µC benutzt du bis jetzt?

von Johannes S. (Gast)


Lesenswert?

Passend zur Aufgabe ist ein Salami µC.

von Falk B. (falk)


Lesenswert?

Sven schrieb:
> Der Haut-uC startet die Zeitmessung des RC-Oszillators. Danach muss der
> Haupt-uC schlafen gehen. Der uC mit RC-Oszillator muss nun im Stande
> sein mit einem 100uF Stützkondensator eine Zeit von maximal 200ms zu
> messen.

Unsinn. Beschreibe das Gesamtproblem und nicht deine vermeintliche 
Lösung, siehe Netiquette. Denn so wie du das beschreibst, kann das 
fast jeder aktuelle uC selber mit einem seiner Timmer und passendem 
Sleep Mode machen, da braucht es keinen 2. uC.

von Sven (Gast)


Lesenswert?

Ok. Also dann nochmal anders.

Der uC wird mit Strom versorgt macht seine Aufgabe und nach so ca. 30ms 
ist die Stromzufuhr weg. Es ist kein Strom mehr vorhanden. Nach maximal 
200ms bekommt der uC wieder Strom und möchte wissen wie lange er aus 
war.

In der Zeit wo der uC mit Strom versorgt wird kann er einen 47uF 
Kondensator aufladen, der führ die Zeitmessung (maximal 200ms) zur 
Verfügung steht.

Den uC über diese Zeit am Leben zu lassen ist nicht das Ziel, sondern 
irgendeine Schaltung zu realisieren die maximal 200ms die Zeit messen 
kann.

Geht diese Zeitschaltung nach 200ms aus (weil 47uF Kondensator leer) 
dann interessiert der Zeitwert nicht mehr.

Ich dachte da an einen Keramik-Oszillator und einen Frequenzzähler. Es 
muss halt sicher gestellt sein das diese beiden Bauteile mit einem 47uF 
Stützkondensator mindestens 200ms lang die Zeit messen können.

von Falk B. (falk)


Lesenswert?

Sven schrieb:
> Ok. Also dann nochmal anders.
>
> Der uC wird mit Strom versorgt macht seine Aufgabe und nach so ca. 30ms
> ist die Stromzufuhr weg. Es ist kein Strom mehr vorhanden.

Und warum?

> Nach maximal
> 200ms bekommt der uC wieder Strom und möchte wissen wie lange er aus
> war.

Dann muss er 200ms im Sleep Mode aushalten. Da kann man einen Timer 
laufen lassen, das braucht nur ein paar uA.

> In der Zeit wo der uC mit Strom versorgt wird kann er einen 47uF
> Kondensator aufladen, der führ die Zeitmessung (maximal 200ms) zur
> Verfügung steht.

> Den uC über diese Zeit am Leben zu lassen ist nicht das Ziel,

Warum nicht? Heutige Mikrocontroller können das spielend.

Wenn wir mal mit 5uA rechnen sind das

C = I * t / U
->
U = I * t / C = 5uA * 200ms / 47uF ~ 20mV

D.h. ein Controller mit 5uA Stromaufnahme entlädt den vollen 47uF 
Kondensator in 200ms um 20mV. Das ist praktisch gar nichts, selbst 200mV 
wären unkritisch. Und während dieser Zeit läuf ein Timer im uC weiter 
und damit weiß er, wie lange der Strom weg war.

> Ich dachte da an einen Keramik-Oszillator und einen Frequenzzähler. Es
> muss halt sicher gestellt sein das diese beiden Bauteile mit einem 47uF
> Stützkondensator mindestens 200ms lang die Zeit messen können.

Dazu reicht ein 74HC4060 mit Keramikoszillator. Dann muss man den aber 
noch auslesen. Eine Echtzeituhr mit Uhrenquarz und I2C ist da einfacher 
handhabbar. Aber auch die ist überflüssig, siehe oben.

von Sven (Gast)


Lesenswert?

Der uC ist ein MSP430. Wenn ich diesen im Low Power Modus versetze 
benötigt er 100uA. Die Taktfrequenz des DCOs kann ich maximal auf 1MHz 
runter setzen. Leider kenne ich keine Möglichkeit die Stromaufnahme 
weiter zu reduzieren und den Timer im MSP weiter laufen zu lassen.

von MaWin (Gast)


Lesenswert?

Sven schrieb:
> Der Haut-uC startet die Zeitmessung des RC-Oszillators. Danach muss der
> Haupt-uC schlafen gehen. Der uC mit RC-Oszillator muss nun im Stande
> sein mit einem 100uF Stützkondensator eine Zeit von maximal 200ms zu
> messen.

Immer noch das Problem, welches du mit einer Kondensatorentladung am 
A/D-Wandler lösen wolltest.

Erstmal Grundlagen rechnen:

100uF für 0.2s erlauben 500uA wenn die Spannung um 1V abfallen darf.
Das ist üppig.

Ein CD4536 benötigt 1/100 davon.

Schalte den CD4536 mit RC Kombination als 1kHz (oder besser 10kHz) 
Oszillator.
So lange deine Stromversorgung steht, bleibt er RESETgesetzt und 
INHibited. Fällt die Versorgung aus, wird INHibit freigegeben und der IC 
zählt die Taktimpulse, in 2ms bis 2000 also bei 10kHz. Kommt die 
Spannung wieder, braucht der Haupt-uC 3 Pins: Ein Eingang überwacht 
DECODE OUT, einer OUT (Taktsignal) ein Ausgang taktet INHibit. Beim 
Wiederkommen der Versogung wir INHibit so lange aktiviert, bis DECODE 
OUT einen Überlauf meldet, die noch fehlenden Impulse an OUT werden 
gezählt.

Zählt man 48, dauerte die Pause 200ms, zählt man 1048, dauerte sie 
100ms, zählt man noch fehlende 2038, dauertesie 1ms.

Statt 100uF tun es also auch 1uF, oder die Zeit darf bei 100uF bis 20s 
betragen.

von Falk B. (falk)


Lesenswert?

Sven schrieb:
> Der uC ist ein MSP430.

Welcher Typ genau?

> Wenn ich diesen im Low Power Modus versetze
> benötigt er 100uA.

Da geht sicher noch deutlich weniger, denn TI bewirbt die u.a. als Ultra 
Low Power uC. Vermutlich hast du noch andere Dinge nicht beachtet und 
hast deswegen eine so hohe Stromaufnahme.

> Die Taktfrequenz des DCOs kann ich maximal auf 1MHz
> runter setzen. Leider kenne ich keine Möglichkeit die Stromaufnahme
> weiter zu reduzieren und den Timer im MSP weiter laufen zu lassen.

Das kann man ändern.

von A. S. (Gast)


Lesenswert?

Sven schrieb:
> Der uC ist ein MSP430.

Was für einer?

Und dort ist kein Timer frei, der im sleep läuft? Notfalls externer 
Takt?

Btw: ein Uhrenbaustein könnte da noch einfacher sein, weil er die 
absolute Zeit hat. Sonst gibt es oft Schwierigkeiten, kurzzeitig spg. 
weg und wieder da zu händeln.

von Sven (Gast)


Lesenswert?

Es ist ein MSP430FR5992. Wenn man diesen uC in den LPM3 versetzt, zieht 
er laut Datenblatt nur 5uA. Aber kann man dann noch einen Timer laufen 
lassen, der mit einer Genauigkeit von 1ms arbeitet?

von Falk B. (falk)


Angehängte Dateien:

Lesenswert?

Sven schrieb:
> Der uC ist ein MSP430. Wenn ich diesen im Low Power Modus versetze
> benötigt er 100uA.

Schau mal in den User Guide deiner MSP430 Sub-Familie, dort findest du 
ein Abschnitt Operation Modes mit den Sleep Mode. Für dich reicht fast 
schon LPM0, aber auch LPM2 sollte drin sein.

von Falk B. (falk)


Lesenswert?

Sven schrieb:
> Es ist ein MSP430FR5992. Wenn man diesen uC in den LPM3 versetzt, zieht
> er laut Datenblatt nur 5uA. Aber kann man dann noch einen Timer laufen
> lassen, der mit einer Genauigkeit von 1ms arbeitet?

Der Timer ist so genau wie die Taktquelle. Im LPM3 ist das ein 32,768kHz 
Uhrenquarz, der hat im die 10ppm Frequenzfehler, das sind 2us Fehler auf 
200ms!

von Katzenfreund Miau (Gast)


Lesenswert?

Nimm oifoch oi arduino udo

von Sven (Gast)


Lesenswert?

Erstmal vielen Dank für eure Tipps. Ich bin Informatiker und habe mit 
Elektrotechnik noch nicht viel zu tun gehabt. Daher entschuldigt meine 
Unkenntnis.

Das heißt ich kann den uC in den LPM3 Mode versetzen und trotzdem noch 
den internen Timer weiter laufen lassen, wenn ich einen Quarz an den uC 
hänge?

Geht auch ein Keramik Oszillator damit die Einschwingzeit reduziert 
wird?

von Falk B. (falk)


Lesenswert?

Sven schrieb:
> Das heißt ich kann den uC in den LPM3 Mode versetzen und trotzdem noch
> den internen Timer weiter laufen lassen, wenn ich einen Quarz an den uC
> hänge?

JA!

> Geht auch ein Keramik Oszillator damit die Einschwingzeit reduziert
> wird?

Du bist schon wieder Informatiker! Der Quarz am ACLK läuft DAUERHAFT, da 
gibt es keine Einschwingzeit.

von Sven (Gast)


Lesenswert?

Wenn der uC aber nach z.b 2 Sekunden aus geht, muss er auch wieder 
gestartet werden bzw. der Quarz muss sich ja einschwingen.

von Einer K. (Gast)


Lesenswert?

Sven schrieb:
> Wenn der uC aber nach z.b 2 Sekunden aus geht, muss er auch wieder
> gestartet werden bzw. der Quarz muss sich ja einschwingen.

Das eben dürfte ein Irrtum sein.
In der Regel gibt es einen Schlaf Modus, wo "nur" der RealTimeCounter 
weiter läuft.
Und ebenso üblich ist dieser Counter/Oszillator auf niedrigen 
Stromverbrauch optimiert.
So ist es sicherlich auch bei deinem MSP430

von Clemens L. (c_l)


Lesenswert?

Nimm nicht ACLK, sondern VLOCLK; das startet sofort. Ist zwar ungenau, 
aber du kannst es vor oder nach dem Stromausfall mit einem besseren 
Clock-Signal kalibrieren.

von Clemens L. (c_l)


Lesenswert?

Arduino Fanboy D. schrieb:
> Das eben dürfte ein Irrtum sein.

Nein. Wie oben beschrieben, gibt es den Fall, dass der Strom für lange 
Zeit komplett weg ist, dann für 30 ms da ist, und dann bis zu 200 ms 
gemessen werden sollen.

: Bearbeitet durch User
von Succu (Gast)


Lesenswert?

Clemens L. schrieb:
> Arduino Fanboy D. schrieb:
>> Das eben dürfte ein Irrtum sein.
>
> Nein. Wie oben beschrieben, gibt es den Fall, dass der Strom für lange
> Zeit komplett weg ist, dann für 30 ms da ist, und dann bis zu 200 ms
> gemessen werden sollen.

Und ein paar Beiträge weiter ging es dann darum, daß der MSP in der 
spannungslosen Phase mit laufendem Timer in den Schlaf Modus gehen soll, 
und aufgrund seines geringen Stromverbrauchs in dieser Zeit von einem 
Kondensator versorgt werden kann.

von Peter D. (peda)


Lesenswert?

Clemens L. schrieb:
> dann für 30 ms da ist, und dann bis zu 200 ms
> gemessen werden sollen.

Da mußt Du wohl den praktischen Sinn dahinter erklären.

Ich würde da einfach die 30ms als zu kurz deklarieren, d.h. die Spannung 
ist nie richtig da gewesen. Das sind ja nur 3 Netzhalbwellen.
In der Praxis nimmt man Resetzeiten von >=200ms, damit sich Netzteil und 
CPU stabilisieren können. Ein 32kHz Quarz braucht typisch >1s zum 
Hochlaufen.

Oder man läßt den MC im Power-Save durchlaufen. Mit einem Goldkap 1F 
kann man z.B. einen ATmega48A >3 Monate als RTC laufen lassen. Über den 
Pin-Change-Interrupt wacht er innerhalb 6+4CK (= 1,25µs) mit dem 
internen 8MHz RC-Oszillator auf.

: Bearbeitet durch User
von schufti (Gast)


Lesenswert?

setzt immer voraus, dass der MSP weiß, wann der Saft weg ist um dann 
schnell genug in den LPMx Modus zu kommen und den Timer zu starten -> 
etwas HW Kniffelei notwendig.

von Sebastian D. (sebastian_d)


Lesenswert?

Sag mal, bist du in der gleichen Klasse/im gleichen Kurs wie Kurt?
Der hat nämlich rein zufällig das selbe Problem.

Darum auch hier der Link zu meiner Antwort im anderen Thread.
Beitrag "Re: Entladevorgang eines Kondensators messen"

Wenn das tatsächlich eine Schulaufgabe ist, dann spiele bitte mit 
offenen Karten. Denn oft sind Schulaufgaben einfach dämlich gestellt. Da 
könnt ihr dann nix für.

von Alexander S. (esko) Benutzerseite


Lesenswert?


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.