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:
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)
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).
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)
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)
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:
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.
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.
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).
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:
la parte analogica
la parte digital
Gracias de antemano.
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.
stefanu
Marko Bursic
stefanu
stefanu