AD Wandler fuer die serielle Schnittstelle

background image

Nicht immer muß es ein hochgenauer
und superschneller A/D-
Wandler sein, wenn analoge Meß-
größen von digitalen Systemen weiter-
verarbeitet werden sollen. Für viele
Anwendungen reicht eine mittlere
Genauigkeit (z. B. 256 Schritte im
Bereich 0...5 V) bei mäßiger Geschwin-

digkeit vollkommen aus. Weshalb also
kompliziert, wenn es auch einfacher
geht...? Unser hier vorgestellter
A/D-Wandler beweist, daß zufrieden-
stellende Ergebnisse auch ohne teure
Spezialbauteile machbar sind. Im ein-
zelnen: die Auflösung des Eingangssig-
nals beträgt 20 mV, die Genauigkeit des

X-2 - 6/98 Elektor

EXTRA

———————————————————— PC-P

LUS

Hier wird gezeigt, wie man analoge Eingangssignale
mit verhältnismäßig wenig Aufwand für die Weiterver-
arbeitung im PC aufbereiten kann. An den Computer
werden keine besonderen Anforderungen gestellt, so
daß auch Oldtimer bis hinunter zum XT zur Meßaus-
wertung dienen können.

Entwurf: J. F. Verrij

A/D-Wandler

Für die serielle PC-Schnittstelle

Technische Spezifikationen

Meßbereich:

0-5 V

Auflösung:

8 bit

Schrittgröße:

20 mV

Meßfehler:

± 1bit

Wandlungszeit:

150 µs

Betriebsspannung:

5 V

Aufgenommener Strom:

5 mA

Schnittstelle:

RS232

Software:

z.B. QBASIC

background image

Meßergebnisses ist 1 Bit bzw. 20 mV, und
steuern läßt sich die Schaltung mit Hilfe
eines kurzen, leicht überschaubaren
Programms, das zum Beispiel in Basic
geschrieben sein kann. Ein weiteres Plus
ist der geringe Strombedarf (ca. 5 mA
bei 5 V), der eine eigene Stromversor-
gung vollständig überflüssig macht. Die
gesamte Schaltung wird direkt aus der
seriellen Computer-Schnittstelle versorgt!

Einfach gewandelt

Die A/D-Wandler-Schaltung arbeitet mit
dem Baustein ADC 0804, einem recht
preisgünstigen und seit vielen Jahren
bewährten “Zugpferd” von National
Semiconductor. Dazu kommen noch
einige Buffer aus der
4000er-CMOS-Familie, ein integrierter
Spannungsregler sowie einige passive
Bauelemente. Die Umsetzung des par-
allelen 8-Bit-Wandler-Ausgangssignals
in ein 2-mal-4-Bit-Format wurde durch
Hardware realisiert, wobei die Hands-
hake-Leitungen der seriellen Schnitt-
stelle Hilfestellung leisten. Wegen der
begrenzten Anzahl der Schnittstellen-
Leitungen muß nämlich das Wand-
ler-Ausgangssignal in zwei Schritten in
den Computer eingelesen werden;
hierzu dienen die beiden CMOS-ICs.

Schaltung

In der Schaltung (Bild 1) ist links der Ein-
gang des analogen Meßsignals und
rechts der RS232-Konnektor für die Ver-
bindung mit der seriellen PC-Schnitt-

stelle zu sehen. Die Betriebsspannung
der gesamten Schaltung (5 V) wird mit
Hilfe der drei Dioden D1...D3, dem
Glättungskondensator C8 und dem
Low-Drop-Spannungsregler IC4 aus

PC-P

LUS

————————————————————

Elektor

EXTRA

X-3 - 6/98

K1

1

2

3

4

5

6

7

8

9

R1

10k

C1

150p

ADC0804

IC1

CLKR

AGND

INTR

VREF

DB0

DB1

DB2

DB3

DB4

DB5

DB6

DB7

CLK

VI+

VI–

20

10

18

17

16

15

14

13

12

11

19

CS

RD

WR

4

6

8

1

2

3

5

9

7

C2

100n

D6

1N4148

JP1

C3

100n

R2

4k7

20k

P1

C5

100n

R9

47K

R3

47K

R8

47K

D5

1N4148

D4

IC3a

3

2

1

IC3d

9

10

1

IC3e

11

12

1

R5

47k

R6

47k

R4

47k

R7

47k

T1

BC547B

IC2

4019

A1

B1

A2

B2

A3

B3

15

A4

B4

SA

14

SB

10

D1

11

