# Circuito para controlar solenoide mediante PWM



## tidusdavid (Mar 28, 2011)

Buenos dias, espero puedan resolver mi duda, expongo mi caso:
Tengo un microcontrolador (PIC) conectado a mi driver de potencia que se encarga de comandar una electrovalvula para un actuador, esta utiliza un PWM de 15.625 kHz para variar su voltaje en un rango del 0 al 10% de duty cycle puesto que es de 12V como se muestra en la figura:





Cuando conecto el microcontrolador sin la carga, es decir, sin la linea de 125V a la electrovalvula, este funciona perfecto, y se puede observar la señal pulsante en la Gate del mosfet IRFP250, pero cuando conecto la carga se me resetea el PIC y ya no me responde, tengo que apagar la fuente de 125V y re-energizarlo para que vuelva a funcionar, trate ademas de separar la tierra del PIC de la tierra de 125V pero sucedia lo mismo, parece que la solenoide esta "devolviendo" un voltaje al microcontrolador que lo resetea...

Nota: ->Porque no use el voltaje de 12V en vez de 125V y en vez del 0 al 10% del duty poner del 0 al 100%? porque asi lo requieren los que estan al mando del proyecto, quieren utilizar la teoria de voltaje y corriente promedio para obtener los 12V.
-> En la imagen puse duty del 14% pero realmente la trabaje en vivo con un duty maximo del 9%

Adjunto simulacion a color de la oscilografia, a la izquierda se presenta una escala de voltaje y a la derecha una escala de corriente





Si alguien tiene una sugerencia por favor hacermela llegar,
Muchas gracias

Links para las imagenes grandes:
http://i653.photobucket.com/albums/uu260/tidus_david/driverdepotenciacxto.jpg
http://i653.photobucket.com/albums/uu260/tidus_david/DriverdePotenciaV5.jpg


----------



## seaarg (Mar 28, 2011)

Probaste poner el diodo de proteccion entre los terminales del mosfet? (cosa que vaya directo a tierra y no pase por el mismo).

Otra cosa, proba poner un capacitor en paralelo con el solenoide. Para empezar un 104 o alguno de fuente de PC que se aguante alto voltaje.

Asumo que el pic tiene su capacitor lo mas cercano posible entre gnd y vcc

Son ideas nomas, suerte!


----------



## tidusdavid (Mar 28, 2011)

seaarg, muchas gracias por la respuesta,
No le he puesto el diodo al mosfet, uso uno de 12A, es decir otro STTA1212 como en la solenoide (yo le puse uno de 12A porque el fusible de la linea de 125V es de 10A)? ,me imagino que es para que descargue por el diodo a tierra y no por el mosfet... umm sobre el capacitor del pic, este si lo tiene, es de 1uF y esta exactamente en donde se conecta y sobre el capacitor en paralelo de la solenoide debe ser sin polaridad?


----------



## seaarg (Mar 28, 2011)

Si, son ideas que te envio en base a algunas malas experiencias. No voy a decir que se exactamente de lo que estoy hablando jeje.

Al capacitor entre gnd y vcc del pic que decis que ya tiene, de 1uF ponele en paralelo un ceramico de 100nF (104)

El mosfet, no vi el datasheet pero posiblemente tenga su diodo interno de proteccion y no deberia darte problemas, para probar nomas pon un diodo FR107 (conseguible en fuentes de pc rotas) entre el source y drain del mosfet, con el anodo en source. La finalidad de este diodo (que repito, el mosfet posiblemente ya lo tenga) es enviar los picos de tension inversa generados al desconectar el solenoide directo a tierra. Para ello no es necesario que sea de gran amperaje sino de alto voltaje. El que te indico es de 1000v 1A de corto tiempo de respuesta.

Lo del capacitor en paralelo con el solenoide si, sin polaridad y es solo intuicion que tengo, puede no hacer absolutamente nada o empeorar 

Proba primero con el capacitor ceramico en el pic. Tambien puedes poner capacitores ceramicos en las entradas y/o salidas del pic que tengan algun tipo de comunicacion con posibles fuentes de ruido.

