TODOPIC

Microcontroladores PIC => * PROYECTOS * => Mensaje iniciado por: Nocturno en 12 de Abril de 2023, 13:40:37

Título: Dimmer programable con control remoto
Publicado por: Nocturno en 12 de Abril de 2023, 13:40:37
Hola compañeros.
Ya llevaba tiempo sin acometer un proyecto nuevo que requiera diseño de hardware y de firmware desde cero, y me apetece ir echándole algunos ratitos a este que os voy a contar.

Se trata, como habéis visto en el título, de un Dimmer programable con control remoto que debe tener las siguientes características:
- debe regular cargas de hasta 2000W
- se alimenta a 220Vac y entrega la corriente regulada a su salida
- debe ser capaz de regular todo el rango entre 0W y 2000W con la máxima resolución posible
- se puede controlar la potencia de salida desde un móvil
- debe publicar sus servicios para poder integrarlo con Home Assistant

Teniendo en cuenta estos requerimientos creo que la plataforma más adecuada para llevarlo a cabo es un ESP8266/ESP32 ya que me proporciona conexión Wifi y suficiente capacidad de procesamiento. El primero (ESP8266) sólo tiene una entrada analógica, pero creo que será suficiente para este proyecto. Si necesitara alguna más tendría que optar por su hermano mayor ESP32.

Los distintos apartados que debo acometer en este proyecto son:
SALIDA
Para esta parte estoy considerando usar un Triac tipo BTA136 o compatible
Aguanta hasta 16A y 800V por lo que entiendo que será suficiente.
Si lo monto en encapsulado TO220 (seguramente será así porque es la opción más barata) tendré que pensar en qué tipo de disipador colocar.
https://eu.mouser.com/datasheet/2/848/bta316-800e-1520591.pdf

DETECCIÓN DEL CRUCE POR CERO
4 diodos conectados en modo rectificador de onda completa y un par de resistencias en serie, excitan el led de un optoacoplador, en cuya salida encontraré una señal cuadrada que ingreso directamente al micro.

MEDICIÓN DE CORRIENTE
Para medir la corriente una de las opciones que más me gusta es un chip SMD como este MCS1801GS-25-P, ya que no requiere colocar un toroide alrededor del cable.
Está basado en un sensor Hall de campo magnético que es capaz de entregar una salida en tensión de 0 a 3.3V proporcional a la corriente que lo atraviese, con un máximo de hasta 10.5A.
Me preocupa que indica que el aislamiento máximo es de 200Vrms y yo necesito alimentarlo con los 220Vac habituales. ¿Servirá o tengo que buscar otro?
https://eu.mouser.com/datasheet/2/277/MCS1801GS-2487854.pdf

PROTECCIÓN
Para proteger al usuario, además de seguir las recomendaciones de la datasheet del Triac y del medidor de corriente, incorporaré un fusible de 10A
https://eu.mouser.com/datasheet/2/643/ds_cp_5sf_5sfp_series-1313110.pdf

y tengo que buscar una caja que me permita alojarlo todo y dejarlo bien acomodado, y que no impida la refrigeración del Triac.

¿Tengo que tener en cuenta algún otro punto?

ALIMENTACIÓN
El circuito se alimentará directamente desde la red, a 220Vac, por lo que necesitaré extraer de ahí los 3.3V que utiliza el microcontrolador. Me gustaría hacerlo con un pequeño circuito de conversión AC/DC como los que traen los cargadores de móvil, ya que no necesito más que unos pocos mA a la salida. Exploraré opciones pero si alguien tiene por ahí algún esquema sencillo me vendría muy bien.

CONTROL REMOTO
Para poder controlarlo desde el móvil creo que la opción más sencilla será que el propio ESP haga de servidor web y puedas acceder a una página donde seleccionar la potencia que debe entregar.
Tengo que probar sobre todo la parte de configuración, que no lo he hecho nunca. Lo ideal es que el circuito, la primera vez que se enciende, genere un SSID Wifi al que te puedas conectar y pasarle los parámetros de tu router para que, tras un reinicio, forme parte de tu LAN.
Y otra cosa que tengo que investigar es cómo publicar los servicios para que sean detectados en Home Assistant. Esta parte sé hacerla con ESPHome, pero no tengo ni idea de cómo hacerlo en lenguaje C. Ya iré publicando avances


Cualquier aportación vuestra será bienvenida, queda abierto el hilo.
Título: Re:Dimmer programable con control remoto
Publicado por: DominusDRR en 12 de Abril de 2023, 16:26:01
Creo que te faltó indicar que tipo de carga deseas controlar (Puramente resistiva, inductiva, capacitiva, no lineal)
Título: Re:Dimmer programable con control remoto
Publicado por: Nocturno en 12 de Abril de 2023, 16:35:51
Resistiva.  De hecho lo quiero para mi temo eléctrico.
Título: Re:Dimmer programable con control remoto
Publicado por: DominusDRR en 12 de Abril de 2023, 16:54:12
Resistiva.  De hecho lo quiero para mi temo eléctrico.

