ADC para medir 0-5V pero conectado a un dispositivo de 3.3V

4

Tengo un BeagleBone (BB) y quiero conectarle la salida analógica de un controlador de motor. El controlador del motor crea una salida en el rango de -4V a + 4V y las entradas anlog de BB solo aceptan voltajes entre 0V a 1.8V (los pines digitales funcionan a 3.3V). Solo tengo un espacio limitado comparativamente pequeño de perfboard disponible, pero 4 motores para monitorear. Puedo proporcionar alimentación de 5 V y 3,3 V y voltaje de referencia de 1,8 V. Aquí están las opciones que encontré hasta ahora:

  1. Haz un circuito de amplificador operacional para convertir [-4..4] a [0..1.8]. Probablemente sea una buena forma, porque podría usar directamente los BB-ADC, pero no tengo confianza en estos circuitos (encontré esto example ) y necesitaría uno para cada entrada que parece estar en muchas partes / espacio.
  2. Use un ADC y conéctelo a través de I2C: El Max127 parece proporcionar exactamente lo que yo querer. Alimentación individual de 5 V, rango de entrada analógica entre [-5 .. + 5] y la interfaz I2C. Realmente me gustaría usar este, el único problema que tengo es que, según la hoja de datos, el alto digital se ve como 0.7 * Vdd = 3.5V. Ahora no sé si 3.3V sería detectado correctamente (¿alguien tiene experiencia con eso?). No es posible subir a 5V ya que el BB no es tolerable a 5V.
  3. El Max1270 es básicamente el mismo que el Max127 pero con la interfaz SPI. Allí la hoja de datos indica que el umbral alto del dígito es 2.4V. Sé que el esclavo I2C solo tira hacia abajo. ¿Cómo funciona con spi, porque la hoja de datos menciona voltajes de salidas digitales (que son Vdd)?
  4. Pierde un poco de resolución y solo usa el rango de salida de [0..4] V. Eso da una mayor variedad de posibles ADCs unipolares, pero la mayoría de ellos tienen la misma limitación con 0.7 * Vdd para señales digitales altas.
  5. Como en 4. Pero use ADCs con un voltaje de suministro de 3.3V que tiene un rango de [0..5], pero no pude encontrar ninguno con 4+ canales.

Creo que de alguna manera voy en círculos. ¿Alguien sabe soluciones viables o cómo abordar los problemas mencionados de (al menos) uno de los descritos anteriormente? Por lo general, preferiría las partes de orificio (ya que es perfboard), pero probablemente también podría obtener algunos tableros pequeños para dispositivos SMD.

    
pregunta the_summer

2 respuestas

3
  1. Aunque es posible una solución pasiva, a menudo, dependiendo de la impedancia de la fuente y la impedancia de entrada del ADC, por lo general es una buena idea usar un indicador de cambios para el cambio de nivel / ganancia. Una opción es un circuito de inversión como este:

    Simulación:

    El beneficio es una impedancia de salida muy baja para controlar el ADC (muchos ADC requieren una impedancia de señal mínima de < 10kΩ)
    La impedancia de entrada es solo R3 (133.2 kΩ en este circuito) Para evitar efectos de carga, desea que la impedancia de su señal sea inferior a 10 kΩ o menos. Si es más alto, puede aumentar R3 y R2 para aumentar la impedancia de entrada (siempre que la relación permanezca igual, también lo hace la ganancia)
    A algunas operaciones no les gusta una ganancia inferior a 1, por lo que debe revisar la hoja de datos para asegurarse de que se mantendrá estable en esta configuración. Además, un pequeño capacitor a través de R2 suele ser una buena idea para controlar el ancho de banda de manera adecuada.

    Las lecturas se invertirán, pero es fácil corregir esto en el firmware.

    Se podría utilizar un opamp cuádruple con un IC de referencia de voltaje decente y un divisor para proporcionar la referencia de 735 mV para todas las entradas no inversoras. El opamp debe poder desplazar su salida hacia el suelo; algunos amplificadores operacionales no pueden hacer esto, así que verifique la hoja de datos.

  2. Para la opción I2C y MAX127 (que se ve bien), puede usar un IC de cambio de nivel para convertir entre los niveles de 3.3V y 5V necesarios. Hay bastantes IC de este tipo diseñados para su uso con I2C. Eche un vistazo a Farnell, o Mouser, Digikey, etc. El PCA9306 es un ejemplo.

  3. SPI usa salidas "estándar" que se activan en alto / bajo (a diferencia de I2Cs en drenaje abierto) También puede convertir este nivel fácilmente, ya que cada línea es solo de una dirección. Se pueden utilizar un par de transistores.

respondido por el Oli Glaser
6

¡Esto se puede hacer con tres resistencias!

simular este circuito : esquema creado usando CircuitLab

No se necesitan componentes activos. Cambia de -4 a 4V a 0-1.8V, perfectamente lineal. V2 es su voltaje de entrada (-4 a 4V). V1 es solo su riel de 1.8V.

La impedancia de entrada es de 22K, lo que no cargará sus motores en un grado significativo, y la impedancia de salida es de aproximadamente 5K, lo suficientemente baja como para impulsar cualquier ADC.

    
respondido por el XMPPwocky

Lea otras preguntas en las etiquetas