Doble programa en el mismo pic

pues en realidad hace lo mismo que ponerlo pwm pwm1 duty cycle
pwm2 duty cycle la idea es que los dos hagan el mismo ciclo y en el mismo tiempo como se podria hacer
 
pues en realidad hace lo mismo que ponerlo pwm pwm1 duty cycle
pwm2 duty cycle la idea es que los dos hagan el mismo ciclo y en el mismo tiempo como se podria hacer

este podria ser una posibilidad, utilizando el modulo TMR0...

obviamente es como ejemplo y faltaria que ajustes los detalles...

Código:
@ DEVICE pic16F628A
define osc 4

ON INTERRUPT GOTO PWM_INT   'Rutina de llamada de interrupcion

Option_reg=%000  'Prescaler 1:2
option_reg.3=0   'prescaler asignado al modulo TMRO
intcon.7=1       'Habilita las interrupciones
intcon.5=1       'HAbilita la interrupcion de modulo TMR0
TMR0=255         'Prescaler en 255
TrisB=0          'Puerto B como Salidas

while 1          'Ciclo infinito
 portb=0         'Puerto B en 0
wend             'Termino Ciclo infinito

PWM_INT:         'Rutina de interrupcion
disable          'Desabilita llamada de interrupcion
intcon.2=0       'Borra bandera de desboramiento del modulo TMR0
portb=7          'pone en alto RB0,RB1,RB2
TMR0=255         'prescaler en 255
resume           'regresa al programa principal
enable           'Habilita las llamadas de interrupcion

y asi se veria en el osciloscopio...

 
Si esta bien el ejemplo de Lubeck de usar el Timer y las interrupciones.
La mejor opción es cambiar de PIC para este ejemplo use el PIC18F452 el cual si tiene puertos PWM y usando la función HPWM si se consigue tener dos PIN's generando PWM al mismo tiempo.
Mando el ejemplo el cual tiene que ser compilado con MPASM y tambien el Datasheet del PIC
PD: Usa el PIC18F452 ya que es de la familia Flash para que lo puedas estar reprogramando.
Saludos. ;)
 

Adjuntos

  • Oscilograma.jpg
    Oscilograma.jpg
    284.5 KB · Visitas: 10
  • HPWM.rar
    52 KB · Visitas: 22
  • PIC18C452.rar
    1.8 MB · Visitas: 12
Última edición:
Yo digo que mientras funcione todas las opciones son las mejores...:D
la cuestion es echarle creatividad...
aqui otra posibilidad usando el modulo CCP del 628a y una compuerta logica NAnd y se obtienen hasta cuatro PWM por Hardware...
Dibujo.JPG

Les debo el codigo pero es mas que obvio.... :D
 
Última edición:
muchas gracias amigo Lubeck y amigo Darkbytes son muy gentiles en compratir sus respuestas echare andar los codigos pero no trato de enteder como usar eso del las interuppciones estuve leyendo el datasheet del pic y logro entender que la option_reg es para habilitar que funcion quieres habilitar pero cuando dices sobre el intcon tambien le entiendo pero me confunde en este caso para entender el ejemplo de LUbeck esto seria

Option_reg=%000 'Prescaler 1:2
option_reg.3=0 'prescaler asignado al modulo TMRO
intcon.7=1 'Habilita las interrupciones
intcon.5=1 'HAbilita la interrupcion de modulo TMR0
TMR0=255 'Prescaler en 255 ----- > esto es el tiempo (DUTY CYCLE)
TrisB=0 'Puerto B como Salidas

while 1 'Ciclo infinito
portb=0 'Puerto B en 0
wend 'Termino Ciclo infinito

PWM_INT: 'Rutina de interrupcion
disable 'Desabilita llamada de interrupcion
intcon.2=0 'Borra bandera de desboramiento del modulo TMR0
portb=7 'pone en alto RB0,RB1,RB2
TMR0=255 'prescaler en 255
resume 'regresa al programa principal
enable 'Habilita las llamadas de interrupcion

y que tiempo le estoy dando a los pines el duty y cycle y como darle otro tiempo tambien a los 3 juntos
 
