Bascom Positive- und negative Spannung am ADC

Hallo,

ich bin schon ganz durcheinander. In #14 schreibt Holger er hat einen Shunt mit 0.12Ohm, und er misst bei 1Amp 1 mV.
U = R * I = 0.12 * 1 = 120 MilliVolt! usw.

MfG
 
Ja, aber mit dem Multimeter misst du ja die Spannung an dem Shunt. Also + an Batterie, - an Netz. So misst du natürlich die +200mV / -200mV. Aber der AVR bezieht sich immer gegen GND. Daher muss das was in den AVR rein geht im Bereich von GND und Vcc liegen (bzw. Vacc, je nach Controller und Einstellung). Das ist pflicht, auch bei differenzieller Nutzung. Ob nun Eingang 1 höher ist als Eingang 2 (positives Ergebnis) oder anders herum (dementsprechend negatives Ergebnis), es ist denn für den AVR keine negative Spannung sondern nur ein Unterschied von z. B. 4,6V zu 4,8V. Alles grün :)

Also so in etwa:
Anhang anzeigen 6492

Oben sitzt ein normaler 7805 für die 5V Generierung (exemplarisch). R1 und R2 sind die Spannungsteiler (hier als Trimmer) um aus den ~24V sagen wir 4,5 zu machen (um noch etwas Luft zu haben).


Hallo,
bei dem Vorschlag von TommyB liegt dann ja immer eine Spannung an. Außerdem habe ich die Probleme mit der hohen Batteriespannung, die zwar runtergeteilt werden kann, dann ist jedoch, wie ihr schon ausgeführt habt, die zu messende Spannung sehr klein.

Immer noch habe ich den Gedanken, den Spannungsabfall wie mit einem Vielfachmessgerät zu messen, im Kopf. Spannung liegt nur an, wenn Strom fließt!
Das Problem ensteht ja wenn der AVR auf dem gleichen GND wie der zu messende Kreis liegt.
Wenn ich den AVR jetzt ganz autark lasse, mit einer separaten Stromversorgung (Batterie,oder wie von Prix #7 vorgeschlagen), dann kann ich doch den Spannungsabfall am Shunt messen. Sicherlich könnte ich dann nur messen, wenn am ADC Eingang eine positive Spannung anliegt.
Wenn sich das Potential am Shunt ändert (kein "Verbrauch" sondern "Ladung") würde am ADC Eingang eine negative Spannung anliegen. Die Frage ist: ist das schädlich? Wenn ja könnte das durch eine Diode verhindert werden?
Wenn das so ist könnte ich einen weiteren separaten AVR einsetzen,oder wie von LotadaC #4 beschrieben "intern umschalten".

Gruß
Holger
 
Ich nutze diese Schaltung bei mir im Netzteil (1..30V 3A) ohne Probleme mit einer Nachkommastelle mit einem 0,1 Ohm Shunt. Da sollte es ein Leichtes sein auch 200A zu ermitteln (wo Kommastellen eh kaum mehr interessieren). Es war ja auch immer die Frage wie genau es sein muss und welcher Controller es sein soll :)

Wenn es nur fürs Auge ist ist das mehr als ausreichend. Wenn du wirklich messen willst (so exakt wie möglich) wirst du um externe Bauteile wie OpAmp und Kalibrierung nicht drum herum kommen. Aber ist das nötig?
Vor allem wenn es wirklich präzise sein muss würde ich mir vielleicht einen dedizierten IC extra dafür aussuchen und nur das fertige Ergebnis im AVR auswerten. Da gibt es auch einige, allerdings bin ich da nicht so bewandert. Aber ich glaub sogar hier im Shop fliegen ein paar rum? @Dirk
 
...Außerdem habe ich die Probleme mit der hohen Batteriespannung, die zwar runtergeteilt werden kann, dann ist jedoch, wie ihr schon ausgeführt habt, die zu messende Spannung sehr klein...
Weswegen sie im AVR wieder mit Gain32 verstärkt wird, und gegen die interne 1,1V-Referenz gemessen wird. Dadurch hättest Du 'ne rechnerische Auflösung von knapp 0,2mV (eben 1024 Schritte von 0V bis 196mV).
Die Absoluten Spannungen werden auf sichere Bereiche runtergeteilt, die Differenz so gemessen/digitalisiert. Bipolar hättest Du dann 'ne Auflösung von ca 0,4mV (da effektiv nur 9 Bit aber mit beiden vorzeichen), schaltest Du danach auf unipolar (in die richtige Richtung), sind es 0,4mV (10bit).

Wie genau willst Du denn messen?
 
Weswegen sie im AVR wieder mit Gain32 verstärkt wird, und gegen die interne 1,1V-Referenz gemessen wird. Dadurch hättest Du 'ne rechnerische Auflösung von knapp 0,2mV (eben 1024 Schritte von 0V bis 196mV).
Die Absoluten Spannungen werden auf sichere Bereiche runtergeteilt, die Differenz so gemessen/digitalisiert. Bipolar hättest Du dann 'ne Auflösung von ca 0,4mV (da effektiv nur 9 Bit aber mit beiden vorzeichen), schaltest Du danach auf unipolar (in die richtige Richtung), sind es 0,4mV (10bit).

Wie genau willst Du denn messen?

Ihr habt ja Recht! In diesem Fall interessieren die Kommastellen tatsächlich nicht. 200 A ist der Spitzenbereich, der eigentlich nur selten und ganz kurzzeitig vorkommt. Ein Wert von 20 bis 30 A wird wohl der Standard sein und da wäre ein Kommastelle ganz schön, aber auch nicht unbedingt notwendig.
Was mir nicht klar ist "mit Gain32 verstärkt" ist das Getadc*32?
Es sollte der Atmega 8 sein.

Gruß
Holger
 
Der ATmega8 hat keine differentiellen Eingänge. Sprich du müsstest alles in Software berechnen.
Wie Amp = (ADC1 - ADC2) * berechnung

Der Tiny 261/461/861 hat differentielle Eingänge. Der nimmt dir einiges ab:
Amp = GetADCxy * berechnung (intern wird schon Kanal 1 von 2 abgezogen * dem eingestellten Verstärkungsfaktor (Gain))

Wenn dir eine Nachkommastelle reicht ist die Methode wie von mir analoger Weise zu Papier gebracht durchaus ausreichend :)
Aber wenn möglich rate ich sehr stark zu einem AVR der differentielle Eingänge hat!
Das macht es nicht nur einfacher sondern auch um Faktor (Gain) präziser.

Vom Prinzip kannst du dir das mit dem Gain wie GetADC*32 vorstellen, nur dass das in Hardware passiert und somit die Auflösung des ADC nicht verringert, wie die Softwarelösung, sondern wie ein verstärkender OpAmp vor dem ADC fungiert. Du sagst dem ADC quasi "nimm Differenz von ADCx und ADCy und verstärke das um 32x und gib mir das als 10 Bit"
 
o.k. das hat mich sehr viel weiter gebracht.
Das mit den "differentielle Eingänge" wusste ich nicht, daher auch meine umständlich Denkweise und das "festkrallen" am Spannungsabfall des Shunts.
Wenn ich wieder zu Hause bin werde ich mit der Hardware weiter machen.
Sicherlich werde ich mich dann noch einmal melden.

Gruß
Holger
 
Das versuche ich schon seit #3 vorzuschlagen...
schau mal ins Datenblatt des Atmega8 zum Thema ADC. S.190
Im ADMUX (ADC Input Multiplexer - legst Du unter Bascom mit dem Parameter von getadc() fest) wird der zu messende Kanal auf den positiven Eingang des Sample&Hold-Komperators gelegt.
Mit einem Digital-Analog-Converter wird jetzt mit 10 bit Auflösung aus der Referenzspannung (quasi im Referenzmultiplexer - dafür verwendet Bascom möglicherweise irgend'n config adc= blablub) am anderen Eingang des Komperators eine Spannung generiert, die die am ersten möglichst gut approximiert. Das geschieht durch bitweise Approximation beginnend mit dem höchstwertigen bit.

Die 10 Bit des DAC sind dann das Ergebnis der Digitalisierung gegen die verwendete Referenz. Da die Referenz sich immer auf Gnd (des Controllers) bezieht, bezieht sich auch das Ergebnis auf die Eingangsspannung gegen Gnd. Wenn Du also von 'ner hohen Spannung nur 'ne kleine Diferenz betrachten willst, verschenkst Du entweder Auflösung (eben alles was darunter bis Gnd liegt), oder mußt diesen Bereich vor der Digitalisierung (Approximation mittels DAC aus der Referenzspannung) Subtrahieren. Dazu könntest Du zB einen externen OPAMP als Subtrahierer/Differenzverstärker nehmen (wobei der auch Spannungsversorgt werden will - möglicherweise geht das mit einem Rail to Rail, aber die "Größere Spannung" wechselt ja die Seiten)), und dann eben nur die Differenz digitalisieren.

Und Nun schaust Du ins Datenblatt des Tiny261A/461A/861A (S.142):
Unter dem (positiven) Eingangsmultiplexer gibt es hier noch einen negativen Eingangsmultiplexer. Im Single Ended Mode landet der Ausgang des positiven MUX direkt auf dem Sample&Hold. Im differentiellen Modus ist ein Differenzverstärker mit wählbarer Verstärkung (eben der Gain Amplifier) dazwischen, es wird also die Differenz der beiden MUXe, multipliziert mit dem Verstärkungsfaktor auf den Sample&Hold gelegt, und gegen die gewählte Referenz digitalisiert.

Die zu digitalisierende Spannung (Betrag) muß immer kleinergleich der Referenz sein - bei differentieller Messung ist das aber die Differenz; die Differenziellen Eingänge selbst dürfen 'ne höhere Spannung haben. Nur eben max AVcc.

Ob Bascom diese ganzen Modi (inzwischen?) unterstützt, weiß ich nicht. Du kannst aber auch unter Bascom zu Fuß die I/O-Register des ADC-Modules manipulieren/auswerten (wie Thomas bereits andeutete).
 
Für solche Strommessungen gibt es übrigens passende ICs, die nennen Sich "Current Shunt Monitor" und liefern eine passende Spannung für den ADC. Hier wären z.B. die Typen INA210 - 214 die richtigen.
 
Das sind letztlich auch "nur" OPAMPs, die als Differenzverstärker mit festem Gain arbeiten, oder? Also eigentlich nichts anderes als der interne Gain-Amplifier im AVR im Differenziellen Modus. Eigentlich - der Knackpunkt ist der zulässige Spannungsbereich, weswegen man da eben die Spannung nicht herunterteilen müßte.
Wie der TE ja bereits im Eröffnungspost angedeutet hatte, könnte man sowas natürlich auch selbst diskret mit'nem externen OPAMP aufbauen...

Das ändert aber alles nichts an den maximal 1024 unterschiedlichen erfassbaren Werten durch den 10bit-ADC.

Wenn also schon alternative ICs ins Spiel kommen, könnte man auch gleich an welche mit integriertem ADC und digitaler Ausgabe (TWI/SPI) denken. Hallsensoren zB...
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)