En realidad, aqui en el foro hay un post que vi hace mucho sobre como hacer correctamente los calculos de los capacitores para filtrar ruidos. Vas a tener que buscarlo porque no recuerdo ninguna url. A priori, 100nF es un valor bastante comun pero el valor exacto y correcto se calcula en base a la frecuencia del ruido que se quiere filtrar.

El driver de potencia que adjuntaste lo veo un poco extraño. Yo hubiera hecho un simple mosfet controlado por algun transistor chico, como un bc337 pero tendras motivos que desconozco para hacerlo asi.

Por otro lado, otra prueba que podes hacer es cambiar la frecuencia del pwm a ver si cambia el ruido (estamos apostando a que es ruido lo que te resetea el pic)

Pregunta tonta: Los 125v son CC verdad?

Verifica con osciloscopio el vcc del pic, quiza tengas ruido filtrado en alimentacion.

Tambien podes intercalar un optoacoplador entre el pic y el driver de potencia.


----------



## tidusdavid (Mar 29, 2011)

si los 125 son de DC, sobre el porque lo hice asi, pues ese integrado L293D es un push-pull, este tiene un transistor NPN y PNP unidos en una configuracion Totem-Pile, lo mejor de usar este tipo de circuito es que descarga el capacitor que tiene por fabricacion la gate del mosfet directamente a tierra cuando hay un pulso de 0V ayudado por el schottkey, la resistencia de 1k con el transistor y luego el comparador es una proteccion por hardware para evitar que a la solenoide le lleguen mas de 12V (si supera este voltaje simplemente se desconecta el mosfet), ese mosfet IRF630 se apaga evitando que fluya corriente al IRFP250 cuando el voltaje promedio de la señal cuadrada negada (en el maximo valor negado seria 90% de duty cycle) es menor a 13.5V. 

Estuve realizando unas pruebas, y hice unos cambios solo para ver que estaba sucediendo, en vez de alimentar a 125DC alimente a 12DC la solenoide y trabaje del 0 al 100% del duty cycle, puse el diodo de proteccion para el mosfet aunque el ya interno tiene un Zener, quite la proteccion por hardware y como comentario: la fuente del PIC la estoy sacando de un regulador LM7805 alimentado por 15VDC. Note que el PIC aun se reseteaba cuando llegaba al 50%, entonces le puse un diodo 1N4007 a la tierra del PIC con el catodo apuntando hacia tierra (para evitar que de la tierra le estuviera llegando un voltaje), tambien anexe otro diodo 1N4007 a la salida de PWM del PIC y segui notando que se reseteaba el PIC pero duraba mas tiempo sin resetearse, finalmente probe poner la fuente del PIC de 5V de una fuente variable BK Precision externa y nunca se me reseteo el PIC, por lo que concluyo que el problema esta en el regulador LM7805, el cual cuando lo conectaba al PIC se caia de 4.8V a 4.3V, tienes depronto alguna idea de como podria mejorar el circuito del regulador para no tener que alimentar los 5V desde otra fuente externa sino sacarlos desde la de 15V? ¿Si el mosfet tiene interno ese diodo zener, cierto que no es necesario ponerle entonces otro diodo?


----------



## Daniel Meza (Mar 29, 2011)

otro tip que te puede servir es revisar la terminal de reset del pic. Es decir ver que algún cable que maneje la potencia no esté cerca de la terminal (problemas de inducción electromagnética).


> ¿Si el mosfet tiene interno ese diodo zener, cierto que no es necesario ponerle entonces otro diodo?



No, ya no es necesario.



> tienes depronto alguna idea de como podria mejorar el circuito del regulador para no tener que alimentar los 5V desde otra fuente externa sino sacarlos desde la de 15V?



Regular de 15V a 5V es un rango muy grande de voltaje por regular que provoca que el 7805 se pueda calentar demasiado, antepón entre la fuente y el 7805 un "pseudo" regulador que disminuya el voltaje de entrada del 7805 (y que a la vez pueda ayudar algo con los problemas de reseteo). Me refiero a algo como el circuito adjunto.


----------



## seaarg (Mar 29, 2011)

En teoria al mosfet no tendrias que ponerle diodo de proteccion. En las smps yo los uso directo a la bobina del trafo, que para eso tiene el diodo interno. Era solo una prueba.

