• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

Reaktivlicht mit 7-Segmentanzeige

chrysophylax

Geomaster
ksbender schrieb:
Genau so hätte ich es auch gedacht - nur falsch??? ausgedrückt. Mehrfachauslösung bezog sich auf zu langes dranhalten des Magneten. Ganz so wie zu kurzes dranhalten den Text unterbricht.

Oh, das hatte ich vor lauter Trivialität glatt vergessen - nach der Koordinatenausgabe einfach in einer Endlosschleife bis zum Sankt Nimmerleinstag warten. Das braucht auch so gut wie keinen Strom. Oder, wie von anderer Seite vorgeschlagen - einfach schlafen legen bis zum Sankt Nimmerleinstag. Letzteres hab ich auch mal probiert aber wieder verworfen - dann braucht der µC (zumindest mein PIC) so wenig Strom, daß er aus dem Glättungs-Kerko nach dem Unterbrechen der Spannungsversorgung noch reichlich Sekunden "schlafend lebt" und daher in dieser Zeit nicht erneut auslösbar ist. Die Variante mit der Endlosschleife ist zwar deutlich brachialer, aber auch irgendwie funktionaler :)

ksbender schrieb:
chrysophylax schrieb:
Variante 2 (nicht unelegant): Der µC hängt ständig am Strom, und statt einer Fotodiode hängt der Reed-Kontakt mit einem Pulldown an einem digitalen (!) Portpin des µC. Die Atmels können auch alle "richtig" schlafen, d.h. mit komplett stehenden Oszillatoren (sowohl Haupt-Takt als auch Watchdog). Aufgeweckt werden sie per Interrupt-on-pin-change, den der Reedkontakt auslöst. Damit bist du wahrscheinlich auch bei 1-2µA Ruhestrom. Ist halt ne neue Softwarevariante.
Das muß ich nochmal lesen damit ich es genau verstehe :irre:

Aaaaalso.... "Schlafen" bedeutet beim µC, daß das Programm an einer exakt definierten Stelle angehalten wird und der Prozessor dort einfach "stehen bleibt". Alle Variablen und sämtlicher Speicher behalten ihren Inhalt - das Ding ist einfach nur quasi eingefroren und braucht so recht wenig Strom. Nun hat man allerdings nur recht wenig davon, wenn ein Programm einfach bis zum Sankt Nimmerleinstag stehenbleibt - für gewöhnlich möchte man, daß es auch irgendwann weiterläuft und seine Aufgabe erfüllt. Um dies zu tun gibt es jetzt bei jedem µC verschiedene Möglichkeiten, ihn wieder "aufzuwecken". Eine davon, die auch hier recht gängig ist, besteht darin, einen klitzekleinen separaten Teil des Prozessors weiterlaufen zu lassen, der eine Timer-Funktion besitzt, und nach einer einstellbaren Zeit den Rest-Prozessor anschubst "los, schaff mal wieder was".

Aus der Luft gegriffenes mehr oder weniger naheliegendes Beispiel: Der nervige Radiowecker, der auch dich wahrscheinlich jeden Morgen weckt. Die Teile haben eine sog. "Schlummer-Funktion". Du schläfst und erholst dich dabei, irgendwann weckt dich der Wecker durch nerviges Gedudel auf. Du schaust auf die Uhr, stellst fest, daß du noch nicht aufstehen mußt, weil es draußen noch nicht hell ist (wir nehmen einfach mal an, du hättest einen Job, den man nur im Hellen ausüben kann), und drückst auf die "Schlummer-Taste". Jetzt gibt dein Radiowecker für ein paar Minuten Ruhe, du schläfst wieder ein, und ein paar Minuten später fängt das nervige Ding wieder an zu dudeln. Schlaftrunken haust du wieder auf die Schlummer-Taste des blöden Dings, und dieses Spiel geht noch mindestens 5mal bis du irgendwann feststellst "jetzt ist es draußen hell" und aufstehst.

