Hallo,
ich habe folgendes Problem: Platine hat einen Eingang für
Batteriespannung, diese wird über einen DC-DC Wandler in 5V und dann
über einen Linearregler in 3.3V gewandelt, worüber ein Mikrocontroller
versorgt wird. Dieser soll, wenn er aktiv ist, die Batteriespannung
mittels ADC messen. Der DC-DC Wandler schaltet beim Unterschreiten eines
festzulegenden Thresholds ab, um die Batterie zu schützen. Folglich
schaltet auch der Mikrocontroller aus, der zu messende Teil der
Batteriespannung liegt aber weiterhin am ADC Pin an. Um das zu
verhindern habe ich die im Bild gezeigte Schaltung vorgesehen.
Gibt es eine kompaktere Lösung mit weniger Bauteilen? Kosteneffizient
muss es nicht sein. Ich habe bereits nach Analogschaltern geschaut,
diese sind aber an ihren Eingängen auch nur für Vcc + 0.5V ausgelegt,
wenn also die VCC von 3.3V nicht mehr anliegt habe ich genau das selbe
Problem. Gibt es einen IC der das Problem lösen kann, oder einen 1-Kanal
ADC der bereits gegen so einen Fall geschützt ist?
>Nach dem 1MOhm Widerstand reicht die ESD-Diode im Chip.
Sehe ich genauso. Wobei möglicherweise die hohe Eingangsimpedanz
90k/14pF Messfehler aufgrund der SH Kapazität verursachen könnte.
Langsam messen! Oder C42 Faktor 1000..10000 höher wählen
Alles bis auf 1M und C42 raus, den C42 deutlich größer.
Der ADC enthält einen internen sample & hold Kondensator.
Dein C42 muss deutlich größer sein als der, weil sonst das Laden des SH
Cap die Messung massiv verändert.
Schau ins MCU DB.
Der max Strom der internen Dioden beträgt wahrscheinlich um die 30mA.
So lange nicht mehr über den 1M kommt hält der ADC Eingang das aus.
Max M. schrieb:> Dein C42 muss deutlich größer sein als der, weil sonst das Laden des SH> Cap die Messung massiv verändert.
Dann musst aber dein Messintervall seltener als 5* 1M*C42_neu sein! Denn
sonst verändert das die Messung auch.
HildeK schrieb:> Dann musst aber dein Messintervall seltener als 5* 1M*C42_neu sein! Denn> sonst verändert das die Messung auch.
Gut erkannt ;-)
Aber Batteriespannungen ändern sich ja nicht so schnell.
Super, vielen Dank für die ganzen Hinweise, dann war meine ursprüngliche
Beschaltung etwas overkill. Kann ich mir die vorgeschlagene Beschaltung
in etwa so vorstellen? Ich habe die Widerstände auch etwas reduziert und
den Kondensator vergrößert.
Ich verstehe nur noch nicht, wie die Diode nach VCC funktioniert. Im
ausgeschalteten Zustand sollte das 3.3V Potential doch unbestimmt sein.
Liegt jetzt Batteriespannung an sollte das doch weiterhin am ADC
anliegen. Oder muss ich die interne Beschaltung des Mikrocontrollers mit
in Betracht ziehen um die Wirkungsweise zu verstehen?
Wenn jetzt der Strom hier so begrenzt wird, kann ich dann auch davon
ausgehen, dass der Mikrocontroller nicht versehentlich eingeschaltet
wird durch die Batteriespannung?
Vielen Dank!
adc_input schrieb:> Ich verstehe nur noch nicht, wie die Diode nach VCC funktioniert.
Die brauchst Du nicht.
Die MCU hat interne Dioden nach VCC + GND. Das sind die Body Dioden der
Mosfet Ausgangsstufen, weil der ADC PIN sicher auch ein Ausgang sein
könnte.
Und da die Body Dioden parasitäre Dioden sind die sich aus der Mosfet
Struktur zwangsläufig ergeben, können die mindestens den Srom den auch
der Mosfet kann.
Steht aber alles im DB.
Prinzipschaltbild der Pin Typen, max. Strom der Ausgänge, max Spannung
an den Eingängen bezogen auf VCC und max. Strom durch die Dioden.
Aber lesen sollte man das schon wenn man HW baut.
Die Dioden klemmen alles was kleiner wird als GND und größer als VCC +-
Diodenspannung.
adc_input schrieb:> Mikrocontroller nicht versehentlich eingeschaltet
Wenn so viel Strom über die interne Diode nach VCC fliesst das VCC weit
genug steigt das der Oszillator startet und der Reset gelöst wird, dann
startet die.
Aber da auch die Ströme der MCU im DB stehen kann man das ganz einfach
ermitteln.
Aber bei 1M Vorwiderstand jetzt nicht die wahrscheinlichste
Konstellation.
adc_input schrieb:> muss ich die interne Beschaltung des Mikrocontrollers mit> in Betracht ziehe
Die solltest Du immer kennen.
Ich weiß das das in der MCU Anwenderszene ein echter Geheimtipp ist den
nur wenige kennen und noch weniger beherzigen, aber Datenblätter
enthalten unschätzbar nützliche Informationen.
Einfach mal lesen.
Es würden sich so wahnsinnig viele Fragen von alleine klären und es
würde so viel bessere HW und SW dabei entstehen.
Schade eigentlich das die so selten beachtet werden.
adc_input schrieb:> liegt aber weiterhin am ADC Pin an. U
Wenn dein Q5 nicht dauerhaft an 3.3V kommt sondern vom uC per
Ausgangspin nur eingeschaltet wird wenn er messen will, dann nicht.
ABER: welche Eingangsimpedanz erlaubt der uC fur ordentliche
Messergebnisse, 91k kommt mir viel vor, ein AVR misst nur bis 10k genau.
UND: 100 Ohm vor Q5 erlauben unnötig viel Strom, 10k tun es auch.
adc_input schrieb:> weniger Bauteilen? Kosteneffizient muss es nicht sein.
HN7G09FE von Toshiba.
adc_input schrieb:> Kann ich mir die vorgeschlagene Beschaltung> in etwa so vorstellen?
Was willst du mit der Diode, so eine befindet sich bereits im
Mikrocontroller.
MaWin schrieb:> welche Eingangsimpedanz erlaubt der uC fur ordentliche Messergebnisse,> 91k kommt mir viel vor, ein AVR misst nur bis 10k genau.
Die Quelle muss den Sample & Hold Kondensator im ADC schnell genug
aufladen können. Dazu darf die Quelle bis zu 10 kΩ haben, dann ist man
auf der sicheren Seite. In dieser Schaltung ist die Quelle der
Kondensator vor dem ADC Eingang, mit einem ESR von annähernd 0 Ω.
Hier ist nur wichtig, nur zu schnell häufig zu messen, sonst wird der
Quell-Kondensator schrittweise entladen. Man muss zwischen den Messungen
genug Zeit lassen, dass er wieder aufgeladen wird.
Der Sample & Hold Kondensator hat etwa 15 pF Kapazität. Im ungünstigen
Extremfall ist dieser vor jeder Messung ganz leer. Wenn der
Quell-Kondensator 1 nF hat, kostet ihn jede Messung etwa 1/66 der
Ladung. Entsprechend wird das Messergebnis verfälscht. Deswegen würde
ich eher 100 nF verwenden.
Stefan ⛄ F. schrieb:> Die Quelle muss den Sample & Hold Kondensator im ADC schnell genug> aufladen können. Dazu darf die Quelle bis zu 10 kΩ haben, dann ist man> auf der sicheren Seite. In dieser Schaltung ist die Quelle der> Kondensator vor dem ADC Eingang, mit einem ESR von annähernd 0 Ω.
Nicht wirklich.
Es gibt auch einen Eingangsfehlersrom, je nach Spannungshöhe am Eingang
reinfliessend oder rausfliessend, von je nach uC (der NATURLICH nicht
genannt wurde) bis zu 1uA, und 1uA an 10k sind satte 10mV.
MaWin schrieb:> Es gibt auch einen Eingangsfehlersrom
Ja, aber den können wir bei den üblichen Mikrocontrollern
vernachlässigen.
Hätte er 10 MΩ vorgeschlagen, dann hätte ich aus dem Bauch heraus auch
Bedenken geäußert.
Wenn er jetzt mit einem exotischen µC ankommt der an dieser Stelle
besonders ungünstig ist -> Selbst Schuld. Das passiert, wenn man Angaben
geheim hält. Wahrscheinlich hast du bemerkt dass ich da nicht mehr so
häufig nachhake wie früher. Wenn man nachfragt wird man meistens blöd
angemacht.
Stefan ⛄ F. schrieb:> 10 mV wären in dieser Anwendung egal
Woher weisst du das, kennst du den TO und seine Schaltung persönlich ?
Bei 91k Eingangsimpedanz wären es übrigens 91mV.
MaWin schrieb:> Woher weisst du das
Weil im Eröffnungsbeitrag steht:
adc_input schrieb:> Dieser soll, wenn er aktiv ist, die Batteriespannung> mittels ADC messen. Der DC-DC Wandler schaltet beim Unterschreiten eines> festzulegenden Thresholds ab, um die Batterie zu schützen.
Da kommt es nicht auf 10 mV mehr oder weniger an.
> Bei 91k Eingangsimpedanz wären es übrigens 91mV.
Hätte hätte Fahrradkette. Er hat 9,1 kΩ Eingangsimpedanz.
Vielen Dank! Der Mikrocontroller ist ein STM32F103 und die
batteriespannung muss nicht besonders genau (+-100mV) und nicht
besonders schnell (0,2 Hz) gemessen werden. Also ist meine
Schlussfolgerung, dass ich den hochohmigen Spannungsteiler behalte,
einen Kondensator mit etwa 100nF (?) vor den Eingang schalte und ich
dann für den Fall, falls die Batteriespannung(<18V) anliegt, VCC aber
nicht, den Mikrocontroller ausreichend geschützt habe? Ich wollte keine
Daten vorenthalten, möchte mich aber für die zahlreichen Kommentare
bedanken!
Gruß
Hi,
so ein ähnliches Problem hate ich auch mal:
Beitrag "Backpowering_CMOS"
Die Lösung ist recht einfach. Strombegrenzerwiderstände.
1M /100k sehen passabel aus.
Aber mit starker Impulsverformung muss gerechnet werden.
Für weniger kritische Anwendungen geht's also.
ciao
gustav
Da es eben nicht auf wenige Millivolt ankommt, würden 1 nF auch gehen.
Allerdings kosten 100 nF nicht wirklich mehr, insofern würde ich mir den
Luxus gönnen.
Hallo, vielleicht ist diese Schaltung was für Dich. Fehlen die 3,3V vom
Mikrocontroller, sperrt der Mosfet und Du hast keinen weiteren
Stromverbrauch durch den Spannungsteiler.
Gruß Carsten
Carsten-Peter C. schrieb:> diese Schaltung
Verfälscht die Messung.
Der Fet kann überhaupt nur durchschalten wenn ADC klein genug ist und
der R1 sieht den Gate Strom, der zwar klein ist aber vorhanden.
Carsten-Peter C. schrieb:> vielleicht ist diese Schaltung was für Dich.
Sicher nicht. Die Spannung am Ausgang (Source) ist immer etwa 2V
geringer als die Versorgungsspannung. Denn in allen anderen Fällen
leitet der MOSFET nicht.
Aber tröste dich, der Fehler poppt hier jede Woche erneut auf. Meisten
allerdings mit bipolaren NPN Transistoren.
Max M. schrieb:> Schau ins MCU DB.> Der max Strom der internen Dioden beträgt wahrscheinlich um die 30mA.
Wo hast du diesen Wert her?
Oft ist der zulässige maximale Strom der internen Klemmdioden gar nicht
spezifiziert. Atmel empfiehlt allerdings in der AVR182, einen maximalen
Wert von 1mA nicht zu überschreiten (*). Wie passt das mit dem von dir
angegebenen Wert zusammen?
(*) S.5 "It is not recommended that the clamping diodes are
conducting more than maximum 1mA"
adc_input schrieb:> habe ich die im Bild gezeigte Schaltung vorgesehen
R67 ist viel zu klein. Der sorgt ständig für die weitere Entladung der
12V(?) Batterie, dabei muß er nur den Reststrom von Q1 eliminieren.
R64 ist viel zu klein. Wie kommt man auf diesen Wert?
Der Sinn von C42 erschließt sich mir nicht. Oder soll der die Eingangs-
kapazität des ADC darstellen? Als reales Bauelement würde man da wohl
eher 10nF vorsehen, um den ADC-Fehler wegen des hohen Quellwiderstands
von ~100K zu verringern. Also: auch zu klein.
Ich würde perspektivisch eher R68 und R69 um Faktor 10 verkleinern. Dann
kann C42 entfallen. Und um die Belastung der Batterie zu minimieren,
reicht es einmal pro Minute zu messen.
Stefan ⛄ F. schrieb:> Weil im Eröffnungsbeitrag steht:> adc_input schrieb:>>> Dieser soll, wenn er aktiv ist, die Batteriespannung>> mittels ADC messen. Der DC-DC Wandler schaltet beim Unterschreiten eines>> festzulegenden Thresholds ab, um die Batterie zu schützen.>> Da kommt es nicht auf 10 mV mehr oder weniger an.
Dort steht NICHT, dass der uC den Tiefentladeschutz bildet.
Sondern das passiert im DC/DC Wandler.
Also weiss man aus dem Eröffnungsbeitrag noch nicht, was er mit dem
Messwert machen will. Das kommt erst jetzt, nach Nachfrage:
Loeten schrieb:> Der Mikrocontroller ist ein STM32F103 und die batteriespannung muss> nicht besonders genau (+-100mV) und nicht besonders schnell (0,2 Hz)> gemessen werden
Immerhin passen 1uA zum uC:
Ilkg
Input leakage current
(6)
VSS ≤ VIN ≤ VDD
Standard I/Os - - ±1
µA
die Eingangsimpedanz hängt von der Wandlungsgeschwindigkeit ab und muss
zwischen 400 Ohm und 50k liegen:
RAIN(2) External input impedance See Equation 1 and
Table 47 for details
1.5 0.11 0.4
7.5 0.54 5.9
13.5 0.96 11.4
28.5 2.04 25.2
41.5 2.96 37.2
55.5 3.96 50
Da er langsam wandeln kann, passt es, aber das wusste man vor
Salamischeibe 3 nicht.
MaWin schrieb:> aber das wusste man vor Salamischeibe 3 nicht.
Man hätte es sich denken können. Dazu braucht man allerdings eine
positive Grundeinstellung.
Stefan ⛄ F. schrieb:> Sicher nicht. Die Spannung am Ausgang (Source) ist immer etwa 2V> geringer als die Versorgungsspannung. Denn in allen anderen Fällen> leitet der MOSFET nicht.
Ich nehme immer den BSS138 der hat typisch 1.3V verlust.
Den Spannungsteiler kann man so umdimensiionieren daß das nicht stört.
Man kann auch eine 1.2V Referenzspannung verwenden wenn man eine hohe
Auflösung braucht.
https://www.mikrocontroller.net/articles/Batteriew%C3%A4chter#Prozessorteil
Gruß Anja
Axel S. schrieb:> R67 ist viel zu klein. Der sorgt ständig für die weitere Entladung der> 12V(?) Batterie
Und wie?
Wenn Q5 abgeschaltet ist, fließt da nicht viel.
Wolfgang schrieb:> Wo hast du diesen Wert her?
Siegessicher ins 328P DB geschaut, und ...
Tatsache, ich finde den nicht mehr in aktuellen Datenblättern.
Auch jede Information wie so eine Ausgangsstufe aufgebaut ist fehlt
weitestgehend.
Die Info habe ich aus einem älteren DB das ich jetzt natürlich nicht
mehr finde.
Da war clamping current ganz klar definiert.
Jetzt fehlt jede Definition zum clamping current.
Auch die 1mA aus AVR182 ist das einzige was überhautpt dazu gesagt wird
und das ist m.E. weit hergeholt das auf alles und jeden Chip zu
übertragen.
Das ist eher: 'Damit sagen wir nix falsches, egal um welchen Pin Typ und
welche MCU es geht'
Wenn es sich um eine reine ESD Diode eines 'input only' handelt, sehe
ich 1mA ein.
Aber alles was auch Ausgang sein kann, hat eine MosFet Halbbrücke am
Ausgang, auch wenn die nicht angesteuert wird und da sind die Body
Dioden eine zwangsläufige Folge des Herstellungsprozesses.
Mosfets ohne Body Dioden gibt es nicht und die kann Prinzipbedingt den
Strom den der Mosfet kann und der kann laut DB 40mA Dauer.
Strange, das das nicht mehr definiert wird.
Max M. schrieb:> Siegessicher ins 328P DB geschaut, und ...Loeten schrieb:> Der Mikrocontroller ist ein STM32F103> Batteriespannung(<18V)
und bei dem steht völlig zweideutig geschrieben:
1
Absolute maximum ratings
2
Injected current on any other pin min. -5mA max. +5mA
3
Input voltage on any other pin min. VSS−0.3V max. 4.0V
Es heißt 4.0V, nicht VDD+4.0V. Ist das ein Tippfehler oder was passiert
bei VDD=0 und Vin=4V???
("any other pin" = das gilt nur für die ADC-Pins, nicht für den Rest.
Und schon garnicht für neuere STM32!)
Bauform B. schrieb:> Es heißt 4.0V, nicht VDD+4.0V. Ist das ein Tippfehler oder was passiert> bei VDD=0 und Vin=4V???
Ganz einfach: Das eine Limit setzt das andere Limit nicht aus.
D.h., es gilt immer beides: Wenn Du die Spannung an einem Pin erhöhst,
darf niemals mehr als 4 Volt anliegen und niemals mehr als 5mA fließen.
Sobald eine Grenze erreicht wurde, egal welche von beiden, darfst Du
nicht mehr höher gehen.
Bauform B. schrieb:> und bei dem steht völlig zweideutig geschrieben:Absolute maximum ratings> Injected current on any other pin min. -5mA max. +5mA> Input voltage on any other pin min. VSS−0.3V max. 4.0V
Was ist daran zweideutig?
Du musst beide Bedingungen einhalten.
Und nicht vergessen: Die Absolute Maximum Ratings bezeichnen keinen
normalen Betriebszustand, d.h. der Chip übersteht das zwar kurzzeitig,
der Hersteller garantiert aber nicht, dass er auf Dauer mit diesen
Parametern betrieben werden darf. Genaueres steht in den Erläuterungen
im Datenblatt.
Bauform B. schrieb:> Es heißt 4.0V, nicht VDD+4.0V. Ist das ein Tippfehler oder was passiert> bei VDD=0 und Vin=4V???
5V kompatible Eingänge eines 3.3V Chips dürfen den Strom nicht nach VCC
ableiten, sondern müssen ihn zum Schutz per Z-Diode (die eher ab 6.8 als
4.0V leitet, aber egal) nach GND ableiten, und das ist unabhängig davon
ob VCC eingeschaltet oder ausgeschaltet ist.
Beim STM32F103 (ich glaube sogar bei allen STM32) sind die analogen
Eingänge aber nicht 5V tolerant. Sie haben intern eine Diode, die
Überspannung nach VCC ableitet.
Stefan ⛄ F. schrieb:> Beim STM32F103 (ich glaube sogar bei allen STM32) sind die> analogen Eingänge aber nicht 5V tolerant. Sie haben intern eine Diode,> die Überspannung nach VCC ableitet.
Ja, weil die Z-Diode den Messwert versaut.