Table des matières PDF

CAN Eurosmart : interface pour Python

1. Installation

Ce document présente une interface des convertisseurs analogique/numérique (CAN) SysamSP5 (port USB) et SysamPCI (carte PCI) de Eurosmart pour Python.

L'interface fonctionne sous Windows (XP,7,8 et 10) avec Python 32 bits (2.7 et 3.5).

Elle est distribuée avec le code source sous licence CeCILL.

NOUVEAUTÉ 12/3/2016 : distribution par PyPI (pypi.org/project/pycanum/) pour python (win32) 2.7, 3.4 et 3.5. Le module change de nom et devient pycanum. Pour l'installer ouvrir une console et exécuter les commandes suivantes dans le répertoire Scripts de la distribution :

pip install --upgrade pip
pip install pycanum
             

Pour faire une mise à jour :

pip install --upgrade pycanum           
             

Distribution recommandée pour python 3.5 : Anaconda 3 32 bits. Exécuter pip install pycanum dans le répertoire C:\Anaconda3\Scripts.

ATTENTION : changement de nom du module, qui devient pycanum. Dans les scripts, remplacer import pycan.main as pycan par import pycanum.main as pycan.

Exécutables d'installation pour python win32 :

L'exécutable pour python 3.5 doit en principe reconnaître l'installation de python 3.5 enregistrée dans la base de registres. Si cela ne fonctionne pas, faire une installation via PIP comme expliqué ci-dessus.

Remarque importante : pour l'instant, les binaires sont pour python win32. Même sur MS Windows 64 bits, utiliser python 32 bits.

Code source : pycanum-4.2.6.zip

L'interface fonctionne seulement sur MS Windows, avec les DLL fournies par Eurosmart.

Version 4.2.6 :

Correction d'une erreur sur la configuration des voies en différentiel pour les calibres 1 et 0.2.

Ajout d'une option pour réduire la profondeur de numérisation.

Version 4.2

Prise en compte des données de calibrage de la carte SysamSP5. Cette mise à jour est importante pour obtenir les conversions analogique-numérique et numérique-analogique les plus précises (LSB en 12 bits). En contre-partie, seuls les gains 10, 5,1 et 0.2 sont accessibles pour les entrées analogiques.

Version 4.1 :

  • Fonctions de génération de signaux périodiques sur la sortie audio (2 voies, synthèse directe par table avec accumulateur de phase).

Version 4.0

  • Acquisition en mode permanent, permettant de dépasser les limites de la mémoire de la carte.
  • Acquisition en mode permament en boucle, pour l'analyse et le traitement en temps réel.
  • Filtrage numérique pendant l'acquisition (filtres RIF et RII).
  • Réduction de la fréquence d'échantillonnage lors de la récupération des tensions.
  • Compteur et chronomètre.

Scripts de démonstration (pour SP5, python 2.7 ou 3.4) :

Pages de documentation avec exemples :

Version PDF : pyCAN.pdf (mis à jour le 4/4/2016)

Pour installer la centrale SysamSP5, télécharger le pilote sur Eurosmart. Décompresser le dossier contenant les pilotes. Brancher la centrale puis son cable USB. Attendre la reconnaissance par le système. Premier cas : il est demandé d'installer un pilote; indiquer le chemin du dossier contenant les pilotes. Second cas : il y seulement un message d'erreur qui indique que le pilote n'a pas été trouvé; dans ce cas, aller dans Ordinateur/Gérer/Gestionnaire de périphériques, sélectionner SysamSP5 puis "mettre à jour le pilote"; indiquer alors le chemin du dossier contenant les pilotes et valider.

2. Fonctions de l'interface

2.a. Ouverture d'une liaison avec le CAN

L'interface se trouve dans le module pycan.main. Elle est constituée d'une classe Sysam.

L'ouverture d'une liaison avec un convertisseur se fait en construisant un objet de la classe Sysam.

Attention : un seul objet de la classe Sysam peut être ouvert dans un programme Python. Il faut donc fermer la liaison avant de créer un nouvel objet Sysam.

2.c. Utilisation des entrées analogiques avec échantillonnage

Les fonctions décrites ci-dessous permettent d'effectuer des acquisitions échantillonnées sur les entrées analogiques.

La période d'échantillonnage effectivement utilisée est multiple de la période d'horloge du convertisseur. Le nombre de points est limité par la capacité mémoire du convertisseur.