Genau das macht der Watchdog-Schlafmodus im Reaktivlicht. Das Programm mißt regelmäßig die Umgebungshelligkeit, stellt fest "is noch zappenduster, da schlaf ich noch ne Runde", haut auf die Schlummer-Taste des Watchdogs, schläft wieder ein, und wacht 130ms später wieder auf, mißt wieder Helligkeit, haut wieder auf die Schlummer-Taste, undsoweiter.

Mensch kann sich vorstellen, daß das zwar weniger stressig ist, als 24h am Tag wach zu sein und nix zu tun, aber immer noch deutlich anstrengender/zermürbender, als solange tief und fest zu schlafen (und nicht nur im Halbschlaf zu hängen), bis ein freundlicher Sonnenstrahl durchs Fenster einen einmal und zum exakt richtigen Zeitpunkt aufweckt.

"Halbschlaf" heißt halt auch "Energieverbrauch", in diesem Falle für den Timer des Watchdogs und für den Taktgenerator, der diesen Timer ansteuert. Wenn der µC "richtig" schläft, kann er auch das beides ausschalten - es ist halt nur nicht mehr möglich, ihn nach einer definierten Zeit Schlafen automatisch wieder aufwecken zu lassen.

Dafür gibt es bei jedem µC aber auch noch andere Möglichkeiten zu schlafen - schließlich gibt es ja auch bei Menschen andere Ereignises außer blöden nervigen zeitgesteuerten Weckern, durch die man sie aufwecken kann. Und das ist der berühmte "Interrupt on Pin change". Beim Einschlafen merkt sich der µC den Zustand aller seiner digitalen Eingänge, und er schläft völlig "taktlos" so lange, bis sich einer dieser Eingänge ändert. Das kann nach Millisekunden sein, das kann aber auch nach Tagen sein. Sobald dieses Ereignis eintritt, wird der Haupt-Takt wieder angeschmissen, das Programm läuft weiter, und man hat irgendwo einen Interrupt-Wunsch hinterlegt und ein paar Register, aus denen man sich zusammenpopeln kann, was einen denn jetzt gerade aufgeweckt hat.

Vorteil: In diesem "Tiefschlaf" braucht der µC nochmal deutlich weniger Strom, als wenn der nur "schlummert" und nebenbei noch der Oszillator für den Watchdog läuft und der Watchdog-Timer selbst. Nachteil: Du hast überhaupt kein Gefühl oder Anzeichen mehr dafür, wie lange der µC denn jetzt geschlafen hat. Da keinerlei "Uhr" "nebenbei" mitläuft, weißt du nach dem Aufwachen nicht, wieviel Zeit seit dem Einschlafen vergangen ist. Wenn du mit dem Watchdog schläfst, weißt du relativ sicher, daß zwischen Einschlafen und Aufwachen immer eine feste definierte Zeit vergangen ist, und kannst mit dieser auch die eine oder andere Nützlichkeit rechnen. Wenn du deinen µC "tiefschlafen" läßt und über einen Reed-Kontakt an einem digitalen Eingang aufweckst, hast du keine Chance festzustellen, ob seit der letzten Auslösung Sekunden ("mach nochmal, ich hab die Koordinaten nicht mitbekommen") oder Monate ("im Winter sucht keine Sau diese Dose") vergangen sind.

In Zahlen: (Gerade mal rasch ein aktuelles Datenblatt vom Tiny24 von Atmel gezogen)
Power down mode (Watchdogtimer enabled, Vcc=3V) Icc typisch 4.5µA
Power down mode (Watchdogtimer disabled, Vcc=3V) Icc typisch 0.15µA

Wäre ich ein reißerischer Verkäufer, würde ich jetz großartig mit einem "Stromverbrauch um den Faktor 30 niedriger bei intelligentem Einsatz vorhandener Features" hausieren gehen :)

ksbender schrieb:
Variante 2 kannst du vielleicht nochmal genauer erklären.
Verständlich genug ? Oder eher zu verwirrend durch das an den Haaren herbeigezogene Wecker-Beispiel ?

chrysophylax.de
 

huzzel

Geowizard
chrysophylax schrieb:
Power down mode (Watchdogtimer enabled, Vcc=3V) Icc typisch 4.5µA
Power down mode (Watchdogtimer disabled, Vcc=3V) Icc typisch 0.15µA

