Lecture tension sur ESP32 incorrecte

J'ai fait une manip avec de l'esp32 wroom et 32s test avec potentiometre 100K et test pont diviseur 100K/10K.
je ne reproduis pas ta situation

merci pour le test. fou çà :frowning:
tu peux tester avec le code que j'ai mis plus haut ? comment as tu cablé le tout ?? suis frustré là.

derniers tests avec :
GND--->R100K-->POINT TEST--->R10K--->5V

multimetre : 0.47V
prog POT RAW : 420 points
ton prog : 3.72V

GND--->R100K-->POINT TEST--->R10K--->3.3V
multimètre : 0.298V
prog POT RAW : 220 points
ton prog : 1.982V

ok même résultat alors !!
prog POT RAW : 220 points
ton prog : 1.982V

moi j'ai 295 et 1.85v .... au lieu de 3.3v qui devrait afficher !

Avec le pot çà fonctionne aussi chez moi. mais pas avec le pont diviseur

As tu décâbler entièrement le pont diviseur et recâbler à partir de zéro ensuite.
Je persiste a dire qu'il y a des conneries qui sont très difficiles à voir et que la méthode à la hussarde donne parfois des bons résultats.

Cela ne te prendra pas de temps, cela lèvera un doute et on ne reviendra plus sur le sujet..

oui oui, déjà refait plusieurs fois.
Mais tu as le même problème que moi, avec le pont diviseur, tu mesure 1.982v au lieu de 3.3v !!
et si tu utilises une batteries de 5v, tu auras +/- 2,9v mesuré !

Bon, pour info, j'ai reçu hier mes ADS1115, et avec eux, aucun problème.
La lecture se fait dirrectement bien.
j'ai 3.24v pour 3.28v lu avec multimètre
4.98v pour 5V
8.10v pour 8,18v
25v pour 25,2v

J'aimerais tout de même savoir si qqun peut mesurer correctement des tension avec un pont diviseur .... à suivre.
Merci à tous

Quelle est la différence entre un potentiomètre et un pont diviseur ?
Désolé mais il n'y en a aucune.
Un potentiomètre c'est un pont diviseur dont on peut faire varier le rapport entre les résistances à l'aide d'un tournevis.

La seule différence est dans TA mise en œuvre.
AMHA tu n'as pas tout dit, il y a un loup quelque part.

1 Like

Me suis mal exprimé, je voulais bien dire que j'ai fait un test avec le pot et bien vu que la valeur sur ADC allait bien de 0 à 4096.
et dans ma mise en oeuvre, rien changé , juste ajouté et cablé le ADC1113 , changé le code pour ADC1113 et tout est bon.
....
adc0 = ads.readADC_SingleEnded(0);
volts0 = ads.computeVolts(adc0);
Serial.print(adc0);
Serial.print( (float) volts0 / (10000.0/(100000+10000)));
....

Ok.
Et si tu relève une courbe en faisant varier la position du potentiomètre ?
il ne faut jamais tirer une conclusion d'une mesure isolée, rien ne remplace une courbe.

Mode opératoire :

  1. Primordial : mise en sécurité de l'ESP32.
    C'est pour moi primordial ,bien que si tu fais bien attention ce n'est pas nécessaire : mais est-on capable de ne pas faire de connerie quand on fait des manips ? En ce qui me concerne c'est non, aussi je place des dispositifs anti connerie.
    Je ne connais pas la valeur ohmique du potentiomètre mais il ne faut pas qu'à la valeur max tu dépasse la tension max admissible par l'ESP32.
    Exemple au pif :
    V max = 5 V
    Potar = 51K
    Il faut placer une résistance "talon" entre l'alim 5V et le point "haut" du potar pour être certain de ne pas dépasser les 3 V en cours de manip.
    Je n'applique pas des formules toutes faites, je raisonne en courant avec la loi d'Ohm U = R*I.
    Si le potar fait 51 k et que la tension max à ses bornes est de 3V le courant dans le potar sera : 5 V / 51k = 98 µA
    La tension qui sera à chuter entre le 5V et le point "haut" du potar sera de 5V - 3V = 2V
    Avec le courant précédemment calculé la résistance "talon" sera 2V / 98 µA = 20 k.

  2. Maintenant que tu es assuré de ne pas déplacer 3 V sur l'entrée de l'ESP tu règles le potar pour avoir de 0 à 3V, pour commencer par pas de 0,5V.
    Conseil : tu traces la courbe en même temps que tu fais les mesures : tu verra ainsi s'il faut prendre un pas plus petit et tu n'aura pas à t'y reprendre en plusieurs fois.

Tu trace la courbe nombre renvoyé par l'ADC en fonction de la tension à mesurer et on en reparle.

bonsoir,
Ok je fais çà demain ou samedi.

Bonsoir

Retour avec comme objectif de vérifier la capacité d'un ESP32 à surveiller la décharge d'un accu au plomb

  1. Carte : LOLIN32 Lite , puce ESP32-D0WDQ6 de 2017 (Révision 1)
    surv accu plomb

  2. Pour mesurer des tension sur la plage 10V à 14V , avec les composants sous la main, j'ai pris pour le pont diviseur 4,7kOhm et 1kOhm et 330nF en parallèle avec 1k
    Avec ces valeurs l'ADC travaille dans la zone 2,5V à 1,8V

  3. Code utilisé après examen du comportement du convertisseur : (résolution et atténuation gardent leurs valeurs par défaut)

