Superjc
06-06-2019 à 18h04
|
Jacques74 a écrit :
A propos, l'ESP32 et malgré ses 12 bits, n'est pas très fiable en CAN (ADC) ! En effet, la conversion n'est pas linéaire du tout, voir le graph !! Je suis en train de bricoler sur un montage voltmètre pour cellules li-ion unique et j'ai été obligé d'utiliser une fonction avec courbe polynomial, d'ordre 3 ou 4 ... Exemple ici : J'ai...
Je n’ai pas ce problème !?
Il faut mesurer une tension moins haute sur L’ADC de l’ESP32 et mettre l’atténuation au bon niveau
Dans mon display je mesure sur une plage inférieur à 1V
J’ai un pont diviseur de 60 environ
J’utilise l’atténuation de 0db qui permet une mesure linéaire dans la plage 100 and 950mV (sur L’ADC GIO36)
Mettre dans le setup :
analogSetPinAttenuation(36, ADC_0db); //range is ADC_0db -> 100 and 950mV
Lecture dans Loop :
//=====[Reading voltage on ADC1 channel 0 (GPIO 36)]=============
int ADC_PIN36 = 0;
for (int i = 0; i < 64; i++) {
ADC_PIN36 = ADC_PIN36 + analogRead(36);
}
ADC_PIN36 = ADC_PIN36 / 64;
float voltage = 0.96 * ADC_PIN36 / 4095 + 0.076; //ax+b
TensionBBS = voltage * PontDiv;
Christophe, 3256 msg, 63 ans. Guyancourt (FR-78). [mon blog] 36V 250W VTT bafang swxk 185R MetV and BBS01 Cycloboost |
Membre9554
07-06-2019 à 11h38
|
Pourtant j'avais essayé aussi (mais avec une alim à 0-1V ou 0-3.3V et sans pont diviseur) ...
// 11db for 0-3.3V - 6db for 0-2.2V - 2_5db for 0-1.5V - 0db for 0-1V
Et même à 11dB, normalement ça devrait être assez linéaire jusqu'à ~2.6V et c'était pas vraiment le cas sur mes essais de base ...
Par contre c'est possible que j'ai oublié de tester le 0dB, j'avais en tout cas essayé à 6dB et 2.5dB ... et c'était pas terrible du tout ...
Je referai un test, avec pont div. cette fois et à 0db pour être sûr.
- Au passage, à quoi correspond ton +0.076 ? Et 0.96 c'est la tension de référence à 0dB ??
Autrement la fonction polynomial fonctionne bien sur la plage complète 0-3.3V, mais évidemment c'est pas l'idéal ;)
En tout cas ce problème de non linéarité est connu sous ESP32 et bien discuté sur le Net, par exemple ici.
Membre9554, 19093 msg. Ce membre n'est plus inscrit. Message modifié le 2019-06-07 14:00:48 par Jacques74. |
publicité 07-06-2019 à 11h38
| Lien commercial -178-
|
Superjc
07-06-2019 à 14h26
|
C’est linéaire dans une large tranche sauf à 11db, beaucoup de personnes n’ont pas compris comment ça marche…
La droite doit être calibrée par 2 coefficient a et b (la définition d’une droite est Y = ax+b)
(a) est le coéf directeur et (b) est l’offset
Ces coefficients sont à calculer en fonction de ton ESP
x est le résultat de l’ADC
La droite ne passe pas par zéro
Pour moi L’ADC commence à +0.076 (c’est-à-dire ADC = 0 = +0.076V pour 0db sur mon ESP)
Le coéf directeur (l’inclinaison) est à 0.96 (c’est-à-dire ADC = 4095 = 0.960V pour 0db sur mon ESP)
C’est pour ça que l’on dit tranche 0db est d’environ +100 à + 950mV
analogSetPinAttenuation(36, ADC_0db); //range is ADC_0db -> 100 and 950mV
Christophe, 3256 msg, 63 ans. Guyancourt (FR-78). [mon blog] 36V 250W VTT bafang swxk 185R MetV and BBS01 Cycloboost |
Superjc
07-06-2019 à 14h30
|
C’est peut-être plus claire comme ça..
Christophe, 3256 msg, 63 ans. Guyancourt (FR-78). [mon blog] 36V 250W VTT bafang swxk 185R MetV and BBS01 Cycloboost |
Membre9554
07-06-2019 à 16h27
|
Ok merci Christophe !
Effectivement ça fonctionne déjà mieux comme ça
( test sur ADC32, alim de 0 à 1V sans pont div. et à 0db)
Bon là j'ai mis les mêmes coeff que toi pour mon essais (0.96 et 0.076) c'est pas mal du tout et surtout plus linéaire, mais faut que je voie encore comment mesurer et calibrer ces limites hautes et basses précisément pour mon ESP (TTGO) ...
Membre9554, 19093 msg. Ce membre n'est plus inscrit. Message modifié le 2019-06-09 22:50:08 par Jacques74. |
Membre9554
09-06-2019 à 22h27
|
Donc avec un capteur/sonde analogique qui fonctionne sur une plage de 0 à 3.3V par exemple, il faudra aussi lui coller un pont diviseur + définition des limites ...
C'est quand même vachement moins pratique que sur un Arduino type Uno/Nano 10bit qui reste linéaire sur 0-3.3V ou même 0-5V
Étonnant quand même qu'il n'y aie pas de correction de ce coté chez Espressif ...
L'ajout d'un ADS1115 en i2C reste d'actualité si on veut pas s'emmerder, en plus d'avoir une meilleure précision et d'être en 15/16 bit !
Membre9554, 19093 msg. Ce membre n'est plus inscrit. Message modifié le 2019-06-09 23:00:11 par Jacques74. |
Gregplessis
10-06-2019 à 11h41
|
L'ADS1115 est assez facile a exploiter et donne des résultats très précis.
Grégory, 115 msg, 44 ans. Le Plessis Robinson (FR-92). [mon blog] |
Gregplessis
10-06-2019 à 11h43
|
Petit retour de la ou j'en suis (ça prend du temps de bricoler et d'attendre les composants Aliexpress)
Grégory, 115 msg, 44 ans. Le Plessis Robinson (FR-92). [mon blog] Message modifié le 2019-06-10 11:45:59 par Gregplessis. |
Gregplessis
10-06-2019 à 11h46
|
pcb
Grégory, 115 msg, 44 ans. Le Plessis Robinson (FR-92). [mon blog] |
publicité 10-06-2019 à 11h46
| Lien commercial -181- |
Gregplessis
10-06-2019 à 11h47
|
Montage déplié
Grégory, 115 msg, 44 ans. Le Plessis Robinson (FR-92). [mon blog] |
|