# PWM con microcontrolador



## reydebastos (May 7, 2010)

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.


----------



## george.manson.69 (May 7, 2010)

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


----------



## reydebastos (May 7, 2010)

__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?


----------



## george.manson.69 (May 7, 2010)

si...si no es que no consume mucho el led...que pusiste si no es asi,,entonces debe de ser el programa...


----------



## reydebastos (May 7, 2010)

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.


----------



## fernandoae (May 7, 2010)

Metele una resistencia aunque sea media chica, es salvaje lo que estas haciendo


----------



## reydebastos (May 8, 2010)

Jejejjeejje, salvaje?, lo de la resistencia, te refieres a ponerla en serie con el led?.


----------



## Beamspot (May 8, 2010)

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.


----------



## reydebastos (May 8, 2010)

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.


----------



## fernandoae (May 8, 2010)

http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1824&appnote=en012124
Bueno, bonito y barato.


----------



## reydebastos (May 8, 2010)

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?


----------



## fernandoae (May 8, 2010)

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.


----------



## reydebastos (May 8, 2010)

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.


----------



## reydebastos (May 9, 2010)

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.


----------



## fernandoae (May 9, 2010)

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.


----------



## Tavo (May 9, 2010)

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.


----------



## fernandoae (May 9, 2010)

Ah pequeño detalle, no me habia dado cuenta, si tu consumo en el micro no es mucho metele un zener de 5V y una resistencia


----------



## Tavo (May 9, 2010)

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


----------



## reydebastos (May 10, 2010)

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.


----------



## fernandoae (May 10, 2010)

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


----------



## reydebastos (May 10, 2010)

Ok,tranquilo, me has ayudado mucho con el circuito anterior.Estoy intentando entender los codigos para adaptarlos al 16F873 que tengo o al menos coger algo de idea para hacer algo parecido.
La idea es encender un Led de potencia, a diferentes modos, que tenga compensación de intensidad de salida por el tema de la caida de las baterias y que la autonomia sea la mejor posible, ya que es muy importante para el tema de la espedeologia.
El que tú pusistes, lo hace y lo hace con Pic que es lo que yo quería.Ahora si hay algún circuito mas para poder comparar, pues no estaría nada mal.
De todas formas creo que para empezar está muy bien, y que poco a poco, haremos algo decente.
Un saludo.


----------



## Tavo (May 10, 2010)

reydebastos dijo:


> 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.
> ...



Te confieso que no estoy muy al tanto de tu proyecto, pero:
Si estás excitando a un MOSFET con onda cuadrada (o como sea) tenés que considerar el consumo de _gate_ (mal dicho, la base), yo creo que es MUY MÍNIMO, pero a tener en cuenta.
Y, otra cosa que seguís pasando por alto:


> el problema es que a tensiones inferiores si que funciona


ESTO!! y...


> Es cuando le subo la tensión cuando empieza a parpadear.


ESTO!! También...
El problema es cuando (sin dudas) exigís al circuito, ya sea mínima la exigencia, pero es.

Haceme caso... Aunque sea, a modo de prueba, alimentá el circuito con una BUENA corriente y con 10VCC. Y verificá resultados.

Saludos, y ÉXITOS! 
T10


----------



## reydebastos (May 11, 2010)

Ok,lo he puesto a 10v, pero nada, parpadea.Lo he probado con una fuente de alimentación regulada para no tener problemas con las baterias. sigue haciendo lo mismo.
El consumo de la carga era unos 500mA y el led parpadeaba.

Un saludo.


----------



## Tavo (May 11, 2010)

Reydeabastos, que lástima que tengas problemas, dame un tiempo, dejame estudiar un poco tu problema y en lo que pueda te voy a ayudar...

Espero que tu PWM con micro tenga final feliz. Estoy leyendo...
Saludos.
T10


----------



## reydebastos (May 11, 2010)

Ok,tranquilo.Agradezco cada una de las respuestas que me dais.


----------



## Tavo (May 11, 2010)

Releí todo el thread de vuelta... Ahora entiendo UN POQUITO más. Pero sólo un poco.

