Consejos sobre la medición de corriente alterna usando un microcontrolador

El objetivo es diseñar un módulo simple y compacto (lo más simple y compacto posible) para realizar la medición de corriente alterna (para una o dos cargas de 220 V) utilizando un microcontrolador. Uno de los problemas es que tengo un conocimiento 'analógico' limitado.

Aquí hay algunas restricciones de diseño que debo observar:

  1. la carga medida puede variar desde una bombilla de luz LED (~5 W) hasta una lavadora/herramienta de servicio pesado (como una sierra circular); las cargas objetivo son generalmente electrodomésticos/herramientas, no cargas industriales 'pesadas'; probablemente la mayoría de las cargas estarán en el rango de 5W-200W. Es aceptable tener una sola placa con piezas opcionales/intercambiables (de ahí mi enfoque con los sensores Hall; ver más abajo)

  2. el microcontrolador debe ser un ESP8266 o un ESP32, porque necesita conectarse a una red propietaria existente usando un protocolo específico (no es el objeto de esta publicación).

  3. los módulos existentes que serán reemplazados (que actualmente están diseñados sin capacidad de medición de corriente) pueden controlar una o dos cargas ; esto significa que hay una buena densidad de componentes (la placa del módulo del microcontrolador, la fuente de alimentación, dos relés compactos - APAN3103 - y componentes discretos relacionados)

  4. la fuente de alimentación debe ser de 3,3 V para evitar el cambio de nivel lógico (ambos ESP funcionan a 3,3 V)

  5. el módulo debe encajar idealmente en una caja de conexiones redonda (50 mm)

Hasta ahora he puesto un circuito usando un ACS712 para +/-5A y un ADC1015 para la conversión usando el modo diferencial y la CPU es una ESP32; Estoy comparando la salida del sensor Hall con el voltaje que obtengo de un divisor 1:2, ya que estoy midiendo CA.

Los cálculos se realizan utilizando la biblioteca 'Filtros' para obtener el valor RMS de las muestras medidas; la biblioteca ha sido ligeramente rediseñada para C simple (originalmente está escrita en C++).

Sin embargo, me enfrento a un par de problemas:

  1. ya que es AC, se deben tomar medidas frecuentes para realizar los cálculos. Logré obtener hasta 1000 muestras por segundo; más alto que eso y el microcontrolador no puede asignar suficiente tiempo a la pila de wi-fi. El sensor Hall es capaz de 3 veces esa tasa.

  2. el valor RMS parece demasiado bajo para una sola bombilla LED (un valor de alrededor de 15 para una carga de 11 W) y la precisión parece pobre; La carga más alta que he probado hasta ahora es de 75 W y el valor RMS es de aproximadamente 68.

  3. cuando no hay carga, la salida del sensor Hall no es estable; fluctúa alrededor de +/-0,02 mV alrededor del valor 'cero' calibrado; Estoy calibrando esto ya que el divisor de voltaje no es del todo preciso debido a la tolerancia de la resistencia (creo).

  4. recuperar el valor medido del ADC a través de la interfaz I2C toma la mayor parte del tiempo

El ciclo de lectura utiliza una operación 'invertida' (leer el valor disponible y luego activar el siguiente ciclo ADC), para permitir que la CPU haga otra cosa mientras el ADC realiza la conversión; algo como esto :

function timer_callback() {
   var value = ADC1015.getMeasuredValue()
   // ... calculate
   ADC1015.triggerMeasurement()
}

Sin embargo, mis tiempos muestran que esta función tarda unos 500 microsegundos en completarse, por lo que las 1000 muestras por segundo deben estar cerca de lo que se puede hacer con este enfoque. La mayoría de los 500us, alrededor de 400us, se gastan en la comunicación I2C, que está configurada para funcionar a 1MHz.

Estoy buscando consejos sobre cómo mejorar:

  1. la parte analogica

    • ¿Es apropiado el módulo Hall?
    • ¿Debería haber usado un CT?
    • ¿Hay algún otro circuito práctico para mi escenario?
  2. la parte digital

    • principalmente cómo hacer que la información digital llegue más rápido a la CPU (incluso si probablemente no sea 100% el sitio adecuado para preguntar esto)

Gracias de antemano.

Respuestas (1)

Obtener el valor RMS correcto de la red eléctrica puede ser un proyecto muy desafiante. Primero, necesita una frecuencia de muestreo bastante alta, luego use un filtro FIR de paso bajo, pero preferiblemente un paso de banda para que elimine también la deriva de CC. Luego elevas al cuadrado, integras, calculas la raíz cuadrada. Preferiblemente, integre solo períodos completos, por lo que también se necesita detección de cruce cero.

Si desea hacerlo de manera simple, entonces la mejor opción es usar un ASIC con DSP y ADC integrados que haga todo esto, de lo contrario, podría agotar todos los recursos de MCU y aún así el resultado es cuestionable. Puede encontrar aquellos ASIC para aplicación de medición de energía, ADI, MAXIM, ...

Nota: está preguntando sobre la medición de corriente y está comparando la discrepancia de potencia medida. La potencia es v*i, por lo que una medición de corriente precisa no es garantía de una medición de potencia precisa en ausencia de una medición de voltaje y fase precisas.

Gracias Marko por el consejo; de hecho, estoy empezando a darme cuenta de que es un poco más de lo que esperaba. Sin embargo, dado que es un proyecto de bricolaje, estoy preparado para aceptar una precisión general más baja. Es por eso que comencé a medir solo corriente; Esperaba poder obtener un monitor de energía aceptable. Cuando mencionas un ASIC, un ejemplo sería el ADE7756, ¿verdad?
@stefanu Sí, algo así. Si necesita medir solo un RMS actual, también tiene una solución analógica como AD536A, pero creo que sería más costosa. Creo que el medidor de energía IC con AFE integrado es la solución más económica.
Gracias. Haré algunas pruebas más pronto; mi multímetro actual no tiene una mención de "valor eficaz verdadero", por lo que planeo obtener uno que sí lo tenga en los próximos días, luego comparar los resultados (multímetro antiguo versus multímetro nuevo versus sensor Hall). Mientras tanto, parece que tengo mucho que leer sobre los ASIC. Gracias de nuevo.
Primeros pensamientos después de una lectura rápida... si uso el (más caro) AD536/AD736, puedo quedarme con el ADS1015 para los ADC de dos canales y obtener muestras a un ritmo mucho más bajo. si voy por el medidor de energía, el circuito puede complicarse, y no soy tan bueno con esta parte. Gracias nuevamente por sus sugerencias.