Hallo Leute, ich plane eine Schaltung die mit einem kleinen Akku/Batterie betrieben werden soll. Die Spannung möchte ich gerne überwachen. Aus Platzgründen soll ein Tiny10 SOT23(6) eingesetzt werden. Mein Ziel ist es mit möglichst nur einem ADC-Pin und geringstmöglicher Beschaltung auszukommen. Folgende Methoden zur Überwachung der Versorgungsspannung kenne ich: 1. ADC aus Spannungsteiler füttern und mit interner ref. vergleichen. -Über den Spannungsteiler findet eine permanente Entladung statt. -Der Spannungsteiler könnte geschalten werden, kostet aber einen Pin. 2. ADC mit Vcc als ref, die interne Vbg über mux Messen und Umrechnen. +Geht bei manchen AVRs ohne externe Beschaltung und ohne Portpin. -Beim Tiny10 kann man leider die Vbg nicht auf den ADC legen. -Überhaupt hat er keine konstante Referenzspannung. Meine Frage daher ob dies funktionieren würde: Eine Diode (evtl. Z-Diode) zwischen ADC und GND zu schalten und zur Messung den internen Pullup des ADC-Pin aktivieren. Die Spannung, die an der Diode abfällt ist ja ziemlich konstant und bildet somit meine Konstante zur Variablen ref. Könnte das funktionieren oder hab ich dabei was übersehen? Danke schonmal für Eure Hilfe. Gruß Marian
Könntest auch die Entladekurve eines Kondensators messen: Der Kondensator wird über Pin (Output, High) --- R --- C --- GND geladen. Der Pin wird dann hochohmig und als ADC umgeschaltet und misst nach einer bestimmten Zeit die Spannung. Dadurch ist bestimmt, wo man in der Entladekurve steht und aus der bekannten Zeit kann man dann die Anfangsspannung berechnen. Am besten fügt man parallel zum C noch einen Widerstand ein, um eine definierte Entladung zu garantieren. Braucht keinen Ruhestromstrom und sicherlich auch nicht zu viel Rechenzeit.
Marian S. schrieb: > Könnte das funktionieren oder hab ich dabei was übersehen? klingt für mich erst mal plausibel: - Als Z-Diode würde ich einen LM385-1.2 verwenden (liefert ab ca 10uA bereits eine stabile Spannung). - eventuell brauchst Du noch einen Kondensator am ADC-Eingang da dynamisch kurzzeitig große Ströme während der Messung fließen. (Dem Kondensator mußt Du dann genügend Zeit geben daß er aufgeladen werden kann). Der ADC verlangt ja max 10K als Quellimpedanz und die Pull-ups haben zwischen 20 und 50K. Gruß Anja
P. M. schrieb: > Könntest auch die Entladekurve eines Kondensators messen: Ich glaube nicht, dass das in dem konkreten Fall klappt. Denn: P. M. schrieb: > ...und misst nach > einer bestimmten Zeit die Spannung. hier bräuchte man wieder eine Referenz, die man aber nicht hat.
Hallo, irgendwie vermisse ich die Angabe der Batteriespannung und die nötige Genauigkeit der Messung... Ab ca. 2,5V vielleicht einfach eine rote LED mit Vorwiderstand als Referenz an den ADC-Pin, VREf = Vcc und etwas rechnen. Wenn es genauer (eigentlich stabiler gegen Temperaturänderungen usw.) sein soll, eine Referenzspannungsquelle an den ADC-Pin, LM385Z z.B., kostet nur ca. 50 Cent. Gruß aus Berlin Michael
Wenn dem Tiny10 die interne Referenz fehlt, ist es vielleicht einfach der falsche Chip. Dafür gibt es spezielle Chips wie etwa Max6775, die sogar teils noch kleiner sind und ohne zusätzliche Teile auskommen. Welcher Chip passt hängt natürlich von den Anforderungen ab - da hat meine Glaskugel nicht die nötige Reichweite.
Hallo, schönen Dank für Eure Antworten! Ich werde es wohl einfach mal mit einem anderen AVR testen müssen, da mir das nötige Equipment für die SOT23 Winzlinge noch fehlt. @Anja Danke für den Hinweis mit dem C. @Michael Versorgungsspannung wird wahrscheinlich ein LiXX Akku mit ~4,2V. Es reicht die Messung alle paar Sekunden durchzuführen. Ich möchte damit den Akku vor Tiefentladung schützen (erst Warnsignal, dann Abschaltung). Genauigkeit, gute Frage. Die Warnung soll bei ~3,3V eintreten, der Akku darf nicht unter 2,7V gehen. Ein Problem könnte evtl. noch der Temparaturbereich sein: Normal wären +15 bis +50°C auftreten, wobei unter Extremstbedingungen auch -15 bis +80°C auftreten können. Dabei darf er gerne eher abschalten. Die Idee mit der LED finde ich interesant, da ich die ja auch als Anzeige nutzen könnte. @Ulrich Der Tiny10 hat (fast) alles was ich brauche: ISP, Timer, 2x Pwm, ADC, Baugröße (oder besser Baukleine). Ich hoffe mit Eurer Hilfe das Problem mit der fehlenden ref lösen zu können. Für weitere Ideen wäre ich Dankbar
Was noch möglich wäre ist der Spannunsteiler den du selbst vorgeschlagen hast : Die Widerstände berechnest du mit "RNAVR" ( übrigens: SUPer programm) ach , ja , ansonsten kannst du ja direkt mit der Spannung Arbeiten, hier ein Pogramm in BAscom : $regfile "attiny10def.dat" $crystal = 1000000 Config Adc = Single , Prescaler = auto , Start Adc Config Portb.1 = output CONST ADC_MULTI = 5.0 / 1024.0 DIM messergebnis AS WORD DIM volt AS SINGLE do: messergebnis = GETADC(0) volt = messergebnis * ADC_MULTI Select Case Volt case 4,5 to 5,5 portb.1 = 0 case else portb.1 = 1 end Select wait 1 loop end ( ich bin mir nicht ganz sicher ob die "def.dat" datei stimmt , aber alles andere sollte stimmen =) )
Marian S. schrieb: > Aus Platzgründen soll ein Tiny10 SOT23(6) eingesetzt werden. Wie klein ist denn der Akku, daß ein SO-8 daneben zu groß ist? Z.B. der ATtiny25 hat interne Referenz und Temperatursensor. Peter
Hallo, @Jackenhoffer Leider ist bascom für mich ein böhmisches Dorf. Mit C habe ich schon erste Erfahrungen gesammelt. Dies wäre auch die Sprache meiner Wahl. Das mit dem Spannungsteiler über 2 R wird denke ich an dem Problem der mangelnden konstanten Ref scheitern. @Peter Super Tipp, Danke. Der Akku (wird wohl ein 25500) ist separat untergebracht. Es handelt sich dabei um eine Taschenlapme. Die Platine ist winzig (29mm Durchmesser, 10mm Loch in der Mitte, 2x 3mm Bohrungen) und trägt bereits 9 SOT89 (AMC7135). Ist leider schon recht eng bestückt. Ein SO8 0.150" würde evtl. noch passen. Da muss ich mal bisschen mit dem Layout rumspielen. Alternativ wirds halt ein MLF. Der Tempsensor im Tiny25 hätte durchaus noch was. Ein wenig mehr Speicher ist auch nie verkehrt. Und die Neuanschaffung eines TPI Programmers könnte ich mir auch sparen. Wenn ich das richtig gelesen habe, sollte es so funktionieren: Vcc als ref., Input als Vbg. Was mus ich dazu ins ADMUX schreiben (etwa 000X1100)? Das "X" in der Tabelle irritiert mich. Danke und Gruß Marian
Das X steht für Bits die keine Wirkung haben. Da kann also was x-beliebiges rein.
Vielen Dank für die Info Ulrich! Dann kann ich mich jetzt ans Platinenbasteln machen. Danke für Eure Hilfe!
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.
