Instabilité de analogRead() ;

Dans un programme où j'ai besoin d'influer sur deux paramêtres, j'ai branché deux potentiomêtres 10K (5V, GND) sur A0 et A1. Je les mesure toutes les 100ms :

  speed = ((analogRead(A0)) - 512) * 2;  
  pp2 = (analogRead(A1) * 100) ;

Mon problème est que dans ce cas, la valeur lue sur A1 influe sur la valeur lue sur A0. Autrement dit régler le potentiomêtre A1 influe de +- 10 (500 à 520) sur la valeur lue sur A0. J'ai vérifié au voltmêtre, il n'y a aucune variation de tension sur A0. De même, regler A0 influe sur la valeur lue sur A1. Inverser les deux lignes ne change rien.

Mais plus étrange encore, si je remplace les deux lignes par :

  speed = ((analogRead(A0)) - 512) * 2;  // speed from -5.12 to 5.11
  pp2 = 40000 ;

il n'y a plus aucune influence de la valeur du potentiomêtre A1 sur A0. La mesure de A0 redevient stable et exacte, donc le pb ne parait pas hardware.
J'ai essayé des tempo, des répétitions des mesures, des moyennages de plusieurs mesures rien n'y fait !

Est-ce que qqun a le même pb ?

:warning:
Post mis dans la mauvaise section, on parle anglais dans les forums généraux. déplacé vers le forum francophone.

Merci de prendre en compte les recommandations listées dans Les bonnes pratiques du Forum Francophone

Il manque une donnée essentielle : la valeur des potentiomètres, car celle-ci influence directement la mesure.

@coldbear dit:

Bonjour,

Dans ton message, il n'y a ni schéma électrique ni code.
On ne connait même pas la carte micro, ce qui nous permettrait de connaître le microcontrôleur que tu utilises !

Comment peut-on répondre ?
On sort la boule de cristal ?

Un conseil :
Lire :

Et surtout mets bien le code entre balise → icone
Sinon le code est illisible et s'il n'est pas lisible, il n'est pas lu.

C'est vrai, mais c'est encore plus vrai qu'il est plus facile de comprendre un schéma électrique et d'y trouver les renseignements recherchés que de faire une analyse de texte.

@coldbear
Ce qui est important, c'estde connaître comment ces potentiomètres sont branchés.

Cela veut dire quoi "exacte" ?
Un microcontrôleur n'est pas un voltmètre de laboratoire.
Tu devrais regarder la datasheet de ton micro sur ce sujet la mesure se fait "au mieux" à ± 10 pas près.
Encore une question : quel est le pas de mesure du réglage de l'ADC du micro ?

Avec 10K, la mesure ne devrait pas poser de problème.

au pire faire 2 lectures et en jeter une pour vraiment laisser la tension se stabiliser à l'entrée de l'ADC

; 
speed = analogRead(A0), ((analogRead(A0)) - 512) * 2L; 
pp2   = analogRead(A1), (analogRead(A1) * 100L) ;

mais avec 10KΩ ça ne devrait pas poser de problème

La double mesure devrait lever le doute.

hello
je viens de faire le test, c'est parfaitement stable

void setup() {
  Serial.begin(115200);
}

void loop() {

  long speed_a_vide = analogRead(A0);
  long speed = ((analogRead(A0)) - 512) * 2L;
  long pp2_a_vide   = analogRead(A1);
  long pp2 = (analogRead(A1) * 100L) ;
  Serial.print (speed_a_vide); Serial.print('\t'); Serial.print(pp2_a_vide); Serial.print('\t'); Serial.print('\t');
  Serial.print (speed); Serial.print('\t'); Serial.println(pp2);
  delay(500);
}

Il dit qu'il l'a déjà fait.

Ce que j'attends c'est de savoir ce qu'il se passe quand on change la position d'un potentiomètre ?

Du genre si c'est un moteur qui est actionné, le temps qu'il tourne il pompe du courant.

Pour le moment on n'a que l'imagination pour nous aider.

je n'ai pas lu exactement cela ? (s'il a répété en alternant)

Cela n'expliquerait pas pourquoi "quelques temps" après avoir changé le réglage, le défaut se stabilise et disparait.

C'est pour cela qu'avant d'avancer plus de "suppositions" j'attends de connaître exactement ce que l'ensemble du montage fait.

Depuis la fois où j'ai lu des plaintes sur un LM35 alors que le "réalisateur" avait avec le même fil Dupont relié la masse du LM35 et celle d'un relai à l'arduino.
Et il trouvait anormal que quand le relai était alimenté la température bougeait de 10 °C : pourquoi mon code ne fonctionne pas ?

Oui c’est le minimum attendu

Ok, je comprends mieux comment marche ce forum.
On m'y reprendra plus.

merci - l'objectif est d'avoir tous les éléments pour vous aider au mieux et éviter de deviner et perdre du temps en conjecture

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.