Sommario:
- Passo 1:
- Passaggio 2: registro di configurazione
- Passaggio 3: registro dati
- Passaggio 4: modalità ADC single-ended
- Passaggio 5:
- Passaggio 6: modalità ADC differenziale
Video: Arduino e ADC a 16 bit TI ADS1110: 6 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:02
In questo tutorial esamineremo l'utilizzo di Arduino per lavorare con Texas Instruments ADS1110, un IC convertitore analogico-digitale a 16 bit incredibilmente piccolo ma utile.
Può funzionare tra 2,7 e 5,5 V, quindi va bene anche per Arduino Due e altre schede di sviluppo a bassa tensione. Prima di continuare, scarica la scheda tecnica (pdf) in quanto sarà utile ea cui fare riferimento durante questo tutorial. L'ADS1110 ti offre la possibilità di un ADC più accurato di quello offerto dagli ADC a 10 bit di Arduino ed è relativamente facile da usare. Tuttavia è disponibile solo come parte nuda in SOT23-6.
Passo 1:
La buona notizia è che puoi ordinare l'ADS1110 montato su una scheda breakout molto comoda. L'ADS1110 utilizza il bus I2C per la comunicazione. E poiché ci sono solo sei pin non puoi impostare l'indirizzo del bus, puoi invece scegliere tra sei varianti di ADS1110, ognuna con il proprio indirizzo (vedi pagina due della scheda tecnica).
Come puoi vedere nella foto sopra, il nostro è contrassegnato con "EDO" che corrisponde all'indirizzo del bus 1001000 o 0x48h. E con i circuiti di esempio abbiamo usato resistori pull-up da 10kΩ sul bus I2C.
È possibile utilizzare l'ADS1110 come ADC single-ended o differenziale, ma prima è necessario esaminare il registro di configurazione utilizzato per controllare vari attributi e il registro dei dati.
Passaggio 2: registro di configurazione
Vai a pagina undici della scheda tecnica. Il registro di configurazione ha una dimensione di un byte e, poiché l'ADS1110 si ripristina su un ciclo di alimentazione, è necessario ripristinare il registro se le esigenze sono diverse dai valori predefiniti. La scheda tecnica lo spiega abbastanza chiaramente… i bit 0 e 1 determinano l'impostazione del guadagno per il PGA (amplificatore a guadagno programmabile).
Se stai solo misurando tensioni o sperimentando, lasciali a zero per un guadagno di 1V/V. Successivamente, la velocità dei dati per l'ADS1110 è controllata con i bit 2 e 3. Se il campionamento continuo è attivato, questo determina il numero di campioni al secondo prelevati dall'ADC.
Dopo alcuni esperimenti con Arduino Uno, abbiamo scoperto che i valori restituiti dall'ADC erano un po' fuori uso quando si utilizzava la velocità più alta, quindi lasciarlo come 15 SPS se non diversamente richiesto. Il bit 4 imposta il campionamento continuo (0) o il campionamento una tantum (1). Ignora i bit 5 e 6, tuttavia sono sempre impostati come 0.
Infine il bit 7 - se sei in modalità di campionamento una tantum, impostandolo su 1 richiede un campione - e leggendolo ti dirà se i dati restituiti sono nuovi (0) o vecchi (1). Puoi verificare che il valore misurato sia un nuovo valore: se il primo bit del byte di configurazione che viene dopo i dati è 0, è nuovo. Se restituisce 1, la conversione ADC non è terminata.
Passaggio 3: registro dati
Poiché l'ADS1110 è un ADC a 16 bit, restituisce i dati su due byte, quindi segue il valore del registro di configurazione. Quindi, se richiedi tre byte, l'intero lotto ritorna. I dati sono in forma "complemento a due", che è un metodo per utilizzare numeri con segno con binario.
La conversione di questi due byte viene eseguita con alcuni semplici calcoli. Quando si campiona a 15 SPS, il valore restituito dall'ADS1110 (non la tensione) cade tra -32768 e 32767. Il byte più alto del valore viene moltiplicato per 256, quindi aggiunto al byte inferiore, che viene quindi moltiplicato per 2.048 e infine diviso per 32768. Niente panico, poiché lo facciamo nel prossimo schizzo di esempio.
Passaggio 4: modalità ADC single-ended
In questa modalità è possibile leggere una tensione che cade tra zero e 2.048 V (che è anche la tensione di riferimento incorporata per l'ADS1110). Il circuito di esempio è semplice (dalla scheda tecnica).
Non dimenticare i resistori di pull-up da 10kΩ sul bus I2C. Il seguente schizzo utilizza l'ADS1110 nella modalità predefinita e restituisce semplicemente la tensione misurata:
// Esempio 53.1 - Voltmetro unilaterale ADS1110 (0~2.048VDC) #include "Wire.h" #define ads1110 0x48 float voltage, data; byte highbyte, lowbyte, configRegister; void setup() { Serial.begin(9600); Wire.begin(); } void loop() { Wire.requestFrom(ads1110, 3); while(Wire.available()) // assicurati che tutti i dati arrivino in { highbyte = Wire.read(); // byte alto * B11111111 lowbyte = Wire.read(); // low byte configRegister = Wire.read(); }
dati = byte alto * 256;
dati = dati + byte basso; Serial.print("Dati >> "); Serial.println(data, DEC); Serial.print("Tensione >> "); tensione = dati * 2.048; tensione = tensione / 32768.0; Serial.print(voltaggio, DEC); Serial.println("V"); ritardo(1000); }
Passaggio 5:
Una volta caricato, collega il segnale per misurare e apri il monitor seriale: ti verrà presentato qualcosa di simile all'immagine del monitor seriale mostrata in questo passaggio.
Se è necessario modificare il guadagno dell'amplificatore di guadagno programmabile interno dell'ADC, è necessario scrivere un nuovo byte nel registro di configurazione utilizzando:
Wire.beginTransmission(ads1110);Wire.write(byte di configurazione); Wire.endTransmission();
prima di richiedere i dati dell'ADC. Questo sarebbe 0x8D, 0x8E o 0x8F per i valori di guadagno rispettivamente di 2, 4 e 8 e utilizzare 0x8C per ripristinare l'ADS1110 ai valori predefiniti.
Passaggio 6: modalità ADC differenziale
In questa modalità è possibile leggere la differenza tra due tensioni che cadono ciascuna tra zero e 5 V. Il circuito di esempio è semplice (dalla scheda tecnica).
Dobbiamo notare qui (e nella scheda tecnica) che l'ADS1110 non può accettare tensioni negative su nessuno degli ingressi. È possibile utilizzare lo schizzo precedente per gli stessi risultati e la tensione risultante sarà il valore di Vin- sottratto da Vin+. Ad esempio, se avessi 2 V su Vin+ e 1 V su Vin- la tensione risultante sarebbe 1 V (con il guadagno impostato su 1).
Ancora una volta speriamo che tu abbia trovato questo interessante e possibilmente utile. Questo post ti è stato presentato da pmdway.com: tutto per i produttori e gli appassionati di elettronica, con consegna gratuita in tutto il mondo.
Consigliato:
Arduino Nano - Tutorial accelerometro digitale a 3 assi MMA8452Q a 12 bit/8 bit: 4 passaggi
Arduino Nano - MMA8452Q Esercitazione sull'accelerometro digitale a 3 assi a 12 bit / 8 bit: MMA8452Q è un accelerometro intelligente, a bassa potenza, a tre assi, capacitivo, microlavorato con 12 bit di risoluzione. Le opzioni flessibili programmabili dall'utente sono fornite con l'ausilio di funzioni integrate nell'accelerometro, configurabili su due interruzioni
Come far funzionare i servomotori utilizzando Moto:bit con Micro:bit: 7 passaggi (con immagini)
Come eseguire i servomotori utilizzando Moto:bit con Micro:bit: Un modo per estendere la funzionalità del micro:bit è utilizzare una scheda chiamata moto:bit di SparkFun Electronics (circa $ 15-20). Sembra complicato e ha molte funzioni, ma non è difficile far funzionare i servomotori da esso. Moto:bit ti permette di
7 segmenti per visualizzare i valori ADC #Arduino, #Arduino: 4 passaggi
7 segmenti per visualizzare i valori ADC #Arduino, #Arduino: In questo articolo realizzerò un progetto che è ancora correlato all'articolo precedente. Vale a dire l'elaborazione dei dati ADC, quindi non è necessario un monitor seriale per vedere il valore dei dati adc. in questo articolo farò visualizzare un visualizzatore di valori ADC. quindi non
Arduino e PCF8591 ADC DAC IC: 7 passaggi
Arduino e PCF8591 ADC DAC IC: hai mai desiderato più pin di ingresso analogico sul tuo progetto Arduino, ma non volevi sborsare per un Mega? Oppure desideri generare segnali analogici? Quindi dai un'occhiata all'argomento del nostro tutorial: NXP PCF8591 IC. Risolve entrambi questi problemi
Riproduci brani con Arduino utilizzando ADC a PWM su trasformatore flyback o altoparlante: 4 passaggi
Riproduci brani con Arduino usando ADC su PWM su trasformatore o altoparlante Flyback: Ciao ragazzi, questa è la seconda parte del mio altro istruttivo (che è stato molto difficile), in sostanza, in questo progetto, ho usato l'ADC e i TIMER sul mio Arduino per converti il segnale audio in un segnale PWM. Questo è molto più semplice del mio precedente Instructa