Hallo zusammen, Threads zu Spannungsteilern gibt es viele. Leider komme ich damit in meinem Fall nicht weiter und bräuchte daher euren Rat, wie die Spannungsmessung am besten umzusetzen ist. Ausgangssituation: Ein Pro Mini Board mit 328P auf 3,3V und 1 MHz Clock wird von einem LiPo versorgt. Es befindet sich ein MIC5205 oder MIC5219 LDO Regulator auf dem Bord, der die 3,3V für den 328P zur Verfügung stellt. Im Normalbetrieb schläft der AVR den größten Teil der Zeit. Von daher darf der Stromverbrauch des Spannungsteilers maximal im niedrigen zweistelligen µA Bereich sein. Benötigte Genauigkeit der Messung: 0,02 V Interne Referenzspannung: 1,1V Versorgungsspannung 328P: 3,3V Der zu messende LiPo schwankt bei der Spannung zwischen 4,23 Volt (Ladeschlussspannung) und 3,35V (Minimalspannung die nicht unterschritten werden soll – der LDO Regulator muss ja auch noch laufen. LDO Minimum Input Voltage?). Aus Stromspargründen gibt es noch die Überlegung den LDO Regulator zu entfernen. Dann läuft der 328P direkt am LiPo. Der 328P läuft bei 1MHz bis runter auf 1,8V - da wäre der LiPo schon lange tot. Was haltet ihr davon den LDO zu entfernen? In der unten beschriebenen Schaltung muss auch ein Level Converter von 5V zu 3,3V & 3,3V zu 5V eingesetzt werden. Fraglich ob der Level Converter auch mit wesentlich mehr als 3,3V (z.B. 4,23 V) zu 5V funktioniert, wenn der LDO entfernt wurde. Habt ihr eine Empfehlung? TXS0108E? PCA9306? Die sich ständig ändernde LiPo-Spannung soll ca. 5x/Sek. gemessen werden. Sollte die Messung nach dem Einschalten ergeben, dass der LiPo genug Saft hat, dann wird über den 328P ein MOSFET geschaltet, der dann wiederum ein 5V StepUp / Board versorgt, wo ein Raspberry mit 5V TFT zum Einsatz kommt. Kurz nach dem Einschalten (und noch deaktiviertem 5V Bereich) gibt es kaum Stromverbrauch in der Schaltung. Reicht die Belastung für eine Messung? Die maximale Stromaufnahme wird beim Einschalten der 5V Umgebung ca. 1A in Spitze sein. Laufender Betrieb schätzungsweise 200-400mA. Der LiPo wird im laufenden Betrieb weiterhin ca. 5x/Sek. gemessen (mit Mittelwertbildung). Sollte die Spannung des LiPo in bestimmte Bereiche fallen, gibt es einen Warnton bzw. einen Shutdown des Raspberry und anschließende Abschaltung des 5V Bereichs und der AVR legt sich dann wieder schlafen. So wie ich das gelesen habe, gibt es im Prinzip nur folgende unkomplizierte Alternativen: 1. ein hochohmiger Spannungsteiler mit Kerko-Abblockkondensator - die hohe Ohmzahl sorgt für einen Stromverbrauch im µA Bereich und der Keramikkondensator in einer Größenordnung von 100nF versorgt den (ca.) 14-30 pF Kondensator im ADC bei der Messung mit genügend Strom und gleichzeitig werden hochfrequente Störungen eliminiert. Der 100 nF sorgt quasi dafür, daß der ADC beim S&H-Zyklus die nötige niederohmige Quelle „sieht“. 2. ein normalohmiger(?) Spannungsteiler mit p-FET: http://fettricks.blogspot.de/2014/01/reducing-voltage-divider-load-to-extend.html Der p-FET hält die Schaltung nur für 2ms und schaltet dann automatisch ab. Der AVR hat gerade mal 2ms Zeit die Messung durchzuführen. Sollte aber reichen. Je nach Stomversorgung kann sich die Schaltung Störungen einfangen, die wohl den p-FET beeinflussen(?) http://jeelabs.org/2013/05/19/supply-noise-sensitivity/index.html 3. irgendein Spezial-IC !? 4. ein normalohmiger Spannungsteiler mit n-FET(?), der den Spannungsteiler abschaltet. Auch hier stellt sich die Frage irgendwelcher Leckströme über interne Dioden und ob ein n-FET das bei der Projektanforderung auch bewältigen kann (Spannung zu gering für korrektes durchschalten!?). Der StepUp Wandler wird letztendlich auch vom LiPo versorgt. Somit könnte der StepUp Störungen in die 3,3V Umgebung abstrahlen? Reicht der 100nF am Spannungsteiler, um hochfrequente Störungen auszugleichen? Für das Messergebnis ist eine hochohmige „Antenne“ am ADC natürlich nicht gut. Zudem kann es z.B. bei Lagerung im Sommer im Auto zu hohen Temperaturen kommen. Von daher wäre eine andere stromsparende Lösung für eine Messung sinnvoller? Eine temperaturkompensierte Lösung scheidet aus, da zu komplex. Man kann ja nur so oft am ADC einlesen, dass man davon ausgehen kann, dass der 100nF Kondensator auch wieder geladen ist. Sonst misst man angeblich eine zu kleine Spannung. Wie oft pro Sekunde kann mit einem 100nF gemessen werden? Gibt es einen Online Rechner hierfür? Als ob das Problem möglicher hoher Temperaturen und hochfrequenter Störungen noch nicht genug wäre: Was ist mit dem I/O-Leakage Current? Laut Jakob und Hinweis im Datenblatt kann der bis zu 1 µA sein. "1 µA * 140 kOhm = 140 mV = 43 LSB. Für beispielsweise 5 V ergibt das einen möglichen Fehler bis +/- 0,22 V!" Geht gar nicht! Wie würdet Ihr das am besten aufbauen? Könnt ihr mich unterstützen, in dem ihr mir zu verwendende Werte oder einzusetzende Bauteile nennt? Kenne mich leider nicht gut genug aus. Danke!
Nimm Lösung 1 und miss einmal alle 5 Sekunden oder langsamer. Alles andere ist viel zu kompliziert und für diese Anwendung übertrieben.
Häng den Controller direkt an den Akku und mess die Betriebsspannung indem du eine Referenzquelle an deinen ADC hängst. So kannst du die Betriebsspannung messen und wenn es unter die Spannung vom Akku fällt, kannst du sie ja abschalten, da dein Controller ja mit weniger Spannung auskommt und so noch messen kann.
AVRs haben interne Referenzen. Abweichungen des ADC-Wertes vom wirklichen Wert kann man durch Kalibrierung wegrechnen.
Alfred S. schrieb: Von daher darf > der Stromverbrauch des Spannungsteilers maximal im niedrigen > zweistelligen µA Bereich sein. Im zeitlichen Mittel, ja. > Benötigte Genauigkeit der Messung: 0,02 V Nope. Die nötige Genauigkeit der Spannungsmessung wird bei Li-Ion deutlich überschätzt. Wenn du die maximale Energie aus dem Akku rausholen willst, musst du so genau sein. Aber wenn du den Akku einfach 10% größer auslegen kannst, tu das. > Interne Referenzspannung: 1,1V > > Versorgungsspannung 328P: 3,3V > > Der zu messende LiPo schwankt bei der Spannung zwischen 4,23 Volt > (Ladeschlussspannung) und 3,35V (Minimalspannung die nicht > unterschritten werden soll – der LDO Regulator muss ja auch noch laufen. > LDO Minimum Input Voltage?). Bei 3,1V-4,1V lebt der Akku länger. Aber du nutzt ca. 15% der Kapazität nicht. Effektiv lässt du deinen AVR so lange laufen, bis entweder die Akkuspannung unter 3,1V gesunken ist oder er einfach ausgeht. Den LDO ignorierst du, der AVR hat ne BOD. > Aus Stromspargründen gibt es noch die Überlegung den LDO Regulator zu > entfernen. Dann läuft der 328P direkt am LiPo. Der 328P läuft bei 1MHz > bis runter auf 1,8V - da wäre der LiPo schon lange tot. Was haltet ihr > davon den LDO zu entfernen? Die 1,1V Referenzspannung kann der AVR bei der Eingangsspannung möglicherweise nicht mehr erzeugen. Aber ansonsten ist die Idee gut. > > Die sich ständig ändernde LiPo-Spannung soll ca. 5x/Sek. gemessen > werden 5 Mal pro Sekunde? Das kann auch deutlich seltener sein. Rechne doch aus, welche maximale Spannungsänderung pro Sekunde auftreten kann. > > 1. ein hochohmiger Spannungsteiler mit Kerko-Abblockkondensator [...] Das ist richtig. Die beiden FET-Varianten lassen sich auch durch BJTs ersetzen. Wenn der Spannungsteiler 10k hat, machen die paar Ohm eines gesättigten NPN herzlich wenig aus. > Man kann ja nur so oft am ADC einlesen, dass man davon ausgehen kann, > dass der 100nF Kondensator auch wieder geladen ist. Sonst misst man > angeblich eine zu kleine Spannung. Wie oft pro Sekunde kann mit einem > 100nF gemessen werden? Gibt es einen Online Rechner hierfür? Taschenrechner und Gehirn reichen völlig. Wie groß der interne S/H Kondensator ist, steht im Datenblatt. Wie ein Successive-Approximation ADC funktioniert, steht auf Wikipedia. > Als ob das Problem möglicher hoher Temperaturen und hochfrequenter > Störungen noch nicht genug wäre: Was ist mit dem I/O-Leakage Current? > Laut Jakob und Hinweis im Datenblatt kann der bis zu 1 µA sein. "1 µA * > 140 kOhm = 140 mV = 43 LSB. Für beispielsweise 5 V ergibt das einen > möglichen Fehler bis +/- 0,22 V!" Geht gar nicht! I/O Leakage ist die Angabe für die Leckströme an den I/O Pins. ADC ist was eigenes. > Wie würdet Ihr das am besten aufbauen? Könnt ihr mich unterstützen, in > dem ihr mir zu verwendende Werte oder einzusetzende Bauteile nennt? > Kenne mich leider nicht gut genug aus. Ich fasse zusammen: Die Aufgabe ist einfach, dein Grundlagenwissen bestenfalls sehr lückenhaft, dein Wissen zum AVR ebenso. Und als ob das nicht genug wäre: Praktisch alles hättest du auch einfach ausprobieren können, mit Steckbrett und Multimeter. Es gibt Leute, die haben das getan: http://www.hilltop-cottage.info/blogs/adam/avr-adc-2-experiments-in-operating-the-adc-at-its-extremes-attiny85/ Du brauchst keine Spezial-ICs, du brauchst Grundlagenwissen. Und dann musst du auch nicht nach Bauteilwerten fragen. Ich hab ein Oszi, ein billiges Multimeter, ein Sammelsurium an Transistoren, Widerständen und Kondensatoren und den Casio fx991DE. Damit konnte ich bisher alles bauen.
Alfred S. schrieb: > Was haltet ihr davon den LDO zu entfernen? Selbstverständlich. Er scheint ja zu nichts nütze zu sein. Alfred S. schrieb: > MIC5205 Schreckliches Teil. Braucht 150uA für sich, wenn er nur 5uA liefert. Der niedrige <5uA Strom gilt nur im shutdown. Und warum ein low noise Regulator für uC-Versorgung ? > MIC5219 und der braucht sogar 170uA Alfred S. schrieb: > 1. ein hochohmiger Spannungsteiler mit Kerko-Abblockkondensator Unnötig. Der ATmega328 kann seine Betriebspannung (direkt am Akku) direkt im Vergleich zu den 1.1V interner Referenz messen. Alfred S. schrieb: > Somit könnte der StepUp Störungen in die 3,3V Umgebung abstrahlen? Ja. Software-Tiefpassfiltern. Alfred S. schrieb: > TXS0108E Der ist ganz ok, verträgt absolute Maximum 4.6V, das sollte für 4.2V eines LiPoly ausreichen obwohl nicht mehr in den recommended Bereich.
:
Bearbeitet durch User
Michael B. schrieb: > Unnötig. Der ATmega328 kann seine Betriebspannung (direkt am Akku) > direkt im Vergleich zu den 1.1V interner Referenz messen. Wobei die Auflösung dann aber schon etwas unterirdisch ist.
Alfred S. schrieb: > Ein Pro Mini Board mit 328P auf 3,3V und 1 MHz Clock wird von einem LiPo > versorgt. Es befindet sich ein MIC5205 oder MIC5219 LDO Regulator auf > dem Bord, der die 3,3V für den 328P zur Verfügung stellt. Im > Normalbetrieb schläft der AVR den größten Teil der Zeit. Von daher darf > der Stromverbrauch des Spannungsteilers maximal im niedrigen > zweistelligen µA Bereich sein. Ich habe neulich eine Anwendung gemacht, die aus 12V-Blei gespeist wird. Erstmal den Längsregler vom ProMini runter, ebenfalls die PowerOn-LED. Mein A* läuft mit 5V @8MHz und braucht im Schlaf 7µA, zählt alle 8s einen Zähler hoch und wird bei größer 111 kurz mal aktiv = etwa alle Viertelstunde. > Die sich ständig ändernde LiPo-Spannung soll ca. 5x/Sek. gemessen > werden. Etwas viel, da lohnt es kaum noch, schlafen zu gehen. > Der LiPo wird im laufenden Betrieb weiterhin ca. 5x/Sek. gemessen (mit > Mittelwertbildung). In meinem Szenario messe ich einmal, um schnell wieder schlafen zu gehen. Erst, wenn der Wert kritisch ist, betreibe ich Oversampling. Meinen Spannungsteiler habe ich mit 2kOhm nach GND niederohmig ausgelegt, wird plusseitig mit einem P-FET eingeschaltet. Hier musste ich mir nach dem Einschalten 2ms delay gönnen, andernfalls war mein Meßwert nicht sicher. Du kannst auch andenken, das in Hardware zu lösen - z.B. ICL7665 als Spannungsüberwachung. Ich versorge über einen MCP1703, dessen Querstrom habe ich mit 5µA gemessen. Bei einer Li-Zelle und nur 1 MHz würde ich den µC direkt drauf klemmen, der Spannungsbereich passt exact zum AT328. THOR schrieb: > Ich fasse zusammen: Die Aufgabe ist einfach, dein Grundlagenwissen > bestenfalls sehr lückenhaft, dein Wissen zum AVR ebenso. Mal wieder ein dusseliger Kommentar! Die Fragestellung von Alfred ist hinreichend präzise formuliert. THOR schrieb: >> bis runter auf 1,8V - da wäre der LiPo schon lange tot. Was haltet ihr >> davon den LDO zu entfernen? > Die 1,1V Referenzspannung kann der AVR bei der Eingangsspannung > möglicherweise nicht mehr erzeugen. Aber ansonsten ist die Idee gut. Siehe Anhang aus dem Datenblatt, bis kurz unter 2V kann der AT328 die hinreichend genau einhalten. Knut B. schrieb: >> direkt im Vergleich zu den 1.1V interner Referenz messen. > Wobei die Auflösung dann aber schon etwas unterirdisch ist. Quark! Das ist ein Mikrocontroller, der muß nicht mit Fluke oder Prema konkurrieren. Für einen Endwert von 4,2V bekomme ich 4,1mV pro Schritt, das ist für die Akkuüberwachung mehr als hinreichend.
Ich fasse bisher zusammen: 1. LDO und Power LED runterlöten. 2. Direkter Betrieb des 328 am LiPo. 3. LiPo ohne Spannungsteiler direkt am ADC anschließen. 4. Wie geplant interne Referenzspannung von 1,1V verwenden. 5. Nur alle paar Sekunden messen: Hier ist nach dem Einschalten das Problem, dass man entsprechend "viele" Sekunden warten muss, bis das Messergebnis brauchbar steht und die Peripherie eingeschaltet wird?! Quasi ein unschönes "Bootdelay". Wie kann ich das lösen? 6. Die Raspberry GPIO Pins wollen 3,3V Level. Von daher benötige ich keinen Logic Level Converter mehr. 7. Wenn der 328 aber direkt am LiPo hängt, werde ich ohne Logic Level Converter nicht auskommen!? 4,2V vom LiPo übersteigen die 3,3V der Raspberry GPIO Pins. Was haltet ihr davon?
1 ja 2 ja Alfred S. schrieb: > 3. LiPo ohne Spannungsteiler direkt am ADC anschließen. Falsch! 4 falsch 7 richtig
Für präzise Messungen wäre mir die interne Referenz zu ungenau. Bei einer Schaltung mit PIC habe ich das mit einer externen Referenz (2,5V) gelöst, die zum Messen eingeschaltet wird (s. Schaltplan: R1, U2). Im Sleep-Modus wird GP5 auf Output-high und dadurch die Referenz ausgeschaltet, zum Messen wird GP5 auf low gesetzt und 2,5V an GP4 gemessen, mit der Versorgungsspannung (= Spannung der Li-Zelle) als AD-Referenz. Daraus ergibt sich die Batteriespannung als: Ub = 2,5V * (AD-Auflösung)/(gemessener AD-Wert), bei einem 10-Bit Wandler also U in mV = (2500 * 1024)/AD_Result
:
Bearbeitet durch User
Thomas E. schrieb: > Für präzise Messungen wäre mir die interne Referenz zu ungenau. Was ist "präzise"? Und was ist "ungenau"? Instabil? Nee, oder? Das einfache Verfahren: Der Messbereich ist bekannt. Am oberen und unteren Ende wählt man je einen Punkt. Und wendet die klassische 2 Punkt Kalibrierung an. Das bekommt man ohne jedes externe Bauteil hin. Einzig ein gutes Multimeter ist für die Kalibrierung nötig.
Arduino F. schrieb: > Was ist "präzise"? Das definiere ich für meine Schaltungen immer noch selbst. Arduino F. schrieb: > Und was ist "ungenau"? Die "Min"- und "Max"-Werte bei definierter Vcc und definierter Temperatur von 1.0 bis 1.2 V - das ist für mich ungenau! Da können sie typische Kurven in ihre Datenblätter malen, wie sie wollen, solange keine garantierten Grenzwerte über VCC- und Temperaturbereich definiert sind, nehme ich den "Worst Case" an, nämlich die +/- 10% (ach ja, bei anderen Temperaturen, als 25 Grad und anderen VCC, als 2,7V könnte es ja auch mehr werden...). Arduino F. schrieb: > Das einfache Verfahren: > Der Messbereich ist bekannt. > Am oberen und unteren Ende wählt man je einen Punkt. > Und wendet die klassische 2 Punkt Kalibrierung an. Das noch einfachere Verfahren: ich baue eine Referenz mit für meine Ansprüche ausreichender Genauigkeit ein und spare mir die Notwendigkeit von Kalibrierungs-Orgien. Zudem habe ich nach Datenblatt meiner Referenz die Gewissheit, daß die Werte auch über den gesamten Temperaturbereich, in dem ich die Schaltung einsetzen möchte, nicht übermäßig abweichen.
:
Bearbeitet durch User
Thomas E. schrieb: > die +/- 10% Ach die... Exemplarstreuung... Die holste doch mit der 2 Punkt Kalibrierung raus.
Arduino F. schrieb: > Ach die... Exemplarstreuung... > Die holste doch mit der 2 Punkt Kalibrierung raus. Mal abgesehen davon, daß ich keinen Bock habe, z.B. für eine Ungenauigkeit von läppischen 1% schon eine Kalibrierung der Schaltung vornehmen zu müssen: Wenn ich die Kalibrierung bei Zimmertemperatur vornehme, wer sagt mir, wo die Werte dann bei leichtem Frost oder betriebswarmen 40 Grad liegen? Darauf, daß sich mein Exemplar vom Controller an die Werte der "typischen" Kurven hält, mag ich mich nicht verlassen, zumal aus dem Datenblatt nicht mal typische Werte bei diesen Temperaturen ersichtlich sind. Und um ein paar Cent für die Referenz zu sparen, kaufe ich mir keine Klimakammer und nehme von jedem Exemplar auch noch stundenlang Temperaturkurven auf. Aber wie ich schrieb: "wäre MIR die interne Referenz zu ungenau" - es ist jedem freigestellt, das anders zu sehen.
Alfred S. schrieb: > 1. LDO und Power LED runterlöten. Ja > 2. Direkter Betrieb des 328 am LiPo. Ja > 3. LiPo ohne Spannungsteiler direkt am ADC anschließen. Nein, mit geschaltetem Spannungsteiler. > 4. Wie geplant interne Referenzspannung von 1,1V verwenden. Ja > 5. Nur alle paar Sekunden messen: Ja > Hier ist nach dem Einschalten das > Problem, dass man entsprechend "viele" Sekunden warten muss, bis das > Messergebnis brauchbar steht und die Peripherie eingeschaltet wird?! > Quasi ein unschönes "Bootdelay". Wie kann ich das lösen? Nicht _Sekunden_: Mit meiner Arduino-Umgebung und einem FET brauche ich 2 Millisekunden, aus dem Schlaf heraus einen glaubhaften A/D-Wert zu bekommen. > 6. Die Raspberry GPIO Pins wollen 3,3V Level. Von daher benötige ich > keinen Logic Level Converter mehr. > 7. Wenn der 328 aber direkt am LiPo hängt, werde ich ohne Logic Level > Converter nicht auskommen!? 4,2V vom LiPo übersteigen die 3,3V der > Raspberry GPIO Pins. Wenn am Raspberry pullup-Widerstände sind, kann der Arduino den Eingang mit einer Schottkydiode in Reihe auf GND ziehen, das würde einen aktiven Converter entbehrlich machen. Andererseits sind Platinchen mit dem TXS108E günstig zu haben. Aus dem Datenblatt: "FEATURES 1.2 V to 3.6 V on A Port and 1.65 V to 5.5 V on B Port (V CCA ≤ V CCB )"
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.