Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

11/10/2012 #41


Ahi descargue 2 archivos con 16f877 y otro con 16f84. La simulacion del 16f84 me dice que el parpadeo de los leds es de 10Hz. Creo que algo anda mal. La simulacion del 16f877 parece que anda bien mandando pulsos de 38Hz.
Un par de ideas que tengo en mente es armar una rutina al estilo:

pwm_max_resolution(1~255)

pwm_set_percent_dutycycle(0~100)

Lo que noto es que si se aumenta la resolucion, baja la frecuencia, y eso con un cristal de menor velocidad que 20Mhz seria un problema. Yo le agregaria una funcion para sacrificar resolucion y ganar frecuencia.
Tambien que el ajuste del ancho se pueda hacer tambien por porcentaje. Para mi es mas comodo usando % y de paso uno se olvida de la resolucion maxima.

---EDIT
Pude sacar 200Hz con resolucion de 255 a 20Mhz. El codigo en Jalv2 es este por ahora.

Código:
const timer0_isr_rate = 80000
const DELAY_SLOTS = 2

var byte pwm_soft_duty0=0

var byte contador=255

alias   led      is pin_A0
pin_A0_direction =  output

include timer0_isr_interval
timer0_isr_init()

procedure timer0() is
pragma interrupt
	
	if (contador==pwm_soft_duty0) then
	pin_a0=0
	end if
	
	if (contador==0) then
	contador=255
	porta=255
	end if
	
	contador=contador-1
	
end procedure

	pwm_soft_duty0=0

forever loop
		
	if (pin_b0==1) then
	pwm_soft_duty0=pwm_soft_duty0+10

	   while(pin_b0==1) loop
	   end loop

	end if
	
end loop
Me da un par de warning pero igual parece que anda. Apreto el pulsador y me va bajando el duty. Esto se esta poniendo bueno, mas tarde voy a probar con un par de LEDs RGB que tengo por ahi para hacer pruebas.
13/10/2012 #42

Avatar de dinoelectro

Mezclador RGB con potenciometros
nestoriano dijo: Ver Mensaje

Lo que noto es que si se aumenta la resolucion, baja la frecuencia, y eso con un cristal de menor velocidad que 20Mhz seria un problema. Yo le agregaria una funcion para sacrificar resolucion y ganar frecuencia.
Hola nestoriano, sabes que estube analizando, y no fue necesario sacrificar la resolucion para aumentar la frecuencia. Lo que hice fue cargar un valor al timer0 para que se desborde mas rapido y obtube una frecuencia de 170Hz con la misma resolucion de 8 bits.

es buena idea eso de controlar el ciclo util mediante porcentaje de 0-100%. en la proxima version de la libreria talvez incluya esa opcion.

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

Aporto con este Mezclador RGB , utiliza tres potenciometros para controlar el brillo de cada LED. ademaqs un pequeño tutorial de como utilizar la libreria PWM.h que esta bastante optimizada. espero sus comentarios y sujerencias
18/10/2012 #43

Avatar de dinoelectro

Rgb + usb
aporto este mezcaldor de luz, controlado por computador , metodo de comunicacion USB HID.. la simulacion con Proteus no funciona.. pero al armarlo todo anda bien..


adjunto tambien un programa en visual basic que envia tres valores entre 0 y 255, que controlan el brillo cada LED Rojo, verde y azul..


saludos!!
Archivos Adjuntos
Tipo de Archivo: rar 5.hidRGB.rar (468,4 KB (Kilobytes), 135 visitas)
Tipo de Archivo: rar hidRGB.rar (782,9 KB (Kilobytes), 133 visitas)
24/10/2012 #44


Hola Dino excelente aporte pero tengo una duda como cargas el valor al TIMER0 para apresurar el desborde para obtener los 170Hz?

Saludos.
25/10/2012 #45

Avatar de dinoelectro

hola olinqui, respondiendo a tu pregunta,

