¿Cómo puedo hacer un atenuador simple controlado por voltaje?

Habiendo descubierto cuán horrible es la ondulación de CA en algunos de mis adaptadores de pared de 5 V CC, decidí hacer un programa Arduino para calcular el componente de CA RMS y el componente de CC de un adaptador bajo cargas de corriente variables.

Mi problema actual es que el Arduino (y sus ADC y DAC) funcionan con 5V, por lo que 0-5V es su rango de entrada y salida analógica. Muchos adaptadores de "5V" emiten un poco más que eso (y también quiero poder probar adaptadores de 9V y 12V). Entonces, quiero una manera para que Arduino atenúe la entrada a algo dentro del rango de 0-5V, y la única forma en que puedo pensar en hacer esto es usar la salida de voltaje analógico de Arduino (que, me doy cuenta, es solo PWM digitales). Por lo tanto, necesito un atenuador controlado por voltaje.

Los requisitos de aplicación son:

  1. Debe ser capaz de atenuar la entrada desde una ganancia de 1 hasta una ganancia de alrededor de 0,25 (para obtener, por ejemplo, una entrada de 15 V dentro del rango de ADC de 0-5 V)
  2. El rango de voltajes de control también debe estar dentro de 0-5V. Además, el rango no puede ser demasiado pequeño, ya que el Arduino solo puede seleccionar 256 valores entre 0-5V. En otras palabras, no puedo tener un voltaje de control de 2000 V que me dé una ganancia de 1 y un voltaje de control de 2001 V me dé una ganancia de 0,25, ya que el Arduino no tiene ese tipo de control sobre su salida analógica. .
  3. Cualquier atenuación debe afectar las porciones de CA y CC por igual, o de lo contrario mis proporciones ac_component/dc_component serán erróneas.
  4. Me gustaría mucho no tener que suministrar rieles de voltaje adicionales. Por ejemplo, no quiero tener que suministrar +12V y -12V para un determinado amplificador operacional. Si todo se puede hacer con un riel de 5V, eso es óptimo. O, +12V probablemente también estará bien.
  5. La atenuación no necesita ser lineal con el voltaje. Todo lo que busco es poder calcular (RMS ac_component / dc_component), y esas proporciones permanecerán igual sin que yo sepa la atenuación exacta.
  6. Entiendo que los JFET (consulte los esquemas a continuación) no son tan adecuados para la operación de CC por problemas térmicos o algo así. La deriva gradual en la atenuación está bien. Mi programa Arduino solo muestra los voltajes del adaptador de pared durante aproximadamente 1/10 de segundo. Siempre que la ganancia no cambie apreciablemente durante ese lapso de tiempo, todo está bien.

Lo primero que probé fue esta muestra que encontré. Más o menos hizo lo que quería, pero está invirtiendo, por lo que la salida termina siendo negativa (y fuera del rango de 0-5V del Arduino).

esquemático

simular este circuito : esquema creado con CircuitLab

Luego, me di cuenta de que el amplificador operacional probablemente solo estaba reduciendo la impedancia de salida de lo que en realidad es solo un divisor de voltaje con un JFET en lugar de una de las resistencias, y no lo necesitaba porque el Arduino tiene un mucho más alto impedancia de entrada que las fuentes de alimentación que probaré, así que probé esto...

esquemático

simular este circuito

pero me sale algo raro. Parece que el componente de CA se ve afectado por el voltaje de entrada del control de ganancia, pero no el componente de CC (consulte el requisito 3). Claramente no entiendo los FET como debería. ¿Alguien puede sugerir algunas soluciones a este enfoque o sugerir una alternativa?

No existe un atenuador de voltaje simple que sea tan preciso como usted necesita. Los JFET, como ha demostrado, necesitan un voltaje de control de puerta negativo con el pin de fuente FYI.
Para las mediciones de CA, puede acoplar CA el riel de alimentación en una entrada de ADC sin atenuación, con la entrada de ADC polarizada a 2,5 voltios.

Respuestas (3)

Desea medir voltajes de CC hasta, digamos, 15 voltios y estos pueden tener 2 voltios de ondulación superpuestos para una suposición media. Su voltaje de CC más pequeño podría ser de 3v y cree que la precisión de su medición puede verse indebidamente afectada en el extremo inferior, ¿verdad?

No se preocupe por eso: haga que su entrada sea adecuada para picos superiores de 20 voltios y encontrará que con un ADC de diez bits estará bien. Diez bits significa una resolución de 20 milivoltios y con una pizca de ruido superpuesto y varias muestras promediadas, logrará fácilmente una precisión decente. Tomar dos muestras y luego promediar le da un número de 11 bits y esto tendrá una precisión de 11 bits con ruido de CA fuera de banda en la parte superior.

Intente buscar tramado: es una técnica bien formulada que mejora la resolución del audio de CD de 16 bits para que suene menos granulado al oído en pasajes silenciosos de música. Solo necesitas un poco de ruido fuera de banda para que funcione.

Su solución más simple es simplemente usar un divisor de resistencia para escalar un voltaje máximo (12 V) hasta decir 4.5 V, es decir, una atenuación fija. Como señala Andy_aka, tienes un ADC de 10 bits allí. Esta será una escala lineal y, si le preocupa el ruido, puede agregar o promediar varias muestras. Asegúrese de no cargar demasiado las entradas (por lo tanto, 100k ohmios). si necesita precisión, use varias versiones de la misma resistencia del mismo lote (o compre resistencias combinadas)

esquemático

simular este circuito : esquema creado con CircuitLab

Las razones por las que obtuvo un resultado "extraño" en su circuito JFET (segunda imagen) es que creó un amplificador de puerta común que tiene una ganancia diferente para el componente de CA (señal pequeña) frente al componente de CC de la señal.

No estoy seguro acerca de arduinos, pero si fuera una imagen, necesitaría almacenar en búfer la entrada al adc porque la imagen tiene una alimentación escamosa a través de la lógica de aproximación sucesiva y necesita una impedancia razonablemente baja para conducirla.

Lo que terminé eligiendo es un poco similar a la propuesta de rawbrawb de un divisor de voltaje (y también lo que Andy también insinuó). Voy a usar un divisor de voltaje con múltiples etapas. Debido a que el Arduino tiene un puñado de entradas analógicas, solo puedo probar varias divisiones y luego seleccionar la que me da los valores más altos sin exceder el Vref del ADC...

esquemático

simular este circuito : esquema creado con CircuitLab

Además, por lo que estoy leyendo, los ADC de Arduino pueden, a veces, tener impedancias de entrada tan bajas como 10k, por lo que creo que no me atrevo a subir mucho más de 1k en las etapas del divisor de voltaje. Esto no debería ser un gran problema cuando lo uso para probar las fuentes de alimentación, ya que mi sumidero actual consumirá hasta 2A de fuentes de 5V.

No vas a usar esto para suministros de 9V y 12V, ¿verdad? Si es así, la entrada n.° 1 del ADC probablemente morirá ya que no tiene resistencia en serie (la entrada n.° 2 también podría morir). Cuando muera, la energía disipada probablemente destruiría gran parte del resto del chip. Tal vez estoy malinterpretando tu idea...
¡Oye! Tienes razón. Y el uso de diodos de sujeción estropearía mi relación de CC a CA. Parece que volví a rawbrawb y la idea de Andy de solo una división de voltaje fijo.