Remarque : sur SysamPCI, les temps des différentes voies sont décalés.

Un facteur de réduction égal à 2 permet d'obtenir un échantillon sur 2.

Les temps et les tensions de la première voie sélectionnée sont temps[0] et tensions[0].

2.d. Utilisation des sorties analogiques avec échantillonnage

Les fonctions décrites ci-dessous permettent d'émettre un signal échantillonné sur la sortie SA1 (SysamPCI), ou sur les deux sorties SA1 et SA2 (SysamSP5). Pour une utilisation simultanée des entrées, voir le paragraphe suivant.

Remarque : sur SysamSP5, la fonction retourne immédiatement; il faut donc éventuellement prévoir une mise en attente du thread d'exécution avant d'effectuer d'autres opérations.

Sur SysamSP5, il est possible de déclencher une acquisition lorsque les sorties sont en fonctionnement. Par exemple, si les sorties sont en fonctionnement périodique, une acquisition peut être déclenchée à tout moment. Dans ce cas, il faudra toutefois que le nombre de points total utilisé par les entrées et les sorties n'excède par 0x3FFFF, soit 262142. Dans le cas contraire une erreur est déclenchée à l'appel de la fonction Sysam.acquerir.

2.h. Acquisition en mode parallèle (SysamSP5)

Lorsque le temps d'acquisition est long (supérieur à quelques secondes), il peut être utile de l'effectuer sur un fil d'exécution parallèle (thread) afin d'effectuer un traitement des données simultanément. Les fonctions suivantes permettent d'effectuer une acquisition en mode parallèle, sur le CAN SysamSP5 seulement. Pour le CAN SysamPCI, le pilote ne permet pas ce mode d'acquisition.

2.i. Filtrage numérique (SysamSP5)

Les tensions lues sur les entrées analogiques sont filtrées pendant l'acquisition. La relation de récurrence appliquée est la suivante :

Pour définir un filtre à réponse impulsionnelle finie (RIF), on doit définir les coefficients ak. Pour définir un filtre à réponse impulsionnelle infinie (RII), il faut aussi définir les coefficients bk.

Si cette fonction n'est pas appelée, le filtre par défaut est défini par a0=1,b0=1 (filtre identité).

Pour obtenir les valeurs des tensions filtrées, on utilise la fonction suivante :

Les tensions non filtrées sont toujours accessibles avec la fonction Sysam.entrees.

La fonction Sysam.paquet décrite ci-dessus permet de récupérer les signaux filtrés avec les signaux non filtrés.

Une application typique de ces fonctions est le filtre anti-repliement numérique : on numérise avec un suréchantillonnage pour effectuer le filtrage numérique, puis on réduit la fréquence d'échantillonnage au moment de récupérer les tensions.

2.j. Acquisition en mode permanent (Sysam SP5)

Dans l'acquisition échantillonnée en mode permanent, la mémoire interne de la carte Sysam SP5 n'est pas utilisée. Les valeurs des tensions sont transmises au fur et à mesure de l'acquisition (avec un tampon interne à la carte de seulement 256 valeurs).

L'intérêt du mode permanent est de permettre l'acquisition d'un nombre de points supérieur à la capacité mémoire de la carte, par exemple plusieurs millions de points. En revanche, ce mode d'acquisition ne fonctionne pas si la fréquence d'échantillonnage est trop élevée (le maximum est entre 500 kHz et 1 MHz). Il faut faire des tests avec des signaux déterminés pour évaluer la limite exacte.

Le mode permanent permet aussi d'obtenir un flux continu d'échantillons, par exemple pour traiter un signal audio en temps réel.

Lorsque l'argument repetition=1 est adopté, l'acquisition se fait en boucle et les paquets lus ont la taille définie par config_echantillon_permanent. Les paquets sont récupérés avec la fonction paquet en choisissant premier=-1. Les paquets contiennent les instants, les tensions non filtrées, et les tensions filtrées. Les paquets sont en fait stockés dans un tampon circulaire comportant 16 paquets. Lorsqu'aucun paquet n'est disponible, la fonction paquet renvoit un tableau vide. Une application de ce mode d'acquisition est le traitement d'un flux audio.

2.k. Ports logiques (Sysam SP5)

La centrale Sysam SP5 possède deux ports logiques de 8 bits chacun, accessibles par les connecteurs Sub-D.

