Forum: Analoge Elektronik und Schaltungstechnik Verständnisfrage zum ADC080x (VIN-MIN/DC-Offset)


von Michael (su3686)


Lesenswert?

Hallo in die Runde,
für ein Retro-Projekt (8-Bit Audio-Digitizer für den Commodore 64) 
füttere ich einen A/D-Wandler (ADC0804) mit einem Audiosignal. Da der 
ADC0804 nur positive Spannungen wandelt, hat das Audiosignal einen 
DC-Offset von 2.5V bekommen. Das Audiosignal hat eine Spannung von etwa 
+/-1.4V.

Am ADC kann ich für die Signalspanne (Pin 9) und den DC-Offset (Pin6: 
VIN-minus) adjustieren. Ich dachte, dass ich folgenden Wert für Pin6 
finden muss um das gesamte Audiosignal digitalisieren zu können: 2.5V 
(DC-Offset) minus 1.4V (1/2 Audiosignal-Range) ~2.1V. Das führt aber 
dazu, dass der ADC unter Ruhebedingung (also kein hörbares Audiosignal) 
den 2.5V Offset "digitalisiert" und somit "bei Ruhe" keine 0 ausgibt.

Schließe ich 2.5V an Pin6 ist im Falle von "Audio-Ruhe" auch am 
ADC-Ausgang "Ruhe". Soweit so gut, aber....

Nun meine Frage:
Verliere ich bei 2.5V an Pin6 nicht den "negativen" Audiosignalteil? 
Also alles was unterhalb des 2.5V Offset liegt (2.1V-2.5V)? Oder legt 
der ADC080x die Spanne symmetrisch um das VIN-Minus?

Für jede Hilfe dankbar
Michael
von Ob S. (Firma: 1984now) (observer)


Lesenswert?

Michael schrieb:

> Am ADC kann ich für die Signalspanne (Pin 9) und den DC-Offset (Pin6:
> VIN-minus) adjustieren.

Ich habe das DB von dem Teil nicht, vermute aber mal, dass hier einfach 
ein DC-Offset auf das (hoffentlich AC-gekoppelte) Signal addiert wird.

> Ich dachte, dass ich folgenden Wert für Pin6
> finden muss um das gesamte Audiosignal digitalisieren zu können

Ja, das ist der übliche Zweck so eines Offsets.

> Das führt aber
> dazu, dass der ADC unter Ruhebedingung (also kein hörbares Audiosignal)
> den 2.5V Offset "digitalisiert" und somit "bei Ruhe" keine 0 ausgibt.

Natürlich nicht. An der Arbeitsweise des Wandler ändert sich dadurch ja 
auch nichts.

Je nachdem, wie die Samples verwendet werden sollen, muß man ggf. in 
Software etwas tun. Nämlich: dort vom halben Wandlerbereich den Messwert 
subtrahieren. Dadurch ergeben sich Samples, die "signed" sind, sich also 
im Bereich von -halber Wandlerbereich bis +halber Wandlerbereich 
erstrecken.

Interessanterweise ist allerdings für 8Bit-Samples das 
"unsigned"-Binärformat durchaus üblich. Sprich: Messwert = halber 
Wandlerbereich entspricht 0.
von Roland D. (roland_d284)


Lesenswert?

Moin,

Michael schrieb:

> Am ADC kann ich für die Signalspanne (Pin 9) und den DC-Offset (Pin6:
> VIN-minus) adjustieren. Ich dachte, dass ich folgenden Wert für Pin6
> finden muss um das gesamte Audiosignal digitalisieren zu können: 2.5V
> (DC-Offset) minus 1.4V (1/2 Audiosignal-Range) ~2.1V. Das führt aber
> dazu, dass der ADC unter Ruhebedingung (also kein hörbares Audiosignal)
> den 2.5V Offset "digitalisiert" und somit "bei Ruhe" keine 0 ausgibt.
>
> Schließe ich 2.5V an Pin6 ist im Falle von "Audio-Ruhe" auch am
> ADC-Ausgang "Ruhe". Soweit so gut, aber....

Dieser Pin mit Vref/2 ist IMO im Datenblatt etwas komisch beschrieben.

Ich sage mal so: Wenn In+ = In- ist, ist der Output eine 0x00. Wenn In+ 
gleich Spannung an Pin 9 ist, ist der Output 0xFF.

