Einzelnen Beitrag anzeigen

andries

Registriert seit: 12. Aug 2006
Ort: D79189 Bad Krozingen
4 Beiträge
 
Delphi 5 Standard
 
#1

Analogspannung einlesen über die Serielleschnittstelle

  Alt 12. Aug 2006, 20:32
Hallo,

Ich bin Anfänger in der Programmierung mit Delphi habe die 5er Standardversion und
Arbeite mit Windows xP mit Labtop.

Habe dass Analog-Interface gekauft aber es funktioniert nicht irgend was mache ich verkehrt!

Bitte können Sie mir weiter helfen mit eine fertiges *.pas und *.dfm Programm?
Wo wenigstens einen Analogkanal einliest und in eine Form anzeigt in mV / oder 0..1023 Einheiten.


Das beispiel Programm greift nicht echt auf dass Interface zu es Simuliert nur die 6-Kanäle.


Mit freundlichen Grüßen. Andries




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 k in den Bereichen –5...+5V und 0...10 V sowie 133 kim Bereich –10V...+10V. Ein angeschlossener Sensor sollte einen geringen Innenwiderstand unter 1 k 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


Programmbeispiel in Delphi 4
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;
  Mit Zitat antworten Zitat