« Multicomp MP75511 » : différence entre les versions

De knowledge
Aller à la navigation Aller à la recherche
(Page créée avec « vignette|La face avant 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 [https://www.farnell.com/datasheets/3668638.pdf sur le site Farnell]. La documentation technique (incluant les commandes SCPI) est aussi disponib... »)
 
 
(5 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
[[Fichier:MP750511-face.png|vignette|La face avant]]
[[Fichier:MP750511-face.png|vignette|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.
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.


Ligne 5 : Ligne 7 :


La documentation technique (incluant les commandes SCPI) est aussi disponible [https://www.farnell.com/datasheets/3200197.pdf sur le site de Farnell].
La documentation technique (incluant les commandes SCPI) est aussi disponible [https://www.farnell.com/datasheets/3200197.pdf 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 :<syntaxhighlight lang="text">
[ 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
</syntaxhighlight>J'ai bien séparé deux parties.
# 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)
# 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 [https://files.owon.com.cn/software/pc/DS_Wave_Waveform_Editor_Setup.zip site de OWON].
[[Fichier:OWON-AFG.png|sans_cadre|747x747px]]
==== 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.
<u>Attention les DAC est sur 14 bits soit une valeur entre 0 et 16383. (0x0000 - 0x3FFF)</u>
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
[[Fichier:Multicomp OWON ADF scale.png|sans_cadre|570x570px]]
'''Les données'''
Constitué de n mots de deux octets toujours dans l'ordre LSB/MSB.
{| class="wikitable"
|
!'''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
! colspan="2" |Vmax
|00
|00
! colspan="2" |Vmin
|00
|00
! colspan="2" |Length
|00
|00
|-
!000010
| colspan="16" rowspan="2" |SAMPLE NAME (filename)  ended by 0x00
|-
!000020
|-
!000030
| colspan="2" |DATA  00
| colspan="2" |DATA  01
| colspan="2" |DATA  02
| colspan="2" |DATA  03
| colspan="2" |DATA  04
| colspan="2" |DATA  05
| colspan="2" |DATA  06
| colspan="2" |DATA  07
|-
!000040
| colspan="2" |DATA  08
| colspan="2" |DATA  09
| colspan="2" |DATA  10
| colspan="2" |DATA  11
| colspan="2" |DATA  12
| colspan="2" |DATA  13
| colspan="2" |DATA  14
| colspan="2" |DATA  15
|-
!000050
| colspan="2" |DATA  16
| colspan="2" |DATA  17
| colspan="2" |DATA  18
| colspan="2" |DATA  19
| colspan="2" |DATA  20
| colspan="2" |DATA  21
| colspan="2" |DATA  22
| colspan="2" |DATA  23
|-
!000060
| colspan="2" |DATA  24
| colspan="2" |DATA  25
| colspan="2" |DATA  26
| colspan="2" |DATA  27
| colspan="2" |DATA  28
| colspan="2" |DATA  29
| colspan="2" |DATA  30
| colspan="2" |DATA  31
|-
!000070
| colspan="2" |DATA  32
| colspan="2" |DATA  33
| colspan="2" |DATA  34
| colspan="2" |DATA  35
| colspan="2" |DATA  36
| colspan="2" |DATA  37
| colspan="2" |DATA  38
| colspan="2" |DATA  39
|-
!000080
| colspan="2" |DATA  40
| colspan="2" |DATA  41
| colspan="2" |DATA  42
| colspan="2" |DATA  43
| colspan="2" |DATA  44
| colspan="2" |DATA  45
| colspan="2" |DATA  46
| colspan="2" |DATA  47
|-
!000090
| colspan="2" |DATA  48
| colspan="2" |DATA  49
| colspan="2" |DATA  50
| colspan="2" |DATA  51
| colspan="2" |DATA  52
| colspan="2" |DATA  53
| colspan="2" |DATA  54
| colspan="2" |DATA  55
|-
!0000A0
| colspan="2" |DATA  56
| colspan="2" |DATA  57
| colspan="2" |DATA  58
| colspan="2" |DATA  59
| colspan="2" |DATA  60
| colspan="2" |DATA  61
| colspan="2" |DATA  62
| colspan="2" |DATA  63
|-
!0000B0
| colspan="2" |DATA  64
| colspan="2" |DATA  65
| colspan="2" |DATA  66
| colspan="2" |DATA  67
| colspan="2" |DATA  68
| colspan="2" |DATA  69
| colspan="2" |DATA  70
| colspan="2" |DATA  71
|-
!0000C0
| colspan="2" |DATA  72
| colspan="2" |DATA  73
| colspan="2" |DATA  74
| colspan="2" |DATA  75
| colspan="2" |DATA  76
| colspan="2" |DATA  77
| colspan="2" |DATA  78
| colspan="2" |DATA  79
|-
!0000D0
| colspan="2" |DATA  80
| colspan="2" |DATA  81
| colspan="2" |DATA  82
| colspan="2" |DATA  83
| colspan="2" |DATA  84
| colspan="2" |DATA  85
| colspan="2" |DATA  86
| colspan="2" |DATA  87
|-
!0000E0
| colspan="2" |DATA  88
| colspan="2" |DATA  89
| colspan="2" |DATA  90
| colspan="2" |DATA  91
| colspan="2" |DATA  92
| colspan="2" |DATA  93
| colspan="2" |DATA  94
| colspan="2" |DATA  95
|-
!0000F0
| colspan="2" |DATA  96
| colspan="2" |DATA  97
| colspan="2" |DATA  98
| colspan="2" |DATA  99
| colspan="2" |DATA  100
| colspan="2" |DATA  101
| colspan="2" |DATA  102
| colspan="2" |DATA  103
|-
!000100
| colspan="2" |DATA  104
| colspan="2" |DATA  105
| colspan="2" |DATA  106
| colspan="2" |DATA  107
| colspan="2" |DATA  108
| colspan="2" |DATA  109
| colspan="2" |DATA  110
| colspan="2" |DATA  111
|-
!000110
| colspan="2" |DATA  112
| colspan="2" |DATA  113
| colspan="2" |DATA  114
| colspan="2" |DATA  115
| colspan="2" |DATA  116
| colspan="2" |DATA  117
| colspan="2" |DATA  118
| colspan="2" |DATA  119
|-
!000120
| colspan="2" |DATA  120
| colspan="2" |DATA  121
| colspan="2" |DATA  122
| colspan="2" |DATA  123
| colspan="2" |DATA  124
| colspan="2" |DATA  125
| colspan="2" |DATA  126
| colspan="2" |DATA  127
|-
!000130
| colspan="2" |DATA  128
| colspan="2" |DATA  129
| colspan="2" |DATA  130
| colspan="2" |DATA  131
| colspan="2" |DATA  132
| colspan="2" |DATA  133
| colspan="2" |DATA  134
| colspan="2" |DATA  135
|-
!000140
| colspan="2" |DATA  136
| colspan="2" |DATA  137
| colspan="2" |DATA  138
| colspan="2" |DATA  139
| colspan="2" |DATA  140
| colspan="2" |DATA  141
| colspan="2" |DATA  142
| colspan="2" |DATA  143
|-
!000150
| colspan="2" |DATA  144
| colspan="2" |DATA  145
| colspan="2" |DATA  146
| colspan="2" |DATA  147
| colspan="2" |DATA  148
| colspan="2" |DATA  149
| colspan="2" |DATA  150
| colspan="2" |DATA  151
|-
!000160
| colspan="2" |DATA  152
| colspan="2" |DATA  153
| colspan="2" |DATA  154
| colspan="2" |DATA  155
| colspan="2" |DATA  156
| colspan="2" |DATA  157
| colspan="2" |DATA  158
| colspan="2" |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".<syntaxhighlight lang="c">
#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);
}
}
</syntaxhighlight>On crée un fichier myfile.bin de 512 points entre -1 et +1V
Avec le logiciel fournit pas OWON on visualise le signal :
[[Fichier:OWON AFG view.png|sans_cadre|709x709px]]

Version actuelle datée du 9 avril 2024 à 09:16

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