PWM con microcontrolador

Hola a todos y felicidades por este magnifico foro.Llevo tiempo ojeandolo y me ha ayudado mucho en muchas tareas, sobre electronica analogica y digital.
Aunque lo que pretendo hacer no es nuevo, me he encontrado con algunos problemas que no consigo resolver.Me explico.
La idea es realizar una luz para usar en espedeologia y demás.Para esto interesa, que sea una luz potente y que la autonomia sea lo mas larga posible.
Despues de observar diferentes componentes, me decidí por los microcontroladores, ya que son baratos y se pueden programar para hacer mas cosas.
Buscando por aquí e internet, conseguí apañar un programa que genera un PWM en un 16f84A.Mediante un solo pulsador se consiguen 5 posiciones de salida, que son , Apagado,350mA, 700mA, 1200mA, y 1600mA.
Alimentando el circuito con 7.2v (2 baterias de litio de 3.7v) y uso un 7805 para alimentar la parte del 16F84A. Utilizo un led P7 y lo excito con un FQP50N06 directamente de la bateria.
En principio el circuito funciona bien, pero me han surgido 2 problemas.
Primero que a partir de 7.4v de tensión, el led de potencia me parpadea.No logro averiguar el porque.
Segundo, la caida de tensión en el desgaste de la bateria me produce una caida de corriente en la carga, por lo que deduzco que necesito algún tipo de realimentación,para mantener la corriente constante.
El primer problema no lo he podido resolver, el segundo pues tengo alguna idea.
Podría cambiar el pic por otro que tubiera A/D y utilizar esta facultad para medir la salida,compararla y rectificar el error.
La verdad es que he leido alguna cosa sobre esto último pero no consigo realizar algún boceto.Al final tengo en mis manos un 16F873 y es aquí donde formulo mi o mis preguntas.
Podríais guiarme sobre el tema de la realimentacion, si es posible, en este pic o parecidos.
Se que existen CIS dedicados pero el reto está en hacerlo con microcontroladores de este tipo.
Ante todo muchas gracias y en cuanto puedo,os pongo el esquema y programa que estoy usando con el 16F84A.
Un saludo.
 
Última edición:
Tienes que separar la etapa de control y la de potencia...eso me ocurria mucha veces cuando queria alimentar un motor...de cualquier tipo que consumiera mas de 500mA, entonces cambie la fuente osea que una sea para la etapa de control y otra para la de potencia que no es mas que un motor, LED super brillante..etc...

solo es un consejo...espero que sea eso ya que lo digo por experiencia...XD
 
__CONFIG _CP_OFF&_WDT_OFF&_PWRTE_ON&_XT_OSC
LIST P=16F84A
INCLUDE<P16F84A.INC>
CBLOCK 0x0C
contador
ENDC
#DEFINE LED PORTB,0
#DEFINE pulsador PORTA,0
ORG 0
GOTO INICIO
INICIO
BSF STATUS,RP0
BSF pulsador
BCF LED
BCF STATUS,RP0
BCF LED
CLRF contador
INCF contador
PRINCIPAL
BTFSC pulsador
GOTO PRINCIPAL
BTFSC contador,0
CALL RUTINADESALIDA1
BTFSC contador,1
CALL RUTINADESALIDA2
BTFSC contador,2
CALL RUTINADESALIDA3
BTFSC contador,3
CALL RUTINADESALIDA4
BTFSC contador,4
GOTO RUTINADESALIDA5
GOTO PRINCIPAL
RUTINADESALIDA1
CALL Retardo_200ms
PW1
BSF LED
CALL Retardo_500micros
BCF LED
CALL Retardo_5ms
CALL Retardo_2ms
CALL Retardo_2ms
CALL Retardo_500micros
BTFSC pulsador
GOTO PW1
RLF contador
RETURN
RUTINADESALIDA2
CALL Retardo_200ms
PW2
BSF LED
CALL Retardo_2ms
BCF LED
CALL Retardo_5ms
CALL Retardo_2ms
CALL Retardo_1ms
BTFSC pulsador
GOTO PW2
RLF contador
RETURN
RUTINADESALIDA3
CALL Retardo_200ms
PW3
BSF LED
CALL Retardo_2ms
CALL Retardo_1ms
BCF LED
CALL Retardo_5ms
CALL Retardo_2ms
BTFSC pulsador
GOTO PW3
RLF contador
RETURN
RUTINADESALIDA4
CALL Retardo_200ms
PW4
BSF LED
CALL Retardo_2ms
CALL Retardo_2ms
BCF LED
CALL Retardo_5ms
CALL Retardo_1ms
BTFSC pulsador
GOTO PW4
RLF contador
RETURN
RUTINADESALIDA5
CALL Retardo_200ms
BCF LED
CLRF contador
INCF contador
GOTO PRINCIPAL
INCLUDE<Retardos.inc>
END

