. |
SERAI 6-10
Download:serai610d.zip
(923K) enthält Windows-Programme
und diese Beschreibung
und Programmbeispiele in Turbo-Pascal und
Allgemeine
Beschreibung
Technische
Daten
Anschlussbelegung
der Schraubklemmen
Verwendung
des Softwaretools SERAI610.EXE
Programmbeispiel
Visual Basic 3
Programmbeispiel
Turbo Pascal
Programmbeispiel
in Delphi 4
zum
Shop
|
Allgemeine
Beschreibung
Das
Interface verwendet den AD-Wandler TLC1543 von Texas
Instruments mit seriell getakteter Datenübertragung.
Die Datenübertragung zum und vom Wandler erfolgt
durch direkte Steuerung der Handshakeleitungen der
seriellen Schnittstelle. Die Stromversorgung wird
durch die hochgesetzte TXD-Leitung gespeist. Alle
Eingänge sind durch Vorwiderstände gegen Überspannungen
geschützt. Die Eingänge liegen an Schraubklemmen
die auch die interne Referenzspannung von +5V zur
Verfügung stellen. Der Wandler kann mit dem
beiliegenden Programm SERAI610.EXE ausgelesen
werden. Die Programmierung kann in einer beliebigen
Programmiersprache erfolgen. Beispiele für Turbo
Pascal, Delphi und Visual Basic liegen bei.
Der
TLC1543 besitzt von Haus aus Eingänge mit einem Messbereich
von 0 bis 5V. Bei einer Auflösung von 10 Bit wird
das Messsignal in Quantisierungsstufen von 5 mV erfasst.
Der Wandler liefert an den PC Zahlenwerte zwischen 0
und 1023. Zur Anpassung an die vorgesehenen
Eingangsbereiche wurden hochohmige Spannungsteiler
vorgeschaltet. Sie bieten zugleich auch einen Schutz
bei eventuellen kurzzeitigen Bereichsüberschreitungen
bis ±100V.
Der effektive Eingangswiderstand beträgt 200 kW
in den Bereichen –5...+5V und 0...10 V sowie 133 kW im Bereich –10V...+10V. Ein angeschlossener Sensor sollte
einen geringen Innenwiderstand unter 1 kW
aufweisen, um Messfehler zu vermeiden. Davon kann
man in den meisten Fällen ausgehen, zumindest
solange der Sensor über einen eigenen Messverstärker
verfügt
|
Technische
Daten:
Messbereiche
|
-5V
...+5V
(Ch0, CH5)
|
|
0
...+10V
(Ch1, Ch4)
|
|
-10V
...+10V (Ch2, Ch3)
|
Auflösung
|
10
Bit (10 mV bzw. 20 mV
|
Eingangswiderstand
|
200
k (Ch0,1,4,5) |
|
133
k (Ch2, CH3) |
Linearität
|
+/-
1 LSB
|
Eingangskanäle
|
6
|
Wandlungszeit
|
20
µs ... 1 ms
|
|
Anschlussbelegung
der Schraubklemmen
1
|
Referenz
+5 V, extern belastbar bis 3 mA
|
2
|
CH0,
-5V ... +5V, offener Eingang: +5V, Ri=200k
|
3
|
CH1,
0...10V, offener Eingang 0V, Ri=200k
|
4
|
CH2,
-10V...+10V, offener Eingang 3,33V, Ri=133k
|
5
|
CH3,
-10V...+10V, offener Eingang 3,33V, Ri=133k
|
6
|
CH4,
0...10V, offener Eingang 0V, Ri=200k
|
7
|
CH5,
-5V ... +5V, offener Eingang: +5V, Ri=200k
|
8
|
Gemeinsame
Masse
|
|
Die
Software wurde in Delphi 3 geschrieben und läuft
ab Windows 95 (32 Bit). Das Programm besitzt ein
Menü zur Auswahl von drei Grundfunktionen. In
der Übersicht werden alle sechs Kanäle direkt
angezeigt. Neben der Zeigerdarstellung erhält
man auch eine Digitalanzeige. Entsprechend der
Auflösung von 10 Bit hat die digitale Ausgabe
einen Wertebereich von 0 bis 1023. Außerdem
wird die Eingangsspannung jedes Kanals in Volt
angezeigt. Das Programm ermöglicht die Auswahl
der Schnittstellen COM1 bis COM3.
Unter
der Funktion Zeit-Diagramm lassen sich Messwerte in
einem über Zeiten zwischen 10 s und 24 h aufzeichnen.
Es können bis zu sechs gleichzeitig aktive Kanäle
angezeigt werden. Während der eigentlichen Messung
werden alle sechs Kanäle gemessen. Sie können nachträglich
in beliebiger Kombination zusammen dargestellt werden.
Durch Anklicken des Kopieren-Icons neben dem
Start-Button werden die Messdaten als Tabelle in
Textform in die Zwischenablage kopiert.
Die
Daten lassen sich in beliebige andere
Windows-Programme wie z.B. Word oder Excel einfügen.
0
-1,31
0,00
3,25
3,29
0,00
5,00
t/s
K2/V
K3/V
K4/V
K5/V
K6/V
K7/V
0,056
-1,30
0,00
3,27
3,29
0,00
5,00
0,11
-1,30
0,00
3,25
3,29
0,00
5,00
0,166
-1,29
0,00
3,27
3,29
0,00
5,00
0,22
-1,29
0,00
3,25
3,29
0,00
5,00
0,275
-1,29
0,00
3,27
3,29
0,00
5,00
Aufbau
der kopierten Datentabelle
Mit
der Funktion XY-Diagramm lassen sich zwei frei wählbare
Kanäle gegeneinander darstellen. Die Daten lassen
sich auch hier als Tabelle in die Zwischenablage
kopieren, um sie mit anderen Programmen weiter
auszuwerten.
KL2
in V
KL7 in V
0,03
4,19
0,04
4,19
0,05
4,20
0,05
4,21
0,06
4,23
0,07
4,23
Aufbau
der kopierten Daten
|
Das folgende
Programmbeispiel verwendet die RSLINE.DLL
unter Win3.1 mit VB3. Die DLL wird auch
in dem Experimenterset ELEXS eingesetzt. Das
Projekt befindet sich unter dem Namen Serai6 auf
der Diskette.
Declare
Function OPENCOM Lib "RSLINE.DLL" (ByVal
A As Integer) As Integer
Declare Sub Delay Lib "RSLINE.DLL" (ByVal
Zeit As Integer)
Declare
Sub DTR Lib "RSLINE.DLL" (ByVal An As
Integer)
Declare Sub RTS Lib "RSLINE.DLL" (ByVal
An As Integer)
Declare Sub TXD Lib "RSLINE.DLL" (ByVal
An As Integer)
Declare Function CTS Lib "RSLINE.DLL"
() As Integer
Declare Function DCD Lib "RSLINE.DLL"
() As Integer
Declare
Function DSR Lib "RSLINE.DLL" () As
Integer
Declare Function RI Lib "RSLINE.DLL"
() As Integer
Declare Sub TimeInit Lib "RSLINE.DLL"
()
Declare Function TIMEREAD Lib "RSLINE.DLL"
() As Integer
Sub
Form_Load ()
If
App.PrevInstance Then
msg$
= App.EXEName & " wurde bereits
gestartet "
MsgBox
msg$, 48
End
End
If
i
= OPENCOM(2)
If
i = 0 Then
i = OPENCOM(1)
Option1.Value = True
End
If
If
i = 0 Then MsgBox ("Schnittstelle nicht
verfügbar")
TXD
1
'Betriebsspannung für Serai
Dummy
= Messung(0)
End
Sub
Sub
Form_Unload (Cancel As Integer)
TXD 0
End
Sub
Function
Messung (Kanal As Integer) As Integer
DataOut
= Kanal * 16 ' Adresse auf Bits 4...7
DataIn
= 0
For BitOut = 1 To 10
'RTS ((DataOut And
128) \ 128)
'Din
If (DataOut And 128) =
128 Then RTS (1) Else RTS (0)
DataIn
= DataIn * 2
DTR (1)
'Clock
DataIn = DataIn + CTS()
'Dout
DTR
(0)
DataOut = DataOut * 2
Next BitOut
Messung = DataIn
TimeInit
While (DSR() = 0) And
(TIMEREAD() < 10) ' EOC abwarten
Wend
End
Function
Sub
Option1_Click ()
i
= OPENCOM(1)
If
i = 0 Then MsgBox ("COM1 nicht verfügbar")
DTR
0
RTS
0
TXD
1
End
Sub
Sub
Option2_Click ()
i
= OPENCOM(2)
If
i = 0 Then MsgBox ("COM2 nicht verfügbar")
DTR
0
RTS
0
TXD
1
End
Sub
Sub
Timer1_Timer ()
Dummy
= Messung(1)
U = Int(Messung(4) /
1023 * 1000) / 100
Text1.Text = "Kl
3: " + Str$(U) + " V
"
U
= Int(Messung(4) / 1023 * 1000) / 100
Text2.Text
= "Kl 6: " + Str$(U) + " V
"
End
Sub
|
Dieses
Beispielprogramm unter Turbo Pascal 6.0 zeigt
ein Beispiel für die direkte Ansteuerung der
Schnittstellenleitungen unter DOS. Das kompilierte
Programm für COM2 liegt als SERAI6TP.EXE auf
der Diskette bei.
PROGRAM
SERAI6tp; {
einlesen Kanal 0 }
uses crt, dos;
VAR EDIT1, HW : Real;
Const BA = $02F8;
{COM2}
procedure Init;
var i,
Dummy :Byte;
begin
Port[BA+3]:=128;
Port[BA+0]:=12;
{ 12: 9600 Baud, 6 :19200 Baud }
Port[BA+1]:=0;
Port[BA+3]:=3;
{ 3: 8-Bit, n-Parity, 1 Stopbit, 7: dito
2 Stopbits }
Port[BA+1]:=0;
{ keine Interrupts }
Port[BA+4]:=0; { DTR = 0, RTS = 0}
for i:= 1 to 3 do
Dummy:=Port[BA]; { UART leeren }
end;
procedure
DTR (An : Word);
begin
If
An = 1 then Port[BA+4] := (Port[BA+4] OR 1) else
Port[BA+4] := (Port[BA+4] AND 254);
end;
procedure
RTS (An : Word);
begin
If An
= 1 then Port[BA+4] := (Port[BA+4] OR 2) else
Port[BA+4]
:= (Port[BA+4] AND 253);
end;
procedure
TxD (An : Word);
begin
If
An = 1 then Port[BA+3] := (Port[BA+3] OR 64)
else
Port[BA+3] := (Port[BA+3] AND 191);
end;
function
CTS : Word;
begin
CTS
:= ((Port[BA+6] AND 16) DIV 16);
end;
function
DSR : Word;
begin
DSR
:= ((Port[BA+6] AND 32) DIV 32);
end;
function
Messung(Kanal : Integer) : Integer;
Var BitOut, BitIn, DataOut, DataIn, t : Word;
Begin
DataOut
:= Kanal * 16;
{ Adresse auf Bits 4...7 }
DataIn
:= 0;
DTR
(0);
For
BitOut := 1 to 10 DO
{ 10 Bits schieben }
Begin
RTS ((DataOut
AND 128) DIV 128);
{ DIN }
DataIn := DataIn * 2;
DTR
(1);
{ CLK }
DataIn
:= DataIn + CTS;
{ DOUT seriell, sammeln }
DTR
(0);
{ CLK }
DataOut
:= DataOut * 2;
{ Shift }
end;
Messung
:= DataIn;
{
While DSR = 0 DO;}
{ End of Conversion abwarten }
end;
BEGIN
clrscr;
Init;
RTS
(0);
DTR
(0)
TxD
(1); { 5 Volt Referenzspannung EIN }
HW
:= Messung(0);
REPEAT
EDIT1
:= (Messung (0) - 512) / 512 * 5000;
gotoxy(5,4);
write('Kanal
0 : ',Messung (0), '
',EDIT1:5:0,' mV ');
delay
(100);
UNTIL
KeyPressed;
TxD(0);
{ 5 Volt Referenzspannung AUS }
END.
|
Das
folgende Beispiel zeigt ein einfaches
Test-Programm in Delphi 4. Das Projekt Serai6p
liegt auf der Diskette bei. Hier wird die
Rsline32.DLL zur Ansteuerung der
Schnittstellenleitungen verwendet.
function
Messung (Kanal: Integer): Word;
var BitOut, BitIn, DataOut, DataIn: Word;
begin
DataOut
:= Kanal * 16;
// Adresse auf Bits 4...7
DataIn
:= 0;
for
BitOut := 1 to 10 do begin
RTS ((DataOut
And 128)div 128);
//Din
DataIn
:= DataIn * 2;
DTR
(1);
//Clock
DataIn
:= DataIn + CTS;
//Dout
DTR
(0);
DataOut
:= DataOut * 2;
end;
Messung
:= DataIn;
While
DSR() =0 do;
//EOC abwarten
end;
procedure
TForm1.Timer1Timer(Sender: TObject);
begin
Messung
(0);
Edit1.Text
:= floattostr((Messung (1)-512)/512 * 5) ;
Edit2.Text
:= floattostr((Messung (2))/1024 * 10) ;
Edit3.Text
:= floattostr((Messung (3)-512)/512 * 10) ;
Edit4.Text
:= floattostr((Messung (4)-512)/512 * 10) ;
Edit5.Text
:= floattostr((Messung (5))/1024 * 10) ;
Edit6.Text
:= floattostr((Messung (0)-512)/512 * 5) ;
end;
|
|
|
. |