Sommario:

Arduino e ADC a 16 bit TI ADS1110: 6 passaggi
Arduino e ADC a 16 bit TI ADS1110: 6 passaggi

Video: Arduino e ADC a 16 bit TI ADS1110: 6 passaggi

Video: Arduino e ADC a 16 bit TI ADS1110: 6 passaggi
Video: Getting Started with ADC Functionality of ESP32 using MicroPython 2024, Dicembre
Anonim
Arduino e ADC a 16 bit TI ADS1110
Arduino e ADC a 16 bit TI ADS1110

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:

Immagine
Immagine

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

Modalità ADC single-ended
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:

Immagine
Immagine

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

Modalità ADC differenziale
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: