Bonjour,
j'essaie de transformer les valeurs d'un controleur rotatif qui fait des tours sans fin pour faire tenir ça entre un minimum et un maximum. Mon problème est qu'a chaque tour complet, j'ai une saute brutale du minimum au maximum. J'ai essayé plusieurs choses, mais qui deviennent vite un peu tordues et pas très fiables. Quelqu'un aurait il une solution simple?
Merci!
Olivier
Hors ligne
Salut, effectivement mon controleur marche comme un compteur, il me donne des valeurs de 0 à 2pi.
Ce qui m'ennuie c'est que je voudrais éviter de revenir à 0 quand je dépasse 2pi et de revenir à 2pi quand je passe sous 0. J'ai une solution avec un Rewrap qui sur sa sortie 2 me permet de détecter la transition montante ou descendante et donc de bloquer les données quand j'effectue plus d'un tour complet, mais ça me semble un peu tordu, j'aurais donc voulu savoir s'il existait un objet capable de gérer ça.
Hors ligne
Bonsjours...
Je ne connais pas de telle boite, mais j'ai un bout de patch qui différencie quand le flux numéraire (avec des entiers) est croissant ou décroissant...
En espérant que ça puisse te servir... (attention, de part les valeurs par défaut de [anal] ce bout de patch ne fonctionne qu'entre 0 et 128... mais ça se change en donnant des arguments à [anal])
Dernière modification par Olivier (2010-11-29 19:28:20)
Hors ligne
Dans cette ordre d'idée tu peux calculer la différence entre les deux dernières valeurs, +1 quand ça monte, -1 quand ça descend, et tu somme ces différences. Ensuite il faut juste ajouter une condition pour quand la différence vaut +/- 2 pi pour la remettre à -/+ 1.
Hors ligne
hello
je viens de bricoler un codeur rotatif sinusoidal (un button d'un truc de son)
j'ai mis du temps à comprendre que ce n'était pas un encodeur binaire :
celui ci sort deux créneaux décalés, et c'est en voyant quel est le dernier changé qu'on voit dans quel sens ça tourne.
http://en.wikipedia.org/wiki/Rotary_enc … ry_encoder
http://www.arduino.cc/playground/Main/RotaryEncoders
en fait c'était un encodeur sinusoidal :
les deux canaux sortent le sinus et le cosinus à la place de signaux carrés (il faut les lire en analog et pas en digital).
je ne me rappelle plus la formule simple pour avoir l'angle : atan(sin/cos) ou un truc comme ça non ?
ça ressemble un peu à ce que tu as, mais si ton signal saute, c'est soit que tu rentres en digital, soit que tu as un composant intermédiaire entre le codeur et l'entrée.
Hors ligne