GwINSTEK AFG-2012

De knowledge
Aller à la navigation Aller à la recherche
AFG-2012
L'instrument lui même

Le AFG-2012GW INSTEK n'est plus distribué mis des successeurs existent et devraient se comporter de façon similaires.

Spécifications principales

Fabricant GW INSTEK
Type de générateur Fabricant
Fréquence maximum 12 MHz
Gamme de fréquence des formes d'onde 0,1Hz...1MHz (parcours triangulaire), 0,1Hz...12MHz (forme d'onde rectangulaire), 0,1Hz...12MHz (forme d'onde sinus)
Nombre de canaux 1
Durée d'enregistrement de la mémoire 4kpts/ch (4096)
Résolution verticale 10 bits
Paramètres de sortie impédance: 50Ω
Interface USB
Formes d'ondes arbitraire, bruit, rectangulaire, sinus, triangulaires
Echantillonage 20 millions d'échantillons
Compatibilité logicielle Labview

Je souligne les points qui me semblent être un point fort du produit.

La documentation est disponible : Instructions détaillées.

Les logiciels

AFG Arbitrary Waveform Software

C'est le logiciel fournit avec le produit. Il est un peu rustique mais fait le job pour envoyer des formes d'ondes dites "arbitraires".

Ecran principal

Une copie d'écran est donnée ci contre.

On peut facilement générer un fichier CSV compatible avec Excel ou tout éditeur de texte. Le fichier suit ce modèle

Start:,0
Length:,4095
Sample Rate:,1000
0,
11,
19,
20,
....

Description:

  • Ligne 1 : on dit où l'échantillon doit être téléchargé dans l'instrument. Dans notre cas on envoie un signal complet donc on commence à zéro
  • Ligne 2 : Ici on donne la taille de l'échantillon. 4095 est le maximum mais on peut faire plus court.
  • Ligne 3: Le taux d'échantillonnage. Je ne comprends pas bien son rôle. De toute façon il faudra jouer sur le fréquence sur l'appareil. J'ai essayé plusieurs valeurs sans voir de réelle différence.
  • Lignes 4 et suivantes : La valeur des points un par un (ici de 0 a 4094). On a vu que le DAC a une profondeur de 10 bits et, comme on envoie des valeurs signées ce doit être des entiers x tel que : -511 ≤ x ≤ +511.

Ne pas oublier les virgules et les séparateurs de lignes DOIVENT être [CR] + [LF]

Une fois téléchargé dans le générateur on peut jouer sur plusieurs valeurs dont :

  • L'amplitude ⇒ Pour 5 Vpp par exemple -511 correspondra à -5V et 511 à 5V. (0 = 0V). L'offset de décalage fonctionne aussi: Un décalage de +0.5V ⇒ -4.5 V à 5.5V.
  • Pour la fréquence, la fréquence affichée sera le nombre d'échantillons par secondes. Dans le cas ci dessus on a 10 bits a 9600 baud. L'échantillon devra être "joué" toute les 1,04 ms ce qui corresponds a 960 Hz.
    • Pour diffuser un caractère ASCII en 7E1 en 10 bits (un de start, 7 de data, 1 de parité et un de stop) on donnera la vitesse en bps / 10.

Programmation

La documentation dit que le produit est compatible "labview". Je n'ai pas ce produit mais il est surtout possible de l'utiliser avec des scripts python et un raspberry PI.

Sur un raspberry PI

La connexion

Lorsque on le branche le générateur sur le port USB du raspberry PI, il est reconnu par le noyeau linux:

[ 2224.587012] usb 1-1.1.4: new full-speed USB device number 8 using xhci_hcd
[ 2224.725896] usb 1-1.1.4: New USB device found, idVendor=2184, idProduct=001c, bcdDevice= 0.01
[ 2224.725925] usb 1-1.1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 2224.725937] usb 1-1.1.4: Product: AFG-2012
[ 2224.725948] usb 1-1.1.4: SerialNumber: GEO900381
[ 2224.735388] cdc_acm 1-1.1.4:1.0: ttyACM0: USB ACM device

2184 correspond bien au fabricant du produit branché : "GW Instek"

Il est reconnu comme un device ACM (abstract control model) qui etait utilisé par les modems ITU V.250 (ceux que l'on appelait modem compatibles HAYES : Ceux qui répondaient aux commandes "AT...").

On peut d'ailleurs s'y connecter :

minicom -b 115200 -D /dev/ttyACM0

Pour façiliter la saisie il est pratique d'activer l'echo local avec

<Ctrl> + A + e

Puis on lui pose la première question : "Qui est tu?"

*IDN?

Il réponds:

Welcome to minicom 2.8

OPTIONS: I18n 
Port /dev/ttyACM0, 15:37:31

Press CTRL-A Z for help on special keys

*IDN?
GW INSTEK,AFG-2012,SN:GEO900381,V2.02

Notre générateur de signal est connecté.

Gestion des fonctions de base

La forme d'onde

Il y a 5 formes d'ondes disponibles :

  • Sinusoïde
  • Créneaux (signal carré)
  • Triangle (dents de scie et triangles possibles)
  • Bruit
  • Arbitraire

La sélection se fait par la commande

SOUR1:FUNC <FORME>

Le '1' après SOUR indique que nous voulons agir sur le canal 1 de l'appareil. Comme avons un appareil monocanal... ce sera toujours 1.

SOUR1:FUNC SIN	
SOUR1:FUNC SQU	
SOUR1:FUNC RAMP	
SOUR1:FUNC NOIS	
SOUR1:FUNC USER

De la même façon on peut lire le signal actuellement programmé par

SOUR1:FUNC?

Qui nous répondra logiquement l'une des valeurs suivantes:

SIN
SQU
RAMP
NOIS
ARB
La fréquence

La commande est :

SOUR1:FREQ <F>

F est la fréquence en hertz. 50 kHz correspondra donc à :

SOUR1:FREQ 50000
SOUR1:FREQ 50E3
SOUR1:FREQ 5E4

Les 3 fonctionnent. A noter que

SOUR1:FREQ MAX

Va positionner la fréquence au max de ce que sait faire le générateur pour la forme d'onde donnée. Honnêtement je n'en vois pas l'utilité. Pour lire la fréquence réglée c'est un classique :

SOUR1:FREQ?

Qui pour 50 kHz nous répondra :

+5.00000000E+04

La réponse est en notation scientifique (mantisse entre 0 et 9).

Amplitude

A Faire

Offset

A Faire

Rapport cyclique

A Faire

Activer / désactiver la sortie

Sur l'appareil on appuie sur le bouton "OUTPUT" pour activer ou désactiver la sortie.

La commande SCPI est la suivante

OUTP ON
OUTP OFF

Le résultat de la commande est évident. Pour avoir l'état de la sortie on fait un logique

OUTP?

Qui nous réponds 0 (OFF) ou 1 (ONN)

Attention.png
ATTENTION: Si la commande pour régler l'état de la sortie est "ON" ou "OFF" la même commande pour interroger l'état de la sortie réponds "0" ou "1". C'est pas logique mais c'est comme ça.

Gestion des signaux arbitraires

On peut envoyer, point par point le signal arbitraire avec les touches Point,Value et Enter.

Le point 0 on entre

<Point> 0 <Enter> <Value> 0 <Enter>

<Point> 1 <Enter> <Value> 511 <Enter>

On a entré un signal carré entre 0 et le max d'amplitude.

Pour entrer 4096 points ça va être fastidieux. On utilise alors un logiciel: AFG Arbitrary Waveform ou un programme à nous qui envoie les commandes SCPI adéquates.

Envoi d'un signal arbitraire

Les étapes sont :

  1. On fait un Reset logiciel du générateur : *RST
  2. Passer le générateur un mode USER autrement dit ARBITRAIRE : SOUR:FUNC USER (Attention si il faut utiliser USER pour passer dans ce mode, lorsque on demande dans quel mode il est le générateur réponds ARB.)
  3. Envoyer les données :Pour cela c'est la commande DATA:DAC qu'il faut utiliser DATA:DAC VOLATILE, 0, 511, 206, 0, -206, -511, -206, 0, 206.
  4. On active la sortie OUTP ON (là aussi attention la commande se fait par ON/OFF et la lecture par OUTP? donne 0 ou 1)

La commande devrait envoyer au générateur les 8 valeurs [511,206,0,-206,-511,-206,0,206] à l'adresse 0 (au début) du buffer.

Donnees arbitraires envoyees.pngLes points envoyés sont donnés ci dessus et le signal relevé en sortie sur l’oscilloscope ci dessous.

Sur l'osciloscope

Fréquence d'un signal arbitraire

Dans l'exemple ci dessus j'ai demandé au générateur de créer un signal en 5Vpp (on a 5.4 sur l'osciloscope) mais surtout une fréquence de 50 kHz. Pourquoi le signal sur l'osciloscope est il donné à 6,250 kHz?

Notre signal est constitué de 8 échantillons. La fréquence affichée sur le générateur est la fréquence en échantillons par secondes et non pas du motif entier par secondes. 50/8=6.25 on s'y retrouves donc.