Cual es la razón lógica de usar un Microcontrolador como PWM? Es un antojo o algo de indica que debe ser con microcontrolador?

Realmente, nunca, nunca usé un Microcontrolador, así que no te voy a poder ayudar por el lado del SOFT, y con mosfets... Tampoco  (bueno, solo un poco, lo básico)

Por qué no querés usar un PWM hecho para tal fin? Si o si el LED tiene que estar bajo el mando de un Microcontrolador?
Porque si el tema es evitar el consumo, lograr una buena eficiencia, al menos por probar, podrías usar un 555 para hacer un pulso de unos cuantos Hertz y ver que tal el consumo...
(perdona si estoy diciendo burradas, es una idea muy subjetiva)

Sigo leyendo a ver que encuentro de nuevo.
Saludos.
T10


----------



## Chico3001 (May 12, 2010)

Me parece que el problema esta en la subita descarga de la bateria (o la fuente regulada), la fuente de alimentacion pasa de dar 5mA a 500 en unos pocos microsegundos, lo cual pone la alimentacion general practicamente a cero cortocircuitando el 7805 y de paso dañandolo momentaneamente... 

Mi recomendacion (si este fuera el caso) es separar la carga por medio de un diodo, y poner un capacitor que alimente al led para compensar, ademas ponerle diodos de proteccion al 7805 para evitar cortocircuitar la entrada ya que eso es uno de los problemas mas fuertes a lo que lo puedes someter... por alguna razon el fabricante lo protegio muy bien a la salida.. pero a la entrada casi no tiene proteccion alguna


----------



## reydebastos (May 12, 2010)

A ver, lo de realizar el circuito con microcontrolador, a parte de una cabezonería, es un reto.A demás creo que con un microcontrolador, podré añadirle mas funcionalidades al sistema, cambiando el soft.
No entiendo muy bien lo que comentas de evitar el consumo.Lo que quiero realizar es un circuito que tenga 3 o 4 posiciones de luminosidad.
Hasta aquí, creo que lo hemos conseguido y digo hemos porque la verdad en este foro encontré ideas para realizarlo.
El problema reside en 2 problemas que no logro resolver.Uno, sería el parpadeo del Led a una tensión de alimentación, superior a 7.4v y otro problema es que necesitaría una compensación del PWM para que la caída de la batería no afecte la luminosidad.
El consumo no me importa,dentro de unos limites máximos claro está, pero si me importa que la luz sea uniforme y que dure con la misma intensidad el mayor rato posible.
Lo que comenta chico3001, pues la verdad no lo he probado.En cuanto pueda la pruebo.Pero por lo que entiendo en tu post, creo que te refieres a que cuando el Led pide intensidad, la entrada del 7805 queda sin sufieciente corriente como para actuar como tal, dejando sin alimentación al microcontrolador, produciendo un reset del mismo o un funcionamiento inadecuado.
Si te refieres a esto, hace algún tiempo hice una comprobación, con un tester, en la pata de alimentación del micro, cuando el led parpadeaba y me daba una lectura de 4.85v.Pero claro, si la frecuencia es muy alta, pues igual con el tester no le da tiempo a mostrar el fallo.
Intentaré probar lo que comentas y te cuento.
Un saludo y gracias.


----------



## Tavo (May 12, 2010)

> Pero por lo que entiendo en tu post, creo que te refieres a que cuando el Led pide intensidad, la entrada del 7805 queda sin sufieciente corriente como para actuar como tal, dejando sin alimentación al microcontrolador, produciendo un reset del mismo o un funcionamiento inadecuado.



Tal Cual. Esa es la intención.

Creo que no estás alimentando bien al micro y por eso falla...

Chico3001 y yo vamos para el mismo lado, la alimentación. Tiene que ser constnte y suficiente para mantener al micro "despierto" y trabajando...

Saludos.
T10

PD: En lo que pueda, iré leyendo y ayudándote.


----------



## josejackson (May 12, 2010)

Prueba con un driver, como este por ejemplo: http://es.farnell.com/texas-instruments/l293dne/controlador-periferico-dual-36v/dp/1470423

