comunicación I2C con DAC

0

Estoy intentando usar un DAC8571 ( hoja de datos ) y estoy intentando configurar una comunicación entre este convertidor y un Arduino Mega a través de I2C.

La comunicación entre el Arduino y mi computadora se realiza mediante LabView y LINX VIs ( MakerHub ).

Mi comunicación I2C ya funciona entre un sensor y el Arduino Mega y solo me gustaría agregar el DAC. El problema es que el DAC no reacciona en absoluto cuando escribo en el I2C con el Arduino.

Mi primera preocupación es que el DAC no funciona en absoluto (¿podría haberlo roto con el calor durante la soldadura?). Tengo dos de ellos y los estoy probando en una placa de pruebas. Cuando los conecto (pin1 = 5V, pinta2 = 5V, pin3 = no conectado, pin4 = voltímetro, pin8 = gnd, pin7,6 = I2C con 10k pull-ups, A0 = gnd), nadie da 0V en la salida como Yo esperaría y darían diferentes salidas (supongo que al menos uno de ellos está roto). ¿Hay alguna forma de probar el DAC sin usar la comunicación I2C? Quiero evitar la comunicación I2C porque tal vez el error está ahí.

Solo para información adicional agrego el VI que usé para probar el DAC:

ACTUALIZACIÓN DE LA SITUACIÓN: Intenté leer el bus I2C en la dirección DAC (76) y obtengo una secuencia de bytes (0, 30, 16), que es exactamente lo que debería dar porque es lo que he establecido ... PERO, el DAC la salida no cambia: /.

INFORMACIÓN ADICIONAL: Para establecer el valor del DAC (dirección 76 = 1001100 más bit de escritura = 0) uso tres bytes: 16 = 00010000 (comando = escritura de registro temporal y carga DAC con datos), x (primer bit de 8 que se cargará a partir de MSB ) yy (segundo grupo de 8 bits). En la imagen x = 0 e y = 30. Cuando leí del DAC, me da su estado 0, 30 y 16, pero la salida no se ha actualizado.

He probado mi DAC y ambos reaccionan de la misma manera con respecto al I2C, pero uno tiene una salida fija a aproximadamente 0.5V y el otro a 5V.

    
pregunta Worldsheep

2 respuestas

0

Finalmente compré 3 DAC8571 más. Soldarlos con un cuidado especial (no los caliente demasiado y me conecte a tierra periódicamente) resolvió el problema. Creo que los que estaba tratando previamente estaban muertos. Para tenerlo funcionando me enchufé: (pin1 = 5V, pint2 = 5V, pin3 = conectado a la salida, es decir, pin4, pin4 = voltímetro, pin8 = gnd, pin7,6 = I2C con 10k pull-ups, A0 = gnd).

    
respondido por el Worldsheep
2

No es que yo sepa, sin embargo, una solución alternativa para depurar esto es usar un osciloscopio o un analizador lógico para verificar el bit Ack del mensaje binario para ver si hay un protocolo de enlace, bit 9 en la señal SCL.

Si no lo reconoce, entonces usted tampoco

  • tiene la dirección incorrecta del DAC
  • configure la comunicación I2C a velocidad de transmisión incorrecta
  • faltan o tienen valores de resistencias de subida / bajada incorrectos

Si lo hace, entonces usted tampoco

  • no están enviando los mensajes correctos para que funcione
  • no tiene un voltaje válido para que haga referencia

Respuesta a la actualización

Deberías leer la hoja de datos. Está claro que el DAC responde a la unidad uC, sin embargo, no está claro en función de lo que nos ha dado si su conjunto de mensajes intercambiados con el DAC es apropiado, y parece que es un conjunto de bytes que deben intercambiarse un solo comando.

Además de eso, debe asegurarse de que el resto de las configuraciones estén configuradas para la aplicación adecuada, como el modo de alimentación, la escala de voltaje, etc. ...

    
respondido por el Iancovici

Lea otras preguntas en las etiquetas