amigos del foro tengo un problema he armado un juego de luces como para discoteka
pues solo he cogido 3 pines del puerto B en el cual cada pin es un color diferente
PORTB.0=ROJO (aqui hay 40 leds en paralelo c/u con una resistencia de 100ohm)
PORTB.1=AZUL (aqui hay 40 leds en paralelo c/u con una resistencia de 100ohm)
PORTB.2=VERDE (aqui hay 40 leds en paralelo c/u con una resistencia de 100ohm)
Estoy trabajando con un pic 628A y con leds de 10.5mm los grandes transparentes todo alimentado a 5V aun no esta conectado al pic los leds y los estoy probando fuera .El problema es que los leds azules me dan una iluminosidad hermosa quiero decir que ilumina fuerte pero los leds rojos prende un poco menos estos leds estan independientes cada color es un puerto, pero asi me prende un poco menos no logro encontrar el datasheet de estos leds
mi pregunta es si le pongo resitencias de 50 ohm se me quemaria al trabajr con 5V y teniendo encuenta la cantidad de leds y ahora los leds verde aun asi no me prenden cuando le pongo resistencia tengo que darle un toke de los 5v sin la resistencia y recien enciende cuando le pongo la resistencia pero no ilumina bien y estaba pensando en ponerle una resistencia de 10 ohm pero quisiera saber si mis leds trabajarian bien sin que se me queme con el tiempo espero su respuesta aun no lo tengo armado con el pic muchas gracias
 
amigos del foro tengo un problema he armado un juego de luces como para discoteka
pues solo he cogido 3 pines del puerto B en el cual cada pin es un color diferente
PORTB.0=ROJO (aqui hay 40 leds en paralelo c/u con una resistencia de 100ohm)
PORTB.1=AZUL (aqui hay 40 leds en paralelo c/u con una resistencia de 100ohm)
PORTB.2=VERDE (aqui hay 40 leds en paralelo c/u con una resistencia de 100ohm)
Estoy trabajando con un pic 628A y con leds de 10.5mm los grandes transparentes todo alimentado a 5V aun no esta conectado al pic los leds y los estoy probando fuera .El problema es que los leds azules me dan una iluminosidad hermosa quiero decir que ilumina fuerte pero los leds rojos prende un poco menos estos leds estan independientes cada color es un puerto, pero asi me prende un poco menos no logro encontrar el datasheet de estos leds
mi pregunta es si le pongo resitencias de 50 ohm se me quemaria al trabajr con 5V y teniendo encuenta la cantidad de leds y ahora los leds verde aun asi no me prenden cuando le pongo resistencia tengo que darle un toke de los 5v sin la resistencia y recien enciende cuando le pongo la resistencia pero no ilumina bien y estaba pensando en ponerle una resistencia de 10 ohm pero quisiera saber si mis leds trabajarian bien sin que se me queme con el tiempo espero su respuesta aun no lo tengo armado con el pic muchas gracias
Saludos. Que paso con esa Ley de Ohm ? :unsure: Para ahorrarte la resistencia puedes poner los LED's en serie con la desventaja que si se funde uno los demas se apagaran. Si los piensas alimentar con 5V y suponiendo que cada LED es de 2.2V pues en serie solo puedes poner 2 LED's (2.2 x 2) = 4.4V Si los alimentas con 12V podras poner 5 LED's en serie (2.2 x 5) = 11V y usas una resistencia limitadora. La formula es la siguiente:
RS = (VDD - VLED) / ILED Donde VDD es el voltaje de alimentación VLED el voltaje del LED y ILED la corriente de consumo del LED Esta es la Ley de Ohm aplicada a un circuito serie. Como quieres controlar 40 LEDS en paralelo es obvio que el PIC no los podra encender. Así que debes de usar una etapa exitadora de potencia con un Transistor o un Mosfet. Pero para que no te la compliques aqui te mando un programita que hize hace tiempo para calcular que resistencia se debe usar y al mismo tiempo te calcula la potencia requerida por el resitor. Y un esquema de como controlar varios LEDS en serie y en paralelo. Hay le calculas las resistencias. BYE4NOW ;)
 

Adjuntos

  • RESLED.rar
    10.8 KB · Visitas: 15
  • Snap1.jpg
    Snap1.jpg
    229.1 KB · Visitas: 16
  • RESLED.jpg
    RESLED.jpg
    90.6 KB · Visitas: 15
