Autor Tema: generar pwm por software  (Leído 17490 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado xootraoox

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 248
RE: generar pwm por software
« Respuesta #15 en: 26 de Enero de 2006, 08:11:00 »
Cita:
adjunto el pdf asi como el soft que dio la conclusion de todo esto asi como tambien 10 kilos de agradecimientos para todos los que aportaron su granito de arena....

Enlace al PDF Mensionado


Enlace al codigo


esta todo puesto ya..... tanto el codigo como el pdf en el que me base para hacerlo.....

Desconectado lovando

  • PIC16
  • ***
  • Mensajes: 193
RE: generar pwm por software
« Respuesta #16 en: 26 de Enero de 2006, 08:25:00 »
Perfecto..disculpa,...me estoy volviendo ciego...

http://ww1.microchip.com/downloads/en/AppNotes/00654a.pdf

Tambien está recomendable..

Saludos

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2569
RE: generar pwm por software
« Respuesta #17 en: 26 de Enero de 2006, 09:14:00 »
Hola xootraox.

He estado fisgoneando el código y me parece que solo sirve para controlar un solo LED por pwm.

¿Como haces para controlar de forma independiente los 3 diodos de las fotos?

Un saludo

PD. ¿Cuanto vale un LED de estos?

Desconectado lovando

  • PIC16
  • ***
  • Mensajes: 193
RE: generar pwm por software
« Respuesta #18 en: 26 de Enero de 2006, 09:22:00 »
Vi lo mismo....parece que usa un dispositivo a la vez...probando distintos tonos...de paso...donde encontraste tamañas cositas????

Existe por ahi la pagina del master 2005???


Desconectado xootraoox

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 248
RE: generar pwm por software
« Respuesta #19 en: 26 de Enero de 2006, 11:39:00 »
exacto pocher el programa antes puesto, solo controla un led pero esa era mi finalidad..... saber como generar un pwm por soft... ademas comento que ya lo he probado con 18 PWM al mismo tiempo y comparando los tiempos de desface en el osciloscopio entre el primero y el ultimo la verdad es que no lo noto..... sera que no hay desface????? y sera que es tan eficiente??? ya que ademas estoy usando los conversores A/D y comunicacion serial a 19200 b/s, todo corriendo solo a 4Mhz y todo trabaja de maravillas.... yo pense que se iba a sobrecargar el micro pero, la verdad es que el micro hace como si nada.... todo a la perfeccion......

bueno adjunto una modificacion del codigo la cual si controla 3 PWM"s y crea unos patrones para generar una gama de colores impresionantes con tan solo 1 led RGB... Tambien adjunto un par de videos para que vean como va lo del control por RGB.....

Codigo que crea un patron con led RGB y muestra el porcentaje de duty_cycle de cada les por el puerto serie

VIDEO 1
VIDEO 2


NOTA: EL LED SE ENCUENTRA DENTRO DE UNA PELOTA DE PING-PONG, A LA VEZ EL VIDEO ESTA BASTANTE POBRE DE CALIDAD, ASI COMO TAMBIEN AL OJO HUMANO SE VE BASTANTE MEJOR EL EFECTO, QUE DELANTE DE UNA CAMARA

Desconectado xootraoox

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 248
RE: generar pwm por software
« Respuesta #20 en: 26 de Enero de 2006, 11:54:00 »
Bueno esta es una foto de el led que se encuentra dentro de la pelota de PING - PONG.... bueno creo que esta demas decir pero por si alguien no lo sabe es solo un led que produce tres colores (RED - GREEN - BLUE(R-G-B)) es por eso que lleva 4 pines (R, G, B y GND)


Desconectado lovando

  • PIC16
  • ***
  • Mensajes: 193
RE: generar pwm por software
« Respuesta #21 en: 26 de Enero de 2006, 12:34:00 »
Escrito originalmente por xootraoox
exacto pocher el programa antes puesto, solo controla un led pero esa era mi finalidad..... saber como generar un pwm por soft... ademas comento que ya lo he probado con 18 PWM al mismo tiempo y comparando los tiempos de desface en el osciloscopio entre el primero y el ultimo la verdad es que no lo noto..... sera que no hay desface????? y sera que es tan eficiente??? ya que ademas estoy usando los conversores A/D y comunicacion serial a 19200 b/s, todo corriendo solo a 4Mhz y todo trabaja de maravillas.... yo pense que se iba a sobrecargar el micro pero, la verdad es que el micro hace como si nada.... todo a la perfeccion......

bueno adjunto una modificacion del codigo la cual si controla 3 PWM"s y crea unos patrones para generar una gama de colores impresionantes con tan solo 1 led RGB... Tambien adjunto un par de videos para que vean como va lo del control por RGB.....

Codigo que crea un patron con led RGB y muestra el porcentaje de duty_cycle de cada les por el puerto serie

VIDEO 1
VIDEO 2


NOTA: EL LED SE ENCUENTRA DENTRO DE UNA PELOTA DE PING-PONG, A LA VEZ EL VIDEO ESTA BASTANTE POBRE DE CALIDAD, ASI COMO TAMBIEN AL OJO HUMANO SE VE BASTANTE MEJOR EL EFECTO, QUE DELANTE DE UNA CAMARA




Esimado xoot...a esta altura ya eres un maestro del pwm x software y de los RGBs...Bueno, decir que no se si los videos estan mejores o el codigo...que es super claro y secuencial...asi como repites las funciones, podrias repartir pwm hasta onde alcance las patillas del pic.....

Por otro lado, el color está dado por la frecuencia, por eso es que reduces el periodo a fin de aumentar la frecuencia....y la intesidad dada por el duty cicle..de modo que este lo aumentas para que el led vaya viendose mas intenso...

TMR0 lo cargas con 156, osea 256-156=100...cada 100 ciclos o 100 us se desborda...usando 4 MHz tenemos una frecuencia de 10Khz.....mientras que los duty disminuyen casi a 10 ms (un poco mas debido a la rutina isr_rtcc)

Muy, muy interesante...yo pensaba que el TMR0 lo ibas a utilizar como fuente de duty y frecuencia, pero veo que lo utilizas solo para efectos de interrupcion para completar los ciclos...

Podrias contarnos un poco de como funcionan estos vichos

Felicitaciones.


Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
RE: generar pwm por software
« Respuesta #22 en: 26 de Enero de 2006, 12:38:00 »
¿Qué tal están de luminosidad esos leds?, supongo que dentro de la pelota de ping pong no se verán con la luz encendida, ¿no?

Muy chula la aplicación, xootraoox.

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2569
RE: generar pwm por software
« Respuesta #23 en: 26 de Enero de 2006, 13:13:00 »
Si señor, un programa sencillo y fácil de entender, como me gustan a mí. Automático y manual.

Gracias por compartirlo.

Desconectado xootraoox

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 248
RE: generar pwm por software
« Respuesta #24 en: 26 de Enero de 2006, 13:57:00 »
bueno con respecto a la luminosidad del led es bastante buena ya que incluso con la pelota de ping-pong se ve bastante claro a la luz del dia... lo que si los leds salen bastante costosos (1000 pesos chilenos + iva = 1200 pesos osea un poco mas de 2 usd), sin la pelota de ping-pong el led es capaz de casi escandilar la camara se podria decir ya que mantiene el balance de luminocidad de mi camara en constante trabajo... coloco  un video en donde muestro por un costado al led trabajando por si solo.....

a la vez vuelvo a aclarar que en el video se ve bastante mal, pareciera que pasara de un color a otro bruscamente, pero como dije anteriormente es solo producto de la camara, hay que verlo trabajar para ver el verdadero efecto que se produce.

NOTA: el video esta hecho a plana luz.... la obscuridad que se observa es por la intensidad luminica irradiada por el led que ajusta el balance de blanco bajandolo casi al extremo....

Enlace al video


Desconectado lovando

  • PIC16
  • ***
  • Mensajes: 193
RE: generar pwm por software
« Respuesta #25 en: 26 de Enero de 2006, 15:26:00 »
WOW..cualquiera diria que filmaste a un OVNI...jajaajaja

Envía el vídeo a la NASA !!!!!


Muy bueno....

PD: yo creo que lo mas caro es la pelota de PING-PONG


Chavela

Desconectado Chaly29

  • Moderador Global
  • DsPIC33
  • *****
  • Mensajes: 4315
RE: generar pwm por software
« Respuesta #26 en: 26 de Enero de 2006, 15:36:00 »
Hola xootraoox, me e puesto a programas un poco en .asm y ya conseguí los tan ansiados 9 PWM, el programa no es muy complejo o sea que alguien que entienda los 2 idiomas podría llegar a traducirlo a C, en realidad lo realice de forma básica para que la traducción resulte más sencilla y con eso sacrifique un poco de memoria de programa, ya que sé que se puede reducir en una buena extensión el código, pero resultaría mas difícil de comprender para el traductor.

Las características son un poco diferentes al código que tu me as pasado por e-mail ya que este solo controlaba 1 salida por ves, o sea que nunca el PWM llegaría a un ciclo 100% efectivo, como este código provoca un desfasaje en el control de las salidas solo tendrá un duty-cicle máximo de 33.3%. En el programa que yo realice esto anterior no pasa ya que todas las salidas son controladas a la ves, por lo tanto están todas en fase y se consigue un duty-cicle máximo del 100% en todas las salidas.

Por otro lado después de realizar el programa, me e dado cuenta que para realizar varias rutinas de encendido distintas y seleccionarlas por medio de un pulsador, será necesario el uso de una memoria externa la cual tendrá que disponer en su interior las variadas secuencias de encendido para luego que el PIC leyendo de la misma pueda ejecutarlas, esto te lo comento por que recién después de que termine el control de las 9 salidas me e dado cuenta que para producir un ciclo con 10 pasos y un solo ciclo de encendido son necesarias 90 posiciones de memoria, por lo que para poder disponer de varios ciclos diferentes y de mas pasos no habrá PIC que le entre toda esta información dentro.

La frecuencia del PWM es de aproximadamente de 100 Hz con un cristal de 4 MHz para cada una de las salidas, la resolución es de 0-100, con esto ya se logra que el escalonado entre un duty-cicle y el próximo no sea notado por el ojo, así tampoco como la frecuencia de conmutación. O sea que para la vista resulta agradable y sin cambios bruscos.

El programa no esta terminado, lo que ya esta andando y probado es para que realice una sola secuencia de 10 pasos (la secuencia esta almacenada en la memoria de programa del PIC en forma de tabla) y el uso de 2 pulsadores para subir o bajar la velocidad del cambio de paso. Por lo que faltaría que en ves de estar en el PIC la secuencia, que lo lea de una memoria y el control de los 2 pulsadores para el cambio de secuencia.
 
Si alguien se siente capas de poder hacer la traducción al C le paso el .asm para que se guíe y luego lo pueda postear aquí para que todos dispongamos de esto.

Bueno, me e cansado de escribir Muchas risas , espero que esto les sea de utilidad.

Suerte

Atte. CARLOS


 
La teoría es cuando se sabe todo y nada funciona. La práctica es cuando todo funciona y nadie sabe por qué.

Desconectado xootraoox

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 248
RE: generar pwm por software
« Respuesta #27 en: 26 de Enero de 2006, 16:34:00 »
Estimado Chaly29 en realidad no tienes por que preocuparte.... ya esta todo solucionado y con una eficiencia muy buena......... con decirte qeu un patron que he puesto  que no es corto, he ocupado un poco mas alla de un kilo con los mensajes por rs232 y todo por lo que con los 4 kilos de memoria que tiene el 16f874 lo mas bien podria hacer como 50 patrones predeterminados.... sin consumirme cantidades de memoria en tablas...

Desconectado xootraoox

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 248
RE: generar pwm por software
« Respuesta #28 en: 27 de Enero de 2006, 18:26:00 »
Hola a todos,
                 bueno aki estoy nuevamente acomplejado con este mismo tema.... resulta que el codigo que logre hacer trabajar, funciona muy bien pero el problema es que me gustaria hacer que el pwm fuese de 8bits, cosa que no he podido realizar... en otras palabras lo que necesito es que el ajuste se realize de 0 a 255, no como el caso del anterior que era de 0 a 100.... a lo que mas he llegado es de 0 a 185 aproximadamente y de hay en adelante se comienza a ver un parpadeo en el led.... que se ve muy mal.

bueno la idea de esto es para poder ajustarme al CODIGO RGB con el cual teoricamente se puede alcanzar hasta 16.777.216 convinaciones de colores, la cual esta dada por un digito en hexadecimal de 24bits, por ejemplo el blanco es el 0xffffff, en codigo RGB en donde cada byte corresponde a un color en si... por lo que el blanco en decimal corresponde a 255 de rojo, 255 de verde y 255 de azul, en mi caso si puedo generar el blanco con el codigo que yo tengo pero la idea mia es cubrir toda la gama rgb a 24bits....

bueno espero me puedan hechar una mano ya que yo se que es posible hacerlo, pero por mas que he intentado al momento no he conseguido llegar a los 8bits de resolucion por color, todo tipo de ideas son bienvenidas y agradecidas.

Desconectado lovando

  • PIC16
  • ***
  • Mensajes: 193
RE: generar pwm por software
« Respuesta #29 en: 27 de Enero de 2006, 19:19:00 »
Xoot..

Tu estas aumentando la frecuancia a lo largo de tu programa..esto significa que tu resolucion se reduce consecuentemente.....y como el RTCC no lo utilizas como fuente de pwm, bastaria creo que utilices variables int16. y con ellas manejar tus tiempos...

Quiza podrias aumentar la velociad del cristal..

Bueno, solo es una idea

Chavela


 

anything