Me imagino, george, que te refieres a lo del parpadeo. Lo de separar las fuentes ¿te refieres a colocar unas baterias para la etapa de control y otras para la etapa de potencia?
 
Última edición:
Os pongo el esquematico,faltaría la parte del 7805 que alimenta el pic. El led es de potencia máximo 2800mA.
El valor de la resistencia del mosfet es de 1k y no de 10k, mia culpa, disculpas.

Otra cosa, referida al parpadeo,solo ocurre a partir de los 7.2v en adelante.Si coloco el circuito a menos de 7.2v, funciona bien.
Las medidas de corriente estan realizadas sobre la placa y el ciclo de trabajo en la posición de 1600mA, creo que no llega ni al 50%, que si no estoy equivocado,esto es así, cuando la señal de PWM está el mismo tiempo en alto que en bajo.
 

Adjuntos

  • circuito.pdf
    16.8 KB · Visitas: 331
Última edición:
En mi humilde opinión, lo que debes hacer es usar un driver de potencia integrado (mira Maxim, por ejemplo, que regala muestras) para el LED, ajustarlo para la máxima potencia, y mediante una salida del timer del micro activar el LED durante un tiempo pequeño cada milisegundo o diez milisegundos. Seguro que el driver de chicha del led lleva una entrada de enable o PWM o similar para tales efectos.

Una fuente separada para el led y otra para el micro es lo mejor (aunque salga de la misma batería). Alimentar el micro a 3V3 y baja frecuencia del reloj puede ser util. Aún así, obtener el mejor rendimiento no será fácil.
 
Gracias por vuestras contestaciones.En realidad,creo que lo de utilizar diferentes fuentes lo estoy haciendo.Me explico:
Tengo 2 baterias en serie de 3.7v cada una, lo que hace un total de 7.4v.Conecto un 7805 a estas baterias y alimento el circuito del pic, es decir, toda la parte que hay antes del mosfet de potencia. La parte del mosfet, la alimento directamente desde las dos baterias,es decir a 7.4v.
Con el pic, lo que hago es,producir diferentes estados, para que me varie el ciclo de trabajo y así obtener a la salida del mosfet diferentes corrientes en la carga.
Hasta aquí correcto, aunque sin dudas no será la mejor manera de hacerlo.
El problema está en que si cargo las baterias de litio a su carga máxima, es decir, 4.2v cada una, la suma de las dos me dá 8.4v, y el led a esta tensión me parpadea.
El segundo problema es que quisiera modificar el circuito de tal forma, que mediante algún tipo de realimentación, la corriente fuera estable a la salida.
Si por ejemplo, la primera posición, el ciclo de trabajo está al 10% y a la salida esto equivale a 300mA, es un ejemplo, la realimentación me debe de variar el ciclo de trabajo, cuando la tensión baje,debido al desgaste de las baterias.
Si, se que hay drivers dedicados para talfin, pero el reto es hacerlo con pics.
Sobre todo muchas gracias por vuestras opiniones y aunque soy un poco cabezón, estoy abierto a ideas y sobre todo aprender de esta comunidad, que es lo esencial.
Un saludo.
 
