Go Down

Topic: Diverse ESP32 e diverse letture NTC !?!?! (Read 420 times) previous topic - next topic

steve-cr

Apr 06, 2019, 07:53 pm Last Edit: Apr 06, 2019, 07:57 pm by steve-cr
Mi sta succedendo una cosa non prevista: ho una scheda su cui monto ESP32 DEVKIT V1 (quindi niente breadboard o fili volanti, ma sicuri connettori) e dove leggo due NTC sui GPIO32 e GPIO33.

Mi capita di sostituire una ESP32 con un'altra e.... leggo altri valori da quelli precedenti !!!
Allora ne prendo una terza e ancora altri valori di temperatura differenti dalla prima e dalla seconda.
La prima 21,4 e 22,3 - la seconda 23,5 e 24,7 - la terza 25,3 e 26,1.

Mi sorge un dubbio e faccio lo stesso esperimento su una scheda su cui monto NANO.
Provo anche qui tre NANO ma ho sempre le stesse identiche temperature su tutti.

Quindi il problema sorge su ESP32. Come mai?
Non può essere l'alimentazione perchè la scheda che accoglie la ESP32 è la stessa.
Non possono essere le NTC perche nemmeno le ho tolte dai morsetti.
E a prescindere dall'algoritmo che mi calcola la temperatura, coi problemi delle analogiche delle ESP32 conosciuti, dovrei avere le stesse identiche letture tra loro...
Samantha Cristoforetti: "Mi fai fare un giro sul tuo ultraleggero?". "Certamente, però piloto io !"

maubarzi

I test che hai fatto sono stati in rapida successione? visto che ad ogni tentativo aumenta di un paio di gradi, hai riprovato con il primo sensore per vedere se aumenta ancora o se ritorna a valori coerenti con il primo test su quel sensore?
Ipotesi a pelle magari molto strampalata è che ad ogni tentativo, magari, il sensore si scalda e non ha tempo di raffreddarsi per cui aumenta sempre un pelo.
Quindi problema di alimentazione e non di MCU.
E' un dubbio derivante dalla apparente regolarità nell'aumento di 2 gradi ad ogni test successivo.
Nessuna buona azione resterà impunita!

Preistoria -> medioevo -> rinascimento -> risorgimento -> rincoglionimento!

steve-cr

Le stesse prove le ho fatte con una board che monta NANO e tra un cambio di scheda e il successivo lasciavo passare 5 minuti per eventuali "stabilizzazioni termiche".
Su Nano era sempre 23,5, con tre NANO diversi.

Sulla board che monta ESP32, invece, non era così.
Quindi, non convinto, sono ripartito dal primo ESP32, trovando le stesse letture che avevo rilevato al giro precedente.


Samantha Cristoforetti: "Mi fai fare un giro sul tuo ultraleggero?". "Certamente, però piloto io !"

steve-cr

Oggi ho fatto una ulteriore prova alimentando il VIN con più di 5,5 Volt della mia board (perché non si sa mai, anche se il regolatore a bordo accetta tensioni inferiori dei 7 volt richiesti dai vari produttori).

Quindi ho alimentato il VIN di ESP32 con 8,5 - 9 - 11,5 Volt. Nessuna differenza!

La differenza sta nell'integrato regolatore 3.3Volt: una scheda da 3,28, l'altra 3,29 e l'ultima 3,31.

Certo non mi aspettavo 3,3Volt da tutte le ESP32 perché il datasheet da min 3,20 e max 3,40 Volt, quindi sono nei paramentri.

Non è che mi sfugge qualcosa? Il pin Aref non esiste, quindi cosa faccio?
Mi sembra un fatto grave: la Espressif lo conosce?

Consigli?
Samantha Cristoforetti: "Mi fai fare un giro sul tuo ultraleggero?". "Certamente, però piloto io !"

steve-cr

 Anche provando ad abbassare la risoluzione, la lettura analogica della stessa NTC da valori diversi sulle tre ESP32:

Code: [Select]

analogReadResolution(10);             
analogSetWidth(10); 


La prima da 650
la seconda da 615
la terza da 638
Samantha Cristoforetti: "Mi fai fare un giro sul tuo ultraleggero?". "Certamente, però piloto io !"

Sulimarco

Le NTC hanno bisogno di un ADC che sia in grado di fare una lettura raziometrica, cioe' con il riferimento che dipenda dalla tensione di alimentazione.
L' ESP32 e' in grado solo di fare letture assolute, legate al suo riferimento interno, che tra l'altro ha ampie tolleranze.

Quindi o cambi l'hardware o tari le piastre una per una con tecniche HW o SW.

Marco

steve-cr

Il discorso è che pensavo che ESP32 fosse migliore di un NANO però, probabilmente, mi sbagliavo!