Lo hemos usado para los motores paso a paso de un robot y va perfectamente.


----------



## 1jabato1 (May 12, 2010)

Al final te volveremos loco entre todos.

Yo creo que estas excediendo las características del led al aumentar la alimentacion,si pudieras sensar la intensidad del circuito del led y adecuar el pwm a dicha intensidad,matarías dos pájaros de un tiro,por un lado optimizas el foco y por otro evitas el parpadeo, independientemente del estado de las baterías.


Saludos¡¡

Javi


----------



## fernandoae (May 12, 2010)

> si pudieras sensar la intensidad del circuito del led y adecuar el pwm a dicha intensidad,matarías dos pájaros de un tiro


Es EXACTAMENTE lo que hace el circuito del 12F675, y, ademas sensa la tesion de la bateria. Es un AN de microchip asi que su funcionamiento esta asegurado.
De mas esta decir que tiene la funcion dimmer y diferentes secuencias de intensidad, como ser flash... etc.


----------



## reydebastos (May 13, 2010)

De antemano gracias por vuestras respuestas. 
El driver que me propone josejackson, creo que no me serviría.La corriente necesaria excede la máxima de ese componentente, que creo que es de 1.2A y la que yo necesitaría rondaría los 2A, en su punto máximo,claro está.
Lo del tema del senseo de corriente es una cuestión que si me interesa.El circuito que me propuso fernandoae tiene toda la pinta de resolver mis problemas.
Pero he estado realizando pruebas con mplab y los archivos que vienen en el enlace y no me funciona.No logro compilar el codigo para grabar el Pic.
Posiblemente lo esté haciendo mal, no ze.
Si consigo hacerlo os lo comento.
Por otra parte, el circuito que realizé junto con su programa, fué un circuito de pruebas y el principio de todo este lio, poco a poco tengo que ir evolucionando al circuito del 12F675 o algo similar.
Un saludoy os voy comentando el tinglao.


----------



## reydebastos (May 15, 2010)

Bueno,pues depues de varias pruebas no consigo compilar los codigos del 12F675.El mplab me tira errores.No se si alguno de vosotros ha probado estos codigos y me puede hechar una mano, ya que si no compilo, no puedo grabar el pic y si no grabo el pic, pues no lo puedo probar.
Al circuito que me refiero es al que puso fernandoae, que es un AN874 de Microchip.
Un saludo.


----------



## fernandoae (May 15, 2010)

Que errores te tira?


----------



## eserock (May 15, 2010)

Seria bueno que indicaras de que potencia es el led que usas, casi siempre es ahi donde radica el problema, en el foro muchas veces he señalado el pronblema que existe con estos leds y que nadie conidera generalmente, los leds de alta potencia  no tienen una resitencia interna fija esta disminuye al aumentar su temperatura, logicamente si aplicas poco  voltaje  la corriente  es poca  pero conforme transcurra el tiempo la temperatura aumentara y comenzara a dismunuir la resistencia  aumentando con ello el flujo de corriente si tu aumentas el voltaje y hacer fluir  los 1600 mA que señalas el led aumentara su temperatura rapidamente y corta el flujo de corriente en forma oscilatoria de acuerdo con la temperatura alcanzada,  generalmente se usa una fuente  de corriente constante para alimentar el led es decir el circuito de control debe aumentar o disminuir el voltaje  opara mantener siempre la misma corriente circulando por el led, generalmente  el fabricante  de estos leds te da una corriente nominal maxima de trabajo y la minima tu la determinas.

verifica este enlace haber si te da mas idea  de lo que te explico


http://www.agspecinfo.com/pdfs/B/BTXC30X.PDF


----------



## reydebastos (May 16, 2010)

A ver si me se explicar.Utilizo un led de potencia de 10W. Corriente máxima 2800mA.
El primer circuito que realizé funciona, digamos, bien.Lo que pasa es que el sistema que estamos diseñando debe funcionar con baterias, ya que será un circuito que se utilizará para dar luz en espedeologia.Por lo tanto, es importante que sea eficiente,que tenga una larga autonomia y que su tamaño sea reducido.
Como el circuito queremos alimentarlo com 2 baterias de litio de 3.7v, nos encontramos con una tension de 7.4v en total.
En este primer punto radica mi primer problema, a la que alimento el circuito con más de 7.2v, el led de potencia parpadea.
el segundo problema, es la realimentación. En la práctica se ve claramente que si no hay una  rectificación de la corriente de salida, a medida que se descarga la batería, ésta varía por lo que la luz del led va variando.La idea es utilizar algún tipo de realimentación para que el Pic modifique el PWM y así compensar esa variación.
Fernandoae, me propuso un circuito, AN874, que a mi parecer es muy semejante a lo que busco, pero estoy intentando compilar los codigos en mplab y me tira errores.
No se exactamente cual es el fallo, ya que he compilado diferentes Pics y no he tenido problema.
En este caso me encuentro con diferentes codigos en .asm que no se bien como colocarlos en el proyecto.
Por lo que deduzco, cada codigo hace una función determinada, es decir, ADC.asm pues se encarga de la conversion analogico/digital, y así etc.. hay un codigo principal que llama a todos los demás flashlite.asm, si no me equivoco.
Cuando realizo el proyecto no compila, me tira errores y no logro realizar el .HEX.
Un saludo.

Fernandoae, el error que me tira es este.

Debug build of project `D:\proyectos mplab\12f675 en pwm\pwm con 12f675.mcp' started.
Language tool versions: MPASMWIN.exe v5.35, mplink.exe v4.35
Preprocessor symbol `__DEBUG' is defined.
Sun May 16 11:10:23 2010
----------------------------------------------------------------------
Clean: Deleting intermediary and output files.
Clean: Done.
Executing: "C:\Program Files\Microchip\MPASM Suite\MPASMWIN.exe" /q /p12F675 "flashlite.asm" /l"flashlite.lst" /e"flashlite.err" /o"flashlite.o" /d__DEBUG=1
Error[151]   D:\PROYECTOS MPLAB\12F675 EN PWM\ADC.ASM 99 : Operand contains unresolvable labels or is too complex
Error[151]   D:\PROYECTOS MPLAB\12F675 EN PWM\ASQ.ASM 121 : Operand contains unresolvable labels or is too complex
Error[151]   D:\PROYECTOS MPLAB\12F675 EN PWM\ASQ.ASM 125 : Operand contains unresolvable labels or is too complex
Error[151]   D:\PROYECTOS MPLAB\12F675 EN PWM\ASQ.ASM 157 : Operand contains unresolvable labels or is too complex
Error[151]   D:\PROYECTOS MPLAB\12F675 EN PWM\ASQ.ASM 162 : Operand contains unresolvable labels or is too complex
Error[151]   D:\PROYECTOS MPLAB\12F675 EN PWM\CMD.ASM 117 : Operand contains unresolvable labels or is too complex
Error[151]   D:\PROYECTOS MPLAB\12F675 EN PWM\CMD.ASM 121 : Operand contains unresolvable labels or is too complex
Error[151]   D:\PROYECTOS MPLAB\12F675 EN PWM\KEY.ASM 128 : Operand contains unresolvable labels or is too complex
Error[151]   D:\PROYECTOS MPLAB\12F675 EN PWM\KEY.ASM 132 : Operand contains unresolvable labels or is too complex
Halting build on first failure as requested.
----------------------------------------------------------------------
Debug build of project `D:\proyectos mplab\12f675 en pwm\pwm con 12f675.mcp' failed.
Language tool versions: MPASMWIN.exe v5.35, mplink.exe v4.35
Preprocessor symbol `__DEBUG' is defined.
Sun May 16 11:10:25 2010
----------------------------------------------------------------------
BUILD FAILED


----------



## fernandoae (May 16, 2010)

Estuve probando pero peor, me tira mas errores que a vos... lo que menciona el compañero de que la tension del led no es constante el circuito este lo tiene en cuenta, controla la corriente.
Vamos a ver que podemos hacer, el hardware no tiene problemas...


