Comparateur de signaux

Bonjour, je souhaiterais avoir des conseils pour comparer 4 signaux assez rapidement, je dispose de 4 signaux dont 2 entrées et 2 sorties et je souhaiterais les comparer afin de vérifier qu'ils sont bien équivalent (Entrée 1 = Sortie 1 & Entrée 2 = Sortie 2), ces signaux permettent d'indiquer une position X (Signal 1) et Y (Signal 2), en 1 seconde ils indiquent 20000 positions chaqu'un, on m'a conseillé d'utiliser un CAN externe afin d'augmenter la rapidité, que pouvez-vous me conseiller ?
Merci

  • Signaux numériques -> 3 portes logiques pour combiner les entrées en amont de la carte Arduino
    (x = a1.a2 + b1.b2 vaut 1 seulement si a1=a2 et b1=b2)

  • Signaux analogiques -> on veut comparer quoi exactement, leur bonne synchronisation, la phase, la tension ?
    Un ampli op permet d'additionner et soustraire des tensions sous forme analogique, il n'est sans doute pas utile de convertir en numérique.

C'est de l'analogique qui varie 0v/24v, en gros j'ai deux moteurs j'envoi un signal qui le fait bouger dans un angle de 45° et au final si j'ai 12v/12v sur chaque axe c'est au milieu, si j'ai 0v/12v le moteur X est a une extrémité d'angle et le Y au mileu,etc...
Mon but est de comparer le signal d'entrer et celui du retour pour voir si le moteur a bien la bonne position.

Salut.

C'est une sorte de servomoteur que tu veux faire c'est ça? si tu commandes tes moteurs en PWM, tu devrais pouvoir y arriver avec soit une simple régulation genre analogWrite(pin_mot, v_milieu + v_cons - analogRead(pin_ret)), mais je pense que tu dois pouvoir trouver des gens qui ont déjà réalisé des servomoteurs "maison" en fouillant un peu

Je veux rien piloter, c'est des galvanometres piloté depuis un circuit externe, je veux juste vérifier que le signal entrant sur ce circuit est le même que celui de retour. (pour vérifier que le galvanomètre est bien fonctionnel).

Je pense qu'avec une adaptation des niveaux il possible de s'en sortir rien qu'avec des ampli opérationnels et comparateurs comme les LM358 et LM393.

voir les exemples d'application et particulièrement page 7 le montage "Limit Comparator".
Vref_low est la tension Va
Vin est Vb.
Vref_high= k.Va --> par exemple pour une égalité à 10% prés k=1,1. Le gain k est obtenu avec l'ampli opérationnel.

Le transistor et la lampe ne sont bien évidement pas utiles mais la résistance R=10k est indispensable, le LM393 est à collecteur ouvert c'est ce qui rend possible le "OU" cablé. Bien entendu il est possible de changer sa valeur en fonction de ce qui y sera raccordé.

Vb < Va(Vref_low) --> S=0
Va (Vref_low) < Vb < Vref_high --> S=1
Vb > Vref_high --> S=0

C'est je pense la configuration qui sera la plus réactive.

J'ai du LM358 de dispo, sinon je viens de vérifier les tensions, l'entré est déjà à 0v/5v la sortie par contre 0v/24v, je pense donc utiliser un LM358 pour atténuer la sortie afin d'obtenir 0/5v, et ensuite utiliser le montage que tu m'as présenté, cependant avec celui-ci j'obtiens seulement une valeur différente lorsque la marge d'erreur est dépassé ? Sur mon arduino je récupère au final qu'un bool du type false = signal trop différent, true = signal OK.
Et n'y a donc aucune manière d'obtenir les valeurs des positions sur l'arduino ? Par exemple pour les afficher sur un axe gradué sur une application externe. Cependant je préfère privilégier la rapidité et la fiabilité, car cette fonction à pour but de sécurité.
Merci

Sur mon arduino je récupère au final qu'un bool

Oui c'est du go/nogo. Entre les limites c'est ok, en dehors, quelque soit le sens, c'est KO

Si tu as besoin de plus de précision, et en particulier si tu désires connaître la vraie valeur de l'écart, et/ou son sens, le montage ne convient pas tel quel.
De plus si c'est pour de la sécurité il y a un risque d'instabilité de la sortie quand la tension B sera très proche des bornes.

