Hallo, ich möchte eine Füllstandsüberwachung realisieren. Als Fühler würde ich zwei Drähte nehmen. Die Schaltung soll ca einmal pro Stunde messen, ob die Flüssigkeit einen zu hohen Stand erreicht hat und dann Alarm geben. So oder so soll nach dieser Messphase ein Funkmodul eingeschaltet werden und der Wert Überlauf oder kein Überlauf übermittelt werden, damit man weiß, daß die Schaltung "noch lebt". Das ganze soll Batteriebetrieben funktionieren. Ich dachte an einen AVR uC, welcher ca alle 60 Minuten aufwacht, misst, das Funkmodul mit Strom versorgt, die Meldung absetzt und wieder einschläft. Allerdings gabe ich gesehen, daß der Tiny13 bei 100khz nur 0,2 mA braucht. Lohnt sich der Einsatz des Sleep-Modus beim Tiny13 und wie wecke ihn ohne externes Signal regelmäßig auf? Empfiehlt sich eventuell der Einsatz eines anderen AVR ? Muss ich beim Beschalten der AVR-Ausgänge etwas beachten um mir die "Strombilanz" nicht zu versauen ? Gruß Günter
Zum aufwachen lassen kann man den Watchdog-Timer verwenden. Also den WD konfigurieren (WDTCR-Register), den WD-Timer zurücksetzen und starten und dann in den Sleep- oder -Powerdown-Modus wechseln. Wenn der WD abgelaufen ist (kann man auf bis zu ca. 8 Sekunden stellen beim Tiny13) muss man mit ner Variable hochzählen und ihn wieder schlafen lassen. Nach 8 Sekunden * X = 60 Minuten führt man dann die Messung durch. Achtung: Es gab oder gibt noch einen Bug in BASCOM, durch den das wdtcr.6-Bit nicht wieder gesetzt wird nach der Abarbeitung der ISR vom Watchdog. Das muss man also in dem Fall immer manuell setzen nach dem Aufwachen. Ist aber glaub ich in der neuesten Version behoben. Zum Status der Ports und evt. erhöhtem Stromverbrauch steht einiges im Datenblatt unter den verschiedenen Stromspar-Modi. Ob man den Tiny für längere Zeit schlafen schicken kann - ohne ihn wie bei der Watchdog-Methode alle 8 sekunden kurz zu wecken - weiß ich nicht. Glaube aber nicht, wenn man keinen externen Interrupt zum Aufwecken nutzen kann. Die paar Microsekunden die er nach jeweils 8 Sekunden wach ist, fallen aber sicher nicht ins Gewicht... Im "Idle"-Mode spart der Tiny auch Strom und der ADC für die Messung läuft dabei weiter. Ist vielleicht noch ne Alternative.
Der Tiny13 sollte sogar noch etwas Sparsamer sein, vor allem wenn man nur 3 V nutz: ca. 0,1 mA bei 5 V 128 kHz, 50 µA bei 3 V. Trotzden lohnt sich ein Stromsparmode. Beim Tiny13 wohl am ehesten der Powerdown Mode. Man kann dann immer noch den Watchdog timer zum aufwecken nutzen (ca. 5 µA bei 3 V). Der wesentliche Nachteil ist, dass man keine wirklich genaue Zeitmessung hat, sonder nur den relativ ungenauen 128 kHz Takt des Watchdog timers. Für einen kleinen Stromverbrauch sollten die Eingänge einen definierten Logic Pegel haben, also nichts irgendwie in der Mitte.
Für solche Sachen nehme ich gerne den M41T81, I2C-RTC. Braucht nur 0,6µA und kann u.a. stündlich einen Interrupt auslösen.
Vielen Dank für die Antworten. @Markus: Ich würde als Porgrammiersprache C nehmen. Gibt es dort auch Probleme mit dem Watchdog ? Als Eingang wollte ich einen normalen digitalen Eingang statt des ADC benutzen. Ich benötige nur die Info, ob ein bestimmter Pegel überschritten ist. @Ulrich: Das mit der ungenauen Taktung wäre für mich kein Problem. Ob er nun nach 45 oder 90 Minuten sein Signal aufwacht und sein Signal sendet ist nicht entscheident. Er soll sich halt nur regelmäßig melden, damit ich bzw die Empfängerschaltung mitbekommt, wenn die Batterie leer ist. @Seiffert Hört sich interessant an. Wie programmiere ich den M41T81 ? Über eine Initialisierungroutine durch den AVR ?
Hallo, Guenter B. schrieb: > Ich dachte an einen AVR uC, welcher ca alle 60 Minuten aufwacht, misst, > das Funkmodul mit Strom versorgt, die Meldung absetzt und wieder > einschläft. Fallso Du als Funksender z.B. RFM02 oder RFM12 benutzen willst, schau mal bei mir rein: http://www.avr.roehres-home.de/sensoren/index.html > Allerdings gabe ich gesehen, daß der Tiny13 bei 100khz nur 0,2 mA > braucht. > Lohnt sich der Einsatz des Sleep-Modus beim Tiny13 und wie wecke ihn > ohne externes Signal regelmäßig auf? Empfiehlt sich eventuell der > Einsatz eines anderen AVR ? Muss ich beim Beschalten der AVR-Ausgänge > etwas beachten um mir die "Strombilanz" nicht zu versauen ? Bei mir läuft es so: Tiny läauft mit internen 8MHz und wird in PowerDown geschickt. Im RFM-Modul läuft der WakeUp-Timer und weckt per externem Interrupt den Tiny. Der mißt dann, sendet den Kram und schickt RFM-Modul und Sensoren wieder schlafen. Im Sleep ca. 2-3µA mit RFM02 und Tiny45. Alle 30-40s ein Datenpaket, etliche ms mit ca. 12mA. Ein Testmodul, daß nur den internen Temperatursensor des Tiny45 nutzt, liegt jetzt seit Anfang April mit einer CR2025 versorgt im Gefrierfach meines Kühlschranks... Gruß aus Berlin Michael
ja, musst ein paar Byte via I2C in die RTC schieben. Ob es sich lohnt, hängt einfach davon ab, wie lange das ganze mit deiner Batterie laufen soll. Kommst du gut ran, dann einfach öfter wechseln. Manchmal lohnt es sich aber, mit jedem µA zu geizen.
@Guenter: Nein, soweit ich weiß gab es den Fehler mit dem WD nur in BASCOM. Ist das denn ne leitende Flüssigkeit? Weil du sagst, dass du keinen ADC sondern einen Digitalen I/O nehmen willst zur Erkennung. Wenn es Wasser ist, brauchst du sonst noch ne externe Beschaltung die dir - je nach dem ob die Drähte im Wasser stecken oder nicht - zuverlässige Lo- und High-Pegel erzeugt. Man muss ja den verbotenen Bereich der TTL-Pegel jeweils überbrücken können. Da wäre dann die Nutzung des ADC mit weniger Aufwand verbunden.
Es handelt sich um Wasser. Genau genommen um die geklärten Abwässer aus meiner neuen Kleinkläranlage. Ich möchte alamiert werden, sobald der Wasserstand im letzten Becken alarmierend hoch ansteigt, falls eventuell die Drainage versagt. Ich dachte daran einfach die beiden Fühlerdrähte mit einem hochohmigen Widerstand in Reihe zu schalten und den Mittelabgriff durch einen Eingang (digital oder falls das nicht funktioniert durch den ADC) auswerten zu lassen.
Nix gegen Drähte, aber ich würde mir trotzdem überlegen, ob ein simpler fertiger Schwimmerschalter nicht vielleicht die Investition wert ist. Zumindest wenn das Ding über lange Zeit zuverlässig funktionieren soll. c*nr*d hat etliche im Angebot, in unterschiedlichen Ausführungen. Kostet auch nicht die Welt (ca. 10...20 Euro).
Einen Schwimmerschalter habe ich schon bestellt. Die Schaltung wollte ich als zusätzliche Sicherheit. Ausserdem kann ich aus diese Weise mal wieder einen AVR sinnvoll verbasteln.
Zu hochohmig sollte man auch nicht werden, sonst fängt man sich alle mögliche Störungen ein. Den Sannungsteiler mit dem Sensor sollte man auch nicht immer unter spannung lassen, sondern nur kurz zum Messen einschalten. So vermeidet man die Pegel im undefinierten Bereich der Digitalen Eigänge. Wenn das Funkmodul fürs aufwecken sorgen kann wäre das vermutlich eine gute Alternative zum Watchdog.
>Die Schaltung wollte ich als zusätzliche Sicherheit. Was soll "zusätzliche Sicherheit" sein? Der Schwimmerschalter tut seinen Dienst und damit ist es gut - Punkt. Wenn Du meinst, dass zwei Füllstandssensoren besser sind, viel Spaß. Sobald sich der Wasserpegel langsam der kritischen Marke nähert, wird immer einer eher umschalten als der andere, aber Du kannst nicht wissen, ob einer der Sensoren defekt ist, oder ob nur der Pegel gerade grenzwertig ist. Das macht wenig Sinn. >Ausserdem kann ich aus diese Weise mal wieder einen AVR sinnvoll >verbasteln. "Schwimmerschalter" und "AVR verbasteln" schließt sich doch nicht aus. Die Aufgabe des Controllers besteht darin, den Zustand des Schalters abzufragen, den Wert jede Stunde per Funk zu übermitteln (vielleicht sogar zusätzlich noch die per ADC gemessene Batteriespannung) und ansonsten Strom zu sparen. Alles davon kann der AVR sehr gut.
Zum Schwimmerschalter habe ich ein Kabel liegen. Da kommt eine Lampe dran, welche leuchtet, wenn der Schalter schließt. Programmierfehler garantiert ausgeschlossen ;-) Das mit dem AVR ist mehr ein zusätzliches Hobbyprojekt. Und zusätzliche Sicherheit gibt er schon. Wenn einer von beiden Alarm gibt, ist es für mich Zeit nachzusehen und zu handeln. Viel schlimmer und damit ein Beweis, daß es mal wieder Zeit für ein AVR-Projekt ist: Ich habe einen meiner Tiny 13 verfused. Ich wollte 128khz einstellen und habe wie im Datenblatt angegeben, die Fusebits Clk0 und Clk1 auf 1 gesetzt. Also dem entsprechend bei Ponyprog beide CLK-Haken weg. Der AVR läßt sich nicht mehr ansprechen. Auch mit externem Takt auf Pin 2 nicht.
>Ich habe einen meiner Tiny 13 verfused. Ich wollte 128khz einstellen und >habe wie im Datenblatt angegeben, die Fusebits Clk0 und Clk1 auf 1 >gesetzt. Also dem entsprechend bei Ponyprog beide CLK-Haken weg. Der AVR >läßt sich nicht mehr ansprechen. Auch mit externem Takt auf Pin 2 nicht. Hast Du die Frequenz des ISP-Programmiertakts angepasst? Sie muss kleiner sein als 1/4 FOSC des zu programmierenden Controllers, bei FOSC = 128 kHz also kleiner als ca. 32 kHz. Geh mal mit der ISP-Frequenz schrittweise runter (ich kenne Ponyprog nicht, nehme aber an, dass es diese Option bietet). Vielleicht kriegst Du Deinen Controller so wieder flott. Wenn nicht, hilft nur noch HV-Parallel-Programmierung (hilft immer).
Ich habe ihn mit der Atmelsoftware und einem anderen Programmieradapter wieder hinbekommen. Wie du schon sagtest, mußte ich den Programmiertakt runtersetzen. Dieses war mir bei PonyProg nicht möglich. Bei 128khz/3V braucht er nun nur knapp 100uA :-)))
in allen neueren abwasseranlagen, die ich kenne, wird der wasserstand über einen luftdrucksensor im schaltschrank gemessen. wo dann, über ein ca. 5x3mm schlauch, ein kleiner trichter im abwasser hängt.
>Bei 128khz/3V braucht er nun nur knapp 100uA
Wenn er "active" ist. Im Sleep Mode "idle" begnügt er sich sogar mit nur
ca. 20 µA. Bei Deiner Anwendung wird der Controller so wenig zu rechnen
haben, dass er die meiste Zeit schlafen können wird.
Wie Du leicht nachrechnen kannst, liegt 20 µA übrigens bereits im
Bereich des Stroms, der der Selbstentladung von Alkalizellen im Laufe
mehrerer Jahre entspricht (Kapazität AA-Zellen ca. 3000 mAh, Haltbarkeit
ca. 10 Jahre ==> I = ?). Etwaige Wünsche nach noch weniger Strombedarf
machen deshalb keinen Sinn. 100 µA kann eine Alkalizelle rechnerisch
30000 Stunden lang fließen lassen, d. h. knapp dreieinhalb Jahre
(ununterbrochen!).
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.