Forum: Mikrocontroller und Digitale Elektronik AVR Differential ADC


von Stefan W. (swessels)


Lesenswert?

Hallo zusammen,

ich lese schon eine Weile im Forum mit, konnte aber auf folgende Frage 
keine Antwort finden:

Interpretiere ich das Datenblatt (z.B. ATtiny 25) richtig, wenn ich 
annehme dass die Potentiale von negativen (V-) und positiven (V+) 
Eingängen des ADC im Diferentialmodus von Vcc und GND abweichen dürfen, 
solange die Spannungsdifferenz zwischen den Eingängen nicht größer als 
Vcc/GND ist?

Beispiel:
Vcc = 5V, die zweite Zelle eines LiPo Akkus soll gemessen werden. Dann 
wären die Potentiale bezogen auf GND V- ~ 3,3V bis 4,2V, V+ ~7,5V bis 
8,4V.

Danke und Gruß,
Stefan

von Hc Z. (mizch)


Lesenswert?

Nein.  Du darfst nicht unter 0 V und nicht über die Versorgungsspannung 
gehen.

von Stefan W. (swessels)


Lesenswert?

Wo liegt dann der Unterschied zum Single Ended Mode?

Gruß,
Stefan

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Darin, dass du die untere Grenze des Disgitalisierbereichs festlegen 
kannst? Beim single ended mode ist die fix (GND). Und du kannst eine 
Verstärkung hinzuschalten, um dein analoges (Differenz-)signal optimal 
auf den Digitalisierbereich abzubilden und größtmögliche Auflösung zu 
erhalten.

von Stefan W. (swessels)


Lesenswert?

Hallo zusammen,

> Darin, dass du die untere Grenze des Disgitalisierbereichs festlegen
>kannst?

Nochmal für mein Verständnis:

Ich könnte also bei Vcc +5V z.B eine Spannung messen, deren negatives 
Potential bezogen auf GND +2V ist und deren positives Potential z.B 
+4,5V ist, aber nicht z.B +6V, obwohl die Differenzspannung nur 4V 
beträgt und damit kleiner als Vcc/GND ist.

Habe ich das jetzt richtig verstanden?

Danke und Gruß,
Stefan

von Purzel H. (hacky)


Lesenswert?

Also, ich empfehle mal einen Blick ins Datenblatt. Der Analogeingang, 
resp die Eingaenge muessen natuerlich zwischen GND und Vcc liegen. Dann 
erkennt man bri genauer Betrachtung, dass der Subtrahierer analog 
aufgebaut ist. Dh ein Differentialeingang kann benutzt werden bei stark 
schwankendem Signalbezugspotential. Zb um eine Brueckenspannung zu 
messen.

von Hc Z. (mizch)


Lesenswert?

Kein Pin des AVR (außer Reset) darf unter 0V gehen und keiner über Vcc. 
Wie soll man das noch deutlicher sagen?

(Ja, ich weiß, die Schutzdiodenspannung kommt dazu, aber die Funktion 
des Differenzverstärkers ist unter 0 und über Vcc nicht mehr 
gewährleistet.)

Die Differenzmessung mit 2 ADC-Eingängen braucht man, wie soll ich das 
anders sagen, zur Messung der Differenz.  Einer Spannung also zwischen 2 
Punkten, eines Spannungsunterschieds.  Das braucht man häufig, nicht nur 
für Brückenschaltungen.

Der Messbereich ist dabei insgesamt so breit wie Vref, endet aber in 
jedem Fall unten bei 0 und oben bei Vcc.  Der Nullpunkt ist in der 
Mitte, so dass man damit 1/2Vref nach oben (Differenz positiv) und 
genauso weit nach unten (Differenz negativ) messen kann.

Zu beachten ist noch, dass das Bit 9 des ADC in dieser Betriebsart das 
Vorzeichenbit ist (runterwärts (um Null) ergibt sich die Folge ..., 3, 
2, 1, 0, 0x3ff, 0x3fe, ...), so dass das Vorzeichen aus Bit 9 in die 
höheren Stellen erweitert werden sollte (oder man setzt ADLAR).

von Stefan W. (swessels)


Angehängte Dateien:

Lesenswert?

Hallo nochmal,

mir ist klar, dass die Differentspannung niemals größer als Vcc sein 
darf. Zur Klarstellung ein Prinzipschaltbild, was ich messen will.
Laut Eurer Aussagen geht das wohl nicht.....

Ja ich weiss, der Pullup an Reset fehlt.

Gruß,
Stefan

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Vertausche die Zellen und miss die untere.

von Hc Z. (mizch)