Also an die 6 GND legen und an 9 (Vref/2) Vcc anlegen. Und deinem 
Audiosignal einen Offset von 2,5V draufgeben. Dann kannst du alles von 
0V bis 5V messen.

Theoretisch mehr, als du brauchst, weil dein Signal ja nur +/1,4V macht 
und nicht +/- 2,5V. Aber dadurch verlierst du weniger als ein Bit und 
hast gleich noch etwas Headroom dazu.

Wolltest du exakt +/- 1,4V messen, dann gib dem Audiosignal z.B. wieder 
2,5V Offset drauf und lege In- auf 2,5V - 1,4V (also 1,1V) und Ref/2 auf 
2,5V + 1,4V (also 3,9V).

Gruß, Roland
von Roland D. (roland_d284)


Lesenswert?

Roland D. schrieb:
> Moin,
> ...

Irgendwie ist das Datenblatt widersprüchlich, vielleicht lag ich auch 
falsch. In Diagramm 32 wird gezeigt, dass Vref/2 die obere 
Referenzspannung ist, in Diagramm 34 aber, dass es die hälfte der Spanne 
sein solle. Wohlgemerkt noch nicht mal die Mitte des Arbeitsbereiches, 
weil In- noch mal draufaddiert wird.

Ich würde sagen, ausprobieren:-)

Gruß, Roland
von Michael (su3686)


Lesenswert?

> Natürlich nicht. An der Arbeitsweise des Wandler ändert sich dadurch ja
> auch nichts.
>
> Je nachdem, wie die Samples verwendet werden sollen, muß man ggf. in
> Software etwas tun. Nämlich: dort vom halben Wandlerbereich den Messwert
> subtrahieren. Dadurch ergeben sich Samples, die "signed" sind, sich also
> im Bereich von -halber Wandlerbereich bis +halber Wandlerbereich
> erstrecken.
>
> Interessanterweise ist allerdings für 8Bit-Samples das
> "unsigned"-Binärformat durchaus üblich. Sprich: Messwert = halber
> Wandlerbereich entspricht 0.

Vielen Dank! "8-Bit unsigned" war das Zauberwort. Das hat mir sehr 
geholfen.
Beste Grüße
Michael
von Rainer W. (rawi)


Lesenswert?

Ob S. schrieb:
> Nämlich: dort vom halben Wandlerbereich den Messwert subtrahieren.

Da muss nichts subtrahiert werden. Für eine Zweierkomplementdarstellung 
muss nur das oberste Bit invertiert werden. Aus 0x80 (Bereichsmitte) 
wird dann 0x00, aus 0xFF (Maximalwert) wird 0x7F und aus 0x00 
(Minimalwert) wird 0x80.
von S. L. (sldt)


Angehängte Dateien:

Lesenswert?

> habe das DB von dem Teil nicht
> .. das Datenblatt ...

Da ich in den alten, mir vorliegenden Datenblättern weder ein "Diagramm 
32" noch ein "Pin6: VIN-minus" finden kann, hänge ich die beiden mal an.
  Dort ist dann auch die Justierung gut beschrieben, bei Philips 
kurz&bündig unter 'Reference Voltage Span Adjust', ausführlich bei 
National Semiconductor unter 2.4.2 und 2.5.3 - vielleicht hilft es ein 
wenig (mal unabhängig von der Zahlendarstellung).
von Ob S. (Firma: 1984now) (observer)


Lesenswert?

Rainer W. schrieb:
> Ob S. schrieb:
>> Nämlich: dort vom halben Wandlerbereich den Messwert subtrahieren.
>
> Da muss nichts subtrahiert werden. Für eine Zweierkomplementdarstellung
> muss nur das oberste Bit invertiert werden.

Dürfte auf nahezu allen Architekturen (mit 8Bit oder mehr) bezüglich des 
Rechenzeitbedarfs gehuppt wie gesprungen sein: eine ALU-Operation.

Subtraktion hat aber den Riesenvorteil, dass man ggf. einen leicht 
abweichenden Hardware-Nullpunkt problemlos in Software nachjustieren 
kann. Das fällt mit Bitgefummel schon deutlich schwerer...
von Roland D. (roland_d284)


Lesenswert?

Moin,

S. L. schrieb:
>> habe das DB von dem Teil nicht
>> .. das Datenblatt ...
>
> Da ich in den alten, mir vorliegenden Datenblättern weder ein "Diagramm
> 32" noch ein "Pin6: VIN-minus" finden kann, hänge ich die beiden mal an.