Última edición:
Amigo tambien estuve pensando en ponerlo en serie pero como bien dices tu no podria poner mas de 10 leds y ademas que si se me quema un leds pues no enciende ninguno es por ello que le he puesto en paralelo y para mayor fiabilidad le he puestao acada leds una resistencia
la etapa de potencia tambien la tengo armada con un bc548en cada pin del puerto a usar el detalle es que no me prenden bien los leds verde hoy los comprare en otro lado para ver si me los vendieron malogrados o ver que pasa y sobre los leds rojos pues intentanre probar con menos ohmiaje haber que pasa y enh verdad muchas gracias por tu respuesta tendras alguna idea de como hacerlo audioritmikco sin usar un pic grande estoy trabajando con el 628A que solo por los graves del sonido o agudo estos leds comiencen a encender y apagar solo me dijiron que con un microfono elect nada mas se puede y un operacional ojala me puedas ayudar y en verdade gracias por sus respuestas
 
Y juandmn? Te pusiste a estudiar sobre las interrupciones y el timer del PIC? Yo creo que es la solucion a tus problemas.

Fijate, te paso este hilo donde debatimos sobre hacer varios modulos pwm en un solo pic con el menor consumo de instrucciones posible... muy util y practico. Miralo.

8 canales pwm con un 16f628a

Pero bajo ningun motivo utilices dos micros para hacer eso... es algo simple, no te la compliques.

Saludos!
 
Amigo tambien estuve pensando en ponerlo en serie pero como bien dices tu no podria poner mas de 10 leds y ademas que si se me quema un leds pues no enciende ninguno es por ello que le he puesto en paralelo y para mayor fiabilidad le he puestao acada leds una resistencia
la etapa de potencia tambien la tengo armada con un bc548en cada pin del puerto a usar el detalle es que no me prenden bien los leds verde hoy los comprare en otro lado para ver si me los vendieron malogrados o ver que pasa y sobre los leds rojos pues intentanre probar con menos ohmiaje haber que pasa y enh verdad muchas gracias por tu respuesta tendras alguna idea de como hacerlo audioritmikco sin usar un pic grande estoy trabajando con el 628A que solo por los graves del sonido o agudo estos leds comiencen a encender y apagar solo me dijiron que con un microfono elect nada mas se puede y un operacional ojala me puedas ayudar y en verdade gracias por sus respuestas
Saludos.
Desafortunadamente hacer luces audioritmicas con el 16F628 lo veo dificil, ya que para eso se requiere de un Conversor Analogico Digital (ADC) y el 16F628 solo tiene comparadores analogicos. Osea que solo responde a una transición sobre un voltaje de referencia. Cambia el 16F628 por el 16F877 y ese si tiene ADC en PICBASIC se usa de la siguiente manera. ADCIN Channel,Var Y pues bueno se me ocurre que se podria usando filtros con operacionales para activar los comparadores y con presets de ajuste para variar el voltaje de referencia. O activando las entradas en modo digital directamente por medio de los filtros. Por cierto, eso de los 8 canales PWM con el 16F628 servira en PICBASIC usando la función PWM PORTB,Duty,Cycle para que todo el puerto B se convierta en salidas PWM identicas ? Con eso solo una línea de código haria la magia ;) BYE4NOW :D
 
Última edición:
Gracias amigo si me dijeron lo mismo sobre el pic pues bueno entoncs a buscar informacion sobre el ADC y a trabajar gracias una vez mas

Si yo tengo trabajando el pic por ejemplo tiene oscilando un led en el PORTB.0 en un tiempo de 100 Ms de encendido y apagado constantemente y yo por sofware le hago una interrupcion bueno no se como se hara pero quiero entender si hace lo que yo pienso , bueno si le hago una interupcion es decir si le digo que me prenda el PORTB.1 constantemente
a un tiempo de 50 Ms al hacer esta interrupcion o al ejecutarse esta interrupcion el PORTB.0 queda apagado hasta que la interrupcion se termine de ejecutar o. la interrupcion hace su trabajo y no le afecxta al PORTB.0 y los dos trabajan juntos con los tiempos diferentes podrian responderme por favor
 
Última edición:
Gracias amigo si me dijeron lo mismo sobre el pic pues bueno entoncs a buscar informacion sobre el ADC y a trabajar gracias una vez mas

Si yo tengo trabajando el pic por ejemplo tiene oscilando un led en el PORTB.0 en un tiempo de 100 Ms de encendido y apagado constantemente y yo por sofware le hago una interrupcion bueno no se como se hara pero quiero entender si hace lo que yo pienso , bueno si le hago una interupcion es decir si le digo que me prenda el PORTB.1 constantemente
a un tiempo de 50 Ms al hacer esta interrupcion o al ejecutarse esta interrupcion el PORTB.0 queda apagado hasta que la interrupcion se termine de ejecutar o. la interrupcion hace su trabajo y no le afecxta al PORTB.0 y los dos trabajan juntos con los tiempos diferentes podrian responderme por favor

