ESP32-C3 Supermini avec Thermistance B3950 100KΩ

Bonjour à tous,

Je poste car je ne comprend pas mon(mes) erreur(s) … et vu que j’ai pas un niveau d’électronique de folie, je demande de l’aide au connaisseurs :wink:

L’objectif est de connecter deux thermistances 100KΩ sur un ESP32
J’ai pris un C3 Supermini mais j’ai également testé avec d’autres ESP32 sans succès jusqu’à présent (Au départ je voulais faire cela avec un ST7789V sur un ESP32 TTGO pour permettre l’affichage)

Pour le moment je ne teste qu’avec une seule sonde et je n’ai pas de variations de voltage sur mon ADC et pas non plus de variation de résistance dans les logs de l’ESP.

J’ai fais le montage suivant, en fouillant un peu sur le net j’ai fait mon calcul de division de tension et c’est là que je pense est mon erreur mais je ne vois pas où.
Je n’ai pas encore mis de condensateur pour épurer les mesures mais cela viendra après…

2024-12-09_23h37_11

La thermistance en question :

2024-12-10_00h07_56

Pour ce qui est du code, j’ai pas réinventé quoi que ce soit, j’ai facilement trouvé les infos qui ont donné ça pour mon premier capteur :

sensor:
  - platform: ntc
    sensor: fridge_resistance_sensor_1
    name: Fridge Température n°1
    id: resistance_temperature_1
    calibration:
      b_constant: 3950
      reference_temperature: 19°C
      reference_resistance: 100kOhm

  - platform: resistance
    id: fridge_resistance_sensor_1
    sensor: fridge_source_sensor_1
    configuration: DOWNSTREAM
    resistor: 100kOhm
    reference_voltage: 5V
    name: Valeur de la résistance n°1

  - platform: adc
    id: fridge_source_sensor_1
    name: Fridge Voltage ADC n°1
    filters:
      - multiply: 3.3
    pin: GPIO0
    update_interval: 2s

J’ai fait des tests avec du 5V du 3,3V idem rien ne varie quand je place ma thermistance au chaud ou au froid.

J’ai bien évidemment testé plusieurs composants, au testeur hors montage je vois bien la thermistance changer de résistance selon la température donc les composants un à un sont ok

Dans les logs j’ai tout le temps la même chose en boucle et aucune variation quel que soit la température (Je ferais l’étalonnage par la suite) :

[23:55:11][D][sensor:094]: 'Fridge Voltage ADC n°1': Sending state 2.73570 V with 2 decimals of accuracy
[23:55:11][D][resistance:039]: 'Valeur de la résistance n°1' - Resistance 120818.8Ω
[23:55:11][D][sensor:094]: 'Valeur de la résistance n°1': Sending state 120818.78125 Ω with 1 decimals of accuracy
[23:55:11][D][ntc:026]: 'Fridge Température n°1' - Temperature: 15.0°C
[23:55:11][D][sensor:094]: 'Fridge Température n°1': Sending state 14.96983 °C with 1 decimals of accuracy
[23:55:13][D][sensor:094]: 'Fridge Voltage ADC n°1': Sending state 2.73570 V with 2 decimals of accuracy
[23:55:13][D][resistance:039]: 'Valeur de la résistance n°1' - Resistance 120818.8Ω
[23:55:13][D][sensor:094]: 'Valeur de la résistance n°1': Sending state 120818.78125 Ω with 1 decimals of accuracy
[23:55:13][D][ntc:026]: 'Fridge Température n°1' - Temperature: 15.0°C
[23:55:13][D][sensor:094]: 'Fridge Température n°1': Sending state 14.96983 °C with 1 decimals of accuracy

Si vous avez des idées, je suis preneur !



Core 2024.12.1
Supervisor 2024.11.4
Operating System 14.0
Interface utilisateur 20241127.6
Raspberry Pi 4 avec 6.6.51-haos-raspi sur disque M2


Il me semble qu’il y a des modèles 100 K et d’autres 10 K, ce qui pourrait expliquer que tu ne vois pas de variation de tension (ou peu de variation du moins) sur l’entrée de l’ADC. Essaye en mettant une résistance de 100 K à la place de la thermistance, tu devrais trouver 2.5 V sur l’entrée de l’ADC. Avec un diviseur de tension avec 1 résistance de 100 K et une résistance variable de 0 à 100 K, tu auras une tension de 0 à 2.5 V sur l’entrée de l’ADC, c’est ce que tu veux ?