OK, da habe ich ein anderes Datenblatt gesehen. Hier ist Vin- Pin 7. 
Aber wie ist in diesem Datenblatt Diagramm 1 zu interpretieren? Dem 
Diagramm nach ist Pin 9 = Vref/2 die Spannung am oberen Ende der 
Widerstandskette die wohl den AD-Wandler darstellt.

> Dort ist dann auch die Justierung gut beschrieben, bei Philips
> kurz&bündig unter 'Reference Voltage Span Adjust', ausführlich bei
> National Semiconductor unter 2.4.2 und 2.5.3 - vielleicht hilft es ein
> wenig (mal unabhängig von der Zahlendarstellung).

Finde ich aber dennoch irgendwie unlogisch. Das heißt ja die 
Maximalspannung für den AD-Wandler wird intern generiert aus 2 * 
(VRev/2) + Vin-.

Warum sollte man dass so umständlich implementieren?

Gruß, Roland
von S. L. (sldt)


Lesenswert?

Roland D. sinnierte:
> Warum sollte man dass so umständlich implementieren?

'Alles Seiende ist vernünftig' - oder wie der Schwabe sagen würde: "'s 
isch, wie's isch, sunscht wär's net so" (Quelle: Thomas Stilla).

Spaß beiseite - als ich vor über einem Vierteljahrhundert für kurze Zeit 
damit arbeitete, fand ich es praktisch; ich bin aber kein Spezialist in 
diesem Bereich - vielleicht meldet sich hier ja noch ein solcher. 
Gegenfrage: Wie würden Sie es besser lösen?
  Bei der Anforderung "The differential analog voltage input allows for 
increased common-mode rejection and provides a means to adjust the 
zero-scale offset. Additionally, the voltage reference input provides a 
means of encoding small analog voltages to the full 8 bits of 
resolution." (Philips; sinngemäß bei National)

Nur am Rande, was mich noch interessieren würde: in welchem Datenblatt 
steht das von Ihnen und von Michael zitierte "Pin6: VIN-minus"?
von Roland D. (roland_d284)


Lesenswert?

Moin,

S. L. schrieb:
> Spaß beiseite - als ich vor über einem Vierteljahrhundert für kurze Zeit
> damit arbeitete, fand ich es praktisch; ich bin aber kein Spezialist in
> diesem Bereich - vielleicht meldet sich hier ja noch ein solcher.
> Gegenfrage: Wie würden Sie es besser lösen?

Naheliegend fände ich, wenn ich die beiden Spannungen vorgeben kann, bei 
denen der Output 0x00 bzw. 0xFF liefert.

Oder wenn so ähnlich, dann sollte Vref/2 die Spannung sein, bei der der 
Output 0x80 ist. Dann könnte ich zum Symmetrieren Vref/2 einfach über 
einen Tiefpass an In+ hängen, In- würde dann quasi den Span vorgeben.

So wie hier ist der Output aber dann 0x80, wenn In+ = In- + Vref/2 ist.

Gut, mag auf die Anwendung ankommen, was praktischer ist.

> Nur am Rande, was mich noch interessieren würde: in welchem Datenblatt
> steht das von Ihnen und von Michael zitierte "Pin6: VIN-minus"?

Ich hatte ein Datenblatt von Texas Instruments gefunden. Aber das 6 In- 
ist, war wohl ein Irrtum. In- ist in beiden Datenblättern die 7.

In dem TI-Datenblatt (findet man bei Mouser) stehen auch noch 
Assembler-Codeschnipsel zum Auslesen mit 6520 oder 8080 drin :-). Echt 
ein Retro-Projekt.

Gruß, Roland
von S. L. (sldt)


Lesenswert?

> In dem TI-Datenblatt (findet man bei Mouser) stehen auch
> noch Assembler-Codeschnipsel zum Auslesen mit 6520 oder 8080 drin

Wie ja auch in dem von National.
  An eben einem selbstgebauten 8080-System hing mein ADC0804 (und dann 
leistete ich mir den Luxus und stieg auf den 8085 um (reliving past 
glories - oder besser gesagt: tempi passati).
von Michael (su3686)


Lesenswert?

S. L. schrieb:
> Nur am Rande, was mich noch interessieren würde: in welchem Datenblatt
> steht das von Ihnen und von Michael zitierte "Pin6: VIN-minus"?

ja, sorry, war ein Irrtum. Pin 7 war gemeint.
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.