Nehmen wir 2 AA-Batterien http://de.wikipedia.org/wiki/Batterie#Baugr.C3.B6.C3.9Fen und nehmen 2500mAh an
2500mAh/4,5µA=55555h (oder 44 Jahre :D )
2500mAh/0,15µA=16666666 (oder 1902 Jahre :shocked: )

Ich denke, mit den 44 Jahren kann man auch schon gut leben ;)
oder anders gesagt, mit einer Batterie, die sich kaum selbst entlädt, gewinnt man mehr Laufzeit ;).
 

thomas_st

Geowizard
chrysophylax schrieb:
[Sehr schöne Darstellung der Schlaf-Modi eines Tiny]

Da keinerlei "Uhr" "nebenbei" mitläuft, weißt du nach dem Aufwachen nicht, wieviel Zeit seit dem Einschlafen vergangen ist.
Je nachdem wie genau man diese Zeitspanne wissen muss und ob eventuell nur ein "mehr als x Sekunden oder nicht" reicht, könnte man eine Hardware-Uhr dafür verwenden: Ein RC-Glied kurz vor dem pennen-schicken aufladen und nachdem der Tiny wieder wach ist, als erstes abfragen, wie weit die Spannung im Kondensator abgefallen ist: U>U_Grenz - Tiny hat nur kurz geruht, U < U_Grenz - Tiny hat Winterschlaf gehalten.

Viele Grüße,
Thomas(_st)
 

chrysophylax

Geomaster
radioscout schrieb:
Um den Kondensator zu laden wird wahrscheinlich mehr Strom benötigt als für den Timer des uC.
Nope. Der PIC, den ich in meinem Reaktivlicht verwende, hat exakt dieses Feature in Hardware eingebaut und ich nutzte es auch mal neugierdehalber.

Man schaltet den Portpin auf Ausgang, lädt den angeschlossenen Kondensator auf, schaltet ihn auf "Eingang für Schlafmodus", legt den Prozessor schlafen, und eine interne Stromsenke entlädt den Kondensator (mit 130nA). Wenn er leer ist, macht ein im Portpin eingebauter Komparator einen Pin-Change-Interrupt.

Damit komme ich auf etwa 300nA Stromaufnahme fürs Kondensator-aufladen, Schlafen, nach 15s aufwachen (das ist ungefähr die Zeit, die bei 1µF Kerko rauskommt), AD-Wandeln, Mittelwertmathematik über 16 Rechenstellen, weiterschlafen. Beim Schlafen über Watchdog liegt der Prozessor bei Atmel-ähnlichen 4-5µA für die gleiche Aufgabe.

chrysophylax

P.S.: "Brauchen" tut man das natürlich nicht unbedingt - grenzt halt schon etwas an Schwanzlängenvergleich - aber warum sollte man elegante Features eines µC nicht auch nutzen, wenn sie innendrin eh vorhanden sind und sonst brachliegen ? Bei Batteriebetrieb ist die Frage nach der Lebensdauer eh illusorisch, aber wenn man so ein Teil mal "wartungsfrei" mit Solarzelle und Goldcap betreibt, ist man auf einmal über jedes einzelne µA ausgesprochen dankbar - gerade im Winter, wenns nicht so lange hell ist.
 

radioscout

Geoking
Das ist in der Tat eine elegante Lösung. Ich dachte an eine eher primitive Bastellösung mit einem C im Bereich von (einigen) 100 uF.
So in der Art wie es hier schon für andere Zeitmessvorrichtungen diskutiert wurde.
 

thomas_st

Geowizard
radioscout schrieb:
Um den Kondensator zu laden wird wahrscheinlich mehr Strom benötigt als für den Timer des uC.
Das wäre eine Optimierungsaufgabe: umso großer der Kondensator ist, umso kleiner kann R gewählt werden (bei gleicher Zeitspanne). Ein größerer Kondensator würde natürlich mehr Ladung "verbrauchen" (Q=C*U), diese müsste man aber auf die durchschnittliche Schlafdauer umlegen. Auf der anderen Seite würde ein kleines R aber zu einer genaueren Messung führen (immer vorhandene weitere Widerstände und Strom"verbraucher" würden einen geringeren Einfluss haben).

chrysophylax schrieb:
radioscout schrieb:
Um den Kondensator zu laden wird wahrscheinlich mehr Strom benötigt als für den Timer des uC.
Nope. Der PIC, den ich in meinem Reaktivlicht verwende, hat exakt dieses Feature in Hardware eingebaut und ich nutzte es auch mal neugierdehalber.

Man schaltet den Portpin auf Ausgang, lädt den angeschlossenen Kondensator auf, schaltet ihn auf "Eingang für Schlafmodus", legt den Prozessor schlafen, und eine interne Stromsenke entlädt den Kondensator (mit 130nA). Wenn er leer ist, macht ein im Portpin eingebauter Komparator einen Pin-Change-Interrupt.
Schick! Es wäre mal einen Versuch wert, das mit einem Tiny zu versuchen: einfach mal so ein RC-Gleid auf einen als PC-IRQ programmierten Pin legen - irgendwann müsste da ja auch ein PC registriert werden (ist aber vermutlich außerhalb der Spec)

Viele Grüße,
Thomas(_st)
 

chrysophylax

Geomaster
thomas_st schrieb:
chrysophylax schrieb:
Nope. Der PIC, den ich in meinem Reaktivlicht verwende, hat exakt dieses Feature in Hardware eingebaut und ich nutzte es auch mal neugierdehalber.


Man schaltet den Portpin auf Ausgang, lädt den angeschlossenen Kondensator auf, schaltet ihn auf "Eingang für Schlafmodus", legt den Prozessor schlafen, und eine interne Stromsenke entlädt den Kondensator (mit 130nA). Wenn er leer ist, macht ein im Portpin eingebauter Komparator einen Pin-Change-Interrupt.

Schick! Es wäre mal einen Versuch wert, das mit einem Tiny zu versuchen: einfach mal so ein RC-Gleid auf einen als PC-IRQ programmierten Pin legen - irgendwann müsste da ja auch ein PC registriert werden (ist aber vermutlich außerhalb der Spec)

Hmh, das wird wohl eher nix. Wenn der Portpin keinen Schmitt-Trigger hat, werden dir Querströme im analogen Bereich bei einem als digital geschalteten Portpin (sonst funktioniert der Interrupt on Pin change nicht) den Kondensator arg schnell und undefiniert leerlutschen.

Wenn der Tiny die Möglichkeit hat, einen Eingang als Komparator zu schalten und über den Komparator einen Int zu machen, dann dürfte es gehen - aber üblicherweise braucht der Komparator und die Referenz dazu genauso viel Strom wie der Watchdog samt Timer....

Dieses Feature im PIC ist für Ultralowpower-Anwendungen gedacht wie z.B. elektronische Reifenluftdrucküberwachung in der Felge integriert. Da muß eine Lithium-Zelle (nicht wechselbar) deutlich länger als 10 Jahre halten, und das klappt halt nur wenn zwischen Meß- und Funkübertragunsvorgängen der Prozessor wirklich ohne Stromverbrauch sehr lange Zeiten schlafen kann....

chrysophylax

Aber wie war das so schön: Versuch macht kluch. Vielleicht klappts ja trotzdem erträglich. Nichtdestotrotz: Für Aufwachen per Reed-Kontakt-Betätigung dürfte das Interrupt on pin change-Verfahren auch auf dem Tiny perfekt funktionieren.
 

ksbender

Geocacher
chrysophylax schrieb:
Verständlich genug ? Oder eher zu verwirrend durch das an den Haaren herbeigezogene Wecker-Beispiel ?

chrysophylax.de

Ja, danke, das war verständlich genug.
Mittlerweile habe ich mich für das Prinzip entschlossen, den Reed-Schließer direkt hinter die Batterie zu setzen. Das Programm habe ich auch entsprechend angepasst und der Tiny wird nur wach, wenn ein Magnet drangehalten wird. Außerdem läuft es nur max. einmal durch und würde abbrechen, wenn der Magnet zu früh entfernt wird.
Den Rest mit Pulldown an digitalem Portpin werde ich nochmal studieren. Aber für´s erste reicht es einmal und der Phantasie mit dieser neuen Möglichkeit der Auslösung sind mal wieder keine Grenzen gesetzt.
Gruß
ksbender
 