Le port B fonctionne en TTL (tensions de 0 à 5 V). Il est constitué de deux paquets de 4 bits, chacun pouvant être programmé en entrée ou en sortie. Ce port bénéficie d'une protection contre les surtensions (max 12V). Le boitier BOLOGIC vendu par Eurosmart permet d'y accéder avec des douilles bananes. La fonction suivante permet de configurer le port B.

La fonction suivante permet d'écrire sur un bit configuré en écriture :

La fonction suivante permet de lire sur un bit configuré en lecture :

Remarque importante : les bits configurés en sortie se mettent automatiquement au niveau haut lorsqu'on ferme l'interface. Pour éviter cela, il suffit de configurer les bits en entrée avant de fermer l'interface.

Le port C fonctionne en CMOS (tensions de 0 à 3.3 V) et ne possède pas de protection contre les surtensions. Son utilisation est donc réservée à l'interfaçage avec des circuits CMOS. Chacun des 8 bits est programmable en entrée ou en sortie.

La fonction suivante configure le port C

La fonction suivante permet d'écrire sur un bit configuré en écriture :

La fonction suivante permet de lire sur un bit configuré en lecture :

2.l. Compteur et chronomètre (Sysam SP5)

La centrale Sysam SP5 possède un compteur 48 bits avec une horloge de période 10 nanosecondes. L'entrée CHRONO peut être utilisée pour cela, ou bien une des entrées du port B accessibles par le connecteur PORT LOGIQUE. Ces entrées doivent recevoir un signal TTL (0/5 V).

L'utilisation en compteur consiste à compter le nombre de fronts sur une durée déterminée. Une application est la détermination de la fréquence d'un signal TTL.

La période de base de l'horloge étant de 10 ns, les durées effectives sont multiples de 10 ns.

L'utilisation en chronomètre consiste à compter le nombre de tops d'horloge entre deux fronts du signal TTL.

Attention : l'entrée CHRONO ne fonctionne que sur front montant. Pour déclencher aussi sur front descendant, il faut utiliser une des entrées du port logique B.

2.m. Synthèse de signaux périodiques sur la sortie audio

Ces fonctions complémentaires permettent de générer deux signaux périodiques sur la sortie audio stéréo. La synthèse d'un signal se fait avec une table de 256 échantillons, par la méthode de l'accumulateur de phase. La fréquence d'échantillonnage par défaut est 44 kHz, mais il est possible de l'augmenter jusqu'à environ 300 kHz.

La méthode de synthèse directe par table (DDS) permet d'ajuster la fréquence avec une très grande précision. La précision en fréquence est :

Par exemple, pour une fréquence d'échantillonnage de 44 kHz, la précision est de 10-5 Hz.

L'amplitude de la sortie audio lorsque le volume est au maximum est d'environ 1,6 V.

Les valeurs des tables supérieures à 1.0 ou inférieures à -1.0 sont écrêtées. La synchronisation des deux voies n'est garantie que si les deux fréquences sont identiques.

2.n. Sortie audio d'un signal

Les fonctions suivantes permettent de diriger un ou deux signaux numériques vers la sortie audio.

Les échantillons à envoyer sur une des deux voies de la sortie audio sont stockés dans un tampon circulaire. Les données sont écrites dans le tampon par blocs. La classe RingBuffer contient ce tampon circulaire.

Le tampon doit être détruit à la fin du script, afin de libérer l'espace mémoire associé :

La fonction suivante permet d'écrire un bloc de données dans le tampon :

La fonction suivante déclenche l'écriture d'un flux sur la sortie audio :

Si l'on veut diriger le même flux de données sur les deux voies, il faut attribuer None à ring_buffer_2. Il ne faut pas attribuer le même tampon aux deux voies, car un tampon ne peut subir qu'une seule lecture.

La fonction suivante permet de stopper le flux audio :

Remarque importante : l'écriture des blocs dans le tampon doit se faire à la même fréquence que la sortie audio. Si N est la taille d'un bloc et fe la fréquence d'échantillonnage, il faut faire cette écriture environ toutes les N/fe secondes. Le tampon circulaire a néanmoins la faculté d'absorber des variations dans le rythme d'écriture, d'autant mieux que le nombre blocs est élevé.

Creative Commons LicenseTextes et figures sont mis à disposition sous contrat Creative Commons.