Hallo Liebe Bastler,
ich habe da eine Frage zu einer Schaltung die ich entworfen habe. Es
handelt sich um eine Schaltung zum Messen einer angelegten Spannung und
Messen des Stromflusses welcher mit Hilfe eines Sense-Widerstandes
gemessen werden soll.
Verwendet habe ich dafür den IC LTC2990 welcher 4 Eingänge hat an denen
man Spannungen einzeln wie auch als Differential messen kann. Dieser IC
hat einen 14 Bit ADC integriert und gibt die Daten an meinen µC weiter
der die dann verarbeitet und momentan seriel, später per Display
ausgibt.
Ich habe dafür eine Platine entworfen und bei den kritischen
Leiterbahnen zur Messung der Differentialspannung auf eine gleich lange
Leiterbahn geachtet. Da ich Spannungen bis ca. 18 V messen wollte, habe
ich einen Spannungsteiler verwendet wie es auch als Beispiel in dem
Datenblatt des ICs angegeben war. Wie auf dem Schaltplan zu erkennen
ist, habe ich bei den Widerstandspaaren R2/R4, R3/R5 tunlichst auf
gleiche Werte geachtet. Ich habe alle nachgemessen und möglichst gleiche
verwendet, zumindest von der Auflösung/Genauigkeit die mein Messgerät
hergab. Ich habe für R2/R3 unterschiedliche Kombinationen versucht.
56K/12K, dann 150K/33K und um eine möglichst hohe Impedanz zu erreichen
sogar 10M/3M.
Bei der ersten Kombination 56K/12K hat der ADC mir auf den einzelnen
Kanälen Werte um die +/-2 gesampelt (Analog zu Digital) wenn keine
Spannung angelegt war, was einem wunderbaren Wert entspricht. Gut ein
Kanal hatte irgendwas um die 40 +/-2, aber das erachte ich immer noch
als guten Wert zumal dieser stabil war.
Jetzt komme ich zu dem Problem, je höher die angelegte Spannung war,
desto mehr Strom ist auch über den Spannungsteiler geflossen. D.h. es
gab einen größeren Stromfluss der ja bei einer Sannungsmessung bei
weitem nicht gewollt ist. Ich habe das versucht auszugleichen indem ich
eine von der gemessenen Spannung abhängige Geradegleichung verwendet
habe um diesen Effekt wieder herauszurechnen. Dazu habe ich zwei
Spannungsreferenzen verwendet und habe mir aus dessen gesampelten Werten
eine Geradengleichung aufgestellt. So konnte ich dann abhängig vom
gesampelten Wert den Sollwert der gesuchten Spannung interpolieren. Das
hat im Großen und ganzen für die Spannung auch gut funktioniert, kam
damit jedoch nie auf 0V sondern immer nur um die 50mV.
Dann habe ich gedacht, da Spannungsmessgeräte auch eine sehr hohe
Impedanz aufweisen, probiere ich es mit 10M/3M. Leider war dies absolut
nicht von Erfolg gekrönt. Zum einen haben die gesampelten Werte irre
stark geschwankt, und zwar in Bereichen von +/-30, zum anderen hat der
schon hohe gesampelte Werte gemessen obwohl noch keine Spannung
angelegen hat. Alleine schon das Verbinden der Masse einer externen
Spannungsquelle hat dieses Rauschen verursacht. Jetzt meine Frage, wie
kam das zu Stande, und wie kann ich Abhilfe schaffen? Welche Widerstände
würdet ihr dort verwenden? Was würdet ihr verändern um stabilere oder
bessere Ergebnisse zu erzielen? Sollte man statt einem Spannungsteiler
vielleicht einen OpAmp davorschalten wie in der Beispielschaltung im
Datenblatt des ICs? Messen möchte ich allerdings nur Spannungen von 10
bis max. 20V und nicht bis 100V wie in dem Beispiel im Datenblatt.
Das Datenblatt: http://cds.linear.com/docs/en/datasheet/2990fd.pdf
Den Quelltext für den µC kann ich auch zur Verfügung stellen für die
jenigen die es interessiert. Software habe ich im Griff, da ich
Softareentwickler bin, Hardware ist für mich noch relativ neu :)
Für diese Aufgabe gibt es das Stichwort "High-Side Current Sense
Amplifier".
Googeln fördert Dir zB den LTC6101 oder den AD8210 oder INA219 zu Tage.
Wenn Du einen INA220 oder INA226 nimmst, kommen die Werte gleich digital
hinten raus.
fchk
Frank K. schrieb:> Googeln fördert Dir zB den LTC6101 oder den AD8210 oder INA219 zu Tage.>> Wenn Du einen INA220 oder INA226 nimmst, kommen die Werte gleich digital> hinten raus.Benjamin K. schrieb:> Verwendet habe ich dafür den IC LTC2990 welcher 4 Eingänge hat an denen> man Spannungen einzeln wie auch als Differential messen kann.
Deine Hilfe ist wirklich so nützlich wie ein Furunkel am Arsch.
Im übertragenen Sinn bedeutet das:
Frage:
"Ich möchte einen Kuchen backen und habe Eier, Mehl, Zucker und Hefe zur
Verfügung"
Deine Antwort:
"Nimm einen Mosfet, brücke dessen Anschlüsse mit einem 8er
Inbus-Schlüssel und gieße Motorenöl 5W30 dazu!"
Dass es nicht so gut ist, high-side-Ströme per Spannungsteiler "nach
unten" zu verlegen und dann zu messen, hast Dir damit irgendwie
vorgeführt.
Nicht umsonst hat man für diesen Zweck spezielle ICs entwickelt. Sie
enthalten die notwendigen gepaarten Spannungsteiler, Differenzverstärker
und evtl. Spannungsquellen.
Das Herunterteilen bringt enorme Fehler auch bei kleinen Ungenauigkeiten
der Spannungsteiler. Du musst ja wenige mV des Sensorwiderstandes um
z.B. 9V auf messbares Niveau herunterbringen und dann auch noch die
Differenz messen. Da müssen die beiden Spannungsteiler diese 9V bis auf
wenige mV genau herunterteilen. Das sind Tausendstel und weniger an
Teilungsfehler. Ein bisschen Temperaturunterschied pfuscht da mit
mehreren mV hinein, oder sogar mit -zig mV.
Für diese Messaufgabe (die Differenz zweier im V-Bereich liegender
Spannungen auf mV aufzulösen) ist solch eine durchgehende Masseebene,
wie oben gezeigt, ungeeignet. Über sie können aus andren Teilen der
Schaltung Streuströme fließen, die mit vielen zig oder gar 100mV das
Messergebnis stören. Die Masse der beiden Spannungsteiler muss genau so
sorgfältig (isoliert) bis zum AD-Wandler geführt werden wie die
Leitungen für die beiden Messwerte.
Also: high-level ICs nehmen oder Masseführung vom Spannungsteiler zum
AD-Wandler sorgfältig durchführen und direkt an den beiden
Spannungsteilern einen guten Differenzverstärker anschließen.
Vielleicht ändern sich aber auch die Ströme in den Sensorwiderständen
tatsächlich so wie vom ADwandler ausgegebenen Werte?
Kai Mauer schrieb:> Deine Hilfe ist wirklich so nützlich wie...
Und welche Hilfe stellt Dein Kommentar dar ???
Bei der Leiterplatte oben müssen die Massepunkte von R3,R5,R7,R9 von der
allgemeinen Masseebene getrennt werden. Im Idealfall müssten sie dann
einzeln zu EINEM Massepunkt direkt am IC geführt werden, z.B. als
Leiterbahn unter den R2,R3,...R8,R9. Da sie aber dann wirklich nur den
geringen Strom der Teiler führen, könnte eine "Teilermasse" an den vier
Widerständen vorbeigeführt werden und direkt am AD-Wandler enden.
Gerade die Masseführung um die Messpannungsteiler herum sind ein
Musterbeispiel dafür, wie mans nicht machen darf.
Erst einmal vielen Dank für die Antworten. Ich entnehme daraus, dass ich
eigentlich nicht das richtige Bauteil für diesen Zweck verwendet habe,
und dass ich falsch vorgegangen bin mit dem Spannungsteiler. Das ist ja
schon einmal gut zu wissen. D.h. ich sollte mir weitere Arbeit daran
ersparen und eine neue Schaltung mit anderen Bauteilen entwerfen oder?
Mit anderen Worten ich schaue mir den INA226 einmal genauer an. Was gibt
es dabei noch zu beachten?
Peter R. schrieb:> Im Idealfall müssten sie dann> einzeln zu EINEM Massepunkt direkt am IC geführt werden, z.B. als> Leiterbahn unter den R2,R3,...R8,R9.
Wow, ist das echt so extrem mit der Masse? Die Massen sind doch aber
trotzdem dann irgendwo miteinander verbunden?
Max Mustermann schrieb:> Und wie bist du auf DIE Werte gekommen???
Ich habe 18V als Maximlaspannung angenommen, und wollte dann bei dieser
Spannung die maximale VCC Spannung an dem kleineren Widerstand anliegen
haben, so dass ich den Umfang des ADC vollkommend ausnutzen kann.
Wenn man unbedingt beim Umweg über die Teiler bleiben will, muss man
schon mit der Masse gut aufpassen. Über die Teiler nimmt die
Empfindlichkeit gegenüber Störungen um Rund den Faktor 500 (Spannung ist
grob 100 mal höher als Spannung am Shunt, Teilung des Signals durch ca.
5) zu - entsprechend hoch wären die Anforderungen, nicht nur an die
Masse. Daher ist es schon richtig einen anderen Weg zu suchen. Der
INA226 wäre schon recht passend.
Wenn man mit nur einem INA226 auskommen will, muss man mit der
Verbindung zwischen den Kanälen ggf. aufpassen. Wenn man 2 der INA
nehmen will, muss man sehen das man verschieden I2C Bus Adressen
bekommt. Je nach genauer Anwendung könnten die Shunts ggf. auch auf der
Low side liegen, so dass es ggf. einfacher wird. Man muss ggf. auch
aufpassen das über die Masse keine Ausgleichsstrom zum µC fließt - auch
das hängt aber davon ab wofür man das ganze braucht.
Je nach Anwendung lohnt es sich ggf. über jeweils 20 ms zu mitteln um 50
Hz Störungen z vermeiden.
Torsten C. schrieb:> Warum kein Low-Side-Shunt? Das würde doch einiges vereinfachen.
Weil sich damit die Masse des DUT stromabhängig nach oben verschieb, je
nachdem wieviel Spannung über dem Shunt abfällt.
Peter schrieb:> Torsten C. schrieb:>> Warum kein Low-Side-Shunt? Das würde doch einiges vereinfachen.> Weil sich damit die Masse des DUT stromabhängig nach oben verschieb, je> nachdem wieviel Spannung über dem Shunt abfällt.
Ach! Die Frage war eher, ob die Masse-Anhebung für die Anwendung von
'Benjamin K.' ein Problem wäre.
Ansonsten gäbe es ja noch Hall-Sensoren, aber die reagieren empfindlich
auf störende Magnetfelder.
Torsten C. schrieb:> Ansonsten gäbe es ja noch Hall-Sensoren, aber die reagieren empfindlich> auf störende Magnetfelder.
Ich hatte mir diese auch schon einmal angeschaut, aber zumindest nach
dem was ich gesehen habe, können diese nur sehr ungenau kleine Ströme
messen sondern sind eher dafür gedacht größere Ströme zu messen.
Torsten C. schrieb:> Die Frage war eher, ob die Masse-Anhebung für die Anwendung von> 'Benjamin K.' ein Problem wäre.
Kannst du das mit der Masseanhebung nochmals genauer erklären bzw. mir
weiterführende Links dazu posten? High-Side sieht für mich auf dem
ersten Blick wie Low-Side aus, nur dass der Messwiderstand einmal direkt
an der Masse hängt und einmal an der Last.
Aber wenn ich das richtig sehe, sollen die beiden Massen nur über einen
Punkt direkt am IC miteinander verbunden werden und nicht vorher. Kannst
du denn sind nochmals genauer erläutern?
Benjamin K. schrieb:> Torsten C. schrieb:>> Ansonsten gäbe es ja noch Hall-Sensoren> Ich hatte mir diese auch schon einmal angeschaut, aber zumindest nach> dem was ich gesehen habe, können diese nur sehr ungenau kleine Ströme> messen sondern sind eher dafür gedacht größere Ströme zu messen.
Kommt vermutlich sehr darauf an, welcher Sensor verwendet wird, und wie
groß Deine Ströme sind.
> Torsten C. schrieb:>> Die Frage war eher, ob die Masse-Anhebung für die Anwendung von>> 'Benjamin K.' ein Problem wäre.>> Kannst du das mit der Masseanhebung nochmals genauer erklären bzw. mir> weiterführende Links dazu posten? High-Side sieht für mich auf dem> ersten Blick wie Low-Side aus, nur dass der Messwiderstand einmal direkt> an der Masse hängt und einmal an der Last.
Das heißt vor allem, dass auch der Verbraucher mit seiner Versorgung mit
nicht mehr genau an der Masse hängt. Irgendwelche ungewollten
Verbindungen zur Masse stören dann (Gehäuse, Kurzschluss, ...) oder
können je nach Situation zu Schäden führen. Bei der Isolation zur hohen
Versorgungsspannung ist man meist viel vorsichtiger.
> Aber wenn ich das richtig sehe, sollen die beiden Massen nur über einen> Punkt direkt am IC miteinander verbunden werden und nicht vorher. Kannst> du denn sind nochmals genauer erläutern?
Vor allem ist mir unklar, warum bei den Spannungsteilern die kleinen
Widerstände (12k) oben sind bei einer Mess-Spannung von 18V. Common
Mode Range ist von 0 bis Vcc, d.h. der Spannungsteiler muss 4:1 nach
unten teilen, R2, R4, R6, R8 müssen 56k sein, R3, R5, R7, R9 12k. Kleine
Cs zu den 12k parallel beruhigen die Werte.
Welche absoluten Werte (im singleEnded-Mode, nicht im Differential-Mode)
im hast Du da gemessen bei welcher Spannung?
Ich vermute, die waren bereits am Anschlag.
2. Wenn Du die Gnd-Anschlüsse von R5 und R7 möglichst kurz in Richtung
IC legst (R hochkant und dünnes Drähtchen), wird es bestimmt besser.
3. Die Tipps von oben sind schon richtig, besser nimm ein IC, das dafür
gemacht ist, MAX4080 ff wären weitere Beispiele.
Benjamin K. schrieb:> Kannst du das mit der Masseanhebung nochmals genauer erklären bzw. mir> weiterführende Links dazu posten? High-Side sieht für mich auf dem> ersten Blick wie Low-Side aus, nur dass der Messwiderstand einmal direkt> an der Masse hängt und einmal an der Last.
Im Schaltbild ist R1 der Sensorwiderstand (60mOhm) und R6 der Widerstand
zwischen linken und rechten Masseanschlüssen (einge mOhm).
Sowohl der Nutzstrom als auch der Streustrom liefern Spannung an den
ADWandler.
Wird dagegen an den kurzen gestrichelten Linien getrennt und per lange
gestrichelte Linie verbunden, kommt die am Streuwiderstand entstehende
Spannung garnicht am Wandler an.
Am nähesten kommt deine Schaltung der Large Motor Protection/Regulation
im Datenblatt, diese hat 8:1-Teiler (71,5k + 10,2k).
Was auf jeden Fall zu berücksichtigen ist: Der Eingangsstrom ist bei
einer Spannung unter 1,49V negativ, darüber positiv (siehe "Sampling
Currents").
Bei so hochohmigen Spannungsteilern wirkt sich das deutlich aus und muss
korrigiert werden. Mich wundert, dass sie dafür keine Formeln agegeben
haben, evtl. gibt es eine Application Note dazu.
Noch was: das IC kann scheinbar auch kleine negative Spannungen
bis etwa -0,35V messen:
VSINGLE-ENDED = (invert(D[14:0]) +1) • –305.18μV, if Sign = 1
siehe auch den Graph "Single-Ended Transfer Function" und
Table 10 @ -0.300V
Wich hoch ist Deine Vcc?
Welche Spannungen / Ströme willst Du messen?
Bitte poste Deine Software und die Überlegungen wg. Unlinearität und
Geradengleichung.
Zu meinem Vorschlag C parallel R: bei Differentialmessung besser den C
zwischen V1 und V2 bzw. V3 und V4.
Vergleich LowSide / HighSide: Bei LowSide entfällt der Spannungsteiler,
der auch dass Current-Signal entsprechend absenkt -> kleinerer Rsense
möglich.
eProfi schrieb:> Vor allem ist mir unklar, warum bei den Spannungsteilern die kleinen> Widerstände (12k) oben sind bei einer Mess-Spannung von 18V.
Ich bitte um Entschuldigung, die Schaltung auf der Abbildung ist falsch,
der kleine Widerstand ist unten. Das hatte ich jedoch bereits behoben.
An dem 12K fällt nach LTSpice eine Spannung von etwa 3,176V ab wenn die
zu messende Spannung 18V beträgt. VCC ist etwa 3,25V.
eProfi schrieb:> Kleine Cs zu den 12k parallel beruhigen die Werte.
Kommt es da dann nicht zu Verfälschungen durch den seriellen
Innenwiderstand (ESR) von Kondensatoren? Welche Größen würdest du
vorschlagen? Picofarrad oder eher Nanofarrad?
eProfi schrieb:> Was auf jeden Fall zu berücksichtigen ist: Der Eingangsstrom ist bei> einer Spannung unter 1,49V negativ, darüber positiv (siehe "Sampling> Currents").
Das war mir auch nicht ganz Verständlich. Allerdings nutze ich keine
Singleended Spannungsmessung sondern verwenden das Differential.
Da laut Datenblatt die Maximum Differential Voltage -300...300mV
betragen darf, muss ich dafür sorgen dass maximal +/- 300mV über den
Messwiderstand abfällt. Dies war bei einem maximal zu erwartenden
Stromfluss von 10A bei einer Spannung von 18V der Fall.
Nachdem die Werte die dort herauskamen für mich nicht schlüssig waren,
habe ich mir gedacht gehe ich das ganze einfach mathematisch an und baue
mir eine Funktion die abhängig vom Samplewert den Sollwert der Spannung
interpoliert. Da die Abhängigkeit ja eine Gerade sein müsste, habe ich
mir die Gleichung zusammengebaut. Ich habe dazu für zwei
Referenzspannungen so ca. 1000 Werte gesampelt, und der Median stellt
für mich dann den Wert dar der am nächsten dem Soll herankommt. Die
Samplewerte habe ich in der Exceltabelle sortiert um grafisch besser
dessen Häufigkeit sehen zu können.
Dazu habe ich folgende Werte herausbekommen (Single ended an V1 bzw.
V2):
R1/R2 (150K/33K)
Soll: 2,5V, Samplewert: 2131
Soll: 18V, Samplewert 10620
Stellt man das ganze um, kann man die Steigung und Achsenabschnitt
berechnen eigentlich:
Geradengleichung: y(x) = m * x + b
m = (y2-y1) / (x2-y1)
Der Samplewert entspricht dabei dem x:
m = (18V-2,5V) / (10620-2132) = 0,001826
Einsetzen:
y(x) - (m * x) = b
2,5V - (0,001826 * 2131) = -1,3909765578984568264813287784269
Damit kann ich dann ja theoretisch für jeden Samplewert die Spannung
interprolieren bzw. extrapolieren. Man erkennt jedoch schon an dem "b",
dass ich bei dem Samplewert von 0 nie auf 0V komme, sondern auf -1,39V.
Nachdem du mich darauf hingewiesen hast ist mir gerade aufgefallen, dass
diese -1,39 doch sehr nahe an die im Datenblatt erwähnten -1,49V kommt.
Ob das kein Zufall ist? :)
PS: Für alle Interessierten, das Datenblatt vom LTC2990 hat leider an
ein paar Stellen kleine Fehler. Die Gleichung auf Seite 11 stimmt nicht
ganz, bzw. lässt sich nicht eins zu eins übernehmen da die von einem 14
Bit 2er-Komplement ausgehen. Berechnet man dies auf einem µC der z.B. 16
Bit Register hat führt dies zu Fehlern. Besser ist folgende allgemeine
Formel:
1
uint8_tmsb=ReadFromLtc2990(...);// HIGH
2
uint8_tlsb=ReadFromLtc2990(...);// LOW
3
4
int16_traw=(msb&0x3f)<<8|lsb;
5
6
if(msb<C2990_BIT_SIGN){
7
raw=-((16384-raw)+1);
8
}
Ebenso unrichtig ist die angegebene I2C Adresse für ADR0/ADR1 (0/0).
Diese lautet 0x4c und nicht 0x98.
Peter R. schrieb:> Wird dagegen an den kurzen gestrichelten Linien getrennt und per lange> gestrichelte Linie verbunden, kommt die am Streuwiderstand entstehende> Spannung garnicht am Wandler an.
Ich werde einmal versuchen an der vorhandenen Platine die Massen zu
durchtrennen und anders zu verbinden.
Benjamin K. schrieb:> 2,5V - (0,001826 * 2131) = -1,3909765578984568264813287784269
Interessante Zahl. Jetzt brauchst Du nur noch ein Voltmeter, das
so einen Wert messen kann. Leider gibt es ein solches Voltmeter
nicht in unserem Universum...
Ich bitte um Überarbeitung meines Postes um die Zahl
-1,3909765578984568264813287784269 auf eine in diesem Universum
gebäuchliche Zahl mit 3-Nachkommastellen abzuschneiden. Kopfschüttel
Benjamin K. schrieb:> Ich bitte um Überarbeitung meines Postes um die Zahl> -1,3909765578984568264813287784269 auf eine in diesem Universum> gebäuchliche Zahl mit 3-Nachkommastellen abzuschneiden. *Kopfschüttel*
Tja, das Internet vergisst nie. Vielleicht gibt es in 1.000.000 Jahren
ja ein passendes Voltmeter. :-)
Harald, wenn Du was zum Thema beitragen willst, bitte. Wenn nicht, ...
Wenn Du wenigstens bemerkt hättest, dass das Ergebnis nicht ganz
richtig ist: 2,5 - (0,001826 * 2131) = -1,391206
> Kommt es da dann nicht zu Verfälschungen durch den seriellen> Innenwiderstand (ESR) von Kondensatoren?
Nein, ERS wirkt sich nur bei Wechselbelastung aus. Wenn dann wirkt sich
ein Isolationswiderstand aus, der ist idR ziemlich groß.
> Welche Größen würdest> du vorschlagen? Picofarrad oder eher Nanofarrad?
Kommt auf die Spannungsquelle an, wie steif die ist...
Was willst Du messen, echte Gleichströme oder pulsierendes?
1 - 10 nF
> Da die Abhängigkeit ja eine Gerade sein müsste,> habe ich mir die Gleichung zusammengebaut.
Ich glaube, man braucht eine Fallunterscheidung bei
ADC 1,49/0,00030518 = 4882,3645
> Berechnet man dies auf einem µC der z.B. 16> Bit Register hat führt dies zu Fehlern.> Besser ist folgende allgemeine Formel:
LT gibt auch Beispielroutinen für Arduino / Linduino:
http://www.linear.com/docs/44667> Massen zu durchtrennen und anders zu verbinden.
R hochkant einseitig einlöten und mit einem einzelnen Drähtchen einer
Litze in Richtung Gnd beim IC verbinden (Luftverdrahtung).
> Ansonsten gäbe es ja noch Hall-Sensoren
z.B. von AMS im SO8-Gehäuse oder von LEM
Wie wertest Du den ADC aus? Was ist da angeschlossen??
Wie ist das geerdet?
eProfi schrieb:> Harald, wenn Du was zum Thema beitragen willst, bitte.
Zum Thema ist m.E. genug gesagt worden. Es ist immer kompliziert,
Ströme auf der Highside zu messen. Man sollte entweder auf der
Masseseite messen, oder ICs verwenden, die speziell zur Highside-
Strommessung gebaut werden. Solche Spannungswerte, wie Du sie
geschrieben hast, entstehen typisch, wenn man solche Schaltungen
simuliert. In der Simulation kann man aber nur mit theoretischen
Bauelementen arbeiten. Verwendet man echte Bauelemente mit
Toleranzen, funktionieren viele Schaltungen dann nicht mehr.
eProfi schrieb:> 2,5 - (0,001826 * 2131) = -1,391206
Genaugenommen stimmt mein Ergebnis doch, da ich für "m" den ungekürzten
Wert verwendet habe :) Es mag ja stimmen wie Harald schrieb dass man das
nicht messen kann, aber rechnen MUSS man mit den genauen Werten.
eProfi schrieb:> Was willst Du messen, echte Gleichströme oder pulsierendes?
Also ich messe nur Gleichspannungen, habe da eben einen 33nF eingebaut,
und es funktioniert so weit wie erwartet.
eProfi schrieb:>> Massen zu durchtrennen und anders zu verbinden.> R hochkant einseitig einlöten und mit einem einzelnen Drähtchen einer> Litze in Richtung Gnd beim IC verbinden (Luftverdrahtung).
Sieht zwar abenteuerlich aus, aber es hat funktioniert.
Ich verwende ein Arduinokompatibles Board (Teensy 3.1) das über einen
GPIO die Spannung liefert. Die Massen sind über ein Kabel miteinander
verbunden. Der µC hängt momentan noch an USB, später an einer Batterie.
Den kompletten Quelltext kann ich leider noch nicht anhängen, ich habe
da noch zu viel unnütze Sachen drin, die muss ich erst entfernen.
Benjamin K. schrieb:> Sieht zwar abenteuerlich aus, aber es hat funktioniert.
Prima. Gratulation.
...und das ganz ohne den Einsatz von vollkommen anderen Chips und dem
Befolgen seltsamer Ratschläge.
Die Hilfe von "E-Profi" war zielgerichtet und verdiente den Namen
"Hilfe".
Darüber freue ich mich und nun überschüttet mich wieder mit negativen
Bewertungen, wenn ihr Freude dran habt.
Ich werde trotzdem nicht aufhören, sinnlosen Mist als sinnlosen Mist zu
bezeichnen und Pseudohilfe als solche zu kennzeichnen.
Hast Du beachtet, dass P=R*I²? 0,06*100=6
Da wird es Dir den R auslöten.
Besser mehrere parallel auf die ganze Breite verteilt.
Um die Empfindlichkeit zu erhalten, ist es zu überlegen, ob man nicht
doch Low-Side versucht ohne Spannungsteiler.
Habe sogar daran gedacht, dass man die dicke außen verlaufende
Gnd-Leitung als Rsense verwenden kann, das Layout wäre günstig, wenn man
zwischen den beiden schwarzen Buchsen (die oberen im Bild geloetet.jpg)
die Fläche unterbricht, damit die beiden Kanäle unabhängig sind.
Rsense ganz abkoppeln (R2, R4, R6, R8 raus) und kurzschließen.
Die Temperaturabhängigkeit des Kupfers kann man mit dem internen
Temp-Sensor kompensieren...
Wg. Gnd habe ich gefragt, ob nicht Ground-Loops entstehen, wenn mehrere
Geräte geerdet sind, z.B. Rechner und Netzteil oder Quelle oder Senke.
Du hast jetzt 150k und 33 k drin. Hast Du bedacht, dass der Strom aus
den Input-Pins dann stärker zum Tragen kommt?
Hast Du meinen Vorschlag mit der Fallunterscheidung verstanden?
Auch schreibst Du, dass Du keine Single-Ended-Messung machst.
Wie misst Du dann die Spannung?
Zuerst einmal, ich habe einen Fehler gemacht. Ich habe die Gleichung
aufgestellt und nicht gesehen dass ich meine Spannungsreferenz bereits
gehimmelt hatte, diese hat nicht mehr 2,5V sondern irgendwas anderes.
Deshalb kamen diese komischen Werte Zustande.
Jetzt sieht das ganze realistischer aus, allerdings kann ich nur über
einen Drehpoti und Messgerät die Spannungen einstellen was nicht allzu
genau ist.
Codewort für 2,5V: 1463
Codewort für 18V: 10616
Codewort für 0V (offen): -2
m = 0,001693433847
b = 0,022506282093
Das heisst bei 0V messe ich 19mV, das ist nicht schön. Achja, ich messe
schon Single Ended Spannung, jedoch berechne ich nicht den Strom mit
dieser Methode, sondern über die Differenzmethode.
Ich wüsste auf Anhieb jetzt auch nicht wie ich aus der durch den
Spannungsteiler herabgesetzte Single Ended Spannung die echte Spannung
berechne.
eProfi schrieb:> Hast Du meinen Vorschlag mit der Fallunterscheidung verstanden?
Um ehrlich zu sein, nein habe ich nicht verstanden.
Ich habe jedoch das Datenblatt an einer Stelle scheinbar falsch
interpretiert glaube ich. Die V_DIFF(CM), also die maximale Spannung die
an den Eingängen V1, V2, V3, V4 anliegen darf *wenn die
Differenzspannung gemessen werden können soll* darf maximal VCC
betragen. Dessen Differenz V_DIFF(MAX) maximal -300 mV bis 300 mV.
Ich bin jetzt davon ausgegangen, dass diese V_DIFF(CM) dann auch für die
maximale Single Ended Spannung zutrifft. Dies scheint aber nicht so zu
sein wie in Tabelle 10 auf Seite 17 zu sehen. Ich hatte diese als
Beispiel betrachtet bei Anlegen einer VCC von 5V. Das Codewort mit dem
Wert 16383 soll ja laut Tabelle eine Spannung >5V andeuten. Dies erklärt
auch meine relativ kleinen Codeworte von 10620 für die Spannung 18V
obwohl an den Spannungsteiler-Widerständen (nachgemessen) schon ca.
3,24V anliegen was bei mir fast 100% der VCC entspricht.
eProfi schrieb:> Hast Du beachtet, dass P=R*I²? 0,06*100=6
Ich habe mich da um ehrlich zu sein auf das Datenblatt verlassen, aber
hast recht, der ist nur für 1W ausgelegt eigentlich. So kann ich
höchstens bis zu 4A messen, aber das reicht erst einmal.
eProfi schrieb:> Du hast jetzt 150k und 33 k drin. Hast Du bedacht, dass der Strom aus> den Input-Pins dann stärker zum Tragen kommt?
Puh, kannst du das nochmals genauer erläutern bitte?
eProfi schrieb:> Habe sogar daran gedacht, dass man die dicke außen verlaufende> Gnd-Leitung als Rsense verwenden kann, das Layout wäre günstig,...
Ich würde es gerne ersteinmal so einigrmaßen zum Laufen zu bekommen,
deinen Vorschlag würde ich dann evtl. später testen und nochmals darauf
zurückkommen.
Ich habe einmal meinen Quelltext angehängt.
Eine weitere Methode um an die echte Spannung zu kommen war folgende:
Ich ermittle die Teilspannung am Spannungsteiler bei einer fest
eingestellten zu messenden Spannung von z.B. 18V.
Dann kann ich einen Faktor berechnen N = 18V / "Teilspannung" und dieser
wird mit dem Koeefizienten 305,18 mV multipliziert. Das funktioniert
dann so lange einigermaßen gut so lange ich nahe an der 18V bleibe, aber
je tiefer die zu messende Spannung desto mehr weicht diese vom Soll ab.
Den Faktor den ich ermittelt habe bei mir war 5.55486759548144 so dass
ein LSB einen Wert von 1,695 mV aufweist, d.h. die Genauigkeit müsste
1,695 mV betragen eigentlich.
Ebenso müsste V1 (da wo die Spannung anliegt) ja etwas größer sein als
V2 da über den Messwiderstand ja eine kleine Spannung abfällt. Diese
beträgt laut LTSpice etwa 15µV und ist denke ich aber deshalb ja nicht
mehr messbar da dieser außerhalb des Auflösungsvermögens liegt oder? Es
kam schonmal vor, dass V2 gößer war, ich denke das liegt einfach daran,
dass die gegenüberliegenden Widerstände nicht ganz den gleichen Wert
aufwiesen. Das mit den Spannungsteilern gefällt mir immer weniger.
Irgendwie frage ich mich, macht es sinn noch weiter Zeit zu investieren
oder sollte ich das nicht doch neu designen alles?
> Zuerst einmal, ich habe einen Fehler gemacht. Ich habe die Gleichung> aufgestellt und nicht gesehen dass ich meine Spannungsreferenz bereits> gehimmelt hatte, diese hat nicht mehr 2,5V sondern irgendwas anderes.> Deshalb kamen diese komischen Werte Zustande.
Welche Referenz? Die IC-interne?
> Jetzt sieht das ganze realistischer aus, allerdings kann ich nur über> einen Drehpoti und Messgerät die Spannungen einstellen was nicht allzu> genau ist.
Hast Du jetzt ein neues IC eingelötet?
> Codewort für 2,5V: 1463> Codewort für 18V: 10616> Codewort für 0V (offen): -2
Am besten, Du misst gleichzeigig noch die Spannung am jeweilgen
IC-Eingang mit dem Multimeter.
> Um ehrlich zu sein, nein habe ich nicht verstanden.
Wenn ich das Datenblatt richtig interpretiere, liegt je ein R (0,17µA
pro Volt sind 5,88 MOhm) zwischen einer imaginären Spannungsquelle
(1,49V) und jedem Eingang. Der fließende Strom beeinflußt Deinen
Spannungsteiler (deshalb ist der Einfluß des Stromes von den konkreten
Werten abhängig), nur bei 1,49V (ADC 4882) nicht, da kein Strom fließt.
Deshalb die Fallunterscheidung, ob ADC über oder unter 4882 ist,
denn da gelten jeweils andere Geradengleichungen. Deshalb schreiben sie
ja auch, dass bei sehr geringer Impedanz der Quelle der Fehler
vernachlässigbar ist (Inputs with source resistance less than 200Ω will
...)
> Ich bin jetzt davon ausgegangen, dass diese V_DIFF(CM) dann auch für> die maximale Single Ended Spannung zutrifft. Dies scheint aber nicht> so zu sein wie in Tabelle 10 auf Seite 17 zu sehen.
Wenn sie die Dez- ud/oder Hex-Werte danebengeschrieben hätten, wäre das
vorteilhaft.
Deshalb von mir:
0 11111111111111 16383 3FFF >5 16383*0,00030518=4,99976394
0 10110011001101 11469 2CCD 3.500 11469*0,00030518=3,50010942
0 01111111111111 8191 1FFF 2.500 8191*0,00030518=2,49972938
0 00000000000000 0 0000 0.000 -983*0,00030518=-0,2999919
1 11110000101001 15401 3C29 –0.300 (15401 - 16384 = -983)
> Ich hatte diese als Beispiel betrachtet bei Anlegen einer VCC von 5V.> Das Codewort mit dem Wert 16383 soll ja laut Tabelle eine Spannung >5V> andeuten. Dies erklärt auch meine relativ kleinen Codeworte von 10620> für die Spannung 18V obwohl an den Spannungsteiler-Widerständen (nach-> gemessen) schon ca. 3,24V anliegen was bei mir fast 100% der VCC> entspricht.
Schau Dir die "Single-Ended Transfer Function" an, dort siehst Du, dass
bei Vcc=3,3V nur bis 3,9V gemessen werden kann, da dann die
Eingangsschutzdioden leitend werden.
Bei 18V ist der theoretische Wert 18*33/(150+33)=3,2459016393
/0,00030518=10636,02345
Dein Wert ist mit 10616 (10620) zu klein, und das liegt daran, dass der
Spannungsteiler mit (3,2459 - 1,49)/5,88=0,2986 µA belastet wird.
>> eProfi schrieb:>> Hast Du beachtet, dass P=R*I²? 0,06*100=6> Ich habe mich da um ehrlich zu sein auf das Datenblatt verlassen,> aber hast recht, der ist nur für 1W ausgelegt eigentlich. So kann> ich höchstens bis zu 4A messen, aber das reicht erst einmal.
Selbst bei einem Watt wird der R sehr heiß, das hält er nur bei
"unendlich" guter Kühlung aus.
> Es kam schonmal vor, dass V2 gößer war, ich denke das liegt> einfach daran, dass die gegenüberliegenden Widerstände nicht> ganz den gleichen Wert aufwiesen.> Das mit den Spannungsteilern gefällt mir immer weniger.
Das kannst Du doch einfach wegrechnen. Wie sind denn die ADC-Werte von
V1 bis V2, wenn kein Strom fließt, d.h. die selbe Spannung an den
Spannungsteiler-Eingängen anliegt?
> Irgendwie frage ich mich, macht es sinn noch weiter Zeit zu> investieren oder sollte ich das nicht doch neu designen alles?
Gute Frage. Jetzt wo Du schon so weit bist, bekommen wir das auch noch
hin.
Ich habe mir einmal die Mühe gemacht und für V1/V2 diverse Kombinationen
an Spannungen durchgemessen und protokolliert (Siehe Anhang). Die ADC
Codeworte schwanken um die +/-10 teilweise.
Die Spannung liegt jeweils am Kanal V1 an. Die Spannung stammt aus einem
Notebook Netzteil, diese habe ich über einen sehr genauen Drehpoti
(270K) eingestellt. Ich habe dann die Spannung gemessen die am
Spannungsteiler (untere Widerstände) abfällt.
Wenn man sich das grafisch darstellt sieht das ganze sehr linear aus.
Nur bei der Differenz V1-V2 sieht das ganze komisch aus. V1 und V2 haben
fast immer so gut wie die gleichen Werte, erst bei den höheren
Spannungen erkennt man eine kleine Abweichung.
eProfi schrieb:> Welche Referenz? Die IC-interne?
Nein ich hatte einen 0,1% genauen 2,5V Referenzspannungs IC verwendet.
eProfi schrieb:> Hast Du jetzt ein neues IC eingelötet?
Nein, nur den Referenzspannungs IC verwende ich nicht mehr da er leider
kaputt ist.
eProfi schrieb:> Schau Dir die "Single-Ended Transfer Function" an, dort siehst Du, dass> bei Vcc=3,3V nur bis 3,9V gemessen werden kann, da dann die> Eingangsschutzdioden leitend werden.
Das hatte ich in der Tat übersehen, das erklärt einiges.
Sooo, das pdf ist ja interessant.
V1-V2 stimmt nicht, wie hast Du die berechnet??
Die Abweichung ist doch schön linear und kann herausgerechnet werden,
d.h. die Faktoren für jeden Kanal einzeln bestimmen.
Gleiche bekannte Spannung an V1 und V3 anlegen, "Kalibrierknopf drücken"
--> die Werte werden für jeden Kanal getrennt berechnet (dann brauchst
Du auch nicht die Rs selektieren).
mV --> µV
Spalten, die noch hinzugefügt werden müssen:
Erwarteter rechnerischer ADC-Wert und die Abweichung von diesem.
Auffällig ist die Abweichung bei 19V, evtl. wird da die
Eingangsschutzdiode schon leicht leitend, Lösungen:
- Vcc erhöhen, 3,5 - 4,0 reicht
- Rs verkleinern
- Teilungsverhältnis leicht verkleinern (ca. 5,8)
- Gleichung finde, die die Abweichung beschreibt (Excel-Funktion)
- Wertetabelle (Stützpunkte mit Interpolation)
Komischerweise sind immer wieder Ausreißer drin.
Später mehr dazu.
> Alleine schon das Verbinden der Masse einer externen Spannungs-> quelle hat dieses Rauschen verursacht. Jetzt meine Frage, wie> kam das zu Stande, und wie kann ich Abhilfe schaffen?> Die ADC-Codeworte schwanken um die +/-10 teilweise.
Diese Frage müsstest Du beantworten, einige Stichpunkte habe ich bereits
genannt: Gnd-Brumm-Schleife? Welche Punkte sind mit PE (Erde,
Schutzleiter) verbunden??
Hat das 19V-Netzteil einen 2- oder 3-poligen Netzstecker?
> Welche Widerstände würdet ihr dort verwenden?
Möglichst kleine Werte.
> Was würdet ihr verändern um stabilere oder bessere Ergebnisse> zu erzielen?
mit PT1-Filter glätten:
U16_t ADCsum+=ADC-ADCsum/4;
ADCsum wächst dann auf den 4-fachen ADC-Wert an.
/4 (shr 2) geht noch bei einem 14-bit-Wandler, wenn ein stärkerer Filter
erwünscht ist (shr 3 oder shr 4), U32_t verwenden.
Habe den Code nur kurz überflogen. Nutzt Du die automatische
Kanalumschaltung? Ggf. "manuell" umschalten und öfters den selben Kanal
wandeln, die ersten Ergebnisse nach einem Kanalwechsel verwerfen.
Erstmal vielen Dank für deine Mühen sich das alles anzuschauen.
Also ich habe nochmals genauer die Spannungen aufgenommen, in einigen
Bereichen auch die Mittelwerte der ADC Codeworte verwendet. Ich bin
nicht zufrieden (siehe Anhang). Nach dem was ich da so gerechnet habe
weichen meine aus den ADC Codeworten berechneten Werte teils bis 20mV
vom Soll ab. Ich wollte jedoch 1mV, max. 5mV Genauigkeit erreichen. Ich
habe noch nicht alles an Werten gemittelt, das macht das ganze
sicherlich noch einmal geringfügig genauer.
eProfi schrieb:> V1-V2 stimmt nicht, wie hast Du die berechnet??
Doch, das ist der vom IC berechnete Differenzwert mit einer Auflösung
von 19µV (laut Datenblatt). Das ist ja bei weitem Genauer als würde man
V1 - V2 selber rechnen über Single-Ended Spannungen.
Bei etwa 1,19V (siehe Tabelle im Anhang Seite "Daten") ist bei mir
eindeutig ein Knickpunkt zu sehen. Ich habe im weiteren jedoch erstmal
nur die mehr oder weniger linearen Single-Ended Spannungen an V1
betrachtet.
Testweise hatte ich einmal Batterien drangehängt und einmal die Spannung
sowohl gemessen als auch als VCC verwendet. Diese betrug 4,835V, als ADC
Codewort hat er 2852 ermittelt und die Spannung am Spannungsteiler
betrug 870mV. Zurückgerechnet ergab das 869,7mV was sehr nahe an das
Soll herankommt. Habe ich als VCC wieder die 3,25V vom µC verwendet, hat
der 2858 als ADC Codewort ermittelt, am Spannungsteiler hingen dann aber
auch 874mV an. Zurückgerechnet ergäbe es dann auch 872mV und kommt ach
relativ nah an den Sollwert wenn auch mit einer leicht größeren
Abweichung als beim kompletten Bateriebetrieb. Das zusätzliche
Anschließen der Masse des 19V-Netzteils ergab keine nennenswerte
Änderung, einzig die Differenzspannung V1-V2 hat sich um 1,5 ADC
Codewort erhöht.
Also vielleicht doch einfach nur ein schlechtes Netzteil dessen Spannung
wirklich so stark schwankt?
eProfi schrieb:> Komischerweise sind immer wieder Ausreißer drin.> Später mehr dazu.
Das lässt sich vielleicht damit erklären dass ich dort noch nichts
gemittelt hatte (grobe Momentanwerte).
eProfi schrieb:> Welche Punkte sind mit PE (Erde,> Schutzleiter) verbunden??> Hat das 19V-Netzteil einen 2- oder 3-poligen Netzstecker?
Da hängt erstmal nur der PC noch dran. Es ist ein Netzteil mit
Schutzkontakt (3-polig).
eProfi schrieb:> Habe den Code nur kurz überflogen. Nutzt Du die automatische> Kanalumschaltung? Ggf. "manuell" umschalten und öfters den selben Kanal> wandeln, die ersten Ergebnisse nach einem Kanalwechsel verwerfen.
Ich nutze ersteinmal den manuellen Trigger, und dann lasse ich alles vom
ADC hintereinander sampeln. Das mit dem Wegwerfen der ersten Ergebnisse
hatte genauso wenig gebracht wie das "Continuous" sampling. Auch hatte
ich schon längere Wartezyklen eingebaut, hat alles nichts geholfen.
Ich glaube, alles in Allem kann ich das so nicht gebrauchen. Was ich
jetzt noch mache ist kleinere Widerstände einlöten da es anfangs mit der
Kombination 56K/12K besser bzw. stabiler lief zumindest. Evtl. nehme ich
noch leicht kleinere Werte. Dann fließt allerdings eine Erhebliche
Spannung am Spannungsteiler ab, ob man dann noch Strom messen kann
bezweifle ich etwas. Ebenso kann ich Rs noch etwas verkleinern (einen
weiteren 60mOhm parallel) und das Verhältnis etwa anheben. Auch VCC kann
ich an 5V hängen. Wenn das alles nichts bringt, rolle ich das Projekt
mit anderen Komponenten neu auf.
Ich möchte eine Genauigkeit der Spannung von 1mV erreichen und zwar ohne
dass ich allzu viel per Software kalibrieren muss. Die
Temperaturkalibrierung sollte eigentlich das einzigste sein was ich
einbauen wollte anfänglich.
Hallo liebe Freunde. Es ist einige Zeit vergangen, jedoch habe ich trotz
knapper Freizeit eine komplett neue Schaltung entworfen und auch
Platinen dazu proffesionell fertigen lassen. Habe sie getestet,
funktioniert alles einwandfrei. Leider komme ich im Moment zeitlich
nicht dazu die Programmierung zu vollenden, und außerdem ist der
µController auf dem Board kaputt gegangen (war zu unvorsichtig). Ich
stelle euch hiermit alles zu Verfügung was ich habe, also Gerberdateien,
Schaltpläne inklusive ERSTE Code-Schnippsel für die Ansteuerung des
INA226 und des LCDs.
Sicherlich lässt sich einiges noch verbessern an der Schaltung, und ich
bin natürlich für Vorschläge offen.
Ich habe noch weitere 5 Platinen davon an Interessierte abzugeben wenn
diese den Wunsch haben diese Schaltung zu testen und/oder
weiterzuentwickeln. Du solltest jedoch in der Lage sein die ein oder
anderen IC's löten zu können welche nur über Reflow bzw. zur Not
Heißluft gelötet werden können! Ich habe diese mit meinem gebauten
Reflow-Ofen gelötet.
Als I2C Library habe ich die Softwareimplementierung von "Peter Fleury"
verwendet.
Ein paar Anmerkungen zum Schaltplan: Die Kondensatoren am
Spannungswandler sollten evtl. durch 805er ersetzt werden, die werden
nämlich etwas warm. Auch meine ich, ist dieser Spannungswandler etwas
überfordert wenn er noch die Displaybeleuchtung versorgen soll. Ich
hatte zwar nie Probleme, aber die Spannungswandlerschaltung wird etwas
warm. Als Spannungsquelle kann eine Spannung von 2,7V bis 5,5V dienen.
Verwendet habe ich den AtTiny861 welcher über ISP programmiert wird. Die
Schaltung und der µController verwendet 3,3V, nur für das Display wird
5V benötigt, und dort auch eigentlich nur für die Kontraststeuerung, das
Display selber würde auch mit 3,3V betrieben werden können.
Als Display kann ein beliebiges HD44780 kompatibles verwendet werden
welche es auf eBay zu Hauf gibt. Es wird im Modus 4-Bit Parallel
betrieben. Ich habe ein 4 zeiliges verwendet.
Bei weiteren Fragen stehe ich natürlich zu Verfügung.