D2

12

D3

13

D4

6

7

4

5

2

3

1

9

D1

D3

1N4148

D2

C8

100n

LP2950-CZ5.0

IC4

C4

100

µ

25V

IC2

16

8

1

8

IC3

C6

100n

C7

100n

IC3b

5

4

1

IC3c

7

6

1

IC3f

14

15

1

5V

5V

5V

5V

5V

5V

2x

3x

DCD

DSR

TxD

CTS

DTR

RI

RTS

TxD

DTR

RTS

IC3 = 4050

980055 - 11

Bild 1: Der A/D-Wandler arbeitet ohne eigene Stromversorgung. Die serielle Schnittstelle wird hier als 4-Bit-Parallelport genutzt.

A/D conversion busy

read data 0 - 3

read data 4 - 7

980055 - 12

WR

INTR

RD

S

A

= DTR

S

B

= DTR

Bild 2: Das Diagramm zeigt den zeitlichen Ablauf der verschiedenen Signale.

background image

den RS232-Signalen DTR, RTS und TxD
gewonnen. Ein einfacher Spannungtei-
ler (Trimmpoti P1) leitet aus der Betriebs-
spannung die Referenzspannung für
den Wandler-Baustein IC1 ab. Der aus
R2 und C3 gebildete Tiefpaß dient
dabei zur Unterdrückung von hochfre-
quenten Störspitzen beim Wechsel der
RS232-Signale. Aus dem gleichen
Grund wurden auch die 5-V-Anschlüsse
der drei ICs sorgfältig voneinander ent-
koppelt (C4...C7). Natürlich kann diese
unkonventionelle Art der Stromversor-
gung nur mit Erfolg arbeiten, wenn
ständig mindestens eine der drei
RS232-Leitungen DTR, RTS und TxD auf
+12 V liegt. Das Steuerprogramm, das
auch die digitalen Meßdaten auf der
PC-Seite in Empfang nimmt, muß dies
in jedem Fall sicherstellen.
Frequenzbestimmend für den Taktoszil-
lator, der im A/D-
Wandlerbaustein (IC1) integriert ist, sind
die externen Komponenten R1 und C1.
Mit der gewählten Dimensionierung
beträgt die Taktfrequenz ca. 400 kHz,
die Wandeldauer liegt bei 150

µs. Das

analoge Meßsignal gelangt von den
mit “+” und “-” bezeichneten Pins zu
den Eingängen VI+ bzw. VI- von IC1.
Der Eingang ist asymmetrisch geschal-
tet (“-” liegt an Masse); bei Bedarf erhält
man durch einfaches Entfernen von
Brücke JP1 einen “schwebenden” (mas-
sefreien) Eingang. Der zulässige Ein-

gangsspannungsbereich von IC1 liegt
zwischen -0,3 V und der Betriebsspan-
nung zuzüglich 0,3 V. Diode D6 schützt
den Eingang vor Beschädigung infolge
Verpolung der Eingangsspannung, und
Kondensator C2 unterdrückt eventuelle
hochfrequente Störüberlagerungen.
Der restliche Teil der Schaltung wird
benötigt, um das digitale, aus acht Bit
bestehende Meßergebnis in den PC
einzulesen. Wie schon erwähnt,
geschieht dies in zwei Schritten: Die Bits
Data0...Data3 bilden das erste Nibble,
die Bits Data4...Data7 das zweite. Die
beiden Nibbles gelangen nacheinan-
der über die RS232-Leitungen CTS, DSR,
RI und DCD in den Computer; die seri-
elle Schnittstelle wird damit zum 4-Bit-
Pseudo-Parallelport. In umgekehrter
Richtung steuern die RS232-Signale die
Eingänge WR und RD des Wandler-Bau-
steins IC1 sowie die Steuereingänge SA
und SB von Demultiplexer IC2. Transistor
T1 arbeitet als Inverter, so daß abhän-
gig vom DTR-
Signal entweder SA oder SB aktiv ist. Für
Schreibsignal WR und Lesesignal RD
sind die RS232-Leitungen RTS bzw. TxD
zuständig. Die Dioden D4 und D5 bil-
den zusammen mit Widerstand R3 ein
ODER-Gatter. Die Daten-Ausgangssig-
nale von IC1 sind während des Wan-
delintervalls nicht definiert. Da Eingang
A1 des Demultiplexers IC2 von Wider-
stand R9 auf +5 V gehalten wird, liefert

