Tabla de contenido:

Arduino y el ADC TI ADS1110 de 16 bits: 6 pasos
Arduino y el ADC TI ADS1110 de 16 bits: 6 pasos

Video: Arduino y el ADC TI ADS1110 de 16 bits: 6 pasos

Video: Arduino y el ADC TI ADS1110 de 16 bits: 6 pasos
Video: #340 How good are the ADCs inside Arduinos, ESP8266, and ESP32? And external ADCs (ADS1115) 2024, Noviembre
Anonim
Arduino y el ADC TI ADS1110 de 16 bits
Arduino y el ADC TI ADS1110 de 16 bits

En este tutorial examinamos el uso de Arduino para trabajar con el ADS1110 de Texas Instruments, un CI convertidor de analógico a digital de 16 bits increíblemente pequeño pero útil.

Puede funcionar entre 2,7 y 5,5 V, por lo que también está bien para Arduino Due y otras placas de desarrollo de bajo voltaje. Antes de continuar, descargue la hoja de datos (pdf), ya que será útil y se hará referencia a ella durante este tutorial. El ADS1110 le brinda la opción de un ADC más preciso que el ofrecido por los ADC de 10 bits de Arduino, y es relativamente fácil de usar. Sin embargo, solo está disponible como pieza básica en SOT23-6.

Paso 1:

Imagen
Imagen

La buena noticia es que puede pedir el ADS1110 montado en una placa de conexión muy conveniente. El ADS1110 usa el bus I2C para la comunicación. Y como solo hay seis pines, no puede configurar la dirección del bus; en su lugar, puede seleccionar entre seis variantes del ADS1110, cada una con su propia dirección (consulte la página dos de la hoja de datos).

Como puede ver en la foto de arriba, el nuestro está marcado con “EDO” que coincide con la dirección del bus 1001000 o 0x48h. Y con los circuitos de ejemplo, hemos utilizado resistencias pull-up de 10 kΩ en el bus I2C.

Puede usar el ADS1110 como ADC de un solo extremo o diferencial, pero primero debemos examinar el registro de configuración que se usa para controlar varios atributos, y el registro de datos.

Paso 2: Registro de configuración

Pase a la página once de la hoja de datos. El registro de configuración tiene un tamaño de un byte y, a medida que el ADS1110 se reinicia en un ciclo de energía, debe reiniciar el registro si sus necesidades son diferentes a las predeterminadas. La hoja de datos lo explica con bastante claridad … los bits 0 y 1 determinan la configuración de ganancia para el PGA (amplificador de ganancia programable).

Si solo está midiendo voltajes o experimentando, déjelos en cero para obtener una ganancia de 1 V / V. A continuación, la velocidad de datos para el ADS1110 se controla con los bits 2 y 3. Si tiene activado el muestreo continuo, esto determina el número de muestras por segundo tomadas por el ADC.

Después de experimentar un poco con un Arduino Uno, encontramos que los valores devueltos por el ADC estaban un poco fuera de lugar cuando se usaba la tasa más rápida, así que déjelo como 15 SPS a menos que se requiera lo contrario. El bit 4 establece el muestreo continuo (0) o el muestreo único (1). Ignore los bits 5 y 6, sin embargo, siempre se establecen en 0.

Finalmente, el bit 7, si está en el modo de muestreo único, al establecerlo en 1 solicita una muestra, y leerlo le dirá si los datos devueltos son nuevos (0) o antiguos (1). Puede verificar que el valor medido sea un valor nuevo; si el primer bit del byte de configuración que viene después de los datos es 0, es nuevo. Si devuelve 1, la conversión de ADC no ha finalizado.

Paso 3: Registro de datos

Como el ADS1110 es un ADC de 16 bits, devuelve los datos en dos bytes y luego sigue con el valor del registro de configuración. Entonces, si solicita tres bytes, todo el lote regresa. Los datos están en forma de "complemento a dos", que es un método para usar números con signo con binario.

La conversión de esos dos bytes se realiza mediante algunas matemáticas simples. Al muestrear a 15 SPS, el valor devuelto por el ADS1110 (no el voltaje) cae entre -32768 y 32767. El byte más alto del valor se multiplica por 256, luego se suma al byte más bajo, que luego se multiplica por 2.048 y finalmente dividido por 32768. Que no cunda el pánico, ya que lo haremos en el siguiente boceto de ejemplo.

Paso 4: Modo ADC de un solo extremo

Modo ADC de un solo extremo
Modo ADC de un solo extremo

En este modo, puede leer un voltaje que cae entre cero y 2.048 V (que también es el voltaje de referencia incorporado para el ADS1110). El circuito de ejemplo es simple (de la hoja de datos).

No olvide las resistencias pull-up de 10 kΩ en el bus I2C. El siguiente esquema usa el ADS1110 en el modo predeterminado y simplemente devuelve el voltaje medido:

// Ejemplo 53.1 - Voltímetro de una cara ADS1110 (0 ~ 2.048VDC) #include "Wire.h" #define ads1110 0x48 float voltage, data; byte highbyte, lowbyte, configRegister; configuración vacía () {Serial.begin (9600); Wire.begin (); } bucle vacío () {Wire.requestFrom (ads1110, 3); while (Wire.available ()) // asegúrese de que todos los datos vengan en {highbyte = Wire.read (); // byte alto * B11111111 lowbyte = Wire.read (); // byte bajo configRegister = Wire.read (); }

datos = highbyte * 256;

datos = datos + byte bajo; Serial.print ("Datos >>"); Serial.println (datos, DEC); Serial.print ("Voltaje >>"); voltaje = datos * 2.048; voltaje = voltaje / 32768.0; Serial.print (voltaje, DEC); Serial.println ("V"); retraso (1000); }

Paso 5:

Imagen
Imagen

Una vez cargado, conecte la señal para medir y abra el monitor en serie; se le presentará algo similar a la imagen del monitor en serie que se muestra en este paso.

Si necesita alterar la ganancia del amplificador de ganancia programable interno del ADC, deberá escribir un nuevo byte en el registro de configuración usando:

Wire.beginTransmission (ads1110); Wire.write (byte de configuración); Wire.endTransmission ();

antes de solicitar los datos de ADC. Esto sería 0x8D, 0x8E o 0x8F para valores de ganancia de 2, 4 y 8 respectivamente, y use 0x8C para restablecer el ADS1110 a los valores predeterminados.

Paso 6: Modo ADC diferencial

Modo ADC diferencial
Modo ADC diferencial

En este modo puede leer la diferencia entre dos voltajes que caen entre cero y 5 V. El circuito de ejemplo es simple (de la hoja de datos).

Debemos notar aquí (y en la hoja de datos) que el ADS1110 no puede aceptar voltajes negativos en ninguna de las entradas. Puede usar el esquema anterior para obtener los mismos resultados, y el voltaje resultante será el valor de Vin- restado de Vin +. Por ejemplo, si tuviera 2 V en Vin + y 1 V en Vin-, el voltaje resultante sería 1 V (con la ganancia establecida en 1).

Una vez más, esperamos que le haya resultado interesante y posiblemente útil. Esta publicación presentada por pmdway.com: todo para fabricantes y entusiastas de la electrónica, con envío gratuito en todo el mundo.

Recomendado: