[résolu] fixer la valeur d'analog in quand rien brancher?

Bonjour,

je bricole une idée avec un lightblue Bean de Punchthrough et utilise les entrées analogiques pour mesurer des voltages avec des ponts diviseurs.
je suis très content, j'ai compris comment ça marche.
ce sont des resistances que je branche et débranche... et je compare les valeurs.
J'aurais voulu utiliser les attachInterrupt() sur les entrées analogiques
PinChangeInterrupt
mais le "pb" est que quand je débranche le pont de resistance, j'ai des valeurs aléatoires qui apparaissent sur l'entrée... pas zéro (c'est une des façon de générer un nombre aléatoire (en utilisant l'entrée comme graine) avec une arduino si je me souviens bien)
est-ce que je peux fixer ce problème?
en mettant en route pullup ou avec un montage quelconque sachant que je mesure la valeur en entrée? (je sais pas si je suis bien clair) dites moi.

merci

é.

Bonjour,

Du fait de sa haute impédance, une entrée non reliée est dans un état indéterminé. Pour fixer son état il faut mettre soit une résistance de pulldown, soit une résistance de pullup (qui peut être interne).

Les entrées A0 A5 ne sont pas exclusivement des entrées analogiques, se sont des entrées digitales (comme les autres) qui peuvent être utilisées en analogique.

Bonjour Kmill,

donc si je comprends bien je peux mettre l'entrée en pullUp (en la passant en high)

digitalWrite(A0, HIGH);

et ça ne va pas fosser les valeurs en entrée?

merci

é.

Tu peux effectivement placer une résistance pour "stabiliser" mais attention à valeur :

  • trop élevée elle ne servira à rien
  • trop faible elle peut modifier le schéma équivalent de ce tu raccordera dessus.

Tout dépend de la réalisation, il n'y en a pas deux pareilles.

Ensuite pour utiliser les interuptions il faudrait mieux connaitre l'application.
Les interuptions c'est clairement pour des signaux numériques, il y a eu il y a quelque temps une discussion pour savoir si les interuptions fonctionnaient sur une I/O en mode analogique, il semble que oui mais tu sera en terrain mouvant.
Un signal vu comme numérique est en gros considéré comme un 1 s'il est supérieur à Vcc/2 et comme un zéro dans le cas contraire (j'ai négligé l'hystérésis qu'il faudrait prendre en compte). C'est différent d'une mesure anlogique.

Autre point attachInterrupt() ne s'applique qu'aux interruption int0 et int1 soit sur les pins D2 et D3 en dénomination arduino ou PD2 et PD3 en dénomination Atmel.
Pour les autres I/O seules les interruptions de type PCINT sont disponibles et elles ne s'appliquent qu'à des PORTs entiers.
C'est à toi ensuite de déterminer quelle pin du PORT à changé d'état.
Je pense que tu devrais mieux expliquer ce que tu veux faire.

Si ça va fausser les valeurs si tu t'en sers comme entrée analogique.
Qu'est ce que tu veux faire exactement?

je viens de mettre un poste sur des connecteurs magnétiques.
je veux identifier des "pièces" en les connectant à un µc.
j'ai testé avec des resistances avec des ponts diviseurs mais c'est peut etre pas la bonne approche.
http://forum.arduino.cc/index.php?topic=440536.0

é.

Au lieu de mettre un pont diviseur dans les pièces, tu peux mettre une résistance fixe coté micro (au plus par exemple) et une résistance dans chaque pièce qui est différente pour chaque pièce.

donc diviser le pont diviseur.

mettre la resistance entre le plus et l'entrée analogique et sur la piece, l'autre resistance entre le - et l'entree analogique?

yep...
je vais dessouder.

j'ai mis une 10K mais je trouve que j'ai pas bcp de variations entre les mes différentes valeurs
est ce que je peux augmenter à 100k ou 20 ou 30k...
j'ai du inverser r1 et r2 pour augmenter le nbr de variantes... du coups en fixant R1 sur le µc je peux plus l'inverser.. (clair?)

é.

é.

Oui tu peux augmenter. Tu peux augmenter sans problème. Je pense que tu peux aller jusqu'à 100K pour la résistance totale du pont.
C'est sur qu'en laissant une résistance fixe tu as moins de variantes en fonction des résistances dont tu disposes. Tu as aussi d'autres méthodes comme les tags rfid.
Il ne faut pas compter générer une interruption quelle que soit la résistance que tu vas connecter. Tu peux soit faire par polling soit générer une interruption par une autre entrée si ta as 3 pins sur ton connecteur.

rfid trop complexe... en plus l'anticollision coute chere
je veux pouvoir identifier les pieces à plusieurs endroits... sur l'objets

genre calculatrice analogique
4 + 3 = ?
une brique 4 + une brique 3 = le µc affiche le resultat de la brique operation ou verifie le resultat donné par la troiseme brique....
(c'est une exemple)

j'ai pas compris le truc du "polling"
mes 3 pins (+, -, datas (Analog in))

é.

polling, ça veut dire scrutation en français. Tu lis périodiquement l'entrée. Quand rien n'est connecté elle est à 5V (ou 0V si tu mets un pulldown), dès que ça varie c'est qu'un objet a été connecté et tu analyse la valeur lue.

je faisais déjà ça, mais j'imaginais que l'interrupt serait moins consommateur de jus.
c'est monté sur un module bluetooth et alimenté avec une pile bouton et checker la valeur tous les x secondes ça consomme plus qu'attendre un changement d'état.
je pourrais toujours utiliser l'accelero comme reveil du module. (lightblue bean).
quand on manipule l'objet, l'accélero reveille le µc qui fait la scrutation pdt qlq secondes et notifie via le bluetooth...

merci en tous cas de la clarification des interrupt sur la entrees analogiques.

é.