Anhänge

  • Meder_Blinker.JPG
    Meder_Blinker.JPG
    30,3 KB · Aufrufe: 404

upigors

Geowizard
ksbender schrieb:
Mittlerweile habe ich mich für das Prinzip entschlossen, den Reed-Schließer direkt hinter die Batterie zu setzen. Das Programm habe ich auch entsprechend angepasst und der Tiny wird nur wach, wenn ein Magnet drangehalten wird.
ksbender

Versteh ich nicht, der ist doch dann komplett Spannungsfrei wenn KEIN Magnet dran ist, was musstest Du denn da anpassen?
 

ksbender

Geocacher
thomas_st schrieb:
chrysophylax schrieb:
Aber wie war das so schön: Versuch macht kluch. Vielleicht klappts ja trotzdem erträglich.
Mache ich :)

Viele Grüße,
Thomas(_st) - und werde dann hier berichten

Meine Versuche begannen mit dem Ersetzen des LDR´s durch den Reed-Schließer.
Das hat bei der 7 Segment Anzeige auch funktioniert. Leider waren aber auch die ein oder andere "Fehlauslösung" am Schreibtisch zu beobachten. Einen Wackelkontakt bei den Lötverbindungen schließe ich einmal aus.
Fortgesetzt habe ich die Versuche dann am einfachen Reaktiv-Blinker. Dort habe ich nach ganz unten stehendem Schaltplan den Reed-Schließer zwischen Batterie und tiny 13 gepackt. DO und LOOP entfernt sodaß das Programm nur einmal durchläuft - siehe da es funktioniert. Platine ist geätzt und verzinnt, gebohrt und bestückt. Jetzt fehlt nur noch der Cache dazu.

Damit sollte dann auch der Anpassung auf den ersten Schaltplan unten (der ist noch nicht getestet) funktionieren.

Aber: Versuch macht klug. Platine ist entworfen, aber für 100 x 80 mm schmeiße ich noch nicht die (selbstgebaute) Belichtungsanlage sowie Entwicklungs- und Ätzbad an.
Melde mich, wenn 7 Segment Reed funktioniert.
Gruß
ksbender
 

Anhänge

  • Tiny13_Meder.jpg
    Tiny13_Meder.jpg
    30,5 KB · Aufrufe: 718
  • Tiny24_Meder.jpg
    Tiny24_Meder.jpg
    38,2 KB · Aufrufe: 718

Dr.Schmock

Geocacher
Hab mal das Energiesparen per Pin-Change-Interrupt (wie auf letzter Seite von Chryso und Thomas angesprochen) ausprobiert.
-> geht nicht :-(
Der Leckstrom des digitales Eingangs steigt bis auf ca. 150µA an.
(ich hatte nicht den Strom am Pin direkt gemessen sondern den Gesamtstrom - ging nicht anders - aber es sollte schon ungefähr stimmen. Wer will kann ja noch mal direkt am Pin messen)
 

huzzel

Geowizard
Dr.Schmock schrieb:
Der Leckstrom des digitales Eingangs steigt bis auf ca. 150µA an.
ADC deaktiviert?
Ich hatte letzt auch eine Schaltung, die ca. 200 µA gezogen hat :shocked: :shocked: (war zwar keine Reaktivlicht, aber vergleichbar, arbeitet aber mit INT0). Bis ich festgestellt habe, dass der ADC die ganze Zeit lief :eek:ps: . ADC aus und siehe da, 4,5 µA.
 

Dr.Schmock

Geocacher
Gute Idee - aber leider: nein. ADC ist aus.

Hier ist der Stromverlauf, abhängig von der Spannung am Pin, skizziert:
Diagramm.PNG

Ob der Pik wirklich bei Vcc/2 war weiß ich nicht.
Der Sleepmodus war "Power Down" - daher nur <1µA bei sauberem digitalen Signal.

Schade, ich hatte große Hoffnung in der Einsparung. Aber auch mit 4,5 µA Hält ne Knopfzelle ja mehr als 2-3 Jahre ;)
Ich werde vielleicht bald nochmal nachmessen.
 

