i2c Potenciómetro digital (AD5241)

-1

Estoy intentando configurar un programa simple (vista de laboratorio) para usar un potenciómetro digital como resistencia variable y luego leer el voltaje. Precisamente he utilizado un dpot SPI con éxito, sin embargo, estoy teniendo problemas al cambiar a un dpot controlado por i2C.

Siguiendo la hoja de datos que se encuentra aquí ( enlace ) He realizado las siguientes conexiones.

[1] A1 - > 5V
[2] W1 - > Entrada analógica
[3] B1 - > DGND
[4] Vdd - > 5V
[5] SHDN - > Vdd (5V)
[6] SCL - > I2C SCL
[7] SDA - > I2C SDA

[8] AD0 - > Salida analógica 0V
[9] AD1 - > Salida analógica 0V
[10] DGND - > DGND
[11] Vss - > DGND
[12-14] - > Sin conexiones

Cuando hago estas conexiones y ejecuto mi programa, termino leyendo un voltaje constante que no cambia con la variación de la entrada de 8 bits. Además, estoy experimentando un sobrecalentamiento del chip si el programa se ejecuta durante demasiado tiempo, lo que no debería estar ocurriendo.

Hay varias áreas en las que creo que el error puede surgir de:

  1. Las conexiones de pines descritas anteriormente son incorrectas.
  2. La dirección del esclavo es incorrecta. No estoy seguro de si debo enviar salidas analógicas o digitales a los pines AD para definir la dirección del esclavo. los estados de la hoja de datos "Paquetes de bits de dirección programables del pin. Deben coincidir con los estados lógicos en el pin AD1 y el pin AD0". He establecido tanto el valor lógico bajo (creo) y, por lo tanto, supongo que AD0 y AD1 son 00. Por lo tanto, el bit de dirección del esclavo es 01011 y luego 00 es 255. También he intentado configurar ambos en boolean false con una salida digital pero Experimento los mismos problemas.
  3. Soldadura incorrecta. El chip es un chip SOIC y lo he soldado a mano en una placa adaptadora (winslow w9502RC) para poder colocarlo en mi tablero.

¿Alguien tiene una idea de cuáles podrían ser los problemas?

    
pregunta bsia5466

1 respuesta

1

Puedo darte una lista de verificación según lo que estés viendo. Si el dispositivo se está calentando, sospecho que una entrada digital no se está controlando correctamente.

  1. La interfaz I2C debe tener pull-ups. Hay tablas disponibles, pero de 22k a 4,7k son comunes para tiradas cortas. Esta interfaz es un colector abierto de drenaje / abierto, por lo que tiene que retirarse para los momentos en que la interfaz está inactiva.

  2. Los pines de dirección (AD0 y AD1) son entradas digitales y deben estar vinculados a un nivel digital válido (ya sea Vdd o Vss).

Como el dispositivo está predeterminado en el rango medio en el encendido, puede intentar leer el registro para confirmar la comunicación. Debería poder leer el valor de la resistencia con un multímetro (desconectado de la entrada analógica; leer desde el terminal del limpiaparabrisas al terminal A o B).

Si eso no funciona, deberá capturar las trazas del osciloscopio de SDA y SCL y quizás podamos ayudarlo más.

Verifiqué el pinout de la hoja de datos y no veo ningún error (aparte de la salida analógica de 0V ambigua para AD0 y AD1).

También debe verificar para asegurarse de que está afirmando la dirección correcta para el dispositivo (consulte la hoja de datos) o no responderá (ni siquiera con un NAK).

Actualizar

Basado en tus últimas respuestas:

2k no debe ser demasiado bajo. La fórmula es bastante simple: R (min) > = (Vcc - Vo (bajo)) / Io (bajo) (max). En un mundo de 3.3V, para este dispositivo y Vo (bajo) < = 0.4V, tenemos 2.9V / 3mA ~ 1k pull-up mínimo en SDA. Debe comprobar el maestro para las características de SCL.

Como también ha conectado los pines de dirección a una base sólida, lo más probable es que la falla del protocolo de comunicación.

Asegúrese de que está dirigiendo el dispositivo correctamente (los bits de dirección de orden inverso son muy problema común). Hay un diagrama de tiempo en la hoja de datos que sé que es preciso, ya que estoy usando un primo cercano de este dispositivo (AD5144) que funciona perfectamente. Calculo la dirección del dispositivo como 0x59 para lectura y 0x58 para escritura.

Sugiero obtener un alcance en SDA y SCL, tomar la pantalla durante el intento de comunicación y publicarla.

Después de haber atado todo correctamente, ¿el dispositivo aún se está calentando? ¿Qué variante de resistencia está utilizando y cuál es el nivel de entrada analógica? Esa información será muy útil.

HTH

    
respondido por el Peter Smith

Lea otras preguntas en las etiquetas