Interruptions sur valeur seuil analogique

Bonjour à tous!

Pour un projet de robotique, j'ai besoin d'utiliser 4 capteurs de lignes banches avec une Arduino mini. Je voudrais pouvoir détecter mes lignes sur interruptions. Le problème: mes capteur étant de simples photoresistance+led, j'ai une valeur analogique en sortie dont la plage n'est pas assez grande pour être détectée sur un port digital.

Je cherche donc à pouvoir lancer une interruption lorsque ma valeur analogique est supérieur à une valeur seuil que je détermine. J'ai cherché, et la seul solution que je trouve est de ce genre: http://forum.arduino.cc/index.php?topic=17450.0 A savoir, envoyer ma valeur de seuil physiquement sur une broche et la comparer à mes valeur de capteurs. Mais je n'ai pas réussis à trouver s'il était possible de coder ma valeur de seuil directement pour na pas avoir à utiliser une broche en plus. Est-ce que c'est réalisable?

Deuxième problème (même si du coup, comme je veux me servir d'une interruption sur port analogique, j'ai eu une partie de ma réponse). Je souhaiterais donc que mes 4 capteurs soient sur interruptions. D'après ce que j'ai compris, on peut mettre tout un vecteur d'I/O sur interruption comme ceci: http://playground.arduino.cc/Main/PinChangeInterrupt Mais il est dit que toutes les I/O du même vecteur partagerons la même routine, je ne suis pas sur de comprendre ce que ça signifie. Si c'est simplement que toutes les interruptions vont envoyer vers la même fonction d'interruption, ça ne devrait pas poser trop de soucis du moment que je peux lire dans cette fonction, quelle entrée à causée l'interruption. En revanche si ça signifie que si 2 capteurs de ligne lancent l'interruption en même temps, ça va poser problème, là c'est nul...

Merci de votre aide

Bonjour,

Non le comparateur des AVR c'est un comparateur qui compare deux tensions.

Si tu tiens absolument à faire ta détection en interruption, pourquoi ne pas les faire sur interruption timer. Toutes les 10 ou 20 ms tu vas lire tes entrées analogiques et tu les compare au seuil.

Le comparateur intégré à l'avr ne convient pas à ton application mais un simple comparateur comme un LM393 convient parfaitement. Pour 4 capteurs il faut 2 boîtiers au total. Tu auras la possibilité de régler séparément le seuil de déclenchement et l'hystérésis. Comme c'est électronique c'est beaucoup plus rapide que le logiciel.

Comme d'habitude : Recherche de datasheet : http://www.datasheetcatalog.com/ Choisir une datasheet "National Semiconducteur" et regarder les exemples et les calculs associés.

Mais il est dit que toutes les I/O du même vecteur partagerons la même routine, je ne suis pas sur de comprendre ce que ça signifie.

Jette un œil ici : Tuto sur interruption sur un port Pourquoi aller chercher loin ce qui se trouve tout à coté.

Si tu tiens absolument à faire ta détection en interruption, pourquoi ne pas les faire sur interruption timer.

Pas faux, si j’arrive a rien j’essaierais ça!

Le comparateur intégré à l’avr ne convient pas à ton application mais un simple comparateur comme un LM393 convient parfaitement.

Pourquoi le comparateur intégré n’est pas adapté? Je veux dire si jamais j’injecte ma valeur seuil sur une broche comme fait dans l’autre post, ça devrait marcher, non?

J’ai pensé à passer par un AOP en comparateur, mais je suis très limité en place…

Pourquoi le comparateur intégré n'est pas adapté?

Bonsoir, parce qu'il est unique et que tu veux le faire fonctionner en interruption

tu peux te servir du comparateur en allant observer tes 4 entrées l'une après l'autre, en te servant d'un timing et du multiplexeur analogique : après chaque sélection d'entrée, tu peux voir où en est la sortie du comparateur vis-à-vis de la tension de référence -> donc fonctionner en interruption comme tu le souhaite n'a plus aucun sens

si tu veux fonctionner en interruption, il n'y a que la solution des entrées digitales. Je te rassure, dans la routine d’interruption il suffit de regarder la valeur des pins, et agir en conséquence. Laquelle a provoqué l'interruption, on s'en fiche.

note également que le comparateur évoqué par 68tjs existe en version quadruple (célèbre lm339) en dil, sop voire tssop

par ailleurs ce que tu rêves de faire est sans doute possible avec un arduino zero

Lm339 Tout à fait, mais, selon mon expérience qui est forcément très personnelle, j'ai souvent remarqué que le câblage était plus aisé avec 2 boîtiers dont on peut optimiser la localisation qu'avec un seul gros boîtier.

Bonjour,

Bon ben finalement j'avais des AOP format cms qui trainaient, du coup j'ai fait cette solution et ça marche plutôt bien!

Merci de vote aide!

Tant mieux si cela fonctionne.

Différence entre un AOP et un comparateur :
Cela parraît être la même chose, mais si les noms sont différents c’est qu’il doit y avoir une raison :smiley:

Tout est une question d’optimisation :
Un Ampli Op est optimisé pour être linéaire, c’est à dire que dans sa zone de fonctionnement si on multiplie le signal d’entrée par un coefficient k , la sortie sera multipliée par exactement le même coefficient.
Il est aussi optimisé pour prendre n’importe quelle valeur intermédiaire pourvu qu’elle soit dans sa zone de fonctionnement.

Un comparateur n’a pas à être linéaire, il ne connaît que deux états Haut / Bas (Vcc / Vee).
Par contre il est optimisé pour commuter très vite entre ces deux états.
Les meilleurs comparateurs sont à collecteur ouvert.

Paramètre de l’ampli op : linéarité, bande passante
du comparateur : Vitesse de commutation en V/s