Lesenswert?

> mir ist klar, dass die Differentspannung niemals größer als Vcc sein
> darf.

Argl ...

Nein.  Jede einzelne der Spannungen.  Die Differenzspannung ist schnurz, 
ihr Betrag kann allerdings dadurch auch nie größer werden ...

von Stefan W. (swessels)


Lesenswert?

Hallo zusammen,

>Vertausche die Zellen und miss die untere.

das will ich ja gerade nicht. Ich möchte jede einzelne Zelle messen 
können, auch bei mehr als 2 Zellen.

Da mein Gedanke wohl nicht funktioniert, muss ich mir wohl was anderes 
ausdenken.

Ich könnte natürlich über entsprechende Spannungsteiler GND - > +Zelle1 
und GND -> +Zelle2 messen und dann die Spannungen voneinander abziehen.
Das ist mir aber nicht genau genug.

Gruß,
Stefan

von Stefan W. (swessels)


Lesenswert?

So, ich habs jetzt auch gefunden:

>Regardless of conversion mode, input voltages on any channel must stay
>between GND and AVCC.

Application Note AVR120.

Gruß,
Stefan

von blubb (Gast)


Lesenswert?

Wo ist das Problem, wenn Du jede einzelne Zelle messen willst. Dann leg 
halt den GND deiner Schaltung auf das untere Niveau der Zelle.

von Stefan W. (swessels)


Lesenswert?

Hallo,

>wenn Du jede einzelne Zelle messen willst. Dann leg
>halt den GND deiner Schaltung auf das untere Niveau der Zelle.

Dann muss ich das aber für jede Zelle einzeln machen, also z.B. ein Tiny 
pro Zelle und Ansteuerung per SPI via Optokoppler. Und dann noch einen 
Mega zum auswerten.

Ich denke ich werde mir mal das Thema OPVs und Subtrahierer zu Gemüte 
führen.

Auf jeden Fall vielen Dank für Eure Mühe mir das Thema ADC näher zu 
bringen.

Gruß,
Stefan

von Barny F. (barny)


Lesenswert?

Stefan Weßels schrieb:
> Ich könnte natürlich über entsprechende Spannungsteiler GND - > +Zelle1
> und GND -> +Zelle2 messen und dann die Spannungen voneinander abziehen.
> Das ist mir aber nicht genau genug.
>
Wieso sollte dass nicht genau genug sein?
Ich mache dass bei einem 3 Zellen Lipo zur Spannungsüberwachung.
Mit dem 10 Bit ADC hat man eine Auflösung die für die Überwachung 
während dem Betrieb mehr als ausreichend genau ist.
Aber ich weis ja nicht was du machen willst ;)

Bei mir ist dass größere Problem dass bei neuen Lipos die Spannung 
während dem Betrieb auch unter Extrembelastung annähernd konstant bleibt 
und dann zum Schluß sehr schnell zusammenbricht.

von Stefan W. (swessels)


Lesenswert?

>Wieso sollte dass nicht genau genug sein?

Weil ich mit zunehmender Zellenzahl eine immer geringere Auflösung 
bekomme. Bei 3 Zellen mag das noch gehen, aber ich will zumindest 5 
Zellen möglichst genau messen können.

>Aber ich weis ja nicht was du machen willst.

Ich möchte mir so etwas wie einen UniTest bauen, aber eben um die 
Möglichkeit zur Einzelzellenmessung an LiPos erweitert.
(Ich mache das nicht, weil mir der UniTest zu teuer wäre, sondern weil 
ich interesse an der Materie habe und meine zugegebenermaßen verrosteten 
Elektronikkentnisse auffrischen bzw. erweitern möchte).

Gruß,
Stefan

von Barny F. (barny)


Lesenswert?

>>Wieso sollte dass nicht genau genug sein?
>
> Weil ich mit zunehmender Zellenzahl eine immer geringere Auflösung
> bekomme. Bei 3 Zellen mag das noch gehen, aber ich will zumindest 5
> Zellen möglichst genau messen können.

Dann ist aber der ATtiny25 von dem du am Anfang geschrieben hast nichts 
für dich.
Denn der hat nur 3 ADC's wenn du den Reset nicht opferst.
Außerdem hast du am Anfang nur über einen 2-Zeller geschrieben ;)

>>Aber ich weis ja nicht was du machen willst.
>
> Ich möchte mir so etwas wie einen UniTest bauen, aber eben um die
> Möglichkeit zur Einzelzellenmessung an LiPos erweitert.
> (Ich mache das nicht, weil mir der UniTest zu teuer wäre, sondern weil
> ich interesse an der Materie habe und meine zugegebenermaßen verrosteten
> Elektronikkentnisse auffrischen bzw. erweitern möchte).

