|
|
16.6 METEX DMM Multimeter
Metex Digital Multimeter am Atari
Die genaue Bezeichnungen der Buchsenbelegung des Multimeters im
mitgelieferten Handbuch sind ziemlich irreführend da diese
Beschreibung offensichtlich wohl von Laien gemacht wurde. Zudem passt
die Kabelbelegung im Urzustand leider nur, wie üblich, an einen
PC. Zumindest war das hier so. Es ging erst als ich mit das Kabel
passend umgelötet hatte
Die genaue Pinbelegung des Steckers:
Pinbelegung und Beschreibung METEX M-46xx. Die Seitenansicht.
Oberseite des Gerätes
Meß-Buchsen Display
----------------------------------------
o DTR
o DSR
o RX
o TX
o GND
----------------------------------------
Wie mir nach Anschauen des Schaltplanes klar wurde, erwartet das Multimeter an dem mit "RX" bezeichneten Anschluß eine negative Hilfsspannung. Diese Hilfsspannung wird durch Verbinden von RX (Multimeter) mit RTS (Computer) und Ausschalten von RTS am Computer hergestellt. Die richtige Verbindung der Anschlüsse des DMM mit der RS232
am Atari ist nun wie folgt, dazu öffen Sie den DB25 Stecker des
Kabels:
Abbildung 1 - Die richtige Verschaltung des Metex DMM an
Atari
Die Pin-Nummern beziehen sich auf einen 25-poligen Stecker am
Atari. Das mit dem Multimeter mitgelieferte Kabel ist also
entsprechend zu modifizieren. Das Funktiniert hier schon seit Jahren.
Für Atari-Computer mit DB9 Buchse als serielle Schnittstelle
sehen Sie bitte unter Stecker, Verbindungskabel oder bei den
Modemkabel nach. Hier finden Sie die korrekte Pinbelegung der 9
poligen seriellen Schnittstelle des Atari.
Nochmal die Pinbelegung für die 9- und 25 polige Anschlußbuchse am Atari im vergleich zu einen VOLTKRAFT Meßgerät mit ebenfalls serieller Schnittstelle.
Stift- 25-pol 9-pol Bezeichnung
leiste
O ---------20-------- 4 DTR
O --------- 4-------- 7 RTS
O --------- 3-------- 2 Empfangsdaten (RXD)
O --------- 2-------- 3 Sendedaten (TXD)
O --------- 7-------- 5 GND
Folgende GFA-Basic-Programme möge als Beispiel dienen, wie
Meßwerte aus dem Metex DMM Multimeter ausgelesen werden
können, prinzipbedingt können diese Programme auch auf
VOLTCRAFT Instrumente angewand werden.
dum=XBIOS(15,7,0,&X10111000,-1,-1)
PAUSE 50
REM
REM XBIOS 15: Rsconf
REM 7 -> 1200 Baud
REM 0 -> kein Handshake
REM &X10111000 -> 7 Bit, 2 Stopbits, no Parity
REM
dum=XBIOS(30,&X1000)
REM
REM XBIOS 30: Ongibit
REM RTS ausschalten; Bit 3 von Port A setzen
REM
OPEN "I",#1,"AUX:" ! Kanal öffnen
REPEAT
st_eingabe=0
REPEAT
PRINT #1,"D"
Ein weiteres GFA-Basic Programm um ein METEX DMM am Atari zu
testen:
0 ' Testprogramm fuer DMM M-4650CR
1 '
2 DEFINT "I-N"
3 DEFSNG "A-H,O-Z"
4 '
5 CLS
6 PRINT @(2,26);"Testprogramm fuer DMM M-4650 CR"
7 PRINT @(4,27);"(c) by Dr. D.Winkler 1992"
8 PRINT
9 XBIOS (,15,7,0,%10111000,-1,-1,-1)' setze: 1200,n,7,2
10 OPEN "V",1' AUX: oeffnen (RS232)
11 POKE $FF8800,14' Soundchip Register anwaehlen
12 Iold_Rts%= PEEK($FF8800)' alten Wert lesen
13 POKE $FF8802,Iold_Rts% OR %1000' RTS auf true
14 PRINT #1,"C"' und los geht's
15 '
16-Flush' Empfangspuffer leeren
17 BIOS (Ir%,1,1)
18 IF Ir%<>-1 THEN GOTO Start
19 INPUT #1,A$
20 GOTO Flush
21 '
22-Start
23 INPUT " Zeitkonstante (s): ";Isec%
24 PRINT
25 PRINT " Ende des Tests mit <CR>"
26 PRINT
27 IF Isec%<1 THEN Isec%=1' nicht oefters als 1 mal pro Sekunde
28 ON TIMER Isec% GOSUB Ask_Data' alle Isec einen Messwert anfordern
29 PRINT
30 '
31-Wait_Data
32 IF MID$( INKEY$ ,4,1)= CHR$(13) THEN GOTO Ende
33 BIOS (Ir%,1,1)' liegt ein Zeichen von RS232 vor ?
34 IF Ir%<>-1 THEN GOTO Wait_Data' nein -> warten
35 '
36 INPUT #1,A$' Wert vom DMM holen
37 PRINT TIME$ ,A$' und auf dem Bildschirm ausgeben
38 GOTO Wait_Data
39 '
40-Ask_Data' Routine wird vom BASIC alle Isec Sekunden aufgerufen
41 PRINT #1,"D"
42 RETURN
43 '
44-Ende
45 ON TIMER Isec% GOSUB 0' keine weiteren Datenanforderungen
46 POKE $FF8800,14' Register wieder herstellen
47 POKE $FF8802,Iold_Rts%
48 CLOSE
49 END
! Meßwert anfordern
st_messwert=0
REPEAT
st_messwert=BIOS(1,1) ! Meßwert verfügbar? BIOS 1: Bconstat
UNTIL st_messwert<>0
a$=INPUT$(14,1) ! Meßwert einlesen
CLS
PRINT AT(1,1);a$; ! Meßwert auf Bildschirm ausgeben
PAUSE 50
st_eingabe=BIOS(1,2) ! Tatstatureingabe? BIOS 1: Bconstat
UNTIL st_eingabe<>0
eingabe$=CHR$(INP(2)) ! Tastatureingabe holen
UNTIL eingabe$="q" ! Programm beenden?
dum=XBIOS(29,&X11110111)
REM
REM XBIOS 29: Offgibit
REM RTS wieder einschalten;
REM Bit 3 von Port A löschen
REM
CLOSE#1 ! Kanal wieder schließen
END
Metex-Multimeter an Atari
Leitung an Pin 4 (RTS) des Sub-D-Steckers (bei mir gelb)
abtrennen, dann klappt es. Zum Ausprobieren genügt ein beliebiges
Terminal-Programm mit den Parametern: 1200 Bps, keine Parität,
7bit, 2 Stopbits, kein Handshake.
Auf XBIOS-Ebene geht's aber noch eleganter:
Auf Hardware-Ebene könnte Dir nämlich irgendein
Programm, das auch den Soundchip adressiert (z.B.Crazy Sounds) in die
Quere kommen.
Minimal-Testprogramm fuer DMM M-4650CR1 2 DEFINT "I-N" 3 DEFSNG "A-H,O-Z" 4 5 CLS 6 PRINT @(2,26);"Testprogramm fuer DMM M-4650 CR" 7 PRINT @(4,27);"(c) 1992" 8 PRINT 9 XBIOS (,15,7,0,%10111000,-1,-1,-1)' setze: 1200,n,7,210 OPEN"V",1' AUX: oeffnen (RS232)11 POKE $FF8800,14' Soundchip Register anwaehlen 12 Iold_Rts%= PEEK($FF8800)' alten Wert lesen 13 POKE $FF8802,Iold_Rts% OR %1000' RTS auf true 14 PRINT#1,"C"' und los geht's 15 '16-Flush'Empfangspuffer leeren 17 BIOS (Ir%,1,1) 18 IF Ir%<>-1 THEN GOTO Start 19 INPUT #1,A$ 20 GOTO Flush 21 '22-Start 23 INPUT " Zeitkonstante (s): ";Isec% 24 PRINT 25 PRINT " Ende des Tests mit <CR>" 26 PRINT 27 IF Isec%<1 THEN Isec%=1'nicht oefters als 1 mal pro Sekunde 28 ON TIMER Isec% GOSUB Ask_Data' alle Isec einen Messwert anfordern 29 PRINT 30 '31-Wait_Data 32 IF MID$( INKEY$ ,4,1)=CHR$(13) THEN GOTO Ende 33 BIOS (Ir%,1,1)' liegt ein Zeichen von RS232 vor ? 34 IF Ir%<>-1 THEN GOTO Wait_Data' nein -> warten 35 '36 INPUT #1,A$' Wert vom DMM holen 37 PRINT TIME$ ,A$' und auf dem Bildschirm ausgeben 38 GOTO Wait_Data 39 '40-Ask_Data' Routine wird vom BASIC alle Isec Sekunden aufgerufen 41 PRINT#1,"D"42 RETURN 43 '44-Ende 45 ON TIMER Isec% GOSUB 0' keine weiteren Datenanforderungen 46 POKE $FF8800,14' Register wieder herstellen 47 POKE $FF8802,Iold_Rts%48 CLOSE 49 END
Ein Hardwarezusatz zum Temperaturmessen
Autor leider Unbekannt.
_Hardware_*Thermometer 2xNPN (z.B. BC548B) ST-Druckerport* ________________(2) | / c Data 0 (9)____[***]______|/Data 1kOhm b|\ | \ e +---------------(25) | / e Masse (10)___[***]______|/Clock 1kOhm b|\ | \________________(11) c Busy Die mit 1,5V anliegenden Daten werden über Treiberstufen auf
den normalerweise mit Pull-Ups versehenen Druckerport gegeben. Sollte
das ausirgendeinem Grund nicht der Fall sein, sind die Leitungen 2
(Data 0) und 11(Busy) über 4k7-Widerstände an +5V (z.B. vom
Joystickport) zu legen.
Software
Zur Inbetriebnahme muß lediglich derTreiber THERMO.PRG im
AUTO-Ordner oder manuell gestartet werden. Er benutzt die XBRA- und
Cookie-Kennung 'THRM' (die Mail an Julian geht heute raus). Der
Cookie-Wert zeigt auf eine Struktur aus 2 Words: Das erste
(vorzeichenbehaftete) Word enthält die Temperatur * 10 (also z.B.
254 für 25.4 Grad). Steht dort allerdings 2550 (255 Grad...), ist
bei der Auswertung ein Fehler aufgetreten - dieser Fall sollte nur
auftreten, wenn das Modul nicht angeschlossen ist oder noch keine
Daten angekommen sind - das Thermometer liefert seine Daten
standardmäßig nur alle 10sec. In der GFA-BASIC-Routine habe
ich die Fehlererkennung noch erweitert:
Ein Bug?
Unter ungünstigen Umständen kommt es beim Einlesen der
Temperaturdaten zu Abstürzen. Dieses Problem ist bei mir bis
jetzt nur im GFA-BASIC-Interpreter aufgetreten, und weil es so selten
auftritt, konnte ich die Fehlerursachenoch nicht aufspüren. Ich
übernehme aber keine Haftung für verlorengege-gangene
Daten... Wie man im UUE gut sehen kann, ist der Cookie Jar (der bei
Bedarf neu an-gelegt wird) im TEXT-Segment enthalten. Das schadet zwar
nichts, kostetaber ein paar Bytes (egal - das kB ist noch nicht voll).
In der nächsten Version wird er aber im BSS-Segment stehen.
Rechtlicher Status
Der Treiber ist Freeware und darf nur unverändert beliebig
oft weitergegebenwerden. Das GFA-BASIC-Programm dagegen ist
Public-Domain und darf auch verändert werden vielleicht gibt's ja
auch daran noch etwas zu feilen.
Begin UUE-Code:
table
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_begin 644
THERMO.PRGM8!H .0 "!O 0\? $ W>@ #-WH !3=zMZ
<0?H!]F$ 4QA'DAZ !X_/ F3DY<CT'Z I!A $V0F<O#C\\ #%.04YUyM2KD 6@9@1A "^('D
6@0H%2@208)A@,@E1(4DUF#$'Z CUA $ 8 !xM"$J"9P)@X+*#9C0,@P !!F#$'Z <QA #B8
ZB!Y %H$/Z .I3@2+8wM(MA1R?_Z(WP 0__P@26%<(+P (6C__ $(7Q42%)-__@A?
@C_vM_!'\ >( ! XB (@ '$<"( B/Y ! M@C_ MP $ "+D #_uM^@,(^0
/_Z"0CY __H53G4C^0 !"H %"(_D 0F !8B/\ !tM1@ !"HC_#%!628 0F(_P
%\ %H$YU6$)2051(4DT (_P sM %H"/Z__ 0J(_H " !"9.U@ !(4#\\
E.05R/3G4_/ !/SP rM3$Y! !
qM pM
!80E)!oM5$A230 )]@
#0H;<"!496UP97)A='5R92!$<FEV97(@&W$-"E9E<G-InM;VX@,2XP+B
H8RD@,3DY,R!B>2!/;&4@4&%H; T* =4;V\@;6%N>2
H,38ImM(&-O;VMI97,@:6YS=&%L;&5D+B!0;&5A<V4@=7-E(&%N;W1H97(@<')O9W)AlM;2!T;R!I;G
-T86QL('1H92!*87(N#0H
!T1R:79E<B!A;')E861Y(&EN<W1AkM;&QE9"X-"@!$<FEV97(@:6YS=&%L;&5D+@T* %A"4D%42%)-
BY jM__H-2.=\ "(Y $NB0!DKH F"/" #B@R! 9&L0,_P @H3_ ,iM
#CA(Z 'HT.O[R$?P #X@ %CB( @# !G! ."8 (#PC/" ""K(\ !FhM.#@\ ( @ ,9P0(Q
/.@("10 /V$4Z NA% D4 #\K\ K813H"X$4"10 /gMROP 9-A%,\0 ((4P$3P0 XY,WP ^"+D
#_^A%.<P , , >f-!B@*!A0!R! ()#X( $3e d
Und nochmal im Klartext:
FUNCTION temperatur LOCAL cjar,zeiger,cname$,cvalue cjar=LPEEK(&H5A0) IF cjar=0 RETURN 255 ENDIF CLR zeiger DO cname$=MKL$(LPEEK(cjar+zeiger)) cvalue=LPEEK(cjar+zeiger+4) EXIT IF cname$=STRING$(4,0) OR cname$="THRM" ADD zeiger,8 LOOP IF cname$=STRING$(4,0) RETURN 255 ENDIF RETURN DPEEK(cvalue)/10 ENDFUNC
Copyright © Robert Schaffner (support@doitarchive.de) Letzte Aktualisierung am 23. Dezember 2003 |
|
|