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.
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).
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