Va bene il Dual Core, va bene il WiFi, va bene anche il Bluetooth, va bene i 25 GPIO (perché c'è anche quello a 32 ma "are not recomended for other uses as SPI integrated...") però se mi metti tre (dicasi 3) ADC con un totale di ben 16 pin ANALOGICI, io mi aspetto che funzionino come devono.

Poi salta fuori la "non linearità" e va bene, adesso salta fuori che il riferimento interno non è nemmeno da paragonare a quello di Atmel (ho fatto la prova su DIECI NANO e non ce n'è uno che sbagli: tutte letture quasi identiche!!!) e il bello è che non è previsto un riferimento esterno !!!!! Sembra una barzelletta.

Quindi mi sono fatto una domanda: è stata solo una mossa commerciale? Una bella board con connettività assoluta, addirittura piedini touch (?!?) e sensori effetto hall (!?!) e poi si cade su una misura analogica (ehh ma vuoi mettere? leggo a 12bit ! Cosa leggo non lo so, però leggo!).

Mi sono iscritto al forum di Espressif ma il forum è moderato, eccome!
Tu posti un quesito e loro decidono se pubblicarlo... Dopo 24 ore non ho ancora ricevuto la mail che il mio quesito è stato pubblicato...

Samantha Cristoforetti: "Mi fai fare un giro sul tuo ultraleggero?". "Certamente, però piloto io !"

Sulimarco

Quote
Il discorso è che pensavo che ESP32 fosse migliore di un NANO però, probabilmente, mi sbagliavo!
Non e' questione di migliore o peggiore: un microprocessore (come qualunque altra cosa) va scelto in funzione di quello che si deve fare.
Con l'ESP32 puoi fare cose completamente fuori dalla portata di una NANO e non c'e' dubbio che per altre applicazioni e' meglio una NANO ...


Quote
adesso salta fuori che il riferimento interno non è nemmeno da paragonare a quello di Atmel
L'errore del riferimento interno dei due micro e' analogo e cioe' circa +-10%

Quote
ho fatto la prova su DIECI NANO e non ce n'è uno che sbagli: tutte letture quasi identiche!!!
Mi sembra che tu non abbia colto il significato del mio post precedente.
La NANO, come la UNO e le Arduino in generale, usa di default la tensione di alimentazione come riferimento dell'ADC e quindi la configurazione corretta per misurare una NTC.

Quote
il bello è che non è previsto un riferimento esterno
Questo e' il vero limite

Marco

daysleeper

(ehh ma vuoi mettere? leggo a 12bit ! Cosa leggo non lo so, però leggo!).
L'errore del riferimento interno dei due micro e' analogo e cioe' circa +-10%
La NANO, come la UNO e le Arduino in generale, usa di default la tensione di alimentazione come riferimento dell'ADC e quindi la configurazione corretta per misurare una NTC.
Con un +/-10% di errore della tensione di riferimento direi che la configurazione dell'arduino è "corretta" per n-mila cose in più rispetto alle esp. LM35? Leggere la tensione di una batteria per capire quando "staccarsi"? In pratica, gli input analogici per cosa si dovrebbero usare su una esp?
Senza un aref esterno effettivamente tanto valeva leggere a 4 bit.  ::)
Se è stupido ma funziona allora non è stupido.

steve-cr

#9
Apr 09, 2019, 10:44 am Last Edit: Apr 09, 2019, 10:48 am by steve-cr
.....
L'errore del riferimento interno dei due micro e' analogo e cioe' circa +-10%
......
Io non sto parlando dell'errore del riferimento interno: sto parlando di una cosa molto più grave.
Sto dicendo che su dieci NANO ottengo la stessa misura e su tre ESP32 ottengo tre misure!
Quindi c'è un errore diverso tra i due chip

Infatti, andando sul forum della Espressif, ho trovato alcuni post che si lamentavano di QUESTO problema e che cioè, se si pensava alla produzione di qualcosa su larga scala, non si poteva pensare di eseguire una taratura per OGNI scheda.

La stessa Espressif ha risposto che era alla ricerca di una soluzione con i Fuses e che avrebbe standardizzato i suoi chip tarandoli uno a uno in fase di produzione.
Però è un post dei primi del 2018.
Samantha Cristoforetti: "Mi fai fare un giro sul tuo ultraleggero?". "Certamente, però piloto io !"

steve-cr

#10
Apr 09, 2019, 10:51 am Last Edit: Apr 09, 2019, 11:04 am by steve-cr
Non e' questione di migliore o peggiore: un microprocessore (come qualunque altra cosa) va scelto in funzione di quello che si deve fare.
Ho provato un 8266 e mi sono trovato bene, ma aveva solo un ingresso analogico.

Poi sono passato su ESP32.
Se mi dai 16 GPIO ANALOGICI, poi non puoi venirmi a dire che ho sbagliato processore in funzione di ciò che devo fare...

Code: [Select]

ADC Calibration

The esp_adc_cal/include/esp_adc_cal.h API provides functions to correct for differences in measured
voltages caused by variation of ADC reference voltages (Vref) between chips. Per design the ADC
reference voltage is 1100mV, however the true reference voltage can range from 1000mV to 1200mV
amongst different ESP32s.


Magari sapere come utilizzare la API dentro un programma...
Samantha Cristoforetti: "Mi fai fare un giro sul tuo ultraleggero?". "Certamente, però piloto io !"

zoomx


Il +-10% dell'Atmega328 vale per il riferimento interno ad 1.1V, mentre normalmente si usa la tensione di alimentazione che, in questo caso, è sempre la stessa, per cui è normale che si ottengono gli stessi valori.

Anche a me stupisce invece questa variabilità fa ESP32, ma io tendo ad usare sensori digitali proprio per evitare problemi simili.

steve-cr

#12
Apr 09, 2019, 07:42 pm Last Edit: Apr 09, 2019, 07:43 pm by steve-cr
Si, lo stavo pensando anche io, perchè se fossero anche I2C basta una coppia di extender.

Nel forum di Espressif ho trovato di tutto, compreso il finimondo, anche perché non si può mettere in produzione un chip con 18 analogiche di cui 6 però non vanno se hai il wifi e le altre hanno una TOLLERANZA che ha range diversi per ogni scheda e VALORI DI PARTENZA E ARRIVO (in volt) differenti per ogni scheda !!!!!

I chip della ESPRESSIF datati 012018 in su sono tarati uno a uno ma per quelli prima bisogna giocare con i fuses, quindi non penso sia il caso...
Samantha Cristoforetti: "Mi fai fare un giro sul tuo ultraleggero?". "Certamente, però piloto io !"

zoomx

Se usi i DS18B20 non hai bisogno di extender e li puoi mettere tutti nella stessa catena, distinguendoli dal seriale.

Go Up