PB ADC: lecture tension externe avec ESP32 NODEM-V0.9: ça marche, ça marche pas?

Bonsoir à tous.
Je galère avec un problème intermittent avec l'ADC d'un NODEMCU V0.9: je mesure la tension externe d'un petit panneau solaire qui a une tension entre 0,5V et 1V. (j'ai bien fait mon pont de résistances calculé sur Vmax = 1V de l'adc).
Ci dessous un code simple, avec Arduino 1.8.13 et core ESP8266 2.7.4.
mon problème: sans changer une seule ligne de code et simplement en éteignant et en ré-alimentant le module NODEMCMU, je me rends compte qu'une fois sur deux, je ne récupère pas la mesure de la tension mais une valeur minimale entre 4 et 6 (c'est du bruit je suppose).
J'ai remarqué aussi qu'en allant mesurer la tension avec un testeur sur la borne A0, cela déclenchait la lecture correcte de la part du module, comme si il se réveillait d'un coup...
Du coup, je n'y comprends rien: une vilaine fiabilité du module NODEMCU ? un manque d'initialisation logicielle ? un manque d'initialisation hardware ? Instabilité du CORE ESP32 (j'ai eu des pb avec l'affichage LCD I2C due à la version)?...
Merci de votre aide...
le code de base qui, soit reste bloqué à la valeur "4", soit se met à lire la tension dynamiquement et correctement:
ADC_MODE(ADC_TOUT); // lit une tension externe
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.print("Valeur ADC directe=");
Serial.println(analogRead(A0));
delay(1000);
}

Bonsoir

le message mélange ESP8266 et ESP32
Confusion sans doute entrenue par le terme NodeMCU qui est utilisé à tort et à tarvers par nombre de boutiques sur Aliexpress pour des cartes qui n'ont rien à voir avec la carte NodeMCU DevKit à l'origine du terme

La conversion analogique/numérique sur ESP32 ne se gère pas de la même manière que sur un ESP8266. Les' Core' pour ESP8266 et ESP32 présentent nombre de différences

Sur les arduino, la première mesure analogique est supposée être fausse, il ne faut pas en tenir compte. C'est peut-être la même chose pour un ESP8266.
Donc fais une première lecture analogRead(A0) dans le setup sans l'afficher, et regarde si c'est mieux.

Bonjour, merci pour vos réponses; oui j'ai vu sur certains posts qu'il fallait dissocier les éléments du module, mais j'ai simplement repris l'intitulé de ma commande quand j'ai commandé les modules. Dans le même core se trouve ma carte et pleins d'autres cartes. Une fois le core ESP8266 choisi, je valide ma carte NODEMCU v0.9.

En ce qui concerne la première lecture, en fait je fais cette lecture toutes les secondes, donc si la première est fausse, les suivantes devrait être plus ou moins cohérentes je suppose. Mais ce qui m'interpelle, c'est le fait que ça se déclenche tout seul en venant mesurer les bornes aux contact A0 et masse. et que ça repart aussi sec lors d'un cycle j'éteins/je rallume...

Tu peux poster ce qui apparaît dans la console ? Avec horodatage et en relançant plusieurs fois.

Lorsque l'alimentation du cpu est coupée il ne faudrait pas que le panneau solaire débite dans le circuit.
Cela peut causer des mauvais fonctionnement car le courant fourni par le panneau solaire va entrer dans le cpu à travers les diodes de protection dans les entrées analogiques et alimenter celui-ci imparfaitement. Cela peut entraîner une mauvaise initialisation de certain périphériques par exemple voir bloquer le cpu complètement.

Bonsoir,
je vais couper l'alimentation du panneau photovoltaïque connecté a A0 pour voir si ça vient de la. merci pour la piste.

Bonsoir,
j'ai coupé l'alimentation. allumé. Pas de valeur sur l'entrée A0. Rien.
J'ai changé de module NODEMCU en le remplaçant par un neuf: ça marche, sans rien changer d'autre.
bref, la tension du photovoltaïque a du griller l'entrée analogique du premier NODEMCU... est-ce possible sachant que le panneau sort au maximum du 2/3 volts ?
Merci en tout cas pour l'info.
JC

Bonsoir

est-ce possible sachant que le panneau sort au maximum du 2/3 volts ?

Peu probable.
Sur une carte NodeMCU normale l'entrée A0 de la carte est envoyée à un pont diviseur (220kOhm/100kOhm) dont le point milieu va à l'entrée analogique unique de l'ESP8266.

Le pont diviseur 1/3 et la valeur élevée (100kOhm) de la résistance entre l'entrée AO de la carte et l'entrée analogique de la puce ESP8266 éloignent le risque de destruction par application d'une tension de 3V sur l'entrée A0 de la carte.

Par ailleurs la protection des entrées des ESP8266 est spéciale : en gros une diode zener d'environ 6V sur chaque entrée et non les habituelles diodes de protection dont l'une reliée à Vss, (lu sur la datasheet initiale et testé par injection de courant)

PS : il serait peut être temps d'enlever la mention ESP32 du titre du fil de discussion .....

Merci pour vos retours. tout marche nickel.
Je viens d'acheter plusieurs cartes NODEMCU et je trouve le libellé suivant:

carte ESP32 NodeMCU ESP8266
Du coup, je me demande pourquoi la mention ESP32 doit être enlevée ?
Cordialement.

Du coup, je me demande pourquoi la mention ESP32 doit être enlevée ?

Parce que le micro processeur ESP8266 de la nodemcu n'a strictement rien à voir avec un micro ESP32.
Et justement pour la mesure analogique il n'y a pas besoin d'un pont diviseur avec un ESP32.
Parce que le référencement des cartes à base de micros espressif est un vrai bordel.

