Multicomp MP75511

De knowledge
Aller à la navigation Aller à la recherche
La face avant

Introduction

Nous avons à faire à un joli appareil capable de générer tout type de signaux sur deux caneaux, avec beaucoup de formes d'ondes (y compris arbitraire) et de nombreuses modulations.

Le manuel d'utilisation (copie du fascicule vendu avec l'appareil) est disponible sur le site Farnell.

La documentation technique (incluant les commandes SCPI) est aussi disponible sur le site de Farnell.


Pour comprendre comment se fait la connectivité j'ai toujours la même approche.

Sur un Raspberry PI:

  • Je lance une commande dmesg -w dans un terminal
  • Je branche l'appareil
  • Je regarde ce que "raconte" le raspberry.

Ici j'ai :

[ 1616.735400] usb 1-1.3.2: new high-speed USB device number 7 using xhci_hcd
[ 1616.936397] usb 1-1.3.2: New USB device found, idVendor=5345, idProduct=1234, bcdDevice= 1.00
[ 1616.936434] usb 1-1.3.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 1616.936451] usb 1-1.3.2: Product: AGBIOS
[ 1616.936465] usb 1-1.3.2: Manufacturer: AWON
[ 1616.936478] usb 1-1.3.2: SerialNumber: AG0000
[ 1633.056064] usb 1-1.3.2: USB disconnect, device number 7


[ 1633.383598] usb 1-1.3.2: new high-speed USB device number 8 using xhci_hcd
[ 1633.584303] usb 1-1.3.2: New USB device found, idVendor=5345, idProduct=1235, bcdDevice= 1.00
[ 1633.584320] usb 1-1.3.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 1633.584326] usb 1-1.3.2: Product: MP750511
[ 1633.584331] usb 1-1.3.2: Manufacturer: multicomp pro
[ 1633.584336] usb 1-1.3.2: SerialNumber: 2237129

J'ai bien séparé deux parties.

  1. La première détection (ici sur le slot USB #7) d'un device fabriqué par AWON sous la référence AGBIOS. (en vérifiant c'est un OWON XDG 2000 rebrandé Multicomp PRO par Farnell)
  2. Tout de suite déconnecté et reconnecté sous son nom "multicomp pro" et la reférence : MP750511

Au départ c'est le "vrai" fabricant c'est AWON modèle AGBIOS mais c'est vendu pas Farnell sous le nom de Multicomp pro. On utilisera éventuellement son nom d'origine pour trouver plus d'infos.

Utilisation

Utilisation de signal arbitraire

On peut envoyer des "formes d'ondes" sur l'appareil sur chacune des voies. Sur chaque voie on peut utiliser un format pour l'onde de base (la porteuse) mais aussi pour l'onde modulée.

Un logiciel est fournit pour visualiser les formes d'ondes, les éditer et les envoyer au générateur.

Je ne l'ai trouvé que sur le site de OWON.

OWON-AFG.png

Format du fichier binaire

Ces fichiers peuvent êtres utilisés avec le logiciel ci-dessus ou en le mettant sur une clé USB et en la branchant sur le générateur.

Le format du fichier .bin est assez simple.

Attention les DAC est sur 14 bits soit une valeur entre 0 et 16383. (0x0000 - 0x3FFF)

Pour e qui est de la taille des échantillons on dispose de 10 millions de points au total. Si, par exemple, on utilise les deux voies en "arbitraire" on aura 5M disponible par voie. Encore moins sir on module avec un onde arbitraire aussi.

Un entête de 48 octets

Les valeurs sur deux octets (16 bits) sont sous la forme LSB/MSB

  • 00 à 03 : 4 zéros
  • 04 05 : La valeur max (14 bits sur un mot de 16 bits)
  • 06 et 07 : deux zéros
  • 08 09 : La valeur du minimum en 14/16 bits
  • 10 et 11 : deux zéros
  • 12 13 : La taille (en nombre de points) de l'échantillon (de 2 points a 10M)
  • 14 et 14 : deux zéros
  • 16 à 48 : 32 octets donnant le nom de l'échantillon (le nom du fichier lorsque i est écrit). SI le nom est plus court des 0 remplissent le reste.

Les valeurs sont des entiers non signés sur 16 bits.

La tension à 0V est fixée à 10000.

La valeur du "pixel" est de 1mv

Multicomp OWON ADF scale.png

Les données

Constitué de n mots de deux octets toujours dans l'ordre LSB/MSB.

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Adresse 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
000000 00 00 00 00 Vmax 00 00 Vmin 00 00 Length 00 00
000010 SAMPLE NAME (filename) ended by 0x00
000020
000030 DATA 00 DATA 01 DATA 02 DATA 03 DATA 04 DATA 05 DATA 06 DATA 07
000040 DATA 08 DATA 09 DATA 10 DATA 11 DATA 12 DATA 13 DATA 14 DATA 15
000050 DATA 16 DATA 17 DATA 18 DATA 19 DATA 20 DATA 21 DATA 22 DATA 23
000060 DATA 24 DATA 25 DATA 26 DATA 27 DATA 28 DATA 29 DATA 30 DATA 31
000070 DATA 32 DATA 33 DATA 34 DATA 35 DATA 36 DATA 37 DATA 38 DATA 39
000080 DATA 40 DATA 41 DATA 42 DATA 43 DATA 44 DATA 45 DATA 46 DATA 47
000090 DATA 48 DATA 49 DATA 50 DATA 51 DATA 52 DATA 53 DATA 54 DATA 55
0000A0 DATA 56 DATA 57 DATA 58 DATA 59 DATA 60 DATA 61 DATA 62 DATA 63
0000B0 DATA 64 DATA 65 DATA 66 DATA 67 DATA 68 DATA 69 DATA 70 DATA 71
0000C0 DATA 72 DATA 73 DATA 74 DATA 75 DATA 76 DATA 77 DATA 78 DATA 79
0000D0 DATA 80 DATA 81 DATA 82 DATA 83 DATA 84 DATA 85 DATA 86 DATA 87
0000E0 DATA 88 DATA 89 DATA 90 DATA 91 DATA 92 DATA 93 DATA 94 DATA 95
0000F0 DATA 96 DATA 97 DATA 98 DATA 99 DATA 100 DATA 101 DATA 102 DATA 103
000100 DATA 104 DATA 105 DATA 106 DATA 107 DATA 108 DATA 109 DATA 110 DATA 111
000110 DATA 112 DATA 113 DATA 114 DATA 115 DATA 116 DATA 117 DATA 118 DATA 119
000120 DATA 120 DATA 121 DATA 122 DATA 123 DATA 124 DATA 125 DATA 126 DATA 127
000130 DATA 128 DATA 129 DATA 130 DATA 131 DATA 132 DATA 133 DATA 134 DATA 135
000140 DATA 136 DATA 137 DATA 138 DATA 139 DATA 140 DATA 141 DATA 142 DATA 143
000150 DATA 144 DATA 145 DATA 146 DATA 147 DATA 148 DATA 149 DATA 150 DATA 151
000160 DATA 152 DATA 153 DATA 154 DATA 155 DATA 156 DATA 157 DATA 158 DATA 159
...... …. …. …. …. …. …. …. ….

Exemple de programme

On cherche à générer un signal en "rampe". On ajoute une zone centrale où le signal est constant à 0V.

Pour générer du binaire... rien ne vaut le C avec ses "struct".

#include <stdio.h>
#include <string.h>
#include <stdint.h>
#include <stdlib.h>

#define HEADER_LEN   16
#define FILENAME_LEN 32

#define VMIN	 9000  //0x2328 = -1000mV 
#define VMAX     11000 //0x2AF8 = +1000mV
#define SSIZE    512
#define FILENAME "myfile.bin"

struct bin_head {
	uint8_t   void_00[4];
	uint16_t  vmax;
	uint16_t  void_01;
	uint16_t  vmin;
	uint16_t  void_02;
	uint16_t  length;
	uint16_t  void_03;
	char      name[32];
};

int main() {
	struct bin_head h;
	memset(&h,0x00,sizeof(h));
    h.vmax=VMAX;
	h.vmin=VMIN;
	h.length=SSIZE;
	strncpy(h.name,FILENAME,FILENAME_LEN);
	uint16_t middle=(VMAX+VMIN)/2;	
	float step = (VMAX-VMIN)/(float)SSIZE;
    FILE *fh = fopen (FILENAME, "wb");
    if (fh != NULL) {
		fwrite (&h,sizeof(h),1,fh);
		float v=VMIN;
		for (int16_t i=0; i<SSIZE;i++) {
			int16_t out;
			if (abs(middle-v)>200)
				out=(int)v;
			else
				out=middle;
			fwrite(&out,2,1,fh);
			v+=step;
		}
        fclose (fh);
    } else {
		printf ("Error opening %s\n",FILENAME);
	}
}

On crée un fichier myfile.bin de 512 points entre -1 et +1V

Avec le logiciel fournit pas OWON on visualise le signal :

OWON AFG view.png