Buondì, vi spiego con completezza cosa devo fare in modo che possiate anche farmi cambiare strada se errata.
Sto usando un ESP32 per leggere dei termistori (sonde per alimenti della Inkbird) ma come avevo capito leggendo varie fonti l'ADC dell'ESP non è un gran che e mentre su Arduino funziona tutto bene su ESP c'è un gran bel errore.
Ho trovato un bellissimo sketch/procedura che mi permette di calibrare il tutto ed effettivamente già solo con i valori che ha impostato l'autore c'è un significativo miglioramento, tuttavia siamo ancora lontani dalla precisione che vorrei.
L'autore stesso consiglia di calibrare i coifficienti con una procedura che consiste nel dare in pasto ad una porta tutti gli step di tensione da 0 a 3.3V e segnarsi i valori registrati, inserirli nella pagina web che ne calcola la regressione polinomiale e ottenere così dei coefficienti precisi.
Tutto molto bello solo che non so bene come ottenere delle tensioni così precise. Ci ho provato con il pwm stesso ma ovviamente non funziona anche se il multimetro mi dava la tensione corretta (poi ho capito perchè).
Adesso mi è venuto in mente che potrei usare un potenziometro, non ne ho nessuno per le mani, dovrei acquistarlo ma non so se abbia una precisione tale da permettermi di erogare questi step di 0.1V.
Sarò in grado di misurare con il multimetro la tensione erogata in tempo reale?
Secondo voi è fattibile? Idee, suggerimenti, sconsigli?
Grazie.
E' 1/33, cioè circa 10° di rotazione del potenziometro. Una manopola abbastanza grande (es. diametro 3cm) sarà di grande aiuto. Fissa il potenziometro su un pannellino di qualche tipo, altrimenti il movimento del corpo durante la rotazione sarà una complicazione in più.
Considera che esistono anche potenziometri a 10 giri, un po' più costosi, ma non credo che te ne servirà uno.
Puoi anche collegare, in serie al terminale del massimo, un altro potenziometro con resistenza complessiva pari a circa 1/10 del primo: posizionato al centro, dopo aver regolato il potenziometro principale puoi usarlo per fare la regolazione fine. I due potenziometri potranno essere da 10kOhm quello principale e da 1kOhm quello di regolazione fine, o valori simili. Con poco sforzo puoi fare qualcosa molto facile da usare.
Per collegare il multimetro puoi usare due fili con due banane, ottenendo un collegamento stabile e affidabile.
Altra soluzione che ti permette di avere tutte le tensioni senza dover effettuare regolazioni (a patto che i 3,3V siano precisi o che sia, comunque, la tua tensione di riferimento anche in seguito): 33 resistenze da 1kOhm 1% o 0,5% in serie, a formare un partitore a passi di 0,1V. Di volta in volta sposti il filo che va all'ADC da una posizione all'altra.
Un condensatore ceramico o poliestere da circa 100nF (100.000pF) tra i fili che vanno al multimetro ci starebbe bene comunque.
P.S.: se puoi usare sensori diversi, ci sono ad esempio le sonde DS18B20 che inviano la temperatura, già digitalizzata, su una connessione seriale 1-Wire. Puoi anche collegarne parecchi in parallelo e interrogarli singolarmente.
Uso già il DS18B20 per altre cose, ma non è facile trovarlo sotto forma di sonda alimentare (lo avevo trovato su alibaba ma con ordini minimi di centinaia di pezzi) ed è un po' limitato il range di temperature.
Mi serviva una sonda sicura per poter infilzare del cibo in cottura in forno e bbq siccome possiedo già un termometro della Inkbird e le relative sonde volevo usare quelle che sono facili da reperire, relativamente economiche e di qualità.
Nei PC è montato un integrato programmabile via software che regola una tensione programmabile di solito da 1v 1.30v a 3.50v con passi da 50mv o 100mv, se ti è sufficiente prova a cercarlo
Sì, in effetti l'ADC dell'ESP32 ha qualche serio problema... Github - Espressif
ma com'è la caratteristica dei termistori che usi?... Come fai a linearizzare anche quelli con la stessa precisione? Hai una tabella del produttore? Altrimenti fai tanta fatica a linearizzare il convertitore, ma poi hai errori di linearità sulle sonde!
Anziché cercare di linearizzare l'ADC dell'ESP32 non ti conviene metterne uno buono esterno via I2C?
Datman:
Ooops... Taylor Precision Products Digital Cooking Probe Thermometer and Timer a 13.49$ su Amazon.com
Non ho capito, io ho un inkbird IBT-2X con due sonde che è sicuramente migliore di quel prodotto.
Per la lettura dei termistori mi affido al digitalread e alla Equazione di Steinhart-Hart che mi permette di calcolare la temperatura tramite il calcolo della resistenza. Con Arduino funziona alla grande per quello che ho potuto provare.
Affidarmi ad un ADC esterno ci ho pensato e ne ho anche trovato uno a 16bit I2C a buon mercato ma volevo un attimo capirmi prima di fare acquisti.
Ho pensato anche di usare lo stesso arduino in accoppiata all'esp32, sono ancora in fase di test perciò sono aperto a tutte le possibilità.
icio:
Nei PC è montato un integrato programmabile via software che regola una tensione programmabile di solito da 1v 1.30v a 3.50v con passi da 50mv o 100mv, se ti è sufficiente prova a cercarlo
Puoi anche usare un riferimento di tensione e un potenziometro digitale, ma non mi sembra la soluzione più adeguata per una taratura da fare una volta.