Les sites marchands écrivent souvent n'importe quoi parce qu'ils ne comprennent rien à ce qu'ils vendent.
Ils ne sont absolument pas une référence.

Du coup, je me demande pourquoi la mention ESP32 doit être enlevée ?

Le contenu du fil de discussion (A0.....) porte sur un clone de carte NodeMCU ESP8266
Il n'a rien à voir avec l'ESP32, d'où la demande de modification pour que le titre corresponde au contenu de la discussion. Si quelqu'un trouve ce fil par le moteur de recherche il serait piégé par le décalage entre le titre et le contenu.

Pour ce qui est des appellations je vois que dans les versions récentes de l'extension ESP32 pour IDE Arduino les développeurs ont choisi de s'adapter à cet état de fait 'marchand' avec des appellations bancales, on y voit une ou deux cartes Nodemcu32, ce sont en fait des descriptions de cartes envoyées par les marchands et intégrées d'office telles quelles à la liste !! les marchands font la loi

Les créateurs de la carte NodeMCU Kit se sont fait piquer la marque et celle ci maintenant est récupéréé pour désigner d'autres types de cartes totalement différentes.

OK, merci de l'éclairage !
Cordialement,
JCF

Bonjour,
je profite de l'échange d'avant qui est résolu pour ma part, mais j'ai un problème très identique avec un ESP32 de AZ-delivery que je viens de recevoir:
ESP - 32 Development Toolkit C Bei - Az - delivery.de – AZ-Delivery (az-delivery.de)
J'en ai acheté plusieurs pour faire la même chose, c'est à dire lire le niveau électrique en sortie de plusieurs panneaux photovoltaïques.
Le problème, c'est que je ne peux pas faire de "ADC_MODE(ADC_TOUT);" en debut de code comme je le faisait auparavant avec le nodem d'une autre marque (ça dit "erreur de compilation"), et que quand je lis la tension de la broche ADC1, je vois des valeurs qui baissent comme si elles étaient incrémentées, puis qui remontent... mais absolument pas la tension du panneau photovoltaïque.
J'ai mis le pont diviseur en entrée, mais si je ne le mets pas, ça ne change rien à ce que je lis sur l'entrée analogique.
Je n'ai pas trouvé d'exemple de code qui lit une tension extérieure sur ce genre de module, du coup j'ai besoin d'aide...
Merci à vous.
Cordialement,
JCF

Bonsoir

Il faut se rendre à l'évidence, derrière l'appellation NodeMCU trompeuse choisie par le vendeur , sont évoquées dans ce fil deux types de cartes totalement différentes les unes ont un ESP8266, les autres un ESP32.

Mieux vaut oublier le terme NodeMCU qui a perdu son sens à partir du moment où des vendeurs l'emploient pour désigner des cartes sans rapport entre elles , mis à part une certaine ressemblance vues de loin. Traitez différement les deux groupes de cartes , en vous basant uniquement sur leur processeur pas sur le nom fantaisiste identique choisi pour les cartes par le vendeur.

L'entrée ADC_TOUT n'existe pas sur un ESP32, écrire ADC_MODE(ADC_TOUT) n' aucun sens sur un ESP32, il est normal que le compilateur n'accepte pas cette commande !!

Pour gérer une des entrées analogiques d'un ESP32 il faut utiliser un code ....pour ESP32 , pas un code pour ESP8266

Voilà une page en français qui montre quelques exemples d'utilisation d'entrées analogiques d'un ESP32

autre page intéressante sur le sujet :

Bonsoir,
merci pour la réponse. je vais essayer de démêler les différents noms, mais c'est difficile quand ce qui est marqué sur la boite est faux...

En ce qui concerne le code, merci pour les exemples, mais cela ne concerne que des tensions provenant de l'ESP32 lui-même en passant par une résistance.
Dans mon cas, il s'agit d'une tension extérieure provenant d'un panneau photovoltaique, et je n'ai pas trouvé d'exemple de code pour l'ESP32: le fameux équivalent au ADC TOUT, car sans cela j'obtiens "0" en valeur quel que soit la tension du panneau...
Merci pour vos réponses.
Cordialement,
JC

Bonsoir

En ce qui concerne le code, merci pour les exemples, mais cela ne concerne que des tensions provenant de l'ESP32 lui-même en passant par une résistance.

Non, c'est fortuit et c'est par commodité que les rédacteurs de ces tutoriels ont pratiqué comme cela et se servant d'un potentiometre, ils auraient très bien pu prendre une pile 1,5V et faire mesurer sa tension par l'ESP32.
L'ESP32 ne fait pas la différence entre 1,5V produit par une pile et 1,5V produit par un potentiomètre !

Dans ces exemples seule compte la valeur de la tension appliquée entre l'une des entrées analogiques et la masse, peu importe comment elle a été produite ! (issue d'un autre composant ou dérivée de la tension d'alimentation de l'ESP32 par un pont diviseur ou potentiomètre)

Un ESP8266 ne possède qu'une seule entrée analogique , nommée TOUT (1V maxi) au niveau de la puce, nommée A0 en entrée de nmbreux modules. Présence un pont diviseur résistif entre A0 et TOUT permettant d'appliquer jus qu'à 3,3V sur A0

Un ESP32 possède 14 entrées analogiques pouvant supporter jusqu'à 3,3V dans leur configuration de base.

Bonsoir, merci pour l'info, je viens de connecter une pile, et j'ai bien récupéré des infos sur la borne GPIO.
du coup je vois que mon erreur vient de la sensibilité entre l'entrée du NODEM+code et l'entrée de l'ESP32+code.
Merci beaucoup !
Bonne soirée !
JCF