Lo primero que hay que saber de los pic es que no son milagrosos, lo que se puede hacer... es lo que se puede hacer, y lo que no... no...

si quieres hacer PWM de diferentes frecuencias en cada Puerto NO HAY MAS QUE CONSEGUIR UN PIC CON VARIOS MODULOS PWM como el que se meciono en un post anterior...

Desafortunadamente hacer luces audioritmicas con el 16F628 lo veo dificil,

con la funcion POT (en PBP) y un arreglo RC se puede hacer un ADC con un 628a.. muy pedorro, pero se puede...
 
Última edición:
Darkbytes dijo:
Por cierto, eso de los 8 canales PWM con el 16F628 servira en PICBASIC usando la función PWM PORTB,Duty,Cycle para que todo el puerto B se convierta en salidas PWM identicas ? Con eso solo una línea de código haria la magia ;)

No entendi bien que preguntaste, si solo quieres que todo el puerto B oscile de la misma manera, es decir, con el mismo duty, deberias modificar el codigo para hacerlo menos lento.... ya que justamente el hecho de tener 8 PWM con dutys individuales era el reto, eso era lo "loco".... Por que si quieres solo variar UN duty y mostrarlo por 8 salidas entonces usa el PWM interno que trae el 628 y copia la salida a todo el puerto B y a la miercole XD.

lubeck dijo:
si quieres hacer PWM de diferentes frecuencias en cada Puerto NO HAY MAS QUE CONSEGUIR UN PIC CON VARIOS MODULOS PWM como el que se meciono en un post anterior...

Insisto... no es necesario... en el hilo que postie mas arriba esta todo bien explicado, se pueden lograr varios PWM independientes por sofwtware de una forma muy pero muy efectiva y eficiente... Los PICs con varios modulos PWM son cosas caras... dependiendo del proyecto te puede convenir o no, pero lo mas seguro que el 90 % de las veces sea mas practico hacerlo por software.


Saludos!
 
Última edición:
Insisto... no es necesario... en el hilo que postie mas arriba esta todo bien explicado, se pueden lograr varios PWM independientes por sofwtware de una forma muy pero muy efectiva y eficiente... Los PICs con varios modulos PWM son cosas caras... dependiendo del proyecto te puede convenir o no, pero lo mas seguro que el 90 % de las veces sea mas practico hacerlo por software.

Hasta no ver no creer... :D

Pon un simulado con un 628A con diferentes frecuencias PWM en cada salida, (el Simulator IDE va de maravilla para eso)
 

En ese video se estan controlando 8 leds verdes dimerizados con PWM con un solo 628A... y te aseguro que en el codigo aun le sobra espacio para hacer otras cosas si se desea...

El video fue sacado de este link:

http://www.neoteo.com/8-canales-de-pwm-con-un-16f628a

Ahi el loco lo explica todo. Y si te quedan dudas mira el Thread que pase antes, en el que hago un codigo propio tambien.

Lamentablemente no se usar ningun simulador por ahora, ni tampco tengo osciloscopio :(.

Saludos!
 
Y si te quedan dudas mira el Thread que pase antes, en el que hago un codigo propio tambien.

Ok ya revise lo que comentas, puse en el simulador el archivo PWM_X_8.hex y al parecer si hace dos pwm simultaneos de diferente frecuencia....

lo que resumo es que de esa manera, usando contadores por cada puerto, si es posible pero seguramente tiene el limitante de que solo funciona a bajas frecuencias, que para este tipo de aplicaciones de leds va de lujo...

en fin creo que si es muy buena opcion.... me convenciste...:D
 
amigos gracias por sus respuestas no pude responder antes me disculpo y es por que estuve atareado un poco en cosas del trabajo agradesco el link que me envias del los pwm lo voy a leer y pues este proyecto tendra que esperas hasta que no tenga ninguna duda en hacerlo jeje gracias amigos poor sus respuestas no pense que programar pic en algunos casos sea tan complicado y en verdad me falta mucho en aprender al igual del tema de las interrupciomes pero de apoco leere el post enviado y en verdad gracias ya comento en su momento
 
Atrás
Arriba