Logiciels > Code Delphi > Acquisition de données avec le TLV1543

Dernière mise à jour : 15/02/2007

Présentation

Acquisition de données analogiques multivoies avec le TLV1543 de Texas Instrument, via un port série RS232. J'ai réalisé deux protos pour faire de l'acquisition de données avec ce circuit intégré. Le premier était utilisé en association avec un détecteur de crêtes audio, le second était plutôt d'usage général.

Prototype 1

Prototype pour acquisition de crêtes audio. Prévu à l'origine pour travailler sur quatre voies d'acquisition, une seule a finalement vu le jour. Les données échantillonnées par le TLV1543 sont acheminées au PC grace à une liaison série RS232. L'interface entre TLV1543 (TTL) et le connecteur RS232 est assurée par un MAX206, un MAX232 ne possédant pas assez de convertisseurs de format pour cette application. La détection des crêtes est assurée par un AOP monté en redresseur rapide, suivi par une mémorisation et montage suiveur classique.

acq_donnees_tlv1543_001a acq_donnees_tlv1543_001b
acq_donnees_tlv1543_001c acq_donnees_tlv1543_001d

Prototype 2

Prototype pour acquisition multivoies avec une carte mère et quelques cartes filles. Cela fonctionne mais je ne m'en suis finalement jamais servi, les cartes filles n'ont jamais été réalisées. Là aussi j'ai utilisé un MAX206 pour l'interfaçage au format RS232. Et comme pour la première interface, j'ai utilisé des monostable pour rallonger l'inpulsion de fin de conversion (EOC) délivrée par le TLV1543, cette impulsion arrivant à se faufiler entre les mailles du filet et n'étant pas toujours perçue par le logiciel de lecture des données (parce que ce dernier est mal conçu j'en suis sûr).

acq_donnees_tlv1543_002a
acq_donnees_tlv1543_002b acq_donnees_tlv1543_002c

Code principal de lecture

Code utilisé dans toutes les applis où je devais lire la valeur des entrées du TLV1543. Dans l'exemple ci-dessous, utilisation du composant tApdComPort de TurboPower pour l'accès au port. Mais l'usage de ce composant (gratuit) n'est pas obligatoire.

procedure TForm1.ReadTLC1543Values;
var
i, j, temp: integer;
addr: string[4];
val: integer;
EOC: boolean;
timeOut: integer;
t: longInt;
begin
timeOut := 20;
for i := 0 to 13 do
begin
// adresse de l'entrée à lire
addr := byteToBits(i, 4);
// récupération des valeurs échantillonnées par le TLC1543
temp := 1024;
val := 0;
for j := 1 to 10 do
begin
temp := temp div 2;
if j < 5 then
WriteAddr(copy(Addr, j, 1) = '1') // via RTS
else
WriteAddr(false); // via RTS
WriteCLK(true); // front montant de l'horloge // via DTR
if ReadDataBit then
val := val + temp; // via CTS
WriteCLK(false); // front descendant de l'horloge // via DTR
end;
// wait for End Of Conversion
t := GetTickCount;
repeat
EOC := ReadEOC; // via DSR
until EOC or (GetTickCount > (t + timeOut));
// stockage dans le tableau des valeurs
case i of
0 : TLC1543Values[13] := val;
1..13 : TLC1543Values[i - 1] := val;
end;
end;
end;

-

Codes sources

Code à prendre tel quel ! Je n'ai pas le temps actuellement de mettre ça au propre, merci de votre compréhension.
Routines Communication diverses - Code source pour accès aux ports série, port joystick, port parallèle, protocoles GPIB et JBUS.
Exemple 1 de lecture du TLV1543 - Logiciel de test qui m'a servi pour mes premiers essais
Exemple 2 de lecture du TLV1543 - Dans logiciel ADDatAcq, sous forme d'un plugin appelé TLC1543.hwl.
Exemple 3 de lecture du TLV1543 - Logiciel BF_MPX
Exemple 4 de lecture du TLV1543 - Logiciel DataAcq2