Go Down

Topic: Transformation de signal (Read 1 time) previous topic - next topic

hbachetti

Quote
Ça, ce n'est pas une donnée d'entrée. C'est une supposition de dbrion06
Oups ...
Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

ArnaudF

Pour conversion AD 0 1023 la fonction map est faite pour ca
La fonction maps de semble pas fonctionner pour une valeur decimale de val.
avec : map(val,0,5,0,1023);par exemple, si val=2.5 alors seule la partie entière est prise en compte dans la fonction ...

fdufnews

#17
Apr 10, 2019, 05:49 pm Last Edit: Apr 10, 2019, 05:52 pm by fdufnews
En fait, je ne comprends pas pourquoi tu tiens à utiliser un arduino pour faire une fonction qui est en fin de compte 100% analogique.

Le passage d'un domaine +/-10V à un domaine 0 +5V est une fonction qui peut-être réalisées sans arduino.

Il faut bien te dire que cette fonction qu'elle soit faite en 100% analogique ou moitié analogique, moitié numérique aura toujours une certaine imprécision du fait de la tolérance des composants utilisés.

Donc il faudrait que tu définisses précisément ton besoin. Avec des tolérances.

hbachetti

Quote
Concernant les caractéristiques du signal d'entrée je sais juste qu'il est sur la plage -10v_10v (la frequence de mesure du capteur est de 500Hz mais je ne sais pas si c'est lié au courant de sortie) et que la sortie doit être sur la plage 0v_50v avec une plage de 5 à 10mA et une frequence maximale ne pas depasser de 100 kHz
Également préciser ce que représentent ces 5 à 10mA.
Et pourquoi pas donner des liens sur les matériels utilisés, car pour l'instant on voit juste des mots : capteur, instrument, sans plus de précisions.
Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

ArnaudF

En fait, je ne comprends pas pourquoi tu tiens à utiliser un arduino pour faire une fonction qui est en fin de compte 100% analogique.
ça c'est parce que je n'ai pas de connaissance en electronique et je me base sur un travail qui avait été réalisé par un colègue pour faire plus ou moins la même chose mais avec un capteur spécial pour Arduino ce qui fait que l'intégration était plus facile...

ArnaudF

Et pourquoi pas donner des liens sur les matériels utilisés, car pour l'instant on voit juste des mots : capteur, instrument, sans plus de précisions.

Voila pour le capteur à mettre en input : https://www.kistler.com/fr/produit/type-csmota/
Le arduino dont je dispose est le UNO
Pour ce qui est de l'unité qui recupère le signal en sortie je ne peux pas vous fournir de documentations mais il s'agit de systeme de type POS LV.
Je peux vous donner ce passage du manuel :
Quote
• The electrical signals input to POS LV should be 5 V Transistor-Transistor Logic (TTL) logic signals. If 5 V TTL logic signals are used,then no current-limiting resistors are required.
• If signals of a different level (between 0 and +50 Vdc) are used, then current through the optoisolators (pins 1-4 and 2-4) shall be in the range of 5 to 10 mA to prevent damage to the POS LV. (Note that a
current in the range of 5 to 10 mA must be applied to the optoisolators to register a sensor input to the POS LV).

fdufnews

#21
Apr 10, 2019, 06:59 pm Last Edit: Apr 10, 2019, 06:59 pm by fdufnews
Bon, de la doc du capteur on comprend qu'il délivre une tension entre -10 et +10V.
Pour l'appareil auquel tu dois te raccorder, tout ce que l'on comprend c'est qu'il a une interface numérique en niveau TTL.
C'est un peu maigre.

dbrion06

Bon:
vous avez des notes d'application en pdf qui nécessitent un enregistrement pour être consultées (je l'ai donc sautée) ;
selon https://www.kistler.com/?type=669&fid=81732&model=document
ce capteur de vitesse, position... peut transmettre en "analogique", soit des impulsions , soit des tensions (et est commandé) en "analogique"...
Il a aussi une connectivite USB, LAN et CAN...( ce dernier bus est supporté par Arduino)....

dfgh

hello
pour ma fonction map, si tu peux te contenter des centièmes, testes ce code avec le moniteur en 115200
Code: [Select]
void setup() {
 Serial.begin(115200); // put your setup code here, to run once:
float valf=0.00;;
float conversion;


 for(int f = 0;f<500;f++){
valf = valf+0.01;
conversion = (map(valf*100,0,500,0,102300)/100);
Serial.print("val = ");Serial.print(valf,2);Serial.print("  ");
Serial.print("conversion = ");Serial.println(conversion,2);Serial.flush();
}
}
void loop(){}

ArnaudF

Bon, de la doc du capteur on comprend qu'il délivre une tension entre -10 et +10V.
Pour l'appareil auquel tu dois te raccorder, tout ce que l'on comprend c'est qu'il a une interface numérique en niveau TTL.
C'est un peu maigre.
Ce qu'il faut comprendre c'est que je veux raccorder une capteur qui envoi un tension qui varie au cours du temps entre -10v et +10v dans un arduino qui ne prend en entrée que du 0v-5v.
Apparement c'est plus un soucis d'elecronique du coup je vais peut etre me rapprocher d'un forum plus adapté.
Ici la difficulté est qu'il faut passer de -10v_+10v à 0v-5v de manière proportionnelle car le capteur envoie un donnée qui varie sur cette plage.

Un autre approche comme tu l'as soulevé plus haut est de ne pas passer par le arduino. Dans ce cas une solution conciste intégrer ce que fait le code arduino mais avec des composant electroniques. Ici il faudrait alors observer un courant en entrée qui varie dans le temps entre -10v et +10v, et par une condition on fait : Lorsque le courant est négatif en sortie je sort un courant continu 5v (ou + mais au moins suppérieur à +3V) et lorsque le courant d'entrée est positif ou nul, aucun courant ne sort ie: 0v.
Comme rappelé plus haut je n'ai pas de connaissance en électronique et je ne sais pas si c'est directement réalisable...
Je suis passé dans une boutique qui vend des compsants éléctroniques et ils n'avaient pas la solution :/

fdufnews

#25
Apr 11, 2019, 01:27 pm Last Edit: Apr 11, 2019, 01:28 pm by fdufnews
J'ai proposé de ne pas passer par l'arduino car le cahier des charges initial était
Quote
Mon objectif est de prendre en entré de mon arduino un signal qui peut être amené à varier de -10v à 10v (je vais l'appeler SignalIN) et de le transformer via cette opération : SignalOUT=((-SignalIN + 10)*(3/10)) et de le sortir via un output.
De cette manière j'ai un signal qui va être transformé d'une plage de -10v_10v à un signal 0v_6v.
Maintenant on arrive à
Quote
il faut passer de -10v_+10v à 0v-5v de manière proportionnelle
à l'entrée d'un arduino dans lequel il y aura une conversion analogique numérique vers un appareil indéfini.

Des solutions électroniques ont été proposées:
  • une solution "active" par dbrion06 avec amplificateur opérationnel
  • une solution passive, que j'ai proposée, avec uniquement des résistances
La première solution sera sans doute plus facile à calibrer car les éléments ne s'influencent pas l'un l'autre ce qui n'est pas le cas de la solution que j'ai proposée. Mais dans tous les cas il faudra faire une passe de calibration car le gain des voies (atténuation du +/-10V et décadrage) sont tributaires de la tolérance des composants utilisés. Depuis le début tu parles de précision. En fin de compte on croit comprendre qu'il y aura une numérisation dans l'Arduino (tu confirmes??). L'imprécision sera peut-être là. Comme expliqué plus haut le Convertisseur Analogique Numérique du processeur de l'arduino, la référence de tension utilisée par le CAN ne sont pas parfaits. En fait on a un peu l'impression que tu veux faire des mesures "sérieuses" avec d'un coté du matériel assez pointu et au milieu une brique très amateur pour remplir une fonction importante.

fdufnews

Comme rappelé plus haut je n'ai pas de connaissance en électronique et je ne sais pas si c'est directement réalisable...
Dans ce cas là, on ne propose pas une solution "a priori". On expose le problème:
  • j'ai, en entrée, un signal avec telles et telles caractéristiques
  • en sortie, la carte doit fournir une (ou des) information(s) ayant telles caractéristiques

dbrion06

Il y a un aspect qui a été massacré dans cette approche:
le matériel assez pointu dispose d'une sortie analogique, sans doute pour se raccorder à des instruments classiques (voltmètre ou compteur) et d'entrées sorties numériques avec 3 types de bus, dont le bus CAN.
Déjà, je ne sais pas si c'est un compteur (TTL, avec opto couplage) ou une sortie en tension (je crois que c'est un ou exclusif....)
En plus, si on veut s'affranchir de dégradations -ce qui est apparu en cours de fil - , pourquoi ne pas se repiquer sur le bus CAN -l'arduino a des shields pour ça...?

