Tabla de contenido:
- Paso 1:
- Paso 2: Registro de configuración
- Paso 3: Registro de datos
- Paso 4: Modo ADC de un solo extremo
- Paso 5:
- Paso 6: Modo ADC diferencial
Video: Arduino y el ADC TI ADS1110 de 16 bits: 6 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:42
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:
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
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:
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
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:
Arduino Nano - Tutorial de acelerómetro digital de 3 ejes de 12 bits / 8 bits MMA8452Q: 4 pasos
Arduino Nano - MMA8452Q Tutorial de acelerómetro digital de 3 ejes de 12 bits / 8 bits: El MMA8452Q es un acelerómetro inteligente, de baja potencia, tres ejes, capacitivo y micromaquinado con 12 bits de resolución. Se proporcionan opciones flexibles programables por el usuario con la ayuda de funciones integradas en el acelerómetro, configurables para dos interrupciones
Tutorial Python del acelerómetro digital Raspberry Pi MMA8452Q de 3 ejes de 12 bits / 8 bits: 4 pasos
Raspberry Pi MMA8452Q 3-Axis 12-bit / 8-bit Acelerómetro digital Python Tutorial: El MMA8452Q es un acelerómetro inteligente, de baja potencia, tres ejes, capacitivo, micromecanizado con 12 bits de resolución. Se proporcionan opciones flexibles programables por el usuario con la ayuda de funciones integradas en el acelerómetro, configurables para dos interrupciones
Juego OLED Reckless Racer Arduino, AdafruitGFX y conceptos básicos de mapas de bits: 6 pasos
Reckless Racer Arduino OLED Game, AdafruitGFX y Bitmaps Basics: En este tutorial veremos cómo usar mapas de bits usando la biblioteca Adafruit_GFX.c como una especie de sprites en un juego. El juego más simple que se nos ocurrió es un juego de autos que cambia de carril de desplazamiento lateral, al final nuestro probador beta y codificador asistente de
Nano píxeles de 26 bits con Arduino: 4 pasos
Nano Pixels 26 Bit usando Arduino: En mi artículo anterior, hice un tutorial sobre cómo usar el WS2812 Nano Pixel LED. En ese artículo, usé el 16 Bit Ring Nano Pixel WS2812. Y en este artículo, te mostraré cómo usar el anillo de 26 bits Nano Pixels WS2812. En la sección de hardware
DIY MusiLED, LED sincronizados con música con una aplicación de Windows y Linux con un clic (32 bits y 64 bits). Fácil de recrear, fácil de usar, fácil de portar: 3 pasos
DIY MusiLED, LED sincronizados con música con una aplicación de Windows y Linux con un solo clic (32 bits y 64 bits). Fácil de recrear, fácil de usar, fácil de portar: este proyecto lo ayudará a conectar 18 LED (6 rojos + 6 azules + 6 amarillos) a su placa Arduino y analizar las señales en tiempo real de la tarjeta de sonido de su computadora y transmitirlas a los LED para iluminarlos según los efectos de ritmo (Snare, High Hat, Kick)