----------



## Chico3001 (May 16, 2010)

Mira... para resolver tu problema necesitas ir eliminando variables.. no puedes estar cambiando todo al mismo tiempo y esperar a que se resuelva solito... 

Primero necesitas definir que codigo quieres usar... todos los codigos son diferentes y pueden ser una causa del error, tambien necesitas estabilizar la alimentacion, aunque estes usando una bateria del voltaje suficiente el led consume tanta potencia que cuando enciende literalmente chupa toda la energia disponible robandole su alimentacion al PIC... 

Realiza tus pruebas con un codigo en baja potencia, ajustalo a como quieres que funcione y despues cambia al led de alta potencia... para ir eliminando poco a poco las causas del error...


----------



## ilcapo (Ene 18, 2011)

Hola queria preguntarles si tienen un archivo.asm  o me pueden dar una idea de como hacerlo que realice la siguiente funcion: pulsando un pulsador aumenta la velocidad del motor (PWM) cuando suelto el pulsador el motor mantiene la velocidad alcanzada y pulsando otro boton la velocidad disminuye, tambien al soltarlo la velocidad se mantiene, estube buscando por varios lados porque pense que era algo simple pero no he encontrado que lo haya hecho nadie y estube probando pero no logro realizarlo, desde ya muchas gracias, saludos (( PD: lo necesitaria para un pic16f84a))


----------



## fernandoae (Ene 18, 2011)

Sos nuevo en el tema de assembler?  buscá el pic simulator ide, posee un lenguaje (usa basic) mucho mas amigable, facil y rapido.
Cualquier cosa preguntame


----------



## ilcapo (Ene 19, 2011)

hace como un año que empece a ver los pic y el assembler es el unico que mas o menos conozco por eso pedia algo en assembler como ayuda , igualmente voy a ver ese que me pasaste si es mas facil mejor ! gracias

estube buscando pero no encuentro el manual en español, existe alguno ?? si lo tenes a mano y lo podes pasar te lo agradeceria, saludos !!


----------



## fernandoae (Ene 19, 2011)

he visto algo por ahi en español, si lo encuentro te lo envio


----------



## duile (Ene 19, 2011)

ok

q sea en español


----------



## unmonje (Ene 19, 2011)

ilcapo dijo:


> Hola queria preguntarles si tienen un archivo.asm  o me pueden dar una idea de como hacerlo que realice la siguiente funcion: pulsando un pulsador aumenta la velocidad del motor (PWM) cuando suelto el pulsador el motor mantiene la velocidad alcanzada y pulsando otro boton la velocidad disminuye, tambien al soltarlo la velocidad se mantiene, estube buscando por varios lados porque pense que era algo simple pero no he encontrado que lo haya hecho nadie y estube probando pero no logro realizarlo, desde ya muchas gracias, saludos (( PD: lo necesitaria para un pic16f84a))




hola...Yo escribi hace un año un sistema operativo para 16f84a,que entre otras cosas, genera 
PWM en A0 y A1 solapado, para salida tipo H.
La funcion se activa a traves de una instruccion.
No hace exactamente como tu  quieres,pero por programa , lo pones a donde tu quieras.!!!
Acepta 255 velodicades.,la corriente depende del electricista JAJAJ

Vere de buscar la fuente, està escrita de  en ASM y en realidad es un PLC  (8E/5S) ,que acepta programas de USUARIO y tiene muchas facilidades.
Sirve tambien para 16f877 y el 877/A
Lo uso para abrir puertas de super-mercados.(baratito)

No se si tu preguntabas por el control de corriente.Yo usaria un comparador externo.

Lo del LED en ese circuito con FET , es una burrada en mi opiniòn !!!

Si  respondes afirmativamente y lo encuentro ,lo subo.


----------



## ilcapo (Ene 20, 2011)

hola UNMONJE la verdad me parece muy interesante eso, si lo tenes a mano pasalo asi lo veo si me puede servir, aunque lo que yo necesitaba era algo mucho mucho mucho mas simple 