auch Ausgang D1 hohe Spannung.
Dabei muß natürlich das Selektionssig-
nal SA aktiv sein. Das Signal auf der
DCD-Leitung ist folglich identisch mit
dem Signal, das der INTR-Ausgang des
A/D-Wandlers IC1 liefert.
Der Wandlerzyklus startet, sobald das
WR-Signal auf hohe Spannung gesetzt
wird. Nach ca. 150

µs ist der Wandel-

prozeß beendet; der Computer erkennt
diesen Zustand an dem auf niedrige
Spannung wechselnden DCD-Signal.
Ein Lesebefehl (niedrige Spannung an
Eingang RD) veranlaßt den A/D-Wand-
ler, das Meßergebnis an seine Aus-
gänge DB0...DB7 zu legen. Dabei kehrt
das vom INTR-Ausgang gelieferte Sig-
nal automatisch auf hohe Spannung
zurück. Zur Verdeutlichung der relativ
komplexen Zusammenhänge soll das
Zeitdiagramm in Bild 2 dienen.
Bei genauer Schaltungsbetrachtung
fällt auf, daß die Eingänge der Buffer
IC3D und IC3E unmittelbar von den
RS232-Signalen (±12 V) gesteuert wer-
den. Auf den ersten Blick scheint das
gefährlich zu sein, denn negative Ein-
gangsspannungen sind bei CMOS-ICs
der 4000er-Familie verboten, und auch
positive Eingangsspannungen, die die
Betriebsspannung (hier 5 V) wesentlich
übersteigen, sind nicht erlaubt. Ein
Anlaß zur Sorge besteht trotzdem nicht,
weil die integrierten Schutzdioden
zusammen mit den externen

X-4 - 6/98 Elektor

EXTRA

———————————————————— PC-P

LUS

980055-1

(C) ELEKTOR

C1

C2

C3

C4

C5

C6

C7

C8

D1

D2

D3

D4

D5

D6

H1

H2

H3

H4

IC1

IC2

IC3

IC4

JP1

K1

P1

R1

R2

R3

R4

R5

R6

R7

R8

R9

T1

980055-1

T

-

+

980055-1

(C) ELEKTOR

Bild 3: Platinenlayout und Bestückungsplan für die Schaltung in Bild 1.

Stückliste

Widerstände:
R1 = 10 k
R2 = 4k7
R3...R9 = 47 k
P1 = 20 k Spindeltrimmer

Kondensatoren:
C1 = 150 p
C2,C3,C5...C8 = 100 n

C4 = 100

µ/25 V stehend

Halbleiter:
D1...D6 = 1N4148
T1 = BC547
IC1 = 1ADC0804LJN
IC2 = 4019
IC3 = 4050
IC4 = LP2950-CZ5.0

Außerdem:

JP1 = 1

× Jumper

K1 = 1

× 9-polige D- Buchse für Plati-

nenmontage

background image

47-k-Widerständen (R5 bzw. R6) die
“überschüssigen” Spannungen
unschädlich machen. Unter normalen
Betriebsbedingungen dürfen über die
Schutzdioden Ströme bis ca. 10 mA
fließen; hier liegen diese Ströme weit
unter dem genannten Wert.

Platine

Das Platinenlayout für die Schaltung
aus Bild 1 ist in Bild 3 wiedergegeben.
Bei der Bestückung beginnt man am

zweckmäßigsten mit dem Einlöten der
vier Drahtbrücken. Die ICs können zwar
in Fassungen gesteckt werden, doch
der erfahrene Hobby-Elektroniker wird
die direkte Lötmontage wegen des
geringeren Platzbedarfs bevorzugen.
Die Komponenten nehmen keinen
Schaden, wenn die Lötdauer im übli-
chen Rahmen bleibt. Selbstverständ-
lich müssen die ICs, die Dioden und
der Elko (C4) in der richtigen Lage auf
die Platine gesetzt und eingelötet wer-
den, wenn die Schaltung später funk-

tionieren soll.
Für den analogen Eingang sind auf
der Platine drei Lötpins vorgesehen.
Wenn der Eingang asymmetrisch
betrieben wird, was zu empfehlen ist,
kann der mit “–” bezeichnete Pin ent-
fallen. Brücke JP1 muß dann natürlich
vorhanden sein.
Die Verbindung zum Computer stellt
eine 9-polige SUB-D-Buchsenleiste her.
Da beim Einstecken und Herausziehen
des zugehörigen Kabelsteckers hohe
mechanische Kräfte auftreten können,
muß die SUB-D-Buchsenleiste unbedingt
mit der Platine verschraubt werden. Das
muß geschehen, bevor die Pins der
SUB-D-Buchsenleiste mit den Kupferin-
seln auf der Platine verlötet werden.
Anderenfalls besteht die Gefahr, daß
mechanische Spannungen entstehen,
die zum Abreißen der Kupferbahnen
führen.