// entrée analogique utilisée : GPIO 34 (Analog ADC1_CH6) 
// précédée d'un pont diviseur 4,7k et 1k à la masse

const int Batt= 34; // entrée analogique

int valeur_brute = 0;

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

void loop() {
  valeur_brute  = analogRead(Batt);
  Serial.print(valeur_brute);
  Serial.print("\t");
  //                              PEch  P.Div       Décalage
  Serial.println((valeur_brute * 3.4 * 5.7 /4096) + 0.9);
  delay(1000);
}
  1. Une alimentation de labo fournit la tension à mesurer

RESULTAT

14V donne 13,98 V
13V donne 12,94 V
12V donne 11,98 V
10V donne 10,04 V

:white_check_mark: Bon pour le service (surveillance de décharge d'un accu au plomb)
Donc "lecture de tension sur ESP32 correcte ici" :wink:

Hello
le 3.4 c'est la valeur de réference ? ( 3.3v ) ?? et pourquoi + 0.9 ??

Bonsoir
zéro th
Dans premier temps j'ai mis 3,3V qui est la valeur nominale de pleine échelle pour l'atténuation 11dB
j'ai observé la relation tension -> nombre entier issu de la conversion (tableur , droite de tendance....)
Par retouches successives , j'ai remplacé 3,3 par 3,4 puis fixé le décalage à -0,9V, j'ai arrêté les retouches quand le résultat me parassait acceptable pour l'objectif recherché.

Ne pas oublier que la tension de référence vaut environ 1,1V , que l'atténuation ici vaut environ 11dB et que mes résistances de pont diviseur sont connues à 0,5% près.

Mises bout à bout ces incertitudes expliquent le besoin d'ajustement de coefficients pour obtenir une relation exploitable sur la plage de mesure désirée [14v , 10V]. Le besoin de calibration n'est pas toujours aussi indispensable qu'ici avec un ADC d'ESP32 mais pour moi il vaut mieux pas le perdre de vue en mesures physiques

Il me reste à transporter cela sur une autre carte (carte minimale avec module WROOM est quasiment seul) et voir de combien il faut retoucher les coefficients.

bonsoir,
merci pour le commentaire.
Oui, je suis curieux de connaitre le résultat avec un ESP32 vroom 32 ....
Je viens de vérifier chez moi avec ta formule et mes résistances 100k et 10k

Serial.println((valeur_brute * 3.4 * 11 /4096) + 0.9);

= 2.72 avec 3.3 en entrée. ( sans le +0.9 = 1.83 ce que j'avais avant aussi )

l'ADC de l'ESP32 ne se comporte pas bien à l'approche pleine échelle (soit 3,3V pour attn_11dB), je ne fais en conséquence aucune mesure à proximité de 3,3V
Je n'imagine pas utiliser une ADC d'ESP32 de 0v à 3,3V sans un gros travail compléemntaire pour tenter de compenser la non linéarité dans le code.

Comme je l'ai indiqué je me suis arrangé pour que la tension appliquée soit ni trop proche de la pleine échelle, ni trop proche de la masse . en gros la tension appliquée reste entre 1,5V et 2,5V)

Vu que l'objectif est de suivre un accu plomb entre 14V et 11V c'est gérable

As tu vérifié à l'ohmmètre les valeurs effectives des résistances de to pont diviseur ?

oui, 100k et 10k.

mais d'après ce que je lis, il y a des esp étalonné d'usine et d'autre non !
je présume qu'un esp à 6€ sur amazone, n'est ptet pas étélonné :frowning:

je ne suis pas certain que des ESP32 soient étalonnés en usine pour l'ADC , ce que j'ai lu évoque plutôt une simple sauvegarde en ROM de la valeur effective de la tension de référence. ( entre 1.0 et 1,2V pour les extrèmes)
Valeur qu'il serait possible de récupérer dans son code (je ne l'ai jamais fait)

WROOM32

Retour de test sur une petite carte avec un Module WROOM-32 d'Espressif , avec le pont diviseur de l'essai précédent et sans rien changer au code j'ai ça que je trouve exploitable en l'état :

14V 13,91V
13V 12,89V
12V 11,88V
11V 10,94V
10V 9,92V

Ajouter un dixième de volt en remplaçant +0,9V par 1,0V comme décalage et ça devient plutôt bon
(sur cette plage de tension réduite entre 1,75V et 2,46V sur l'entrée analogique utilisée)

mes cartes achetées via Aliexpress sont basiques , low-cost et pas très récentes (entre 2 et 3 ans)
La petite carte minimale avec le module WROOM32 est plutôt dans les 3ou 4€ (vendue module non soudé)
carte alimentée par un régulateur 3,3V externe

je pense ,@michelduyn , qu'il y a un os quelquepart dans ton montage ou dans les cartes utilisées

bonsoir,
étonnant effectivement :frowning:
J'ai bien vérifié le montage , puis même refais les test avec un arduino uno et mega , et pas de problème : 3.3v = 3.29v 8.4v = 8,36v .... . Avec le ADC1115, pas de problème non plus.
la seule différence, est que je n'ai pas utilisé de condo pour lisser.
Je vais refaire les tests demain et travailler sur un plage entre 10v et 14v aussi.