fdufnews

A la lecture de la doc j'ai l'impression que l'interface analogique est l'interface standard et que les autres interfaces sont des options. Mais le demandeur pourra peut-être confirmer.

ArnaudF

Quote
Dans ce cas-là, on ne propose pas une solution "a priori". On expose le problème:
En effet après coup je m'excuse de ne pas avoir été assez clair dès le départ sur le sujet.
De base je voulais travailler avec le Arduino mais suite au déroulement de la discussion sur ce sujet vous m'avez indiqué qu'il serait peut-être intéressant et possible de passer outre l'utilisation de l'Arduino. Et ainsi d'autres solutions ont été ouvertes.

De ce fait le problème c'est décalé et le but est passé de "pouvoir lire le signal sur un Arduino" à "envoyer directement le signal vers mon système LV POS (qui dans la 1ere hypothèse de montage était en sortie de l'Arduino). Dans ce cas les conditions de sortie du signal ne sont plus les même et je comprends qu'il y ai eu confusion entre mes histoire de -10v_+10v , 0v_+5v, 3v_50v etc...

Je vais resituer le projet dans sa globalité pour une meilleur compréhension :
J'ai un capteur odométrique que je souhaite intégrer à un système de navigation à des fins de tests de matériel. Ce capteur me fournit une information de vitesse en pulse (TTL) et une information de direction (marche avant ou marche arrière) d'un véhicule. Ce capteur ne peut pas directement communiquer avec mon système de navigation car une partie du signal ne peut pas être interprété. En l'occurrence l'information de vitesse est directement interprétable mais celle de la direction ne l'est pas et nécessite un traitement.

Le signal que je veux traiter est donc le signal de direction. Ce signal est récupérable depuis le capteur par une sortie analogique qui envoie un signal qui varie de -10v à +10v. Quand la tension est positive cela signifie que le capteur est entrain de transmettre un signal lié à un mouvement en avant et lorsque la tension est négative le capteur est en train de transmettre pour un signal de marche arrière. C'est l'information d'avant et d'arrière que j'ai besoin d'obtenir. Plus la tension du signal est forte plus la vitesse est importante mais cette information ne nous intéresse pas vu qu'on l'obtient par une autre connectique en pulse. Ceci est donc la manière dont le signal est envoyé par le capteur.

Maintenant au niveau de l'interprétation de ma centrale de navigation :
Ma centrale arrive à interpréter un signal comme indiquant qu'il se passe une marche avant si le signal reçu depuis le capteur est LOW (cad 0v) et en marche arrière si le signal est HIGH (cad : 5v). Cependant comme tout équipement électronique, la tension qui caractérise réellement à quel moment on passe d'un signal low à high propre à l'équipement. Ici low correspond à la plage 0v_+3v et le high de +3v à +50v.

Pour résumer le but du projet est de faire correspondre le fait de recevoir une tension positive ou nulle en entrée vers une absence de signal (0v) en sortie et de faire correspondre une tension négative en input à une tension high en sortie qui équivaut à une valeur de voltage comprise entre +3v et +50v.Dans l'idéal à une tension continue de +5v.

Si je vous ai parlé à un moment de devoir convertir une tension de plage-10+10v proportionnellement vers une tension de 0v+5v c'était dans le cas de l'utilisation d'un Arduino. Mais n'en tenez pas compte, il faut oublier cette partie.

Quote
pourquoi ne pas se repiquer sur le bus CAN -l'arduino a des shields pour ça..
Par ce que je n'ai pour le moment aucune idée du type de signal qui transite là-dedans et je ne savais pas ce qu'était un bus CAN avant aujourd'hui mais je vais tenter de me renseigner pour voir ce qu'il en est.

Quote
Déjà, je ne sais pas si c'est un compteur (TTL, avec opto couplage) ou une sortie en tension (je crois que c'est un ou exclusif....)
Le compteur TTL est distribué par le capteur mais il n'indique pas le sens de déplacement. Ce signal est tout de même utilisé par ma centrale mais il me faut aussi utiliser le signal analogique qui est une sortie en tension et qui va me permettre de compléter le manque d'information sur la direction de lecture du capteur. Ici réside tout mon problème.

Go Up