Wenn du die Spannung von > 3 Zellen genau messen willst, würde ich 
Instrumentenverstärker bzw. OPV's in Instrumentenverstärkerbeschaltung 
verwenden.
Da würde ich aber hochgenaue Widerstandsnetzwerke verwenden bzw. 
thermisch gekoppelte Einzelwiderstände einsetzen.

von Stefan W. (swessels)


Lesenswert?

>Dann ist aber der ATtiny25 von dem du am Anfang geschrieben hast
>nichts für dich.

Ich weiss, es war nur der einzige AVR mit Differential-ADC in meiner 
Bastelkiste, und zum grundsätzlichen probieren sollte der reichen.

Mir geht es in Moment vor allem darum etwas Gefühl für die ganze Materie 
zu entwickeln. Da sollte am Ende natürlich etwas halbwegs nützliches bei 
herauskommen.

Ich werde mal mit dem LM358 (liegt in der Bastelkiste) experimentieren. 
Für ein "Produktivgerät" wäre da dann eher OP07 o. ä. sowie 0,1% 
Widerstände angesagt.

Auf jeden Fall:
Danke für Deine Mühe!

Gruß,
Stefan

von James (Gast)


Lesenswert?

Hallo Stefan,

vielleicht ist das auch was für Dich. Google mal mit "flying 
capacitors".
Das sind ICs mit mehreren Analogschaltern. Die Schalten abwechseld einen
Kondensator an eine Spannungsquelle (C lädt sich auf) trennen den Kondi
von dieser Spannungsquelle und legen den dann z.B. an den Eingang Deines
ATTiny.
Für diesen Steuer-IC gilt natürlich auch keine Eingangsspannung < GND 
bzw.
> dessen Versorgungsspannung.

Schau mal das Datenblatt vom LTC6943 (Linear.com) an, das ist so ein
Flying-Capacitor-Chip.

Funktioniert sehr gut!

Gruß

James

von Henrik Haftmann (Gast)


Lesenswert?

Wie sich also herausstellt, will der Fragesteller jede einzelne 
Zellenspannung einer Reihenschaltung messen, deren Gesamtspannung die 
Betriebsspannung des Mikrocontrollers überschreitet.

Dies ist, wie in der letzten Antwort angegeben, tatsächlich ein Fall für 
geschaltete Kondensatoren. Denn Analogsignalschalter gibt es bequem für 
15 V und machen keine zusätzlichen Fehler wie Spannungsteiler. Außerdem 
bleibt die Lösung ruhestromfrei. Praktische Anwendung findet dieses 
Prinzip in allen anzeigenden Digitalmultimetern mit dem typischen IC 
ICL7136.

Anstatt mit dem angegebenen LTC6943 mit Kanonen auf Spatzen zu schießen, 
macht man das Ganze als Bastler wie die Chinesen: Man nehme den 
billigsten Analogsignalschalter, etwa 4066 oder 4051, ggf. 
Digital-Pegelkonverter mit Transistoren, und bastelt daraus die 
Kondensator-Umschaltung.

Will man auf die lästigen Pegelkonverter verzichten, kann man es auch so 
machen: http://www.tu-chemnitz.de/~heha/basteln/Haus/Akkuschrauber/#2.
Der Trick ist, den Mikrocontroller auf Plus zu legen und die im 4051 / 
4053 eingebauten Pegelkonverter zu nutzen. (Der dort verwendete 
Spannungsteiler verringert die Genauigkeit, spart jedoch die Hälfte der 
notwendigen Analogmultiplexer gegenüber einer Lösung mit Kondensatoren.)

Zurück zur Differenzmessung: Richtig, kein Pin darf außerhalb [GND,Ucc] 
gespeist werden. Zu unterscheiden ist noch (unipolarer) Differenzbetrieb 
und bipolarer (Differenz-)Betrieb. Beim unipolaren Differenzbetrieb muss 
die messbare Differenz positiv sein. Unklar ist, wie bei Bipolarbetrieb 
die Referenzspannung verwendet wird. Bedeutet Uref = 2,56 V einen 
Messbereich ±2,56 V? Also Verdopplung der LSB-Schrittspannung? 
Vermutlich.

Anscheinend gibt es keinen einzigen ATmega mit Differenzbetrieb.

von Stefan W. (swessels)


Lesenswert?

Hallo,

vielen Dank für die Antwort. Allerdings ist der Thread 9 Jahre alt :-)

Gruß,
Stefan

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.