Entonces la variable a controlar es la temperatura y tal vez necesitas medir dicha variable para determinar que el error sea mínimo.

Medir la corriente me imagino que es sólo por protección

Si estoy en lo correcto, que es un control de temperatura, al ser una variable lenta con respecto al tiempo, tal vez sólo necesites un control tipo ON-OFF, en lugar de algo un poco más complejo como un PDI.
Título: Re:Dimmer programable con control remoto
Publicado por: Nocturno en 12 de Abril de 2023, 17:49:19
No,  la temperatura ya la tengo controlada.  La variable a controlar es la potencia porque quiero alimentar el temo solo con la energía sobrante de mis placas fotovoltaicas.  Me da igual el tiempo que tarde en calentarse,  lo que quiero es hacerlo gratis.
Título: Re:Dimmer programable con control remoto
Publicado por: DominusDRR en 12 de Abril de 2023, 17:54:15
No,  la temperatura ya la tengo controlada.  La variable a controlar es la potencia porque quiero alimentar el temo solo con la energía sobrante de mis placas fotovoltaicas.  Me da igual el tiempo que tarde en calentarse,  lo que quiero es hacerlo gratis.

Comparte un diagrama esquemático simplificado de lo que quieres hacer para tener una idea más claro y seguir tu proyecto.
Título: Re:Dimmer programable con control remoto
Publicado por: Nocturno en 12 de Abril de 2023, 18:03:51
Claro,  en cuanto lo dibuje,  jajaja.
De momento todo lo que he hecho del proyecto es este hilo
Título: Re:Dimmer programable con control remoto
Publicado por: Nocturno en 14 de Abril de 2023, 18:28:14
Primeros pasos. He montado un ESP8266, una placa perforada con los optoacopladores y un Triac que tenía en un dimmer analógico, al que le he anulado la parte analógica para conectarlo directamente al optoacoplador.