Me resulta muy extraño que se caiga la tension del regulador ya que el pic deberia consumir muy pocos mA. A menos que el driver del mosfet este alimentado desde alli tambien y puede que tenga picos altos de consumo cuando switchea. (Al descargar / cargar la capacitancia de gate) Segun veo en tu esquema esta con fuente separada (15v)

Entonces: Antes del 7805 pone un cap 100uF 25v en paralelo con un ceramico de 100nF. Despues del mismo, otro de 100uF 16v en paralelo con 100nF Estos deben estar lo mas cerca posible del 7805. Si queres valores mas tecnicos, fijate en el datasheet del 7805 te da exactamente los que tenes que poner. En mi experiencia los que te sugiero van bien pero siempre depende de la naturaleza del ruido.

Una "chanchada" que solia hacer con un amigo es poner un 7809 antes del 7805 para evitar calentamiento. Todo dependera en realidad del consumo del circuito, dentro de ciertos limites.

Por otro lado, si lo anterior no resulta, proba cambiar el 7805. Me paso que una vez tuve uno que generaba un ruido bastante importante, lo cambie por otro "de mejor marca" y salio todo funcionando bien.

Tenes posibilidad de poner osciloscopio en los 5v del pic? Verifica que no se este cayendo el voltaje en cada encendido / apagado del mosfet. Tu fuente de 15v entrega corriente suficiente para todo el circuito?

¿Podra ser que la FEM de la bobina te este afectando ese circuito de proteccion (el comparador)?

No quiero criticar el diseño ni mucho menos, pero podrias haber resumido esto con 2 transistores en totem-pole que manejen el mosfet. Por otro lado, podias entrar a una pata del PIC con un comparador + optoacoplador que te indicase sobrevoltaje.

Con esto te ahorrarias el driver que es caro y manejarias perfectamente el mosfet. Lo que te sugiero es basicamente algo similar al lazo de realimentacion de una smps.

Despues de postear vi la respuesta de Daniel, definitivamente nos habiamos olvidado del reset. Asegurate que este en un nivel logico fuerte, y de baja impedancia.


----------



## tidusdavid (Mar 29, 2011)

Muchas gracias daniel y seaarg,
Umm sobre lo del Totem Pole, si yo se que pude haber puesto el PNP y NPN pero este encapsulado ya tiene interno eso y me sirve para manejar los 4 inyectores que necesito mover (el L293D tiene 4 salidas en Push-Pull y 4 entradas), sobre la proteccion fue capricho de la empresa por lo que lo implemente como se ve y en parte tienen razon de proteger por hardware el mosfet y por software (el de software ya lo tenia implementado tambien), la de hardware es con el fin de que si el microcontrolador se apaga o por algun motivo deja un duty cycle sostenido por encima del 14, entrarian 64 amperios y 125 V (la solenoide tiene una resistencia interna de apenas 2 ohm) por el mosfet IRP250 quemandolo, mientras que asi siempre estara comparando el amplificador que voltaje hay asi no halla PIC. umm sobre la induccion, te comento que la solenoide esta a 2 m del circuito puesto que la señal la traje a mi modulo con cable encauchetado, entonces no creo que sea la FEM, la señal de 5V del pic mañana la monitoreo y voy a poner la sub-etapa con otro regulador para evitar el calentamiento del 7805 (sobre los capacitores de entrada y salida utilice los que me recomendo el datasheet de 0.33 y de 0.1 uF), la fuente de 15V es de 8A (Phoenix Contact) y los 12V para la solenoide los saco de otra fuente aparte (Phoenix Contact tambien), lo del master clear no hay cables cercanos de potencia (mi PIC esta montado en una PCB aparte y llevo la señal de PWM que no es de potencia al driver para que eleve este voltaje) tengo que ver su nivel logico a ver si es sostenido, mañana les cuento despues del trabajo como me fue... Gracias!


----------



## artgos (Mar 30, 2011)

Buenas:

Yo cuando me pasan cosas asi, pongo optoacopladores, entonces el pic ni se entera de lo que hay detras y no le afectan picos ni nada.