Le passage de 0/+24V à 0/+5V ne peut-il pas se faire avec un simple pont diviseur ?

Tant que le schéma reste simple l'avantage est au traitement analogique, si les contraintes imposent de compliquer le schéma il faut se reposer la question d'un traitement numérique. La mise au point d'un schéma analogique un peu compliqué demande d'avoir pas mal de valeurs de résistances en stock.

+1 ! Pont diviseur + portes logiques ...

C'est sûr que si tu veux récupérer la position exacte, ça va se compliquer un peu, car analogRead ne récupère qu'une plage de 1024 valeurs (donc une précision limitée à +/-5% sur les 20 000 valeurs 0-24V). c'est possible de récupérer une valeur sur 16 bits, mais ça demande un peu de câblage et de prise de chignon, avec une suite de lectures analogiques sur 2 entrées différentielles et une échelle variable qui ajustera la plage de conversion en fonction des mesures précédentes...

un simple pont diviseur suffit, pas besoin d'un préampli (sauf si au départ, tu as une grosse impédance)... par contre, il te faudra générer une tension de référence (un potar multitour, ça peut marcher)...

J'ai du stock en résistance et potard, après récupérer les valeurs c'est pas une grande nécessité, je veux juste quelques choses de fiable et rapide et voir simple...Le souci c'est que j'ai peu de connaissance en électronique mais plus en programmation, du coup simplement adapter les tensions est complexe pour moi j'vais me renseigner sur les ponts diviseurs.
Apres si c'est pas trop complexe pour récupérer les valeurs je veux bien test.
Au final j'veux juste savoir si mon galvanometre bouge et fait bien la position demandé...et avec le montage montré rien m'informe que ce sont les mêmes valeurs (signal fixe = galvanomètre fixe).

Adapter les tensions se fait avec 2 résistances bien choisies

Donc en théorie une résistance 20ohms et 76ohms permettrait de partir d'un signal analogique 0v/24v en 0v/5v (J'met juste un potard sur la 76ohms pour régler avec précision) ? Sinon pour ce qui est de la précision c'est pas non plus le plus important, c'est surtout en cas qu'un galvanomètre soit HS (bouge plus, ou fait vraiment autre chose que le signal d'entrer) je dois êtres informés sur l'arduino.

Sinon une question, quel est la différence entre ce montage ou celui avec un AOP pour abaisser les tensions ?

Au final je veux juste savoir si mon galvanometre bouge et fait bien la position demandé...et avec le montage montré rien m'informe que ce sont les mêmes valeurs (signal fixe = galvanomètre fixe).

Avec l'ampli op j'ai crée une zone:
La borne inférieure de la zône est la tension qui correspond à la position que tu veut imposer.
La borne supérieure est une tension qui est le résultat de la tension précédente multipliée par un coefficient.
L'égalité parfaite n'existe qu'en mathématique, en physique tu es toujours égal a une précision prés : 1,1 ou 1,01 ou 1,001 etc..
Dans mon exemple j'ai choisi, tout à fait arbitrairement de comparer entre +0% et+10%. C'est à dire que si la consigne est 8 le circuit dira OK quand le retour indiquera une tension entre 8 et 1,1x8 = 8,8.
On peut décider d'être plus précis: avec 1,01 on comparera entre 8 et 8,08 .
Avec deux ampli op on peut créer une limite inf = 8/1,05 et une limite sup = 8*1.05 si tu préfère être centré de part et d'autre de la position de référence.
Tant que la sortie du circuit indiquera un "1" logique cela voudra dire que le galva suit dans la limite de la précision choisie (1,1 ou 1,01).
Si la sortie passe à "0" logique cela voudra dire que le galva ne suit pas.
Les sorties des deux comparateurs forment un "OU" câblé pour optimiser le nombre de boîtiers. Mais on peut les dissocier ce qui donnera l'information si le galva est dans un sens ou dans l'autre mais il faudra d'une manière ou d'une autre recréer cette fonction logique soit avec un circuit intégré soit en programation.

Mais un point que je n'avais pas vu me perturbe : c'est quoi ce chiffre de 20 000 points en 1 seconde ?
20 000 mesures par seconde cela correspond à du 50 MHz.
En analogique cela ne passera pas à moins d'utiliser des circuits haute-fréquences dont la mise en oeuvre n'aura absolument rien de trivial.
Quant à utiliser un CAN je n'ose imaginer la fréquence d'horloge nécessaire.
Je pense qu'une précision s'impose.

Et puis qu'est ce que tu appelle un galvanomètre ?
Un appareil à aiguille ? Un voltmètre à l'ancienne ?
Un appareil appelé "galvanomètre à cadre mobile" qui est hyper sensible et où le fil du cadre comporte un miroir qui détourne un rayon lumineux ?

C'est du galvanomètre utilisé dans les lasers de spectacle..., apres celui ci peut faire 20000points secondes.

Je conclu à un appareil numérique qui ferait 20 000 mesures par seconde.
20 000 c'est beaucoup c'est du très haut de gamme ! Il affiche combien de chiffres ? C'est sûr que ce n'est pas 2000 ?

De toute façon c'est secondaire pour le sujet qui nous préoccupe.

J'ai comme l'impression que ce qui est appelé "galvanomètre" dans le milieu du spectacle n'a pas grand chose à voir avec l'appareil auquel pense un électronicien de base.
Et du coup je comprend que je ne comprend plus rien.

Documentation technique ?, photo de la bête ?

Est ce que ce ne serait pas quelque chose comme sur la photo ton galva ?

P****n faut deviner.

Parce que pour moi un galva c'est ce qui me servait dans les ponts de Wheastone

galva_laser.jpg

galvanometre1.JPG

Je crois qu'il y a des données égarées... Dans le domaine du spectacle, on n'a pas une telle vitesse. Par contre, il se peut que le laser soit cadencé à 40Khz, soit via le miroir qui bouge, en effet, 20 000 points ou traits par seconde. De mon côté, je suis parti sur le miroir monté sur un servo qui a une résolution de 20 000 pas... c'est pas la même chose... Les seuls miroirs que je vois pouvoir pivoter à 20 000 tr/min sont les miroirs "LCD" utilisés dans des répartiteurs optiques, et encore... le prix et l'utilisation n'est pas forcément accessible au joueurs d'arduino que nous sommes. Un miroir laser du spectacle ne tourne pas à plus de 2000 tr/min.

Pour ton pont diviseur, je t'arrête tout de suite, car je doute que la source 0-24V puisse fournir les 250mA demandés par tes faibles résistances sans voir chuter sa tension (et faire foirer les mesures). Prends plutôt 20K et 76K (conso max : 250µA, c'est plus raisonnable!). Je pense qu'un analogRead() là-dessus te suffiréait (pinaise, je commence à faire ce genre de faute, ça va plus!), tu auras une mesure sur 1024 points.

Est-ce que tu cherches à savoir si ton rayon laser sort d'une zone définie (contrôle de la limite des angles des miroirs)?

Dans tout projet, il faut poser les bases, et nous sommes dans le flou total...

On appel ca aussi scanner, et c'est bien 20000points secondes, de plus certain monte a 60000points seconde voir plus.

Pour les infos ca s'appel pt-20k ya une mini doc sur le matos.
Le but est d'empêcher le rayon laser d'être fixe (galvo fixe) ou de bouger lentement (entrer différent de la sortie, pour un galvo hs).
Apres je demande pas d'obtenir une mesure a chaque point mais juste une mesure syncro...si je met toujours la même figure il faut pas que la mesure soit faite toujours au meme moment, sinon il detecterait un point fixe.

ps:Le miroir ne tourne pas, il vibre.

C'est un galvanomètre, un scanner, un servo , un zombie ou tout à la fois ?

On lui met quoi en commande et en retour il envoie quoi ? Quelle précision est attendue ?
IL bouge comment ? Les 20 mille machins ne seraient simplement pas une oscillation superposée autour d'une position moyenne dont l'utilité est d'éviter qu'un rayon immobile ne brûle le revêtement des murs. Si c'est cela je dirai qu'on s'en fiche complètement.

C'est les oscillations que tu veux surveiller ou la position moyenne ?
La position moyenne c'est faisable, les composants que j'ai indiqués seront incapables de réagir a des vibrations aussi rapides.
Quant à la surveillance des vibrations elles mêmes : bon courage.

Pour le moment je comprend rien.
Bah cela doit être du à l'âge....................
Salut