Hello Steche,

Merci pour ton intérêt et ta piste de recherche !

Pour les valeurs, ce sont bien des 100KΩ, je les ai bien vérifié que ce soit la thermistance ou la résistance.
Sinon, oui, c’est bien ce que je veux faire, je prend de la 100KΩ car je veux monitorer des températures négatives entre les -10°C et -20°C (elles sont normalement plus précises).

Du coup j’ai mis une deuxième résistance de 100KΩ à la place de la thermistance et l’ESP me remonte une résistance de 120KΩ avec un voltage de 2.73570 V (Donc c’est pas bon … mais c’est cohérent …).

Du coup j’ai mis un potentiomètre de 100KΩ à la place et j’ai des résultats complètement différents !

Potentiomètre à 0Ω
(2Ω en vérité si je regarde avec le testeur)

Je trouve un voltage 0V et 0Ω mais pas de façon constante
cela oscille entre 0,000V et 0.01320 V et la résistance entre 0Ω et 264.7Ω

Potentiomètre à 100KΩ
Je trouve un voltage qui oscille entre 0.12540 V et 0.32670V
Pour le coté résistance, je suis entre 2572.5Ω et 6990.8Ω respectivement et rien n’est stable.

Je veux bien que cela puisse osciller mais je ne comprends pas ces différences et surtout l’écart entre une résistance toute simple et mon potentiomètre … :thinking:

La seule chose que j’ai remarqué c’est que tant que l’ESP32 est en train de chercher les réseaux WiFi, c’est moins stable que lorsqu’il est connecté et les oscillations ont bien moins d’ampleur.

Que mesures tu sur ton pont diviseur si tu ne le relies rien à l’ADC ?

Ah mais je suis vraiment null, je n’ai même pas pensé à faire ce test !
Un grand merci à toi …

Au fur et à mesure que je tourne le potar, je passe de 0v à 1,65v sur du 3,3v et de 0v à 2,5v en 5v donc là tout est ok.

Je peux donc écarter tout problème là où j’en cherchais !

C’était tout con mais vraiment j’ai pas eu l’idée …

Du coup, j’ai regardé du coté du code pour savoir ce que je fait mal car mon ADC ne retranscrit pas ce qu’il lit sur le GPIO …

Là j’ai trouvé plusieurs choses et notamment j’avais fait plusieurs tests en virant cette ligne :

- multiply: 3.3

Et du coup ce que j’en ai compris c’est que ce multiplicateur agit sur l’ensemble des valeurs que ressort l’ADC (Pas seulement le voltage mais également la valeur de la résistance)

De base l’ADC part de 0v à 1v (ce que je ne savais pas) et il me faut multiplier cela en fonction de ce que j’ai comme voltage en entrée pour avoir des valeurs cohérentes.

Si je teste avec une valeur à 5 par exemple j’arrive à 5v en sortie en valeur max (C’est donc logique et je le retrouve bien dans mes logs)

Du coup, pour moi, il en ressort donc 2 choses :

Tant que l’ESP32 est en train de scanner des réseaux WiFi : Inutile de regarder les logs, il fait n’importe quoi en sortie de l’ADC ! (enfin, c’est ma croyance)
En même temps, j’avais lu que sur certains ESP32, il n’est pas possible d’utiliser certains ADC justement à cause du WiFi car il utilise un des ADC, c’est vieux dans ma mémoire mais du coup, ceci expliquerait cela ?

Pour ce qui est de ma Thermistance, elle ne varie pas de 0Ω à 100KΩ car il ne m’est pas possible de faire varier la température en conséquence (de -50°C à + 300°C).
Il me faut donc me concentrer sur l’étalonnage (Valeur de résistance à 25°C : 100KΩ) donc avec le code

reference_temperature: 25°C

Ce qui me choque, c’est que j’ai bien fait tout cela dès le départ …

Bref, je recommence donc depuis le début car c’est bien du coté du code que ca déconne …

En tout cas il y a une chose qui est sûre : MERCI STECHE !!! Un grand merci a toi de m’avoir aiguillé … Je refais mon code de ce pas !

1 « J'aime »