Comparateur de signaux

Apres dans l'optimale, ca serait savoir combien il y a de point par seconde, le but est de ne pas dépasser la limite d'exposition laser

Donnes la reglementation on ira plus vite.

http://www.optique-ingenieur.org/fr/cours/OPI_fr_M01_C02/co/Contenu_08.html
C'est du classe 3B pas loin de 500mw.
Quand je vois que 100mw fait fondre un bout de mousse, ça calme ^^

ProgramFiles:
en 1 seconde ils indiquent 20 000 positions chacun

C'est un laser qui sert à dessiner des figures sur les murs.
Avec la persistance rétinienne, l'image est probablement redessinée seulement 20 fois par seconde.
Il doit sans doute y avoir une matrice XY carrée de 1000 pixels (X) x 1000 pixels (Y).

Si dès le début tu nous avais donné ce lien :

cela aurait été moins pénible.

Si ton but est surveiller en permanence que le "Galvo, galva ,machin" n'est pas bloqué mécaniquement le circuit que j'ai proposé rempli parfaitement la mission.
Un Arduino et un traitement entièrement numérique avec les entrées analogiques la remplira tout aussi bien.

Si l'information que le "servo/galva/machin" suit bien la commande est vraie alors
- si la commande est fixe le machin ne pourra qu'être fixe (éventuel branlage de sécurité exclu),
- si la commande bouge le machin bougera.
CQFD

Pour les 20 000 points je pense qu'il y a beaucoup de confusion entre des choses qui n'ont rien à voir entres elles.

Quant à la réglementation tout dépend si le laser est continu ou pulsé. S'il est pulsé il faut connaître son rapport cyclique et sa puissance de crête et faire le calcul.