Ya te digo que con mosfet he trabajado poco, pero lo de aislar control y potencia siempre me ha funcionado.

Un saludo


----------



## seaarg (Mar 30, 2011)

tidusdavid dijo:


> sobre los capacitores de entrada y salida utilice los que me recomendo el datasheet de 0.33 y de 0.1 uF



Solo puedo decirte que pruebes reemplazar el de 0.33 por 0.1 uf

En un proyecto puse esos valores segun datasheet y no funcionaba bien.


----------



## Scooter (Mar 30, 2011)

Yo optoacoplaría sin dudar y emplearía dos fuentes totalmente independientes y decentes, varistores, cable apantallado etc etc etc


----------



## DATAGENIUS (Mar 30, 2011)

Hola, quería cooperar...

Estoy de acuerdo por mi experiencia con PIC's con algunas cosas:

1º.- dejaría al PIC alimentado, ojalá, con un regulador positivo 7805 (requiere de un Voltaje de entrada superior o igual a 9v)
2º.- con el capacitor cerámico de 100nf pegadito (encima) del PIC entre Vcc y GND
3º.- al terminal MCLR, no conectarlo directamente a Vcc, sino mediante una red RC, la R de 1k al Vcc y el C a tierra de 100nf y el MCLR al medio de los 2 (se usa para fuentes de poder lentas, pero también para fuentes con alguna interferencia en la línea)
4º.- usar opto-acoplador tipo 4N26 o similar.
5º.- el solenoide alejadito del PIC o con su estructura metálica a tierra.

 Espero haber ayudado en algo.


----------



## marcelo2112 (Mar 30, 2011)

Hace unos dias tuve un problema similar, lo solucione poniendo un capacitor de 470n de poliester del lado de abajo de la plaqueta entre el positivo y masa del pic.


----------



## tidusdavid (Mar 31, 2011)

Gracias a todos por las sugerencias, a continuacion comento que se hizo:
Los capacitores respectivos se añadieron al microcontrolador (el de paralelo a +V y GND ceramico 470uF), el Masterclear desde un principio estaba con una resistencia de 1k a +V, el regulador de 5V ahora es alimentado por uno de 9V y ya no se estan calentando, la alimentación de este regulador de 9V es de 12V, se le implemento un circuito RC (R=100 ohm 1Watt, C=100nF Ceramico) en paralelo a la solenoide, esta solenoide esta a unos 2 metros o mas del microcontrolador, pero aun no he optoacoplado puesto que estoy buscando un optoacoplador de mas de 15 kHz de frecuencia, los comunes no son de alta frecuencia.

Con los cambios que mencione se probo de nuevo y despues de unos 20 segundos de cambiar el duty cycle para regular proporcionalmente el voltaje y la corriente de la solenoide se reseteo de nuevo el microcontrolador, por el momento estoy a la espera de unos optoacopladores de alta frecuencia para verificar si optoacoplando se soluciona el problema.

Estare en contacto en cuanto los consiga, mucha suerte


----------



## DATAGENIUS (Mar 31, 2011)

tidusdavid dijo:


> Gracias a todos por las sugerencias, a continuacion comento que se hizo:
> 
> el Masterclear desde un principio estaba con una resistencia de 1k a +V
> 
> Estare en contacto en cuanto los consiga, mucha suerte



 Hola, recuerda que se le agrega un C al MCLR a tierra... en la DATA del PIC16F84A, en la página 28, hay un claro ejemplo...

Lamento que te ocurra esto  por otro lado, viendo la data del 4N26, creo que te puede servir 

Sigamos en contacto...


----------



## Black Tiger1954 (Abr 1, 2011)

Probaste poner una resistencia no inductiva en lugar del solenoide para ver si hace lo mismo?
Podes medir la inductancia que tiene el solenoide?


----------



## tidusdavid (Abr 1, 2011)

Sip probe con una resistencia y no ocurre lo mismo, sobre la inductancia, claro la puedo medir, este lunes la mido y sobre el C a tierra, tengo que añadirlo y ese opto-acoplador esta muy rapido (1 Mhz), me sirve demasiado, voy a conseguirmelo y luego les cuento, Muchas gracias a todos


----------

