Forum: Mikrocontroller und Digitale Elektronik AVR ADC Gain 2x gleicher Kanal


von Tuxpilot (Gast)


Lesenswert?

Hi. Ich versuche, kleine Spannungen mit dem ADC des Attiny841 zu messen.

Ich dachte, wenn man ADMUXA auf 0x20..0x2d setzt, kann man den Gain 
Amplifier auf einen Kanal anwenden, wobei die Spannung gegenüber GND 
verstärkt wird. Einen anderen Nutzen dieser Optionen konnte ich mir 
nicht ausdenken. Datenblatt (Seite 145): 
http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-8495-8-bit-AVR-Microcontrollers-ATtiny441-ATtiny841_Datasheet.pdf

Scheint aber nicht so zu sein, kommt immer 0x3ff raus. Einen Hinweis 
dazu habe ich hier gefunden:
Beitrag "Differential Gain ADC (Atmega32) & Pinout"
Sind diese Optionen wirklich so nutzlos, oder kann man inzwischen doch 
einzelne Kanäle verstärken und ich mache etwas falsch?

Alternative ist, einen ADC-Kanal auf GND zu legen, wodurch dieser IO-Pin 
aber verloren ist. Vermutlich werde ich das so machen, da irgendwo noch 
ein IO-Pin freibleibt. Frage bleibt trotzdem.

Da ich hohe Ströme messen möchte, ist die Spannung wirklich klein 
(0..2mV gegenüber GND), so dass es wohl nicht reicht, an einem anders 
genutzten IO-Pin Low auszugeben.

von Einer K. (Gast)


Lesenswert?

Tuxpilot schrieb:
> Einen anderen Nutzen dieser Optionen konnte ich mir
> nicht ausdenken.
Das kommt noch....
Sobald du eine Offsetkompensation benötigst.

von Tuxpilot (Gast)


Lesenswert?

Also kann ich damit den Offset des Gain Amplifiers messen, um ihn von 
"sinnvollen" differenziellen Messungen abzuziehen?

von Karl M. (Gast)


Lesenswert?

Hallo,

ich habe nach AN105 einen x100 Messverstärker für 1mOhm 4-Leitershunt 
PBV aufgebaut.
Dabei entsteht ein Offsetfehler im OPV, der sich dank seiner 
Außenbeschaltung leicht korrigieren lässt.

Einschränkend ist dann beim AVR die nicht Linearität und ein 
Offsetfehler.
Dies kann man in Grenzen durch einen 2-Punkt Abgleich einschränken.

Zu beachten ist dann auch noch das überalles Temperaturverhalten.
AVR 10 Bit ADC, Widerstände, OPV

Siehe: LT1637/ LT1638

_Links_:
# 
https://www.analog.com/media/en/technical-documentation/application-notes/an105fa.pdf

# 
https://www.analog.com/media/en/technical-documentation/data-sheets/1637fd.pdf

# 
https://www.analog.com/media/en/technical-documentation/data-sheets/16389fg.pdf

von Karl M. (Gast)


Lesenswert?

Im Datenblatt attiny841

http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-8495-8-bit-AVR-Microcontrollers-ATtiny441-ATtiny841_Datasheet.pdf

Steht unter 16.11.2 Differential-Ended Conversion auch, dass nur 9 Bit 
zur Verfügung stehen, da dass 10 Bit das Vorzeichen darstellt:

ADC = (VPOS-VNEG)*512 / VREF * Gain

Nicht erwähnt habe ich den Abschnitt "Figure 16-12.Differential 
Non-linearity (DNL)". Dies kommt noch als Fehlerwert hinzu.

von Hermann W. (hermannw)


Lesenswert?

Tuxpilot schrieb:
> Alternative ist, einen ADC-Kanal auf GND zu legen, wodurch dieser IO-Pin aber 
verloren ist

Richtig. Die Verstärkung mit Gsel in ADMUXB geht nur mit der 
differential Messung. D.h. wenn du gegen GND messen willst, musst du den 
Minus-Eingang auf GND legen und der Pin ist dann für andere Zwecke 
verloren.
Meine Erfahrung mit Tiny861 ist, dass man in den Grenzbereichen (0V und 
Vref) Abstriche machen muss, es gibt dann Linearitätsfehler. Ich habe 
die ersten und letzten ca. 10 Counts nicht sinnvoll nutzen können. siehe 
hier:
Beitrag "Re: minimal messbare Analogspannung Attiny861A"