Software

Ohne ein geeignetes Programm, das
den A/D-Wandler steuert und die
Meßwerte in den Computer holt, wäre
alle bisherige Mühe vergeblich. Glück-
licherweise genügen wenige Instruktio-
nen, zum Beispiel in der Programmier-
sprache Basic, um den A/D-Wandler
zum Leben zu erwecken. Die Routinen
können leicht in eigene Programme
eingefügt werden, so daß die Anwen-
dungsmöglichkeiten praktisch unbe-
grenzt sind.
In Bild 4 ist das Listing eines Demo-Pro-
gramms zu finden, das im Basic-Dialekt
QBASIC geschrieben wurde. Die im
Listing enthaltenen Kommentare und
die Informationen zu den Registern der
seriellen PC-Schnittstelle machen das
Programm leicht durchschaubar. Stan-
dardmäßig ist in jedem PC ein Control-
ler vom Typ 8250 (oder ein kompatibler
Typ) pro serielle Schnittstelle vorhanden.
Generelle Informationen zu diesem
Controller enthält eine Datenkarte an
anderer Stelle in diesem Heft.

Einstellung

Die Eichung des A/D-Wandlers ist völlig
unkompliziert: Man legt eine geeignete
Spannungsquelle an den Eingang, zum
Beispiel eine Knopfzelle, deren Span-
nung zuvor mit einem genauen Digital-
multimeter gemessen wurde. Das Pro-
gramm wird gestartet, und der ausge-
gebene Spannungswert wird mit
Trimmpoti P1 so eingestellt, daß er mit
der tatsächlichen Eingangsspannung
möglichst exakt (±20 mV) überein-
stimmt.

980055

PC-P

LUS

————————————————————

Elektor

EXTRA

X-5 - 6/98

COMadres = &H3F8

LOOP1:

‘First switch on power supply by making DTR and TxD high

‘read (TxD) not active, write (RTS) active

OUT COMadres + 4, INP(COMadres + 4) OR 1 ‘DTR=SA=H, SB=L

OUT COMadres + 4, INP(COMadres + 4) AND &HFD ‘RTS=WRnot=L

OUT COMadres + 3, INP(COMadres + 3) OR 64 ‘TxD=RDnot=H

‘Wait 50 ms until circuit is stable before starting a conversion

Start = TIMER

DO

TIME = TIMER

LOOP UNTIL TIME >= Start + .05

‘Start conversion by making Write not active

OUT COMadres + 4, INP(COMadres + 4) OR 2 ‘RTS=WRnot=H

‘Wait for interrupt (DCD), signalling end of conversion

DO

intr = INP(COMadres + 6) AND 128

LOOP UNTIL intr = 0 ‘wait until DCD=L

‘Reset interrupt by making read active

OUT COMadres + 3, INP(COMadres + 3) AND 0 ‘TxD=RDnot=L

‘Now the result can be read in 2 nibbles

READDATAL:

Datalow = (INP(COMadres + 6)) AND 240 ‘read low nibble

‘Switch multiplexer input

OUT COMadres + 4, INP(COMadres + 4) AND &HFE ‘DTR=SA=L, SB=H

READDATAH:

Datahigh = (INP(COMadres + 6)) AND 240 ‘read high nibble

‘Optimize power supply and return circuit to standby

‘by making DTR and TxD high

OUT COMadres + 3, INP(COMadres + 3) OR 64 ‘TxD=RDnot=H

OUT COMadres + 4, INP(COMadres + 4) OR 1 ‘DTR=SA=H, SB=L

‘Now the two nibbles are combined into the original byte

DATAHL = Datahigh + Datalow / 16

‘Convert the result to the measured input voltage

Range = 4.998

Voltage = Range * DATAHL / 255

‘Rounding the result to 3 digits

Voltage = INT(Voltage * 1000 + .5) / 1000

‘Display the result

PRINT counter; “Voltage=”; Voltage; “Volt”

Counter = Counter + 1

GOTO LOOP1:

END

Bild 4: Aus diesem in QBASIC geschriebenen Programmbeispiel wird deutlich, wie der
A/D-Wandler gesteuert werden muß.


Wyszukiwarka

Podobne podstrony:

więcej podobnych podstron