saludos y gracias de antemano!!


----------



## unmonje (Ene 20, 2011)

Aqui el archivo fuente en ASM....Le cambiè el gènero, por que de otro modo no lo sube.

Cuando lo analices...veras que tiene 10 timers, que basta con ponerles un tiempo en (TxR) y activarlos (BSF TxC,1) para que ya funcionen,cuando terminan se activa el bit 7 de su control (TxC),debes consultar ese bit para tomar acciones.
-configurables desde 10ms hasta 2 minutos y pico ,en pasos de 10ms ò
-pasos de 100ms hasta  22 minutos y medio
Tambien tiene 3 contadores de 8 bits,que pueden usarse como timers largos hasta 6 horas,usando los pulsos automaticos del registro PULSO  y CCIC
PULSO incrementa .3s/.6s/1,2s/2,4s/4,8s/9,2s  y asi...
Este registro tambien ,te permite encender leds facilmente.


Si invocas a la libreria ya existente en el texto,puedes sumar y restar en 16 bits,en los registros A,B,C y los resultados quedan en R.
Las rutinas para leer y grabar en la EPROm ya estan escritas y funcionan todas.
Se usa el puerto B como entradas y el A como salidas, es lo ùnico rigido que tiene.

En cuanto al programa del usuario, se programa como el LADDER
A la izquierda (arriba),se consultan los contactos de interes ..
...y a la derecha (abajo), se toman las acciones pertinentes.
PCICLO,0 es el bit de control para primer ciclo del PLC ,con el podras definir la constantes y variables iniciales del programa del usuario,que comienza en ORG 0x200 en Hexa..
Si no hay programa...solamente cicla en redondo.
En la version para 16f877A tiene al final, unos punteros para evitar que el programa se pierda si el programador mete la PATA, entonces,siempre vuelve al sistema operativo.
El programa de ejemplo...abre y cierra puertas de mercados..con motor tipo H
Es suficiente definir la velocidad minima y maxima , la aceleracion la hace solo.


Lo doy para fines solo *educativos* , si se le piensa dar un uso comercial, debo ser puesto en aviso  *formal*...ok?


----------



## ilcapo (Ene 22, 2011)

gracias unmonje voy a tratar de hacerlo funcionar si mis conocimientos de assembler me lo permiten ya que hace poquito q comence con esto, saudos !


----------



## kikiElectronico (Mar 12, 2011)

hola me gustaria saber si alguien tiene un esquematico sobre una luz( led, bombilla) que sea regulada mediante PWM con microcontrolador PIc.
gracias es urgente


----------



## unmonje (Mar 16, 2011)

kikiElectronico dijo:


> hola me gustaria saber si alguien tiene un esquematico sobre una luz( led, bombilla) que sea regulada mediante PWM con microcontrolador PIc.
> gracias es urgente


Debes ser mas especìfico...Tengo algo que controla motores,que es casi lo mismo...pero me faltan datos tuyos.Saludos.


----------



## dimipimpin (Mar 24, 2011)

hola !!  alguien podria ayudarme con un PWM de una bombilla de 12W, con 3 rangos de frecuencia: 100Hz, 1kHz, 5kHz.  Los rangos se cambian con la ayuda de un switch, y otro switch para variar el ciclo de trabajo de 10% en 10%. Utilizando cualquier pic y en lenguakje assembler. He oido que se puede utilizar el PWM del mismo PIC ya que es mas facil. Estaria muy agradecido si me ayudarais ya que veo que sabeis un monton de programacion y yo soy nuevo en ello !!  Si me ayudais con algun programa aunque no sea igual que yo pido,seria tambien de gran ayuda porque ya no partiria de cero !! 

un saludo !!


----------



## Beamspot (Mar 24, 2011)

Un pequeño detalle: los motores funcionan de manera lineal. El ojo tiene una sensibilidad exponencial, lo cual produce una curva bastante característica de respuesta de la intensidad lumínica al cambio de PWM.

Creo que hay un libro en castellano sobre programación de PICs, y encontraría sumamente raro que no hubiese ningún ejemplo de cómo manejar un PWM.