Edit : Je viens de voir la réponse de Christian qui a l'air d'en connaître plus moi en laser de spectacle (faut dire que moins que moi c'est impossible).
Si c'est les petites oscillations qui dessinent une image autour d'une position moyenne qu'il faut surveiller il faut quelque part récupérer un signal de retour (feedback bof quel mot horrible) qui contienne ce petit signal de commande.
Cela devrait se présenter comme un grand signal continu (0/24V=) auquel est superposé un petit signal alternatif qu'il faudra récupérer au travers un condensateur et traiter.

Cela demande d'avoir le schéma électrique de la carte de commande ou une boule de cristal.

Sinon il reste le capteur extérieur :

  • une diode émettrice infrarouge, avec son optique de colimatage
  • une bande très fine réfléchissante au dos du miroir
  • une diode de réception avec son optique de colimatage
    Si la bande réfléchissante et les faisceaux sont suffisamment fins, en sortie de la diode réceptrice on devrait récupérer des "1" et des "0" signe que le miroir bouge bien.

et...
[ -> ] bon je sors

Sinon je pensais récupérer la fréquence du feedback depuis des composants utilisés en radio, je pourrais savoir s'il bouge assez vite depuis mon arduino, non ?
Apres je pense que c'est du continue pour le laser.
Et les 20000points ca veut dire que, sur un angle donné je peux faire 20000points, et plus une image est complexe plus cela demande de point.

C'est pour un problème de sécurité que tu veut savoir si le miroir suit bien la consigne d'entrée et le faisceau laser ne reste pas fixe ?
Car dans ce cas, si c'est la commande d'entrée qui bug et s'arrête (ex, le câble se débranche), la position des miroirs sera exactement conforme à l'entrée mais le laser sera fixe quand même.
Ca fait du bruit quand ça fonctionne ?

Oui ça fais un petit bruit aigu du style moteur pap sous alimenté.
C'est pas un problème de câble qui se débranche mais plutôt de panne hardware, du genre le galvo fonctionne plus du coup le miroir bouge plus, ou ça peut être très bien la carte qui envoi le signal qui ne fonctionne plus.

Bon, ton machin, il marche comme un écran cathodique : le laser émet des pulses de lumière et le balayage hor / vert transforme le tout en image. Tu dis qu'il y a un retour? il vient d'où et quelle en sont les caractéristiques? à mon avis, tu colle un passe-haut + redressement + filtre passe_bas, ça te donnera un signal continu. si pas de retour, ce signal sera = à 0, et dans ce cas, un simple comparateur 1, ça bouge, 0 ça bouge pas.

Si ton souci est de tester ta communication entre PC et miroirs, alors il faudra te contenter de balancer la sauce et à toi-même d'apprécier une image correcte... si ça ne te fais qu'une ligne, c'est qu'un des miroirs ne répond pas.

On m'a dit qu'avec des atmel et des CAN externe en SPI je pourrais traiter les 20k, la limitation provient d'arduino ?
Sinon je ferrais une vidéo du feedback ce week-end.

edit: Le retour est fait depuis le galvo vers le drivers et est filtré.

On m'a dit qu'avec des atmel et des CAN externe en SPI je pourrais traiter les 20k, la limitation provient d'arduino ?

Je pense que tu surspécifies inutilement. Ton besoin pour la sécurité c'est de savoir si le miroir bouge ou non. A la limite tu te moques de savoir si il suit la commande envoyée. Le nombre de points par seconde ne présente aucun intérêt pour couvrir ce besoin. Par contre il est indispensable de savoir à partir de quelle amplitude du signal mesuré tu considères que le miroir ne bouge plus.
Un système de sécurité se doit d'être simple (et claire) dans ses spécifications et dans sa réalisation matérielle sinon on risque fort de passer à coté du but.

D'autre part, pour un système de sécurité, je pense qu'il est préférable de se reposer sur des fonctions analogiques plutôt que sur du logiciel.

C'est pas une question d'amplitude...car le miroir peut bouger rapidement dans un petit angle (donc amplitude faible du feedback). Après si j'avais moyen de récupérer les valeurs sur l'arduino je pourrais faire mes conditions plus facilement sur celle-ci. (Surtout que mon arduino gère l'exctinction des sources du coup ça serait plus simple).
Dans l'optimal ça serait d'avoir une valeur numérique de l'entré X une pour la sortie X, une pour l'entre Y et une par la sortie Y, ensuite l'envoyer en serial sur une de mes applications et de la les affichers sur un axe gradué :drooling_face:.
Après je préférerais au moins faire mes conditions sur l'arduino...
Et si c'est vraiment impossible, je préférerais la solution la plus simple niveau composant...

edit: Sinon j'ai un exemple de feedback mais ça date,

Il me semble c'était 2v/div -- 10ms/div
J'en referais une ce week-end avec les tensions max, et d'autre paramètre ainsi que le signal d'entré afin que tout le monde sache de quoi je parle.
Sinon ça existe ce que je veux faire:
http://www.lasershop.de/Accessories/Safe-Guard-lite.html
Oui sinon:
http://www.laser-safety.de/
On dirait un cubloc pour l'µc
(Doc de fonctionnement pdf en FR à la fin de la page).

C'est pas une question d'amplitude...car le miroir peut bouger rapidement dans un petit angle (donc amplitude faible du feedback).

C'était le sens de ma question. Amplitude faible mais amplitude quand même, donc partir de quelle amplitude considères-tu qu'il ne bouge plus ou pas assez pour être sûr? Qu'elle est la tension image de ce mouvement minimum? Si tu n'es pas capable de répondre à cette question comment veux-tu fixer tes règles de sécurité.

Dans l'optimal ça serait d'avoir une valeur numérique de l'entré X une pour la sortie X, une pour l'entre Y et une par la sortie Y, ensuite l'envoyer en serial sur une de mes applications et de la les affichers sur un axe gradué

Tu ne m'as pas compris là tu donnes dans le gadget pas dans la sécurité.
Un circuit de sécurité c'est des entrées et des règles qui définissent des bornes à ne pas franchir et 1 sortie bon/pas bon et c'est tout. Et cette sortie coupe le laser directement.
Un circuit de sécurité ne fait que de la sécurité afin de ne pas risquer de se planter en faisant autre chose et ainsi compromettre la sécurité.

C'était le sens de ma question. A partir de quelle amplitude considères-tu qu'il ne bouge plus ou pas assez pour être sûr? Si tu n'es pas capable de répondre à cette question comment veux-tu fixer tes règles de sécurité.

C'est en rapport avec les deux galvanomètres, si je veux faire un faux plafond par exemple, un galvanomètre gardera une position fixe (le Y) et le X balayera de gauche à droite.
Le mieux est de définir un rapport minimum entre les deux galvanomètres.
C'est mon premier projet laser, je n'es pas de connaissance extraordinaire dans le domaine, et hormis laserfreak.net je ne connais pas d'autre endroit documenté sur le sujet.
Sinon j'ai pu relever des informations concernant la sécurité.

on ne doit pas rendre possible un arret des scanner supérieur à 25mSec ( milliseconde ) ( en rapport avec le réflexe oculaire )

couper la modulation ttl ou analogique du laser en cas de grippage ou de lenteur inadapté soit 19mSec (à vérifier )

En gros si je comprend bien il faut vérifier par rapport aux deux galvanomètres qu'aucun point reste plus de 19ms au même endroit, sinon couper les sources à moins de 25ms donc environ 6ms de réaction (j'ai bien fais de choisir un transistor au lieu d'un relai). Pour ce qui est de si le galvanomètre ne bouge plus, il me semble (je vérifie ce week-end) que la position du feedback n'est pas à 0v mais à xV en fonction de sa position.
Prenons pour exemples que les deux scanners sont HS (ou plus alimentés,etc...), j'aurais donc deux feedbacks de la même tensions, niveau programme si tension ne change pas pendant 19ms on coupe les sources.
Après la ou c'est plus délicat c'est d'éviter qu'un point se retrouve au même endroit pendant 19ms si on prend l'exemple de mon fond plafond avec seulement un galvanomètre qui bouge, cela vient dangereux quand le galvanomètre X ne fait pas un grand balayage il bougera vite mais pas assez pour éviter les 19ms d'exposition.
C'est pour cela qu'un programme sur l'arduino serait intéressant pour pouvoir définir les règles.

Cependant juste empêcher les points fixe et vérifier la cohérence entre l'entrée du driver et le feedback suffiront pour ce premier projet.

Après pour le coté software c'était afin de vérifier les pannes sans devoir démonter, mais autant allez au plus simple, tant qu'au final j'ai quand même mon arduino capable de me signaler que les sources ont été coupée à cause d'un problème.

Bon voila j'ai un peu de temps, voici une photo du mon matériel:

C'est dans l'ordre, il y a qu'un seul galvanomètre sur le support car l'autre est HS et a été envoyé au SAV (Il manque donc un driver + un galvo).
Mon drivers de plus prêt:

Le connecteur représenté par un point bleu claire est celui du feedback, la pastille pointé par un point jaune l'est aussi.

Maintenant je vais utiliser mon oscilo pour vous faire une vidéo entre le PC, le signal déssym et le feedback du drivers Y.

Voila la vidéo comme dit, beaucoup de valeur on changé par rapport à ce que j'avais trouvé, du à un mauvais choix de masse lors des premières mesures, le feedback n'est pas symétrique mais passe en négatif, assez étrange,
Du milieu à l'extrémité bas de l'axe Y le feedback variera de 0v à -2v, cependant du milieu à l'extrémité haut de l'axe Y le feedback variera de 0v à 3.5v...logique ? (Au milieu le feedback est bien à 0v)
Pour ce qui est de l'entré, c'est symétrique, cependant je m'attendais à un signal de 0v/5v, et j'en trouve un de -8v à +8v,
Du milieu à l'extrémité bas de l'axe Y l'entré variera de 0v à -8v, cependant du milieu à l'extrémité haut de l'axe Y l'entré variera de 0v à +8v.
Pourtant la doc des galvo' stipule bien que ce sont des entrées 0v/5v.

Je vais me renseigner sur le -8v/+8v, en attendant voici les premiers tests:

J'ai une petite idée...

un galvo reçoit un signal représentant une consigne de position (nV = x°) -8V < n < +8V, tout logique. Ce galvo renvoie un signal indiquant sa position physique (x° = nV) -2V < n < +3.5V, c'est ça?

A partir de là, je ferais un truc assez simple. Tu veux (si j'ai bien compris) analyser les 4 signaux (consignes x et y (X_in, Y_in), retours x et y (X_out, Y_out))?

Si pour chaque signal, tu fais un préampli ramenant le signal entre 0 et 5V : Vs = A.(Vin + B) suivi de 2 détecteurs de crête (simple circuit à base d'AOP, une ou deux diodes, résistances et capas, rien de méchant). Avec 8 détecteurs de crête, tu auras 8 tensions représentant chacune le min et le max de tes 4 signaux (X_in_min, X_in_max, Y_in_min, Y_in_max, X_out_min, X_out_max, Y_out_min, Y_out_max). à partir de ces 8 signaux qui sont des tensions "continues" (qui varient bien sûr, mais lentement comparé aux signaux d'origine), il te suffit de les récupérer et de jouer avec comme tu veux. il faudrait que tes préamplis soient bien calibrés pour qu'ils sortent du 0-5V en pleine échelle de l'entrée, ça t'ouvrira des possibilités en plus.

Par exemple :

  • le couple (X_out_min, Y_out_min) te donne la position de ton image laser dans le plan,
  • le couple (X_out_max - X_out_min, Y_out_max, Y_out_min) te donne les dimensions de l'image laser,
  • if((X_out_max - X_out_min) < X_out_limit_inf) { // l'image est trop petite sur l'axe X, X_out_limit_inf est une limite que tu définis toi-même }
  • if(X_out_max > X_out_limit_bord_max) { // l'image sort de la limite X supérieure }
  • if(abs(X_out_max - X_in_max) > X_in_out_diff_max){ // la sortie est trop différente de l'entrée si tes préamps sont bien calibrés }

etc etc, à partir de ces 8 signaux, tu imagines le nombre de tests possibles... Reste à coller un petit multiplexeur si tu utilises un UNO (il te manquera une entrée analogique...).

J'ose croire que c'est ce que tu attends... (finalement, on est arrivé bien loin de ce que j'avais compris e ton projet au début du topic... :smiley: )

PS : j'en déduis sur ta vidéo que le signal feedback Y tourne à 12 Hz (alors que l'entrée est à 24Hz???). Peux-tu nous montrer les deux signaux entrée et FB en même temps (si ton oscillo propose deux voies...)
Et en X, ça donne quoi? j'imagine que c'est bien plus rapide (le balayage horizontal / vertical)?
Et avec une image? Car dessiner une simple figure géométrique (ligne, carré, cercle, triangle...), ça peut se faire en bougeant les miroirs lentement (suffit de faire le tour 24 fois par seconde), mais une image, ça doit être un mode un peu plus speed (balayage de toute la zone 24 x par seconde)...

Ta solution m'a l'air intéressante, cependant avec cette méthode touts les points fixes dans l'importe quel zone serait détecté ?
Ex :
On fait un tableau de valeur de X_out_min, Y_out_min, X_out_max et Y_out_max si aucune valeur n'a changé pendant 19ms -> problème
Et après pareil on vérifie la cohérence entre l'entrée/sortie comme dans ton exemple ?
Comment gérer le temps depuis l'arduino ? On s'occupe simplement de récupérer les valeurs à chaque boucle et de les traiter ?

Pour ce qui est de la comparaison depuis l'oscilloscope je ne peux pas car j'ai une voie HS, si cela devient nécessaire je pourrais utiliser un oscilloscope au lycée.
Après pour le X dans les exemples donnés il ne bouge pas (l'axe Y est toujours fixe au milieu), sinon je pense que ce serait la même chose.
De plus, le X est HS et est envoyé en SAV.

Je vais faire une autre vidéo avec une image plus complexe.

C'est au niveau du détecteur de crête que l'on choisit / définit le temps. un montage simple va avoir en sortie une tension "continue" dont la valeur est le max de la tension d'entrée. Si par exemple, ton signal d'entrée oscille entre -1 et +2V, le détecteur MAX sortira +2V et le min sortira -1V. si ton galvo se bloque sur la position max (donc renvoie un signal continu de 2V), le détecteur max restera à +2V et la sortie du détecteur min passera de -1V à +2V sous la forme d'une exponentielle en un temps T (temps de réaction du détecteur déterminé par les composants utilisés). Si tu "règles" ton détecteur sur un temps de réponse de 19ms, alors sa sortie mettra 19ms pour passer de -1 à 2V. Du coup, niveau arduino, il te suffit de faire de la détection sans gestion de temps, puisque c'est le détecteur de crête qui "gère" la tempo. Dès que l'arduino voit que X_out_min == X_out_max, c'est que ton miroir X est resté 19ms dans la même position (vérifier quand même ce qu'il peut se produire si le miroir bouge lentement, aux limites de la sécu).

Tout ça, c'est dans la théorie, car l'alim interne de l'arduino n'est pas au top et bouge un peu, donc les conversions analogiques bougent tout autant même si la tension à convertir est parfaitement stable. J'utilise analogReference(EXTERNAL); en imposant une tension (via une zener de 4.7V par exemple) sur la pin Aref, il faut que tes montages analogiques aient cette même tension de référence pour que ça marche bien.

Quand tu parles de lycée, c'est un TPE?

Non projet perso mais j'ai accès au matos.
Après je pensais utiliser des CAN externe à l'arduino afin de pas la surcharger (j'ai d'autre tâche dans le programme).
Sinon pour le détecteur de crête c'est assez proche d'un simple montage d'écrêtage ?

Sinon avec une figure plus complexe ça donne ça (Sur l'axe Y).

(Cependant je trouve bizarre que le feedback est encore à -2v alors que la figure n'est pas au extrémité, je regarderais ça en détail après).

C'est bien ce que je pensais, on atteint des fréquences assez élevées lors des petits ronds.

Je te propose ce schéma :

C'est du pure basique, et le sommateur peut être revu en un truc plus simple (relier l'entrée + à un pont diviseur provenant de la pin Aref de l'arduino pour garder un centrage parfait de la tension), pour s'affranchir de l'ensemble R3,7,8 / RV1.

Tu peux partir de ça, Pour la tempo de 19ms, arrange-toi pour trouver un couple R9 / C2 tel que 5 x R9 x R2 = 0.019.

Si tu es motivé pour te coller des ADC externes, mais les conversions de l'arduino sont rapides.