thomas_st

Geowizard
Dr.Schmock schrieb:
Hab mal das Energiesparen per Pin-Change-Interrupt (wie auf letzter Seite von Chryso und Thomas angesprochen) ausprobiert.
Stimmt, da war ja noch was ...

Dr.Schmock schrieb:
-> geht nicht :-(
Schade :(

Dr.Schmock schrieb:
Der Leckstrom des digitales Eingangs steigt bis auf ca. 150µA an.
Interpretiere ich Dein Bild richtig: du hast eine RC-Brücke an einen als digitaler Eingang geschalteten Pin + PC-IRQ angeschlossen und den Strom gemessen, der in den Pin hinein fließt? Dieser stieg von kaum messbar bei Vcc auf bis zu 200µA bei ~ Vcc/2 an um dann wieder auf kaum messbar abzusinken.

Das wäre ja das, was chrysophylax
chrysophylax schrieb:
Hmh, das wird wohl eher nix. Wenn der Portpin keinen Schmitt-Trigger hat, werden dir Querströme im analogen Bereich bei einem als digital geschalteten Portpin (sonst funktioniert der Interrupt on Pin change nicht) den Kondensator arg schnell und undefiniert leerlutschen.
schon andeutete.

Mist. Aber danke für den Versuch.

Viele Grüße,
Thomas(_st)
 

Dr.Schmock

Geocacher
thomas_st schrieb:
Interpretiere ich Dein Bild richtig: du hast eine RC-Brücke an einen als digitaler Eingang geschalteten Pin + PC-IRQ angeschlossen und den Strom gemessen, der in den Pin hinein fließt?

Für das "Schnell-Experiment" hatte ich den vorhandenen Reaktivlicht-Spannnungsteiler aus R und Fototransistor genommen. Dann ein Stommessgerät zwischen RL und Batterie angeschlossen. Mit ner dimmbaren Lampe hab ich es dann immer heller gemacht. So konnte ich die Stromveränderung beobachten.
 

thomas_st

Geowizard
Dr.Schmock schrieb:
Für das "Schnell-Experiment" hatte ich den vorhandenen Reaktivlicht-Spannnungsteiler aus R und Fototransistor genommen.
Sorry, dass ich weiter nerve: Spannungsteiler wie im zweiten Bild von ksbender (mit FT anstelle der LED; würde ich aber nicht als Spannungsteiler bezeichnen) oder wie im von mir angehängten Bild?

Dr.Schmock schrieb:
Dann ein Stommessgerät zwischen RL und Batterie angeschlossen. Mit ner dimmbaren Lampe hab ich es dann immer heller gemacht. So konnte ich die Stromveränderung beobachten.
Mmm, wenn die Schaltung meinem Bild entspricht, stört mich etwas das Messgerät am Eingang des Tinys, da es auch den sich dann ändernden Widerstand des Spannungsteilers R1 / T1 mit misst. Wenn es dem Bild von ksbender entspricht, weiß ich nicht, wie Du die Spannung am Pin des Tinys feststellen konntest.

Fragende Grüße,
Thomas(_st)
 

Anhänge

  • Grafik1.png
    Grafik1.png
    6,3 KB · Aufrufe: 545

waste1

Geocacher
Es ist normal, dass digitale Eingänge (CMOS) bei VCC/2 am Eingang einen erhöhten Querstrom zeigen. Da sind dann beide Eingangstransistoren teilweise leitend. Das ist auch bei ganz normalen CMOS-Gattern der Fall. Deshalb soll man auch offene (floatende) Eingänge vermeiden.

Die Messung von Dr.Schmock ist also plausibel.

Den digitalen Eingang kann man bei den AVRs abschalten. Wichtig beim normalen RL mit ADC!

Viele Grüße
Waste1
 
Oben