In questo SIM7600X 4G HAT AT+CREG? loop - #10 by gpb01 post Guglielmo gentilmente mi consiglia di usare un partitore di tensione con due resistenze nel caso voglia portare una tensione per cambiare un livello da LOW a HIGH o viceversa. Ho questo sensore https://www.amazon.it/iHaospace-MICS-6814-Detection-Monoxide-Nitrogen/dp/B07LD5TKR8 e vorrei collegarlo al mkr 1400. Il modulo ha un'interfaccia analogica e una tensione sui pin di 5V, cosa che non mi permette di collegarlo direttamente all MKR. Ho provato ad usare un level shifter ma le letture non sono consistenti. In Cosa consiste l uso del partitore di tensione?Mi sarebbe utile? E' una soluzione complicata? Grazie
I modelli MKR non tollerano una tensione superiore a 3.3V sui loro pin, sui loro pin analogici quindi riescono a leggere nel range 0-3.3V.
Il level shifter é adatto quando vogliamo portare un segnale digitale da una tensione ad un'altra perció per il mio segnale analogico ho usato un partitore di tensione : ho usato due resistenze, una da 5.1Kohm e l'altra da 10Kohm, ho collegato un'estremitá della prima resistenza al pin di uscita analogico e l'altra su una nuova linea, su questa nuova linea ho collegato una estremitá della resistenza da 10 e l'altra sua estremitá a GND. Fatto questo ho collegato il pin analogico nello spazio tra le due resistenze (sulla stessa linea, resistenze in serie).
co = map(analogRead(A0), 0, S_analog, 1, 1000) ;
Il valore di S_analog
che scegli di usare nel tuo sketch Arduino è determinato dalla risoluzione del convertitore analogico-digitale (ADC) del microcontrollore che stai utilizzando. Nel caso del Arduino MKR GSM 1400, che utilizza il microcontrollore SAMD21, l'ADC può essere configurato fino a una risoluzione massima di 12 bit. Una risoluzione di 12 bit significa che l'ADC può rappresentare un ingresso analogico con 2^12 livelli differenti, il che corrisponde a 4096 livelli possibili da 0 a 4095. Per questo motivo, ho impostato S_analog = 4095.0 nel mio sketch. Questo valore rappresenta il massimo valore che l'ADC può leggere, la funzione analogRead(), restituisce un valore nell'intervallo da 0 a 4095. La funzione map(value, fromLow, fromHigh, toLow, toHigh)
viene utilizzata per convertire un numero da un certo intervallo a un altro. Nel mio caso: analogRead(Ax)
restituisce un valore tra 0 e 4095. Usare 4095 come fromHigh
in map()
garantisce l'uso dell'intero range di valori che l'ADC può effettivamente leggere, massimizzando così la precisione delle conversioni da lettura analogica a misura in ppm. Fatto questo le mie rilevazioni dal MICS8614 si sono normalizzate
Bravo Giuse, hai fatto tutto da solo ed hai descritto nel dettaglio la soluzione, così che sia utile per gli altri. Un cuoricino meritato!
Ciao, Ale.
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.