sábado, 24 de mayo de 2014

Proyecto: Evitar Inyección con Arduino (VI): Prototipo Derivador PWM Avanzado

Hola de nuevo.

En las últimas entradas, hemos dedicado a ajustar a máximo el prototipo derivador, que básicamente es la "clave" del sistema. El primer prototipo funciona razonablemente bien, aunque desde el punto de vista "electrónico" es bastante mejorable. Eso sí, nos permite aprender bastantes cosas de la complejidad del manejo de cargas eléctricas.

Juan Carlos Salvo nos aporta un sistema que permite hacer mucho más preciso el derivador, con idea de ajustar a tope el excedente.

El sistema va a usar el sistema de pulsos PWM de que ya dispone arduino. La idea, en vez de usar un triac que es lo que utiliza el potenciómetro, es usar un MOSFET (FDP20N50F) que divida el consumo de forma proporcional en cada ciclo de corriente alterna.



Además contiene un diodo de difusión (BU2506), dos transistores uno NPN y otro PNP (2N3904,2N3906) y un optoacoplador que evitaría que se funda nuestro arduino, aunque la alta impedancia del mosfet lo hace improbable.

El programa a implementar es mucho más sencillo, simplemente hace falta calcular el valor PWM correspondiente a la carga que queremos derivar, y ponerla en la salida PWM del arduino.


Juan Carlos comenta que al sistema habría que añadirle un PID(Proporcional Integral derivative) que básicamente es un sistema que permite calcular el valor de la desviación entre un valor medido y el calculado. Digamos, que el sistema aprende de las desviaciones y ajusta. Esto con Arduino se puede programar fácilmente.

Esta propuesta, también nos abre bastantes puertas para que la carga R podamos sustituirla en algún momento por baterías, pero paso a paso.....

Hasta la próxima semana y gracias por la aportación, Juan Carlos.

domingo, 4 de mayo de 2014

Proyecto: Evitar Inyección con Arduino (VI): Prototipo Derivador II

Buenas noches!!

Sigo avanzando con el prototipo derivador, y ajustando mucho más su precisión.

Próximamente modificaré el sistema para usar el circuito que propone nuestro amigo JCS, pero de momento, os cuento los avances que básicamente nos sirven para aprender.

Recuerdemos el sistema general:



Me he encontrado con varios problemas, y nos centramos en el derivador:

1.- El mínimo de consumo de una resistencia grande, nos perjudica cuando la generación es muy baja (dias nublados, o inicio/fin del día). Esto implica que si una resistencia de 600w al mínimo de potencia nos consume unos 100w. Cualquier generación inferior, sería inyección o consumo innecesario.

2.- El cambio brusco de consumo genera imprecisión.  Si algún aparato o bombilla cuando se enciende consume, digamos 200w, si se apaga, genera una inyección de 200w hasta que nuestro sistema es capaz de ajustarlo. Por lo tanto, tras probar varios algoritmos, el más eficaz es el descendente escalonado, es decir, subo la derivación hasta pasarme "un poco" y voy escalonando la bajada en intervalos cada vez más pequeños.

3.- Envio de mensajería: Era lento y parecía que era problema de que no llegaban los mensajes, pero descubrí el problema, había un delay en mi código.... nadie es perfecto, jeje


Busco soluciones a los problemas que os comento, y nos centramos en el módulo derivador:


1.- El primer problema lo vamos a solucionar incluyendo un "consumidor" más de energía y un relé que corta la energía. Quedaría así:














He modificado el sistema, adjuntando 2 "consumidores" de energía, uno para una carga grande, y otra para una carga más sensible. En resumen, si la generación es <100w y sobra energía se deriva a una bombilla.


2.- El cambio brusco de energía, encendiendo grandes cargas, como microondas lo tengo solucionado, apago el derivador y listo. Pero con cargas más pequeñas, nos genera imprecisión.

La imprecisión la soluciono modificando el algoritmo, que la lógica es que se sube la derivación a algo que sobrepasa la inyección seguro, y voy bajando poco a poco en intervalos de 1 segundo.

3.- La lentitud en el envío la soluciono arreglando un bug, y se reciben prácticamente todos los mensajes a una distancia de 5 metros y no en línea recta. No he probado a más distancia, pero probaré a ver si "traspasa muros".

El sistema queda algo así:

Bueno, pues nada, solo os quería contar los avances, recordad que el codigo está subido a github.

Las próximas tareas serán:
- Monitorización y seguimiento
- Implementación derivador del tipo "JCS".

Pues nada, si la "parienta" me deja seguir con los cacharros por medio, os cuento proximamente más avances.

Saludos!!

PD: Felíz día de la madre para mi madre y para la parienta.

ACTUALIZACION

JCS nos adjunta un esquema de otro sistema de derivación más preciso y que ha usado en otras instalaciones. Con tu permiso JCS lo voy a poner.


Gracias por tu aportación.