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 |