Problème, acquisition de zero, entrée analogique

Bonjour à tous, :slight_smile:

Après un long moment de recherche sur le forum, je franchi le pas et m'inscrit dans la communauté arduino !

Premièrement je me présente, je suis étudiant en Licence 3 Thermique Energétique et passionné de travaux pratiques.

C'est justement dans le cadre d'un projet que j'ai été amener à commander une carte arduino Ethernet.
Ceci dans le but d'acquérir 3 températures fonction du temps à partir de 3 thermocouples.
Jusqu’à présent pas de problème particulier si ce n'est la nécessité d'amplifier la tension délivrée par les thermocouples (effectué à partir de 3 ampli conçu spécialement pour "AD595") ce qui permet d'obtenir 10mV/°C en signal de sortie.
J'ai donc modifié/réalisé plusieurs programmes permettant d'acquérir ces valeurs sur une carte SD.

Cependant j'ai un problème non négligeable lors de cette acquisition ( que ce soit via le port série sur le moniteur d'évènement, par carte sd, voir même sur le réseau via une page HTML) sur 10 valeurs converties A/N la moitié sont des zéros (complétements aléatoires au niveau de l'emplacement des bonnes valeurs) !
Les valeurs différentes de 0 sont généralement représentative de la température (essais à différentes températures).

Je pense avoir tout essayé en particulier commencer par une seule sortie (A0), changer de sortie, mettre les sorties restantes à la masse etc...
Pour finir j'ai vérifier mes amplis op avec un multimètre (pas tout jeune), certes c'est pas le meilleur outil pour mesurer des mV mais il se trouve que globalement les résultats sont cohérents.

Petite précision au niveau du programme, sauf erreur de ma part la conversion A/N prend environ 100µs, j'ai fait varier la fréquence de ma boucle et donc des mesures entre (10ms et 2s) pour être certain de ne pas aller plus vite que le module mais cela ne change rien sur la création des 0.

J'en appelle donc à votre aide si vous le pouvez !

Merci d'avance
Cordialement

Pierre_RS:
Jusqu’à présent pas de problème particulier si ce n'est la nécessité d'amplifier la tension délivrée par les thermocouples (effectué à partir de 3 ampli conçu spécialement pour "AD595") ce qui permet d'obtenir 10mV/°C en signal de sortie.
...
Petite précision au niveau du programme, sauf erreur de ma part la conversion A/N prend environ 100µs, j'ai fait varier la fréquence de ma boucle et donc des mesures entre (10ms et 2s) pour être certain de ne pas aller plus vite que le module mais cela ne change rien sur la création des 0.

J'en appelle donc à votre aide si vous le pouvez !

Bonsoir
Peut être voir plutôt du coté de la référence de tension utilisé par l'arduino pour la conversion A/D ? 8)

Apres relecture , il semblerait que ce ne soit pas là le problème
code ?

Bonsoir et bienvenue
tu as essayé de placer une résistance de pull-down entre ton entré analogique et GND?

Bonsoir,
merci pour votre réponse très rapide !

Pour la référence de tension, les amplis utilisent une tension entre 5 et 15 V j'utilise donc la tension de 5V de l'arduino (DEFAULT) comme référence car l'amplificateur fournit un gain proportionnelle à sa tension d'entrée.
Comme la température peut s'élever de manière importante la tension de sortie peut facilement dépasser 3-4V je pense ne pas avoir d'autre solution au niveau de la référence à part peut-être EXTERNAL.
Il est vrai que j'ai entendu dire que la tension d'alimentation fournit par l'arduino ne serait pas des plus fiables .. alors je ne sais pas trop si ça pourrais jouer la dessus !

Merci, pour la résistance de pull-down non je n'est pas encore essayé car je n'en ai pas sous la main, mais si ca peut résoudre le problème je vais essayé de faire ça !
Merci encore

C'est à dire un problème de code au niveau de la définition de la tension de référence ?
Si on utilise la tension Interne normalement il n'est pas nécessaire d'appeler la fonction analogReference non ?

Je ne sais pas encore comment insérer un partie de code donc j'ai mis le fichier en Attach, j'espère que cela va fonctionner !

Merci

AcquisitionSD_3sensors.ino (5.25 KB)

Pierre_RS:
C'est à dire un problème de code au niveau de la définition de la tension de référence ?
Si on utilise la tension Interne normalement il n'est pas nécessaire d'appeler la fonction analogReference non ?

Je ne sais pas encore comment insérer un partie de code donc j'ai mis le fichier en Attach, j'espère que cela va fonctionner !

Merci

bonjour
pas sur que ton probleme de zero vienne de là,
mais le problème de la référence (analogref mode par defaut ) pour analogread est qu'elle utilise V alim et que cette tension n'est pas stable dans le temps, varie aussi selon la conso instantanée et varie aussi selon comment est alimenté l'arduino.

pour simple exemple elle ne sera pas la même pour un même arduino alimenté par l'USB ou par son alim externe, les qq 10eme de volts decoulant de l'utilisation des differentes alims et des compos traversés generera une Vref differente.

ça passe inaperçu dans la majorité des cas simlples, mais des lors que l'on veut de la precision dans l'acquisition A/D il faut utiliser une Vref externe (ou la ref internal si l'echelle est suffisante, ce qui est rarement le cas)