von c-hater (Gast)


Lesenswert?

Tuxpilot schrieb:

> Hi. Ich versuche, kleine Spannungen mit dem ADC des Attiny841 zu messen.
>
> Ich dachte, wenn man ADMUXA auf 0x20..0x2d setzt, kann man den Gain
> Amplifier auf einen Kanal anwenden, wobei die Spannung gegenüber GND
> verstärkt wird.

Nein, das ist nicht so. Gain-Optionen >1 stehen nur für differentielle 
Spannungsmessung zur Verfügung, nicht für "single-ended".

> Sind diese Optionen wirklich so nutzlos, oder kann man inzwischen doch
> einzelne Kanäle verstärken und ich mache etwas falsch?

Du liest Datenblätter nicht richtig/vollständig.

> Alternative ist, einen ADC-Kanal auf GND zu legen, wodurch dieser IO-Pin
> aber verloren ist. Vermutlich werde ich das so machen, da irgendwo noch
> ein IO-Pin freibleibt.

Du kannst nicht irgendeinen ADC-Kanal auf GND legen, sondern musst das 
mit dem differentiellen "Partner" des Kanals machen, den du benutzen 
willst.

Wer wessen "Partner" ist, für welche ADC-Eingänge die differentielle 
Spannungsmessung überhaupt verfügbar ist, das alles steht im DB. Man 
muss es einfach nur LESEN.

> Da ich hohe Ströme messen möchte, ist die Spannung wirklich klein
> (0..2mV gegenüber GND)

Bescheuerte Begründung. Einfach den Shunt größer wählen, wird auch die 
Spannung darüber größer.

Außerdem: Es gibt genau auf den Zweck der Strommessung über Shunt nach 
Masse optimierte Messverstärker-ICs. Kein Gesetz verbietet, die einfach 
zu benutzen, wenn man sonst nix anderes gebacken bekommt...

von Tuxpilot (Gast)


Lesenswert?

c-hater schrieb:
>> Sind diese Optionen wirklich so nutzlos, oder kann man inzwischen doch
>> einzelne Kanäle verstärken und ich mache etwas falsch?
>
> Du liest Datenblätter nicht richtig/vollständig.

Danke für den Hinweis. Vervollständige das doch bitte mit der Angabe, wo 
das im Datenblatt richtig/vollständig stehen soll.

c-hater schrieb:
> Du kannst nicht irgendeinen ADC-Kanal auf GND legen,

Doch! Mit GND zum Beispiel...

c-hater schrieb:
> sondern musst das
> mit dem differentiellen "Partner" des Kanals machen, den du benutzen
> willst.
>
> Wer wessen "Partner" ist, für welche ADC-Eingänge die differentielle
> Spannungsmessung überhaupt verfügbar ist, das alles steht im DB. Man
> muss es einfach nur LESEN.

Kein Problem, das steht tatsächlich im Datenblatt. (In diesem Fall gehen 
alle Kanäle.)

c-hater schrieb:
>> Da ich hohe Ströme messen möchte, ist die Spannung wirklich klein
>> (0..2mV gegenüber GND)
>
> Bescheuerte Begründung. Einfach den Shunt größer wählen, wird auch die
> Spannung darüber größer.

Begründung unvollständig, aber nicht bescheuert. Wenn nicht der Gain, 
sondern der Shunt 20x so groß ist, gibt es auch 400x so viel 
Verlustleistung. Das wären mir 99,75W zu viel.

Gibts sicher bei Reichelt: RND 100W 1 0,4

c-hater schrieb:
> Messverstärker-ICs.

Ich werde mich dann mal auf die Suche nach Messverstärker-ICs machen. 
Package optimalerweise SC70.

c-hater schrieb:
> Messverstärker-ICs.

Da schreibts du ja doch noch was sinnvolles... :)

Tuxpilot schrieb:
> Ich dachte, wenn man ADMUXA auf 0x20..0x2d setzt,

Ups, das hätte 0x20..0x29 sein sollen. Datenblatt nicht 
richtig/vollständig gelesen... ;)

von Tuxpilot (Gast)


Lesenswert?

Noch eine ähnliche Frage:

Wozu gibt es 0x30..0x3f, die sind ja nur anderes Vorzeichen von 
0x10..0x1f?

Auch, um einen Fehler des Gain Amplifiers zu messen?

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
Noch kein Account? Hier anmelden.