si quieres 150Hz............................................. ... PWM_init(200);
para alcanzar 170Hz.......................................... PWM_init(225);
si quieres 180Hz............................................. ... PWM_init(250);

etc,... con esta libreria alcanzaras frecuencia maxima 180Hz.. puedes revisar el archivo en pdf donde explico como utilizar las libreria PWM.h.. se encuentra en el archivo PWM con POTS.rar



la instruccion set_timer0(offset).. , te permite cargar al timer0, mientras mayor es el valor de öffset¨ mas rapido se desbordara el timer0
27/10/2012 #46

Avatar de kiyero

hola dino, estuve revisando el proyecto y me parece excelente, pero tengo una duda: quiero añadirle un canal adicional para trabajar cuatro canales, y aumentar de 3 a 10 leds por canal, que programas utilizaste para compilar y simular? quedo atento, ya que quiero implementarlo para la decoración navideña, tan pronto lo haga (con tu ayuda en respuesta a este mensaje) postearé fotos y video, gracias y saludos!
29/10/2012 #47

Avatar de dinoelectro

holA KIYERO, CON TRANsistores 2n3904 Y Una fuente de +12V podras conectar hasta 6 LEDs por canal, con una de fuente de 24V conectarías hasta unos diez calculo yo...

solo con tres canales puedes obtener toda la gama de colores RGB, espero postees tu trabajo, saludos!
29/10/2012 #48

Avatar de kiyero

dinoelectro dijo: Ver Mensaje
holA KIYERO, CON TRANsistores 2n3904 Y Una fuente de +12V podras conectar hasta 6 LEDs por canal, con una de fuente de 24V conectarías hasta unos diez calculo yo...

solo con tres canales puedes obtener toda la gama de colores RGB, espero postees tu trabajo, saludos!
ok Dino, pero con que programa puedo simularlos? me gustaría hacerlo de cuatro canales para ubicar un canal por cada lado del salón donde tengo pensado instalarlos, gracias, saludos
29/10/2012 #49

Avatar de dinoelectro

esta simulado con Proteus 7.10; puedes utilizar PIC C Compiller para compilar el programa.

para aumentar un canal necesitaras hacer cambios en la libreria pwm.H
30/10/2012 #50

Avatar de kiyero

dinoelectro dijo: Ver Mensaje
esta simulado con Proteus 7.10; puedes utilizar PIC C Compiller para compilar el programa.

para aumentar un canal necesitaras hacer cambios en la libreria pwm.H
Hola dinoelectro, hice las modificaciones según tus recomendaciones y me tira error de compilación, podrías ayudarme echando una ojeada? me defiendo mucho con picbasic, de c, muy poco, agradezco tu ayuda, subo los archivos esperanhttp://c3.forosdeelectronica.net/attach.gifdo tu ayuda al revisarlos, gracias
Archivos Adjuntos
Tipo de Archivo: zip leds_pwm.zip (1,5 KB (Kilobytes), 55 visitas)
31/10/2012 #51

Avatar de dinoelectro

estas utilizando la libreria PWM.h antigua.. descargate la ultima version esta en el archivo: PWMconPOTS.rar
inteta con esa que es mucho mejor y mas optimizada, ademas incluye un manual de como utilizarla, saludos!
11/11/2012 #52

Avatar de kiyero

dinoelectro dijo: Ver Mensaje
estas utilizando la libreria PWM.h antigua.. descargate la ultima version esta en el archivo: PWMconPOTS.rar
inteta con esa que es mucho mejor y mas optimizada, ademas incluye un manual de como utilizarla, saludos!
Hola Dino, hice lo que me dijiste, bajé la nueva librería (la cual dejé tal cual) y modifiqué el código, pero al compilar me bota el error del archivo adjunto, podrías por favor indicarme en que he fallado? recuerda que soy novel con programación en c, gracias por tu ayuda y paciencia
Imágenes Adjuntas
Tipo de Archivo: jpg code.jpg (238,8 KB (Kilobytes), 36 visitas)
13/11/2012 #53


