Implementando I2C a analógico

8

¿Cómo puedo implementar (o tal vez hay un IC que ya lo hace) una placa cuya entrada sería I2C y la salida sería voltaje analógico (0V - 5V)?

Eventualmente me gustaría conectar un par de esos a los pines IO de un arduino creando efectivamente salidas digitales a analógicas.

mjh2007
fuente

Respuestas:

11

Considere el Microchip TC1321 , es un convertidor digital a analógico (DAC) I2C con 10 bits de resolución (4,88 mV / paso), disponible en SOIC8 (necesitará una placa adaptadora fácil de soldar [por ejemplo , sparkfun o futurlec ) y funciona desde 5 voltios Si está de acuerdo con solo 8 bits (19.5mV / paso) considere el TC1320 .

Ambos chips están disponibles en Mouser o Microchip Direct por alrededor de $ 2.

Si puede usar SPI en lugar de I2C, sus opciones son más fáciles, el MCP4821 y el MCP4822 son chips DAC SPI simples y duales que vienen en buenos paquetes PDIP8. Nuevamente, cuestan alrededor de $ 2 de los lugares habituales (ratón, digikey, microchip directo, farnell).

derramado
fuente
¿Por qué no poner las URL reales debajo del texto principal al estilo de las notas al pie?
Amós
@Amos, porque el formateador hace un buen trabajo al reconocer las URL en muchos formatos, y el filtro de 'nuevo usuario' impacta en el conteo (enlaces)> 1, independientemente de su formato. Perdí una respuesta extensa el primer día por la misma razón (la publiqué y no vi el mensaje de error).
Craig Trader
Bien, no me había dado cuenta.
Amós
Es un convertidor de digital a analógico, no de analógico a digital.
Endolith
Y debería poder editar su publicación y agregar los enlaces ahora que tiene algo de reputación.
endolith
7

Dependiendo de lo que esté conduciendo, si tiene un Arduino ya tiene de tres a seis salidas analógicas, ya que puede usar la función AnalogWrite para establecer el ciclo de trabajo de los pines PWM. La frecuencia es de aproximadamente 490 Hz, más que suficiente para los LED (nuevamente, depende de su aplicación). Puede establecer el valor de 0 a 255, dándole una resolución de (5v / 256 =) .020V.

Debe determinar si 490 Hz es una velocidad suficiente, pero PWM se usa para simular voltaje analógico para muchas aplicaciones, y puede ajustarse al suyo sin partes o programación adicionales.

También puede considerar usar un filtro (red capacitor-resistencia) para suavizar la onda cuadrada. Le dará más margen de maniobra en las aplicaciones que puede controlar, y los pasivos son baratos, pero dependiendo de su aplicación, puede que ni siquiera sea necesario.

http://www.arduino.cc/en/Reference/AnalogWrite

Lou
fuente
3

Para que lo sepas, un AVR (el chip utilizado en un Arduino) ya puede producir voltajes 'analógicos' mediante el uso de PWM + un condensador para suavizar la forma de onda (el condensador ni siquiera es necesario en algunos casos). No es tan alta resolución como un chip DAC dedicado, pero es lo suficientemente bueno para muchas necesidades.

davr
fuente
1

Aquí hay una entrada de Wikipedia sobre potenciómetros digitales. Estas macetas digitales pueden actuar como salida analógica en el arduino. Actuaría como un potenciómetro regular que barre todos los voltajes desde 0 - 5V a través de comandos seriales (de algún tipo). Si no tuviera que tener I2C, entonces podría usar este bote digital de Parralax o este chip de Jameco. Los únicos chips I2C que he visto son todos de montaje superficial en lugar de orificio pasante, esto hace que sea más difícil trabajar con ellos. Aquí está el enlace a todos los potenciómetros digitales I2C de Jameco. ¡Espero que esto haya sido útil y la mejor de las suertes!

Hristos
fuente
2
Los potes digitales generalmente se usan para establecer la ganancia o atenuación de un circuito externo en unos pocos pasos discretos (256). Para obtener un voltaje de CC, necesitaría conectarlo a una fuente de voltaje, pero en realidad no es la aplicación para la que están destinados. Un DAC, por otro lado, genera un voltaje directamente, y generalmente tendrá muchos más pasos y más precisión. Un DAC es lo que busca este póster.
endolith