Comparateur Numérique

De knowledge
Aller à la navigation Aller à la recherche

Analyse hardware

Comparateur numérique sans marque

J'ai acheté un comparateur numérique sur Amazon. Il est donné pour avoir une sortie RS232.

En revanche la connectique est "exotique" (un trou dans le boitier et 4 traces sur le PCB de l'appareil) et aucune explication dans la doc. La majorité des vendeurs disent que le "kit connectique" est disponible séparément mais aucun de mes messages aux distributeurs ni question sur le site Amazon ne m'a donné de réponses.

Il n'y a pas de marque sur ce modèle donc pas de fabricant à contacter. Alors je sors mon oscilloscope, mon multimètre et mes pointes de touches maisons pour comprendre de quoi il en retourne "à la main".

Si on ouvre le cache du connecteur (le petit, le grand c'est celui de la pile) on voit qu'on a accès directement au PCB de la carte et que 4 conducteurs sont présents.

Connecteur comparateur.png

On nommera ces broches de 1 à 4 de gauche à droite. Les couleurs donnent déjà un indication de ce que j'ai déduit de mes mesures.

A priori la broche 4 est la masse et la 1 est la tension d'alim de la pile (1,17V avec une pile... pas toute neuve mais 1.6 avec une pile neuve).

En 2 et en 3 on voit passer des données.

En 2 on voit passer un signal qui ne ressemble pas à un signal UART!

Comparateur broche 3.png

Mon "GND" était pas parfait mais ce ressemble a un message aussi et c'est moins régulier.

Définitivement, avec mes pointes de touches je n'arrive à rien de propre. Je décide d'ouvrir la bête. Je soude trois fils sur les broches 2, 3 et 4 et je rebranche mon oscilloscope.

Il faut être très prudent lors de cette opération. L'écran LCD est relié au circuit imprimé par un connecteur qui est un sandwich de couches conductrices et isolantes en plastique souple. C'est impossible à remettre en place correctement. Au bout de 50 essais j'ai un affichage "a peu près" correct. Faut se mettre bien en face!. Quand j'aurais terminé je penses que j'en achèterais un neuf!

Analyse du signal de sortie

Voie 1 (rouge) sur 3

Voie 2 (jaune) sur 2

Les deux masses à 4

On visualise:

Comparateur-messages-multiples.png

Je n'ai pas mis d'échelle mais mes mesures donnent :

  • Un message toutes les 110 ms
  • Le message lui même dure 8ms

Regardons de près le signal pour une mesure à 0mm:

Comparateur-message-zero mm.png

Intuitivement :

  • La voie 1 (broche 3) semble être un horloge (elle ne change jamais quel que soit la mesure)
  • La voie 2 (broche 2) semble être la mesure dans un format étrange.

Après une après midi de creusage de tête j'ai compris plusieurs choses:

  1. Le signal de la voie 2 est un signal logique dont il faut lire l'état à chaque front montant de l'horloge.
  2. Le message contient 6 groupes de 4 bits. (24 bits)
  3. Le bit 23 indique l'unité (0="mm" et 1="in")
  4. Le bit 20 c'est le signe (0="+" et 1="-")
  5. Seul les 3 premiers quartets (12 premiers bits) semblent significatifs les 2 suivants sont toujours à zéro
  6. Pour le reste la seule chose que je vois c'est que le bit 0 est l'unité car il est à 0 pour les nombres paire et à 1 pour les impairs.

Décodage en mode métrique (unité ="mm")

Signal décodé Mesure affichée Valeur binaire

12 premiers bits

Valeur décimale

bit0 = lsb

0000 0000 0000 0000 0000 0000 0mm 000000000000 0
0100 0000 0000 0000 0000 0000 0,02mm 010000000000 2
0111 0100 1000 0000 0000 0000 3.02mm 011101001000 302
0101 0111 1100 0000 0000 0000 10,02mm 010101111100 1002
1111 0110 1000 0000 0000 0000 3,67mm 111101101000 367
0111 1110 1010 0000 0000 0000 14,06mm 011111101010 1406
1010 0100 0100 0000 0000 1000 -05,59mm 101001000100 549
1110 0101 0010 0000 0000 1000 -11,91mm 111001010010 1191

On voit rapidement que la valeur binaire correspond à la mesure *100. On à le nombre de centièmes de mm.

On est donc précis à 0.01 mm près soit 10µm.

Décodage en mode impérial (US ?)

Le décodage est acquis je me focalise sur les correspondance entre l'entier transmis et la valeur affichée.

Mesure affichée Valeur binaire

12 premiers bits

0 in 0
0.1445 in 289
0.0025 in 5
0.1715 in 343
0.277 in 554
0.0245 in 49
0.267 in 534

C'est moins évidant (c'est toujours bizarre avec les unités impériales).

La représentation "XY" nous donne l'équation : mesure=valeur*0,0005

Comparateur-regression-pouce.png

En gros on divise par 2000. on a le nombre de 1/2000 de pouces de la mesure. Quand je vous disais que les anglais étaient bizarres dans leurs unités.

On est précis à 1/2000 de pouces soit 25,4/2000 soit 0.0127 mm ou 12.7 µm. Il vaut mieux travailler en mm car les unités impériales semblent être des interpolations!

Conclusion

Dans la doc sur Amazon on a :

Comparateur-doc.png

Déjà "Porta A" je ne comprends pas bien ce que ça veut dire mais RS232 c'est archi faux. Les signal est pas du tout compatible UART et pas non plus en niveaux -12/+12V (ni 0/5V).

En revanche "Porta B" c'est bien un emplacement pour une pile LR44 !

Les étapes suivantes...

Maintenant il faut écrire un programme pour un microcontrôleur quelconque (Arduino, ESP32... je ne sais pas encore) pour décoder ce signal et l'envoyer sur un écran et surtout sur l'UART.

Ensuite il faudra usiner un connecteur "maison" pour pas être obligé de démonter un comparateur à chaque fois.

Et... le top du top, écrire une programme pour piloter une CNC 3018 et sortie un fichier "heigth" pour corriger les erreurs de planéité.