Hallo allerseits, ich bin ein ziemlicher Neuling was Mikrocontroller betrifft und habe deshalb ein paar Fragen, ich hoffe, ihr könnt mir weiterhelfen. Ich plane einen Countdown zu einem bestimmten Datum (er soll also jeden Tag eine Ziffer herunter zählen). Wie viele Tage noch ausbleiben bis zu dem gewählten "Stichtag" soll auf zwei 7-Segment-anzeigen angezeigt werden, die Tage werden nicht über 99 gehen in meinem Fall. Ein Atmega88 soll die Aufgabe übernehmen, nur ist jetzt noch zu sagen, dass ich das ganze Projekt gerne im Batteriebetrieb laufen lassen würde, was sich bei Uhren als garnicht mal so einfach heraus stellt. Das sind die Gedanken, die ich mir schon mal gemacht habe: Ich könnte eine RTC für die Uhr benutzen, der Vorteil ist, dass ich diese mit einer Knopfzelle einzeln versorgen kann. Ursprünglich wollte ich die DS1307 benutzen, habe aber gelesen sie sei nicht besonders gut (Grund wurde nicht genannt)? Wenn hier jemand einen konkreten Vorschlag hat, wäre ich sehr dankbar. Damit die LEDs nicht dauerhaft laufen, wollte ich gerne einen PIR- Sensor benutzen, da dieser nicht viel Strom im Standby verbraucht und er den Atmega88 per interrupt aufwecken könnte. Bei diesem event möchte ich auch mit dem Atmega die Uhrzeit von der RTC abfragen, damit ich das auch nicht im loop mache. Nach ein paar Sekunden, soll das ganze wieder einschlafen, bis der Sensor wieder ausschlägt. um die Tage rückwärts zu zählen hatte ich gedacht, ich setze ein konkretes Datum und ziehe dann die Differenz vom einen Datum zum nächsten... Hierzu bräuchte ich einen Datums typen. ist das in C für einen Atmega möglich? Kann ich einfach die Differenz an Tagen bestimmen (ich dachte so an ein Date package oder ähnliches) oder benötige ich einen Workaround? Was die spätere Einstellung betrifft, dachte ich, ich benutze einen Knopf zum erhöhen des Tages und einen anderen zum Herunterzählen des Tages, das soll einfach auf der Anzeige dargestellt werden und reicht für meinen Fall aus. Was sind eure Meinungen dazu? Die Wichtigste Frage ist, ob meine Gedanken geeignet sind, um alles mit Batterie betreiben zu können, damit es auch vielleicht einige Monate durchhält (bei moderater Nutzung der LED anzeige). Habt ihr Verbesserungsvorschläge was die Energieeffizienz betrifft? Ich bin um jeden Vorschlag dankbar und freue mich auf Antworten.
Eric F. schrieb: > Was sind eure Meinungen dazu? Man nimmt ein LCD Display. https://www.reichelt.de/lcd-7-segment-1x2-h-12-7mm-reflektiv-lcd-2-0-13-p10179.html und dazu einen AVR mit mindestens 17 I/O der an einem 32kHz Uhrenquartz läuft https://www.reichelt.de/mini-uhrenquarz-0-032768-mhz-tc38-0-032768-p1089.html dann spart man sich die RTC und den Bewegungsmelder und die Tage werden dauernd angezeigt. Noch ein paar Knöpfe zum einstellen und fertig, als Batterie 3 Mignonzellen in Batteriehalter https://www.reichelt.de/batteriehalter-fuer-3-mignon-aa-geschlossen-halter-3xaa-p44631.html
:
Bearbeitet durch User
Michael B. schrieb: > Eric F. schrieb: >> Was sind eure Meinungen dazu? > > Man nimmt ein LCD Display. Laberkopp. Dafür nimmt man natürlich ein E-Ink-Display.
Die DS1307 ist verhältnismäßig ungenau. Besser DS3231 verwenden. Beim Arudino gibt es die Möglichkeit mit Millis() sich die Zeit seit dem Einschalten des Systems ausgeben zu lassen. Harken an der Sache, der Counter läuft alle 49 Tage über, das muss man also abfagen, wenn man länger zählen will. Auch läuft Millis vom externen Clock, also ebenfalls mit entsprechender Abweichung. Generell finde ich die Idee gut mit der RTC zu arbeiten. Für dei DS3231 gibt es eine ganz nette Bibiothek. Auch kann man den DS3231 so einstellen, dass er zu einem bestimmten Zeitpunkt einen Interrupt erzeugt. Somit kannst du dir auch den Pir sparen. Einfach den Wecker stellen und den Arudino auf dem Power Down Modus holen für die Dauer der Anzeige, dann Wecker neu stellen und Arudino wieder schlafen schicken.
Michael B. schrieb: > Eric F. schrieb: >> Was sind eure Meinungen dazu? > > Man nimmt ein LCD Display. Danke für die schnellen Antworten. Die Idee mit dem LCD display gefällt mir schon mal ganz gut, daran hatte ich gar nicht gedacht. Ich bin etwas verwirrt, ich habe mal ins Datenblatt geschaut, dort sprechen sie von "Voltage mode STATIC" Allerdings habe ich gelesen, dass es nicht wirklich gut ist, bestimmte Segmente für längere Zeit polarisiert zu lassen, oder kümmert sich die anzeige da eigenständig drum?
Flip Dot Display, sieht auch schön Retro aus.
Eric F. schrieb: > oder kümmert sich die > anzeige da eigenständig drum? Nein - sogen. 'raw' LCD Gläser möchten mit AC betrieben werden, sonst kommt es zu Elktrolyse und Zerstörung des Displays. Die kann man aber sehr langsam takten, z.B. mit 20-50Hz. Von so gut wie allen MC Herstellern gibt es dazu Application Notes, die mit simplen GPIO Pins solche LCDs ansteuern. Es wäre also durchaus möglich, den ganzen MC mit dem 32kHz Uhrentakt laufen zu lassen und damit sehr stromsparend. PIC: AN563 'Using PIC16C5X Microcontrollers as LCD Drivers' AVR: AVR241: 'Direct driving of LCD display using general IO'
:
Bearbeitet durch User
Ein LCD-Display braucht 6 Anschlüsse zum µC + Uhrenquarz: 8 Anschlüsse + V+, V- und Reset: 11 Anschlüsse Damit kommt bei AVR ein Tiny24 (14 Anschlüsse) in die Auswahl, wobei noch 1 Taste zum Einstellen der Tage, 1 Taste zum Aktivieren der Anzeige und ein Pin für die Einschaltung des LCD-Displays + Beleuchtung über einen FET möglich sind. Mit 3 AAAs läuft das 1 Jahr und länger.
Hi Gewöhnt euch endlich mal dieses dümmliche "LCD Display" ab. MfG Spess
@spess53 (Gast) Tschuldigung, da haste recht! Darfst aber dafür meinen Uhrenquarz ohne 't' loben!
Jacko schrieb: > Ein LCD-Display braucht 6 Anschlüsse zum µC Du meinst so ein typisches Textdisplay. Das ist energetisch aber ziemlich suboptimal, auch wenn die sparsamsten dieser Dinger inzwischen wirklich recht genügsam sind. Aber mit irgendwas zwischen 100µA und 1mA Dauerverbrauch muss man trotzdem rechnen. Deutlich sparsamer sind "naked" LCDs. Der Nachteil: man braucht sehr viel mehr Pins, um sie anzusteuern. Für ein zweistelliges Siebensegment-Display halt mindestens 15. Aber Controller mit dafür hinreichender Pinzahl gibt's ja nun wirklich wie Sand am Meer.
Früher nahm Mann einfach ein Massband. Und schnitt jeden Tag einen cm ab. Energieeffizient ohne Ende!
Soziologe schrieb: > Energieeffizient ohne Ende! Nicht wenn Du es wiederverwenden willst. Immer diese Wegwerfgesellschaft.
@ c-hater (Gast) Netter Einwand! Aber... Wer lesen kann, sieht, dass ich einen Anschluss für die Anzeige-Aktivierungstaste und einen Anschluss für LCD ON bedacht habe. Damit spart man 7 Pins und ne Menge Energie, weil die Anzeige nur auf Tastendruck für einige Sekunden Strom frisst.
Chris K. schrieb: > Auch kann man den DS3231 so einstellen, dass er zu einem bestimmten > Zeitpunkt einen Interrupt erzeugt. Somit kannst du dir auch den Pir > sparen. Einfach den Wecker stellen und den Arudino auf dem Power > Down Modus holen für die Dauer der Anzeige, dann Wecker neu stellen > und Arudino wieder schlafen schicken. Woher weiß der Arduino beim Stellen des Weckers, wann das nächste mal jemand vor der Anzeige ist, um sie zu betrachten? Da ist der PIR deutlich im Vorteil.
Ich danke euch für die vielen sehr hilfreichen Antworten. Mein aktualisierter Ansatz ist jetzt folgender: Ich werde ein LCD verwenden und dieses mit Code-seitigen XORs betreiben, damit ich meine Wechselspannung erhalte. Ich bin mir nicht sicher aber ich habe tatsächlich ein paar Treiber für 7-Segment LEDs (CD4511BE) da und hatte überlegt, dass das doch genauso funktionieren sollte. So könnte ich mir ein paar Pins sparen. Was die Zeitmessung betrifft, muss ich mich noch ein bisschen mit Quarzen beschäftigen, am besten wäre es natürlich ich programmiere eine Uhr und sorge dafür dass sie alle 24 stunden (Vorzugsweise um 00:00Uhr) meine Anzeige neu ansteuert. Chris K. schrieb: > Auch kann man den DS3231 so einstellen, dass er zu einem bestimmten Zeitpunkt einen Interrupt erzeugt. Hiermit könnte ich ja die Uhr einmalig stellen, die ist also versorgt, was mir das einstellen spart, wenn ich mein Projekt dann fertiggestellt habe und aufbauen will. Den Wecker könnte ich dann auch jedes mal auf 00:00Uhr stellen, dass der Interrupt das Herunterzählen der Zeit verursacht.
Eric F. schrieb: > Ich bin mir nicht sicher aber > ich habe tatsächlich ein paar Treiber für 7-Segment LEDs (CD4511BE) da > und hatte überlegt, dass das doch genauso funktionieren sollte. > So könnte ich mir ein paar Pins sparen. Nein, das funktioniert so nicht. Damit der Ansatz funktionieren könnte, bräuchtest du einen 7-Segment-Decoder, der einen zusätzlichen Anschluss hat, um ein invertiertes Muster ausgeben zu können. Naja, man könnte natürlich an den Ausgängen auch noch einen zusätzlichen 7-Kanal-Inverter anbringen... Sinnvoller wäre: Schieberegister mit Latch. Dann kannst einfach das gesamte Pattern (inclusive COM-Anschluss) seriell raustakten und dann zu den Ausgängen "durchstellen". D.h.: du brauchst dann nur noch drei Anschlüsse am µC: seriellen Takt, serielle Daten und LatchControl. Noch sehr viel sinnvoller: einfach einen µC mit hinreichend vielen Beinchen verwenden...
Die Idee mit dem PIR Sensor gefällt mir. LED Anzeige und Batteriebetrieb sind keine sehr glückliche Kombination. LC-Displays sind sparsamer aber auch weniger auffällig. Das musst du selbst entscheiden. Anstatt einen µC + RTC zu kombinieren, könntest du auch einen Mikrocontroller mit integrierter RTC benutzen. Zum Beispiel ein "STM32F103C8T6 Module" von Aliexpress oder Amazon. Kostet nur ca. 2 Euro. Dessen RTC enthält keinen Kalender, sondern zählt einfach Millisekunden hoch. Ein Tag entspricht 24*60*60*1000 Millisekunden. Für die ersten Schritte mit diesem STM32 hilft Dir vielleicht mein Büchlein http://stefanfrings.de/mikrocontroller_buch2/index.html und die Notizen auf http://stefanfrings.de/stm32/index.html . > (Datums-Kalkulation) ist das in C für einen Atmega möglich? Ja sicher, ist kein Hexenwerk. Egal welchen µC und/oder Uhr du verwendest: irgendwie muss das Ding wissen, wann Mitternacht ist. Also musst du entweder die aktuelle Uhrzeit einstellen können, oder zumindest die Anzahl der Stunden bis Mitternacht. Oder jemand muss um Mitternacht einen Start-Knopf drücken (fände ich nicht so gut).
Ich würde eine externe RTC nehmen, diese so programmieren, dass irgendwann der µP aufgeweckt wird. Der natürlich in der Zwischenzeit ein Nickerchen machen darf. Soweit mir bekannt, ist die minimale Stromaufnahme der aktuellen RTCs, super. Die meisten haben einen Interruptausgang, mit dem man sogar tote aufwecken kann. Da es sich um eine Uhr handelt, braucht man sich im µP auch nicht mehr um die Tickerei zu kümmern.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.