----------



## unmonje (Mar 24, 2011)

dimipimpin dijo:


> hola !!  alguien podria ayudarme con un PWM de una bombilla de 12W, con 3 rangos de frecuencia: 100Hz, 1kHz, 5kHz.  Los rangos se cambian con la ayuda de un switch, y otro switch para variar el ciclo de trabajo de 10% en 10%. Utilizando cualquier pic y en lenguakje assembler. He oido que se puede utilizar el PWM del mismo PIC ya que es mas facil. Estaria muy agradecido si me ayudarais ya que veo que sabeis un monton de programacion y yo soy nuevo en ello !!  Si me ayudais con algun programa aunque no sea igual que yo pido,seria tambien de gran ayuda porque ya no partiria de cero !!
> 
> un saludo !!


Posiblemente podriamos
Lamentablemente no pones tu circuito, ni mencionas cual es tu problema en particular,por lo comun aqui  ayudamos ,pero aprender a programar BIEN,no se hace en un rato ,ni siquiera en un año-  .....Espero respuesta


----------



## Felipe Castillo (May 24, 2011)

colegas tengan todos muy buena tarde.

les quiero pedir un favor, quien me puede ayudar a realizar un PWM de un motorcito DC a 12V el cual cambie de velocidad automaticamente en porcentajes, y que cambie tambien de giro segun la programacion.

necestiro realizar esto para 3 motores pero con tan solo me ayuden a programar para uno yo hago el resto, soy nuevo en el manejo de micros pero la verdad me ha sido dificil entender su programacion. muchas gracias


----------



## unmonje (May 26, 2011)

Felipe Castillo dijo:


> colegas tengan todos muy buena tarde.
> 
> les quiero pedir un favor, quien me puede ayudar a realizar un PWM de un motorcito DC a 12V el cual cambie de velocidad automaticamente en porcentajes, y que cambie tambien de giro segun la programacion.
> 
> necestiro realizar esto para 3 motores pero con tan solo me ayuden a programar para uno yo hago el resto, soy nuevo en el manejo de micros pero la verdad me ha sido dificil entender su programacion. muchas gracias




---------------------------------------------------------------------------------
Enseñar programaciòn ,en cualquiera de sus opciones,no es algo que pueda comunicarse por este medio...y menos de una PIC.
Si no has entendido la programaciòn ,posiblemente se deba a que todavia te falta formaciòn.
Sea que programes en -C- ò en -Assembler- ,ambos necesitan al menos un par de meses de formaciòn (varias horas diaria) y otros tantos para practicar programaciòn.Sin dejar de mencionar ,la -imaginaciòn- necesaria (aptitud que no puede transferirse.).
Te comento, antes de escribir mi primer programa en Asembler,hace como 35 años ya,estuve capacitandome autodidacticamente durante mas de un año.(Debi leer mucho en Inglès)
Ahora,cuando me encuentro con algun Asembler nuevo,necesito un par de dias para,poder empezar a escribir algo.(Espero se entienda)  ...Saludos.

PD: Si bajas el archivo -DOORF8400.txt-  que -subi- en un tìpoco mas arriba ,te podras dar idea de que siginifica hacer un PWM con una PIC. (Ese chiste ,se llevo casi 6 meses de mi vida,pero funciona bien )
En realidad ese programa  simula un PLC  ,que puede hacer muchas otras cosas si lo progrmas adecuadamente.

------------------------------------------------------------------------


----------



## Felipe Castillo (May 27, 2011)

Ok colega, muchas gracias por tu aporte, me podrias decir donde puedo bajar el post que subiste, muchas gracias.


----------



## unmonje (May 27, 2011)

Felipe Castillo dijo:


> Ok colega, muchas gracias por tu aporte, me podrias decir donde puedo bajar el post que subiste, muchas gracias.



El post  para bajar el programa (que es un  sistema operativo) esta en este topico unos 8 -post- mas arriba   .Es solo para uso NO COMERCIAL,si no es asi, debes comunicarmelo.Sobre todo  si eres mayor de edad.


----------