Buen aporte, pero mi ingles es muy limitado.Si pudieras darme algúna información sobre el enlace, porque me lo he mirado y no entiendo mucho.
Al parecer y por lo que yo entiendo, es un circuito basado en el pic 12F675 y se incluye el esquema de montaje y el programa de control, no?
 
Fijate el pdf que esta abajo, es un driver para leds con control de corriente hecho con un 12F675... tiene una eficiencia del 85%, tiene en cuenta la tension de la bateria... etc.
 
Si,si,entiendo,muy buen aporte,lo tengo que estudiar detenidamente.La verdad que a primera vista parece que es lo que busco.Muy completo y no creo que sea dificil de montar.
Ok, muchas gracias, una vez entienda el funcionamiento, intentaré simularlo a ver que tal.
Gracias y un saludo.
 
Bien,demomento y analizado el circuito, puedo asegurar y aseguro que estoy mas perdido que un caracol en el desierto. La verdad, que me está costando entender el funcionamiento.
Además, he intentado simular algo con mplab y me salen 2millones de errores (es un decir).
Así que si alguien me hecha una mano para entenderlo se lo agradecería.
Un saludo.
 
Es una fuente buck con control de corriente... es entendible que te de problemas en la simulacion.
Busca en google algo de info sobre fuentes buck, el resto es sencillo, la resistencia shunt te permite saber cual es la corriente en el led usando el adc del pic y en funcion de eso controla el ancho de pulso en el transistor.
 
Mira.No se si alguien te lo dijo ya, o te diste cuenta.
Para que in 78XX baje o mantenga constante la tensión con seguridad, tiene que tener al menos 3V más de entrada. Esto quiere decir que para que regule bien en los 5V, tendrías que proveerle 8V mínimo (5V + 3V).
Puede ser eso alguna causa de falla en el microcontrolador. Tal vez de una SI genere una tensión de 5V, pero cuando se lo exige apenas, debe ser inestable...

Tendrías que considerar eso...
Saludos.
T10

PD: Recordá que estás alimentando el regulador con 7,2V. O tal vez menos, por los consumos... Necesitarías una tensión de 8V mínimo.
 
A veces en los pequeños detalles están las fallas...

Tómenlo en cuenta... Una mala alimentación de un Microcontrolador puede ocasionar el reinicio constante del chip y funcionar mal...

Saludos.
T10
 
Entiendo, pero el problema es que a tensiones inferiores si que funciona bien. Es cuando le subo la tensión cuando empieza a parpadear.Si mido la tensión de salida del micro, es decir, la onda cuadrada, me da una lectura estable.El problema lo tengo en la etapa de potencia, si mido la tensión si que oscila.
Tambien he medido la tensión de alimentación del micro y se mantiene sobre los 4.85v sin oscilaciones.
La verdad es que no entiendo lo del parpadeo.
El circuito que me colocó fernandaoe me gusta, aunque me está costando de entender.Por lo que veo, generan el pwm poe software, como yo y además compensa la salida que es lo que andaba buscando.
Lo que pasa es que no tengo a mano ningún 12F675 y estoy intentando averiguar si el 16F873 podría hacer lo mismo, que sí tengo a mano.
De todas formas y por los comentarios que realizaís, parece ser, que el problema que tengo con el circuito anterior podría ser de hardware y no software.
Bien, todo será darle al coco a ver si lo conseguimos.
Un saludo.
 
Si el 16F873 tiene ADC se podria adaptar el codigo existente, pero como no tengo tanta idea no te puedo ayudar, se lo basico sobre micros ;)
En mi opinion, estudiando junto a google todo es posible :D
 
Atrás
Arriba