Go Down

Topic: pourquoi ne pas utiliser l'entrée "capture" pour mesurer des durées d'impulsions (Read 230 times) previous topic - next topic

trimarco232

Bonjour,

juste un peu de philosophie, tout le monde pourra donner son avis

sur certains sujets récents, des posts ont porté sur les différentes méthodes pour arriver au résultat attendu, avec le risque effectif de noyer la question initiale, ce que je souhaite éviter

donc j'ouvre un sujet dédié à ma question : l'entrée "capture" est-elle indiquée, voire faite pour mesurer des durées d'impulsions ?

68tjs

Je n'ai pas encore testé, c'est dans ma liste de courses, j'ai juste lu la datasheet et effectivement ta remarque est judicieuse l'entrée capture semble conçue pour mesurer des durées d'impulsion .

Pourquoi (a mon avis ) elle n'est pas "arduinodisée ?
Je pense qu'elle ne correspond pas à l'esprit "Arduino" dans le sens où elle impose l'usage d'un timer spécifique et des pins d'entrée spécifiques qui peuvent varier d'un micro-controleur à l'autre, elle est trop près du matériel.

L'esprit arduino c'est : un utilisateur sans connaissances doit pouvoir créer rapidement une application complexe sans pour autant être obliger de lire des pages et des pages de cours ou de documentation technique.

La conséquence c'est des fonctions lourdes et non optimisées mais utilisables sans difficulté par tout le monde.
En gros c'est double ceintures plus double paires de bretelles.

Un autre exemple : la gestion des entrées analogiques. La fréquence d'échantillonage est positionée à sa valeur la plus basse. Cela paraît idiot mais cela évite d'avoir des mesures fausses avec la fréquence max si la résistance équivalente de la source est trop élevée, ce qu'un certain nombre d'utilisateurs n'est pas capable de discerner.





68tjs

Si tu veux des exemples d'utilisation d'Input capture tu va là :
http://www.gammon.com.au/forum/?id=11504

UniseV

Je dis OUIIIIIIIIII.

J'ai développé une librairie "perso" qui sert à lire un signal PPM de 6 voies... c'est pas "propre" comme code mais ça fonctionne TRES TRES bien et j'utilise le "input capture unit" qui a l'avantage de faire un timestamp "hard" qu'on relève après dans l'interruption... donc c'est forcément plus "fiable" à mes yeux.

La contrainte c'est qu'on DOIT utiliser le PIN 8 sur un UNO.
EN: Libraries are my Gurus, they make me believe anything they want !
FR: Les librairies sont mes gourous, elles me font croire ce qu'elles veulent !

trimarco232

Quote
elle n'est pas "arduinodisée ?
merci 68tjs, je comprends
je dois avouer que j'utilise principalement mes arduinos comme cartes de prototypage rapide, je les programmes en C pour pouvoir migrer vers d'autre AVR comme le tinny841 ou vers du stm32
je connais donc mal l'IDE arduino, ce qui fait que certains de mes posts risquent de ne pas convenir à certains topics ...

Quote
J'ai développé une librairie "perso"
compléter l'IDE arduino ou migrer vers du plus souple, that is the question !
pour ma part, venant de l'assembleur et du c/c++, je ne me vois pas, vu la nature de mes projets actuels, migrer vers l'IDE arduino

Quote
c'est forcément plus "fiable"
c'est évident, mais pour des signaux parasités il vaut parfois mieux utiliser la méthode de l'échantillonage

UniseV

compléter l'IDE arduino ou migrer vers du plus souple, that is the question !
pour ma part, venant de l'assembleur et du c/c++, je ne me vois pas, vu la nature de mes projets actuels, migrer vers l'IDE arduino
Comme je te comprends, même si j'ai le parcours inverse : J'ai appris et débuté sur l'IDE Arduino.
Pour autant, je me repose souvent la question du changement d'IDE...  :smiley-roll-blue:

c'est évident, mais pour des signaux parasités il vaut parfois mieux utiliser la méthode de l'échantillonage
Je ne connais pas cette méthode, tu peux m'en dire plus ?
EN: Libraries are my Gurus, they make me believe anything they want !
FR: Les librairies sont mes gourous, elles me font croire ce qu'elles veulent !

trimarco232


ici le hardware de l'usart de l'arduino doit déterminer si le bit en réception est à 0 ou à 1 : il va regarder (prendre un échantillon) 3 fois vers le milieu de ce bit, et faire un vote majoritaire :
- on a 2 ou trois échantillons à 0 (donc 1 ou 0 échantillons à 1) : le bit est considéré comme étant un 0
- on a 2 ou trois échantillons à 1 (donc 1 ou 0 échantillons à 0) : le bit est considéré comme étant un 1









là le harware de l'entrée capture dispose d'un noise chanceller : c'est un filtre numérique qui permet d'éliminer les néfastes desseins d'un glitch qui pourait se produire en cours de capture : il faut qu'au moins 4 échantillons consécutifs soient de la même valeur pour qu'un changement de niveau (0 vers 1 ou 1 vers 0, selon le bit IECS) soit pris en considération : eh ou, le hardware est synchrone, il échantillonne tout le temps !










enfin l'image de signaux échantillonnés, et leur display par un analyseur logique : il y a une distortion du fait de la période d'échantillonnage. Note que si un filtre comme celui du noise chanceller ci-dessus était utilisé, l'horloge CLK ne serait pas visible.



Il est possible d'échantillonner de manière manuelle, d'y rajouter un filtre logiciel plus ou moins sophistiqué, mais cela augmente la durée minimale du signal à mesurer.

Les périphériques de l'AVR intègrent vitesse et filtrage, il sont donc à utiliser en priorité.





UniseV

Si je comprends, ce dont tu parles c'est surtout quand on a un signal d'entrée numérique non ?

Dans mon cas je mesure des signaux "analogiques", dont la valeur significative est la durée de l'état (haut ou bas).

Dans mon cas pour éviter les parasites, je ne modifie la valeurs calculée que si elle dépasse un pas "significatif" pour éviter les valeurs "vibrantes".

Je crois qu'on peut apparenter ça à un hystérésis non ?

PS: je ne vois pas les 2 premières images de ton post
EN: Libraries are my Gurus, they make me believe anything they want !
FR: Les librairies sont mes gourous, elles me font croire ce qu'elles veulent !

trimarco232

ce que tu fais en analogique c'est effectivement un hystérésis
les circuits numériques (que j'aurais aimé illustrer correctement) sont en fait des filtres passe bas

les deux principes peuvent être utilisés, voire conjugués, aussi bien en analogique qu'en numérique

qui peut me dire comment on charge une image sur ce forum ? apparemment elles ont été effacées quand j'ai supprimé le lien après avoir posté ?

68tjs

Le plus simple : en pièce jointe. Mais elles ne seront plus dans le texte.

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy