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 :)
:
Verschoben durch Admin
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!"
Benjamin K. schrieb: > Da ich Spannungen bis ca. 18 V messen wollte Benjamin K. schrieb: > ersten Kombination 56K/12K Und wie bist du auf DIE Werte gekommen???
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.
:
Bearbeitet durch User
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.
Nur meine 5 Cents: Warum kein Low-Side-Shunt? Das würde doch einiges vereinfachen.
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.
:
Bearbeitet durch User
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_t msb = ReadFromLtc2990(...); // HIGH |
2 | uint8_t lsb = ReadFromLtc2990(...); // LOW |
3 | |
4 | int16_t raw = (msb & 0x3f) << 8 | lsb; |
5 | |
6 | if (msb & LTC2990_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.
:
Bearbeitet durch User
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.
:
Bearbeitet durch User
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.