(https://i.imgur.com/nmTIDm9.png)

(https://i.imgur.com/vI67xD1.jpg)

En la parte del firmware, he instalado las siguientes librerías:

Con esto hecho, el código me queda así:
Código: C++
  1. void setup() {  
  2.   USE_SERIAL.begin(115200);
  3.  
  4.  
  5.   WiFi.mode(WIFI_STA);
  6.   WiFi.begin(ssid, password);
  7.   Serial.println("");
  8.  
  9.   // Wait for connection
  10.   while (WiFi.status() != WL_CONNECTED) {
  11.     delay(500);
  12.     Serial.print(".");
  13.   }
  14.   Serial.println("");
  15.   Serial.print("Connected to ");
  16.   Serial.println(ssid);
  17.   Serial.print("IP address: ");
  18.   Serial.println(WiFi.localIP());
  19.  
  20.   server.on("/", HTTP_GET, [](AsyncWebServerRequest *request) {
  21.     request->send(200, "text/plain", "Hi! I am ESP8266.");
  22.   });
  23.  
  24.   AsyncElegantOTA.begin(&server);    // Start ElegantOTA
  25.   server.begin();
  26.   Serial.println("HTTP server started");
  27.  
  28.   dimmer.begin(NORMAL_MODE, ON);
  29.   Serial.println("Dimmer started");
  30.  
  31.   dimmer.begin(NORMAL_MODE, ON); //dimmer initialisation: name.begin(MODE, STATE)
  32.   USE_SERIAL.println("Dimmer Program is starting...");
  33.   USE_SERIAL.println("Set value");
  34. }
  35.  
  36. void printSpace(int val)
  37. {
  38.   if ((val / 100) == 0) USE_SERIAL.print(" ");
  39.   if ((val / 10) == 0) USE_SERIAL.print(" ");
  40. }
  41.  
  42. void loop() {
  43.   int preVal = outVal;
  44.  
  45.   if (USE_SERIAL.available())
  46.   {
  47.     int buf = USE_SERIAL.parseInt();
  48.     if (buf != 0) outVal = buf;
  49.     delay(200);
  50.   }
  51.   dimmer.setPower(outVal); // setPower(0-100%);
  52.  
  53.   if (preVal != outVal)
  54.   {
  55.     USE_SERIAL.print("lampValue -> ");
  56.     printSpace(dimmer.getPower());
  57.     USE_SERIAL.print(dimmer.getPower());
  58.     USE_SERIAL.println("%");
  59.  
  60.   }
  61.   delay(50);
  62.  
  63. }

Con este código, envío con el terminal serie un número entre 0 y 100 y el dimmer regula la salida en ese rango.
Esta parte ya la tengo funcionando. Ahora voy a intentar añadir la medición de potencia de salida y continuamos para bingo.
Título: Re:Dimmer programable con control remoto
Publicado por: Nocturno en 15 de Abril de 2023, 02:24:01
He modificado el primer mensaje del hilo para meter los bloques ALIMENTACIÓN y DETECCIÓN DEL CRUCE POR CERO.
Título: Re:Dimmer programable con control remoto
Publicado por: Nocturno en 15 de Abril de 2023, 02:32:09
Una opción interesante para tener la alimentación y de paso un detector de cruce por cero integrado es este circuito:
https://www.electronics-lab.com/project/ac-voltage-zero-cross-detector/

La página viene perfectamente documentada, e incluye esquemático, PCB, gerbers, lista de componentes...
(https://www.electronics-lab.com/wp-content/uploads/2021/09/002-4-1024x601.jpg)

(https://www.electronics-lab.com/wp-content/uploads/2021/09/sch-8.jpg)

Título: Re:Dimmer programable con control remoto
Publicado por: Eduardo2 en 15 de Abril de 2023, 10:57:53
Ese circuito no está aislado de línea, hay que tenerlo en cuenta en el disparo del triac  (debe ser a través de un opto) y en alguna eventual conexión por USB.
Título: Re:Dimmer programable con control remoto
Publicado por: Nocturno en 15 de Abril de 2023, 11:17:31
Sí, completamente de acuerdo, Eduardo. Muchas gracias
Título: Re:Dimmer programable con control remoto
Publicado por: Sispic en 16 de Abril de 2023, 02:49:38
pero como averiguaras  la potencia que le sobran a las placas ?
Título: Re:Dimmer programable con control remoto
Publicado por: Nocturno en 16 de Abril de 2023, 03:42:53
Eso lo tengo resuelto,  maestro.  Hablo con el inversor por Modbus. Tengo que preparar un video al respecto,  te avisaré
Título: Re:Dimmer programable con control remoto
Publicado por: Nocturno en 17 de Abril de 2023, 05:16:59
Seguimos avanzando.
Ya he conseguido integrar un servidor web que me pregunte por el valor que quiero aplicar al Dimmer:
(https://i.imgur.com/szh5hAr.png)

Y me resulta muy cómodo probar distintos valores del dimmer:
(https://i.imgur.com/6MOxCID.jpg)

(https://i.imgur.com/GcIWRwG.jpg)

(https://i.imgur.com/dvHfl1R.jpg)

Ahora me voy a poner con el medidor de potencia.
Título: Re:Dimmer programable con control remoto
Publicado por: Nocturno en 17 de Abril de 2023, 15:12:23
Pues me acabo de encontrar un problema que no sé cómo resolver.
Tengo un TIMER que se ejecuta cada 100us, de manera que divido un semiciclo (a 50Hz) en 100 trocitos. Es este TIMER el que utilizo para gestionar el Dimmer con una resolución del 1% y está funcionando perfectamente.

Mi intención era leer la potencia haciendo una lectura analógica del sensor en cada uno de esos trocitos.
Pero ahora resulta que el ADC del ESP8266 tarda 97us en devolver una lectura, así que me deja el micro ocupado todo ese tiempo sin poder hacer otra cosa.

Voy a investigar si es que puedo acelerar el ADC, o gestionarlo directamente leyendo los registros del micro en lugar de usar la función analogRead.

Si alguno tiene una idea mejor, soy todo oídos.
Título: Re:Dimmer programable con control remoto
Publicado por: Picuino en 17 de Abril de 2023, 15:23:22
Yo creo que puedes hacer una lectura del sensor 100 veces por segundo (en cada fin de ciclo) y debería ser suficiente para definir el PWM del siguiente ciclo.

Edito:
Por lo que he leído resulta difícil leer el ADC a bajo nivel con el ESP8266.
https://hackaday.io/page/7136-esp8266-adc-read-nonblocking
Título: Re:Dimmer programable con control remoto
Publicado por: DominusDRR en 17 de Abril de 2023, 16:41:58
Voy a investigar si es que puedo acelerar el ADC, o gestionarlo directamente leyendo los registros del micro en lugar de usar la función analogRead.

¿Por qué no haces procesos cooperativos o en tal caso recurrir a la interrupción del ADC para evitar la sincronicidad?
Título: Re:Dimmer programable con control remoto
Publicado por: Eduardo2 en 17 de Abril de 2023, 17:53:25
...Mi intención era leer la potencia haciendo una lectura analógica del sensor en cada uno de esos trocitos.
Pero ahora resulta que el ADC del ESP8266 tarda 97us en devolver una lectura, así que me deja el micro ocupado todo ese tiempo sin poder hacer otra cosa.
...
No hace falta quedarse esperando.  Al comienzo del intervalo de 100uS lees el ADC y luego inicias otra conversión, que recién se leerá en el siguiente intervalo.
Título: Re:Dimmer programable con control remoto
Publicado por: Nocturno en 18 de Abril de 2023, 02:09:43
Yo creo que puedes hacer una lectura del sensor 100 veces por segundo (en cada fin de ciclo) y debería ser suficiente para definir el PWM del siguiente ciclo.

Edito:
Por lo que he leído resulta difícil leer el ADC a bajo nivel con el ESP8266.
https://hackaday.io/page/7136-esp8266-adc-read-nonblocking

¿100 veces por segundo?, teniendo en cuenta que en cada segundo hay 100 semiciclos (a 50Hz) eso me daría sólo una lectura en cada semiciclo. No veo de qué manera puedo calcular la potencia con tan pocas muestras, pero si se puede hacer sería ideal.
Mi intención es leer 100 muestras en cada semiciclo (10.000 en un segundo) de manera que puedo ir sampleando con bastante resolución la forma de la curva, y a partir de ahí, calcular la potencia RMS.
No he leído ese artículo de hackaday pero lo miraré. Si finalmente es imposible acelerar el ADC del ESP8266, tendré que considerar cambiarme a un ESP32, aunque es una pena porque sería matar moscas a cañonazos.

Voy a investigar si es que puedo acelerar el ADC, o gestionarlo directamente leyendo los registros del micro en lugar de usar la función analogRead.

¿Por qué no haces procesos cooperativos o en tal caso recurrir a la interrupción del ADC para evitar la sincronicidad?
Actualmente lo tengo montado con un proceso "cooperativo". La interrupción del Timer marca el ritmo de las lecturas y la interrupción Externa marca el ritmo de los cruces por cero de la señal alterna. El problema es que la lectura del ADC provoca que la función llamada por la interrupción del Timer dure mucho más de lo que dura un ciclo, por lo que desborda y forma el lío.
¿Interrupción del ADC?, no sé si este micro la tiene, pero sería una buena opción. Lo miro. Gracias

No hace falta quedarse esperando.  Al comienzo del intervalo de 100uS lees el ADC y luego inicias otra conversión, que recién se leerá en el siguiente intervalo.
¿Y cómo se hace eso?, con la instrucción AnalogRead que es la que estoy usando no se puede.
Título: Re:Dimmer programable con control remoto
Publicado por: Nocturno en 18 de Abril de 2023, 02:12:15
Visto en el enlace de Hackaday que ha publicado Picuino:

As far as I know, the SDK does not support non-blocking ADC operation. And since there are no register definitions for the ADCs in the official reference manual, the only way to get this to work would be by digging through the SDK assembly.

In short, as far as I know it's (more or less) impossible.


Si la solución pasa por utilizar assembler, paso.
Título: Re:Dimmer programable con control remoto
Publicado por: Nocturno en 18 de Abril de 2023, 02:21:51
Más información, directamente en el SDK de Espressif:

https://www.espressif.com/sites/default/files/documentation/2c-esp8266_non_os_sdk_api_reference_en.pdf

Existe una función llamada system_adc_read_fast (página 13) que permite leer el ADC mucho más rápido pero:
- mientras se lee el ADC hay que desactivar las interrupciónes. No me serviría porque pierdo el sincronismo del dimmer.
- necesita apagar el Wifi, por lo que tampoco me sirve

Todos los caminos me llevan al ESP32  :?
Título: Re:Dimmer programable con control remoto
Publicado por: remi04 en 18 de Abril de 2023, 03:32:58
Supongo que el ESP8266 no tiene DMA para el ADC. De lo contrario ya se habría hablado. Pero bueno. Lo dejo ahí por si acaso.
Título: Re:Dimmer programable con control remoto
Publicado por: Nocturno en 18 de Abril de 2023, 04:19:21
Ojalá tuviera,  querido remi
Título: Re:Dimmer programable con control remoto
Publicado por: Picuino en 18 de Abril de 2023, 06:41:44
Yo creo que puedes hacer una lectura del sensor 100 veces por segundo (en cada fin de ciclo) y debería ser suficiente para definir el PWM del siguiente ciclo.

Edito:
Por lo que he leído resulta difícil leer el ADC a bajo nivel con el ESP8266.
https://hackaday.io/page/7136-esp8266-adc-read-nonblocking

¿100 veces por segundo?, teniendo en cuenta que en cada segundo hay 100 semiciclos (a 50Hz) eso me daría sólo una lectura en cada semiciclo. No veo de qué manera puedo calcular la potencia con tan pocas muestras, pero si se puede hacer sería ideal.
Mi intención es leer 100 muestras en cada semiciclo (10.000 en un segundo) de manera que puedo ir sampleando con bastante resolución la forma de la curva, y a partir de ahí, calcular la potencia RMS.
No he leído ese artículo de hackaday pero lo miraré. Si finalmente es imposible acelerar el ADC del ESP8266, tendré que considerar cambiarme a un ESP32, aunque es una pena porque sería matar moscas a cañonazos.

Es verdad, no entendí bien para qué querías leer 100 muestras en un semiciclo.


Título: Re:Dimmer programable con control remoto
Publicado por: Nocturno en 18 de Abril de 2023, 07:18:38
Vale, pues mantenía la esperanza de que supieras otra forma de hacerlo con menos muestras, jajaja. Vía cerrada.

He estado buscando algún sensor de corriente que devuelva la información por I2C o SPI, y así me ahorro tirar del ADC del ESP8266. Los hay pero son mucho más caros que la diferencia de precio entre ESP8266 y ESP32 (poco más de un euro) así que definitivamente migraré de micro, a ver consigo avanzar.
Título: Re:Dimmer programable con control remoto
Publicado por: DominusDRR en 18 de Abril de 2023, 10:15:50
¿Y puedes usar algún RTOs? Ahí ya no debes romper mucha cabeza al crear tareas cooperativas.
Título: Re:Dimmer programable con control remoto
Publicado por: Nocturno en 18 de Abril de 2023, 10:19:17
Sí, podría, pero para una tarea tan crítica en tiempo de ejecución no iba a conseguir mejora. Piensa que sólo el ADC ya se come casi todo el tiempo del micro; quedan pocos ciclos para hacer todo lo demás. Si hay que gestionar un RTOS, todavía peor.

Mi programa está bastante optimizado; las interrupciones ocupan muy poquito ya que sólo cambian estados de pines y reinician contadores. Es al meter el analogRead cuando todo se va a la mierda, y eso no me lo arregla un RTOS.
Título: Re:Dimmer programable con control remoto
Publicado por: Picuino en 18 de Abril de 2023, 11:26:46
Antes de cambiar de micro puedes hacerlo con 50 muestras por ciclo. Tendrás tiempo de sobra y así haces una prueba de concepto. No creo que haya tanta diferencia entre 50 y 100 muestras.
Título: Re:Dimmer programable con control remoto
Publicado por: Nocturno en 18 de Abril de 2023, 11:31:02
Pruebo y te digo
Título: Re:Dimmer programable con control remoto
Publicado por: Nocturno en 18 de Abril de 2023, 12:07:01
Pues no tiene mala pinta con 50 muestras por semiciclo...
(https://i.imgur.com/RM5d1We.png)
Título: Re:Dimmer programable con control remoto
Publicado por: Picuino en 18 de Abril de 2023, 12:08:42
 ((:-)) ((:-)) ((:-))
Título: Re:Dimmer programable con control remoto
Publicado por: Eduardo2 en 18 de Abril de 2023, 13:36:31
...
No hace falta quedarse esperando.  Al comienzo del intervalo de 100uS lees el ADC y luego inicias otra conversión, que recién se leerá en el siguiente intervalo.
¿Y cómo se hace eso?, con la instrucción AnalogRead que es la que estoy usando no se puede.

Acabo de ver que han eliminado las funciones  :shock:, dejaron solo AnalogRead !
No entiendo que necesidad tenían de sacarlas, qué problema había con mantener todas???

Era hacer:
Código: [Seleccionar]
    while(adcBusy(sensorPin));       // Espera que haya terminado la conversion                                   
    LecturaADC = adcEnd(sensorPin);  // Lee el ADC
   
    adcStart(sensorPin);             // Inicia otra conversion
    ..........                       // El programa continua.
                                     // El valor se leerá recién cuando indique
                                     // de nuevo el timer.
pero habrá que buscar una librería que las contemple  :(
Título: Re:Dimmer programable con control remoto
Publicado por: Nocturno en 18 de Abril de 2023, 14:24:17
Esas instrucciones están para ESP32 pero no para ESP8266. Una lástima
Título: Re:Dimmer programable con control remoto
Publicado por: uZYNQ en 18 de Abril de 2023, 19:08:27
Interesante proyecto, pero me surge la duda de como será el cálculo de la potencia si solo se mide corriente. Se asume un voltaje constante del panel?
Título: Re:Dimmer programable con control remoto
Publicado por: Nocturno en 19 de Abril de 2023, 01:11:26
Sí, la tensión alterna de la red es constante.
Título: Re:Dimmer programable con control remoto
Publicado por: Picuino en 19 de Abril de 2023, 12:30:16
No estaría de más que midieses también la tensión. Suele tener un valor de pico menor del esperado debido a los armónicos de corriente.

Así de paso mides si hay desfase entre la tensión y la corriente. El problema es que vas a ver seguro un desfase debido al tiempo de muestreo y no sé como arreglar eso.
Título: Re:Dimmer programable con control remoto
Publicado por: Nocturno en 19 de Abril de 2023, 13:26:08
¿Realmente lo ves necesario?, tampoco voy a necesitar una precisión altísima.
Título: Re:Dimmer programable con control remoto
Publicado por: remi04 en 20 de Abril de 2023, 03:15:35
Yo creo que para esta aplicación no necesitas determinar la potencia consumida instantánea siguiendo la señal punto a punto como quieres por que es que eso , aunque sea una señal periódica de 50 hz, quererla samplear de esa manera ya roza casi la obligatoriedad de usar micros con DSP como algunos pic24 o dspic. Posible es, pero lo veo muy “a cañonazos como dices” para un simple dimmer online.

  Creo que si a la salida analógica del integrado HALL le colocas un condensador electrolítico pequeño al que le colocas una carga constante y conocida con resistencias de precisión, consigues una especie de “hold” de un valor medio que varía según el consumo.

  Entonces ya no tienes que andar sampleando constantemente a ese ritmo, sino que puedes ir a leer ese voltaje “hold” de vez en cuando (cada segundo por ejemplo)y luego lo relacionas con el consumo. 

 Es una sugerencia.
Título: Re:Dimmer programable con control remoto
Publicado por: Nocturno en 20 de Abril de 2023, 04:13:45
Pues eso me simplificaría bastante, remi. ¿Pero esa solución sirve para alterna?

¿Tendría que poner el electrolítico en serie con la resistencia de precisión, y esta a masa?, ¿y medir con el ADC en el punto de unión de ambos?
Título: Re:Dimmer programable con control remoto
Publicado por: Picuino en 20 de Abril de 2023, 04:14:06
¿Realmente lo ves necesario?, tampoco voy a necesitar una precisión altísima.
Es que la onda de tensión suele estar distorsionada y se pierde precisión al calcular la potencia. No sé cuanta precisión se pierde, ni si será aceptable para lo que necesitas.

Prueba a utiilizar un medidor de potencia y comparas los valores obtenidos.
https://www.amazon.es/medidor-potencia/s?k=medidor+de+potencia
Título: Re:Dimmer programable con control remoto
Publicado por: Nocturno en 20 de Abril de 2023, 06:05:23
Yo creo que para esta aplicación no necesitas determinar la potencia consumida instantánea siguiendo la señal punto a punto como quieres por que es que eso , aunque sea una señal periódica de 50 hz, quererla samplear de esa manera ya roza casi la obligatoriedad de usar micros con DSP como algunos pic24 o dspic. Posible es, pero lo veo muy “a cañonazos como dices” para un simple dimmer online.

  Creo que si a la salida analógica del integrado HALL le colocas un condensador electrolítico pequeño al que le colocas una carga constante y conocida con resistencias de precisión, consigues una especie de “hold” de un valor medio que varía según el consumo.

  Entonces ya no tienes que andar sampleando constantemente a ese ritmo, sino que puedes ir a leer ese voltaje “hold” de vez en cuando (cada segundo por ejemplo)y luego lo relacionas con el consumo. 

 Es una sugerencia.

Gracias a tu idea he estado buscando y he llegado a esta solución. Parece muy interesante. Lo voy a probar
https://iotdesignpro.com/projects/detect-and-measure-ac-current-using-current-transformer-and-arduino
Título: Re:Dimmer programable con control remoto
Publicado por: Nocturno en 20 de Abril de 2023, 06:07:35
¿Realmente lo ves necesario?, tampoco voy a necesitar una precisión altísima.
Es que la onda de tensión suele estar distorsionada y se pierde precisión al calcular la potencia. No sé cuanta precisión se pierde, ni si será aceptable para lo que necesitas.

Prueba a utiilizar un medidor de potencia y comparas los valores obtenidos.
https://www.amazon.es/medidor-potencia/s?k=medidor+de+potencia

Sí, tengo este, que es el que pretendo usar:
(https://i.imgur.com/0Btc4Oe.jpg)
Título: Re:Dimmer programable con control remoto
Publicado por: DominusDRR en 20 de Abril de 2023, 10:20:44
Yo creo que para esta aplicación no necesitas determinar la potencia consumida instantánea siguiendo la señal punto a punto como quieres por que es que eso , aunque sea una señal periódica de 50 hz, quererla samplear de esa manera ya roza casi la obligatoriedad de usar micros con DSP como algunos pic24 o dspic. Posible es, pero lo veo muy “a cañonazos como dices” para un simple dimmer online.

  Creo que si a la salida analógica del integrado HALL le colocas un condensador electrolítico pequeño al que le colocas una carga constante y conocida con resistencias de precisión, consigues una especie de “hold” de un valor medio que varía según el consumo.

  Entonces ya no tienes que andar sampleando constantemente a ese ritmo, sino que puedes ir a leer ese voltaje “hold” de vez en cuando (cada segundo por ejemplo)y luego lo relacionas con el consumo. 

 Es una sugerencia.

o tal vez algo en 32 bits con wireless

Título: Re:Dimmer programable con control remoto
Publicado por: Eduardo2 en 20 de Abril de 2023, 10:45:14
No entiendo por qué querés medir la corriente. El valor leído, a la hora de calcular la potencia va a estar afectado por el verdadero valor de la tensión en ese momento y  la precisión y linealidad del sensor hall y del ADC del ESP8266 (https://www.esp8266.com/viewtopic.php?p=29182)
Pero además, a mi manera de ver, no interesa cuantos Watts toma el termotanque sino si la resistencia está al 0...100% de su potencia nominal.
Y para eso no interesa la corriente sino el ángulo de disparo del triac. Lo único que necesitás es armar una tabla (teórica o experimental) de retardos en el disparo versus porcentaje de potencia.
Título: Re:Dimmer programable con control remoto
Publicado por: Nocturno en 20 de Abril de 2023, 10:54:06
Hola Eduardo, si el dispositivo sólo lo fuera a usar con mi termo ya lo tendría solucionado, con una tabla como la que dices.
Pero me gustaría que fuera de propósito general y open-source, para que cualquiera que tuviera la misma necesidad pudiera utilizarlo.
E incluso a mí mismo me puede interesar en invierno conectar un radiador eléctrico u otro tipo de calefacción resistiva, por lo que prefiero tener una lectura de la potencia.

Además, un objetivo secundario es poder alimentar una BBDD con la información de la potencia consumida por el termo de agua en cada momento, lo que me permitirá calcular con exactitud cuánto dinero me ha costado calentar el agua.
Título: Re:Dimmer programable con control remoto
Publicado por: Nocturno en 21 de Abril de 2023, 02:10:08
Pues he estado probando este circuito
https://iotdesignpro.com/projects/detect-and-measure-ac-current-using-current-transformer-and-arduino

y parece que casi funciona, ya que observo incrementos de las lecturas a medida que el Dimmer va incrementando su tiempo de salida.
Pero me hace algo raro a partir del 80%, por lo que tengo que seguir investigando.

En este vídeo tenéis dos curvas:
- en la de arriba se ve la lectura del ADC conectado como en el circuito antes mencionado
- en la de abajo el % de Dimmer que estoy aplicando en cada momento

Título: Re:Dimmer programable con control remoto
Publicado por: Nocturno en 22 de Abril de 2023, 02:27:18
Pues realmente no entiendo ese comportamiento. A partir del 80% la lectura de tensión a la salida del schottky cae un poco, en vez de seguir subiendo hasta el 100%.
He probado cambiando de condensador y de schottky y sigue ocurriendo.
Y no es problema de la salida del Dimmer, porque con el lector de potencia de Velleman sí que veo que entre el 80% y el 100% el consumo sube adecuadamente.

En fin, todas las pruebas hasta ahora las estoy haciendo con un SCT013-100, así que he pedido estos 3 sensores a Mouser, a ver si alguno de ellos me convence más:
https://www.mouser.es/ProductDetail/Allegro-MicroSystems/ACS723KMATR-10AB-T?qs=pUKx8fyJudDWmsCYh0jiWw%3D%3D
https://www.mouser.es/ProductDetail/Asahi-Kasei-Microdevices/CZ3AG2?qs=vvQtp7zwQdMViuQeTTJwOw%3D%3D
https://www.mouser.es/ProductDetail/Allegro-MicroSystems/ACS724LLCTR-10AB-T?qs=pUKx8fyJudCo%252BI7rqO089Q%3D%3D

Mientras me llegan, voy a centrar mis esfuerzos en intentar que el ESP8266 sea detectable por Home Assistant para integrarlo con mi domótica.
Título: Re:Dimmer programable con control remoto
Publicado por: scrwld en 22 de Abril de 2023, 03:37:40
hola a todos, he estado mirando este proyecto. les paso imagenes de dos proyectos la primera imagen es la parte de control que use en los 80 para un horno industrial. la segunda imagen es de una nota de aplicación de intel  publicada en el 82, basada en una patente dada a un ing. de la nasa que también le podrá ser de utilidad.

para la medicion de corriente le recomiendo el uso de un transformador de corriente, es lo que se destila en la industria. aqui le paso enlace de un trafo que a su salida entrega una tension dc de 0-5v.

https://www.amazon.es/Transformador-corriente-Transductor-Convertidor-autom%C3%A1tico/dp/B08L6L925P

 este otro trafo con modbus:

https://store.stepsl.com/product?prod=AR-485

este enlace tiene mucha informacion al respecto, vale la pena:

https://docs.openenergymonitor.org/

la carga que tienen es resistiva no existe defasaje tension/corriente.
Título: Re:Dimmer programable con control remoto
Publicado por: Nocturno en 22 de Abril de 2023, 12:44:44
Hola scrwld, muchas gracias por la información y esos esquemas.

Respecto a la sugerencia de transformador de corriente que indicas:
- se parecen bastante al que estoy usando ahora, un SCT013-100
(https://m.media-amazon.com/images/I/61XrB9nWyHL._AC_SX679_.jpg)
- son muy caros, me gustaría conseguir que el producto terminado fuera bastante asequible
- están diseñados para un rango de corrientes muy grande. Mi objetivo es que el dimmer proporcione hasta 2000W, algo menos de 10A. Es por eso que voy a intentarlo con los sensores que he pedido a Mouser, a ver qué tal.

Gracias de todas formas
Título: Re:Dimmer programable con control remoto
Publicado por: scrwld en 22 de Abril de 2023, 14:25:43
hola nocturno, tienes razon en cuanto precio, no se si donde vives puedes localizar algo con menor costo, el trafo del segundo enlace te da lectura de todo lo que quieres potencia, corriente, thd, etc; ademas es programable su rango de trabajo. vere de todas maneras te paso info del programa de la segunda imagen, esta hecho en ensamblador para un 8022 de intel quizas algunas rutinas las puedas pasar a C ya que estas usando esp8266.
Título: Re:Dimmer programable con control remoto
Publicado por: Nocturno en 03 de Mayo de 2023, 14:32:19
Compañeros, ya recibí el sensor ACS724LLCTR-10AB-T de Mouser y he podido seguir avanzando.
Además, también migré al ESP32 porque me di cuenta que iba a necesitar leer la temperatura del termo con una NTC, y para eso necesitaba otra entrada analógica, por lo que tuve que cambiar de micro.
Con este micro no tengo problemas en leer el ADC dentro del mismo timer que el dimmer, a una frecuencia de 10KHz. Va perfectamente.

Sigo en pleno desarrollo, pero ya se va aproximando a lo que será el funcionamiento definitivo.
Echad un vistazo al vídeo, en el que indico la potencia deseada y con el wattímetro la voy mostrando en tiempo real.

Un saludo
Título: Re:Dimmer programable con control remoto
Publicado por: Nocturno en 07 de Mayo de 2023, 12:28:02
Tengo una duda y vengo a buscar vuestra ayuda.
Tenía entendido que si la carga que va a controlar el Dimmer es resistiva, el factor de potencia siempre sería 100% ya que no hay desfase entre la tensión y la corriente.
De hecho, traigo 4 imágenes de mi osciloscopio, capturadas con distintos niveles de regulación del dimmer:
- la línea azul marca la detección del cruce por 0 de la alterna de la red
- la línea amarilla es la señal que lee mi sensor de corriente (vía sensor Hall)

Como podéis observar, en todos los casos, la corriente está perfectamente sincronizada con el cruce por cero de la alterna, no hay desfase alguno.
Sin embargo, mi lector de consumos de Velleman me pone unos factores de potencia de 33%, 57%, 80% y 98% respectivamente, crecientes mientras mayor es la regulación del dimmer.
¿Cuál puede ser la causa?

Muchas gracias

(https://i.imgur.com/RtIEdIY.png)

(https://i.imgur.com/lMjU7W8.png)

(https://i.imgur.com/k63K0wc.png)

(https://i.imgur.com/fKpUIqN.png)
Título: Re:Dimmer programable con control remoto
Publicado por: Eduardo2 en 07 de Mayo de 2023, 15:14:11
Tenía entendido que si la carga que va a controlar el Dimmer es resistiva, el factor de potencia siempre sería 100% ya que no hay desfase entre la tensión y la corriente.
Esto es cierto solo cuando tensión y corriente son senoidales.   Acá claramente la corriente no es senoidal,

Citar
Como podéis observar, en todos los casos, la corriente está perfectamente sincronizada con el cruce por cero de la alterna, no hay desfase alguno.
Sin embargo, mi lector de consumos de Velleman me pone unos factores de potencia de 33%, 57%, 80% y 98% respectivamente, crecientes mientras mayor es la regulación del dimmer.
¿Cuál puede ser la causa?
El factor de potencia se define como  Fp=Pactiva/(Vrms Irms)   , cuando V,I son senoidales se reduce al coseno del desfasaje, pero cuando no lo son, hay que recurrir a integrales o en el caso de un instrumento, calcular la potencia activa , tensión y corriente RMS.

En el caso de un triac disparado en un ángulo 'x'  la expresión resulta:  Fp(x)=√(1 - x/pi+ SIN(x) COS(x)/pi)   ; x en radianes
Haciendo una tabla en Excel podés contrastar la precisión del medidor, aunque sin ser muy ambicioso porque la medición de estas magnitudes suele tener un 3...5% de error y porque la tensión de línea nunca es senoide perfecta.
Título: Re:Dimmer programable con control remoto
Publicado por: Nocturno en 07 de Mayo de 2023, 15:18:16
Pues me has dado la luz, Eduardo.

Voy a probar con esa fórmula a ver qué me encuentro.

Muchísimas gracias
Título: Re:Dimmer programable con control remoto
Publicado por: Eduardo2 en 07 de Mayo de 2023, 15:37:36
Es una curva así, a ojo es parecido a lo que mediste.
  - Tienes que ingresar para ver archivos adjuntos -  

Ya que estamos, esta tabla son los valores de Fp cada 5°   (ojo, la taba está en grados,  la gráfica anterior está en radianes)

grados     Fp
-----   ------------------
  0         1
  5   0.9999295915
 10   0.9994391631
 15   0.9981203024
 20   0.9955861159
 25   0.9914791328
 30   0.9854773245
 35   0.9772984606
 40   0.9667030566
 45   0.9534961683
 50   0.9375282630
 55   0.9186953630
 60   0.8969386213
 65   0.8722434572
 70   0.8446383466
 75   0.8141933461
 80   0.7810184069
 85   0.7452615269
 90   0.7071067811
 95   0.6667722672
 100  0.6245080047
 105  0.5805938297
 110  0.5353373361
 115  0.4890719286
 120  0.4421550740
 125  0.3949668719
 130  0.3479091201
 135  0.3014051374
 140  0.2559007626
 145  0.2118672198
 150  0.1698070752
 155  0.1302656099
 160  0.09385246758
 165  0.06128508617
 170  0.03348670047
 175  0.01186642083
 180        0
Título: Re:Dimmer programable con control remoto
Publicado por: Nocturno en 08 de Octubre de 2023, 13:46:30
He decidido reemprender este proyecto grabando en vídeo cada fase del mismo.
Aquí el primer capítulo:
http://www.todopic.com.ar/foros/index.php?topic=51457.msg425679#msg425679