al compilar me bota el error
El error que te aparece es porque para inicializar la libreria PWM debes utilizar Pwm_init y el otro error se debe a que para asignar el valor del ciclo util debes utilizar Write_Duty0(i); Write_Duty1(j); Write_Duty2(k); segun sea el caso. Espero haberte ayudado, este proyecto se me hizo interesante y lo he estado estudiando, tambien soy nuevo en programacion en c
13/11/2012 #54

Avatar de kiyero

jerry101 dijo: Ver Mensaje
El error que te aparece es porque para inicializar la libreria PWM debes utilizar Pwm_init y el otro error se debe a que para asignar el valor del ciclo util debes utilizar Write_Duty0(i); Write_Duty1(j); Write_Duty2(k); segun sea el caso. Espero haberte ayudado, este proyecto se me hizo interesante y lo he estado estudiando, tambien soy nuevo en programacion en c
mi estimado jerry, muchas gracias por tu orientación, he hecho como dijiste y efectivamente compiló al 100% sin errores, y obviamente vas mas aventajado que yo en la programación en C, podrías orientarme si estás estudiando C a través de algún libro o manual específico? creo que me paso a c y dejo basic a un lado, gracias, voy a simular el resultado y postearé como me fué, saludos!!!
14/11/2012 #55


Pues he estado leyendo algunos articulos en la red, apenas baje un libro que se llama ´"Compilador C CCS y simulador Proteus para controladores pic". No voy para nada aventajado, empece a leer sobre C hace 2 dias
14/11/2012 #56

Avatar de dinoelectro

kiyero dijo: Ver Mensaje
creo que me paso a c y dejo basic a un lado, gracias
eso esta muy bien, C es un compilador mucho mas potente que basic.. a mi me ayudo mucho los tutoriales que hay en elas paginas de UControl y PICmania, tambien existe un muy buen tema aqui es forosdeelectronica, saludos
19/11/2012 #57


tengo una pregunta uno toma como si fueran tres leds diferentes, entonces uno puede encenderlos al mismo tiempo (mirar imágenes adjuntas)? o tiene que esperar apagar uno para encender otro? con respecto a las corrientes de el led, se tiene que manejar una corriente para cada led o la corriente máxima de todos los led es la misma?
Imágenes Adjuntas
Tipo de Archivo: jpg diag1.jpg (27,3 KB (Kilobytes), 13 visitas)
Tipo de Archivo: jpg diag2.jpg (23,6 KB (Kilobytes), 11 visitas)
19/11/2012 #58

Avatar de dinoelectro

josb86 dijo: Ver Mensaje
tengo una pregunta uno toma como si fueran tres leds diferentes, entonces uno puede encenderlos al mismo tiempo (mirar imágenes adjuntas)? o tiene que esperar apagar uno para encender otro? con respecto a las corrientes de el led, se tiene que manejar una corriente para cada led o la corriente máxima de todos los led es la misma?

puedes encender todos los leds al mismo tiempo. toda la corriente se divide para tres.
yo maneje tres metros de cinta rgb con 12V, 800mA utilizando transistores MOSFET y trabaja fenomenal!
19/11/2012 #59


me gusto mucho tu aporte la pregunta es esta, veo que estas manejando el pwm sin utilizar este modulo del pic es decir utilizas una salida digital, requiero acer algo parecido pero para controlar unos servos desde labview me podrias orientar al respecto porfavor.........
20/11/2012 #60

Avatar de dinoelectro

mira en el archivo PWMconPOTS.rar que subi anteriormente, ahi esta explicado como utilizar la libreria PWM.. te cuento que ahora estoy trabajando en esa libreria para poder generar has 12PWM simultaneamente, de seguro te servira para controlar al servo.

tratare de ayudarte en lo que este mi alcance GNM, saludos!!
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.