# Leds controlados con Pic 16f877a y pwm



## Lalo01 (May 28, 2010)

Estoy realizando un proyecto de iluminación con leds y estoy utilizando el pwm del 16f877a para variar su intensidad luminosa, hasta ahora he tenido éxito en la programación, sin embargo, tengo entendido que el pic solamente me puede dar una corriente de salida máxima de 25mA y quisiera conectar en paralelo 8 leds a esta salida. Esto no es posible debido a que cada led consume una corriente de 20mA ¿Alguien sabe que puedo hacer para poder conectar los leds en paralelo y conservar el pwm del pic para variar la intensidad luminosa de los leds?


----------



## Pablet (May 29, 2010)

lo mejor es hacer que el pwm haga conmutar un transistor, y el transistor active y desactive los leds asi podras activar todos los leds que quieras, tan solo tienes que elegir un transistor adecuado, que casi que te valdrá cualquiera porque 160mA es bastante poco. Lo mas sencillo es un bjt del tipo npn.
Un saludo


----------



## Lalo01 (May 30, 2010)

Hey pablet, gracias de antemano por tu respuesta. Estuve investigando un poco a cerca del uso de 
transistores para ver cómo podía hacerlo conmutar como lo mencionas, sin embargo, no se cómo conectar el transistor de tal manera que me permita seguir trabajando con los leds. Agradecería mucho si pudieras explicarme cómo.

Saludos


----------



## Pablet (May 30, 2010)

hola lalo!! es muy facil, simplemente conecta una resistencia a la salida del microcontrolador, y eso lo conectas a la base del transistor. la resistencia que pongas ha de ser mayor a 220, ya que con una resistencia de 200 la intensidad que sale del micro son mas o menos 20mA, yo creo que con una de 1K funcionara, luego conectas el colector de transistor a VCC, y en el emisor conectas los leds, bien cada uno con su resistencia, o bien una resistencia para todos y a masa y ya esta.
Un saludo


----------



## Lalo01 (Jun 6, 2010)

Muchísimas gracias Pablet, disculpa la demora al responder. Solamente te quería decir que conecte el circuito tal y como me lo dijiste y funciono todo a la perfección.

Saludos


----------



## Pablet (Jun 7, 2010)

De nada!! vaya tio eres el primero que me ha dado las gracias!!! cualquier cosa aquí estaré.
Un saludo


----------



## carlos jara (Jul 9, 2010)

Hola soy nuevo en el foro y en verdad estoy aprendiendo a usar el programa basicpro pero siempre se me presenta algo mas que quiero hacer y entro creo poco a poco mas al tema amigos he echo el siguiente programa pero me sale errores no en compilacion si no que no funciona como quisiera el tema son la interrupciones y los timer no se como se usan eh visto ejemplos pero en verdad no se para que y como se usan me compre un libro dogan ibrahim  es muy bueno pero no tiene mucha explicacion en este tema  mi programa funciona asi p1 activa led1 por 1 seg p2 activa led2 por 1 seg pero si presiono los dos p1 y 
p2 ala vez el led3 oscila 5 veces y se apaga hasta ahi esta todo ok pero le agreegado un led4 que mi meta es que se encienda cada 10 min por 20 min de encendido  pero cuando hago esto los p1 y p2 se desabilitan y no funciona podria ayudarme para saber como usar los interruptores o si es en estos casos los timer este es mi programa podrian corregirme y saber como es la mejor manera de usarlos 


```
led1 var portb.2 
led2 var portb.3 
led3 var portb.4 
led4 var portb.5 
p1 var portb.0 
p2 var portb.1 
x var byte 
i var word 

option_reg = $05 
on interrupt goto isr 
intcon = $A0 

inicio 
if (p1=0) AND (p2=0) then encender2 
PAUSE 200 
if p1=0 then encender 
PAUSE 200 
if p2=0 then encender1 
PAUSE 200 
goto inicio 

encender: 
high led1 
pause 1000 
toggle led1 
pause 1000 
goto inicio 

encender1: 
high led2 
pause 1000 
toggle led2 
pause 1000 
goto inicio 

encender2: 
for x=0 TO 4 
high led3 
pause 300 
low led3 
pause 300 
NEXT 
goto inicio 

DISABLE 
ISR: 
HIGH LED4 
PAUSE 300 
LOW LED4 
PAUSE 300
```

muchas gracias por su ayuda les agradesco anticipadamente


----------



## mecatrodatos (Jul 11, 2010)

mira aquí ultima pagina documento anexo

https://www.forosdeelectronica.com/f24/curso-programacion-pic-bsic-pro-20658/index21.html


----------



## xaviergarvi (Nov 24, 2010)

alguien tiene un proyecto con leds rgb y pwm?? lo necesito urgente apenas estoy empezando en esto de los pic concretamente  estoy trabajando con el 16f877a necesito un hex con este pic agradeceria mucho su aporte intente un monton de veces pero el proteus me lanza muchos errores que todavia no los entiendo del todo


----------



## Pablet (Nov 24, 2010)

pero que es lo que quieres exactamente? pide ayuda respecto a los errores, no pidas un programa ya hecho. . . . 
un saludo


----------



## xaviergarvi (Nov 28, 2010)

lo que no se es como darle el efecto de pwm a los leds con el pic solo soy un novato en esto de los pic que recien los estoy estudiando


----------



## jenr_19 (Mar 16, 2011)

hola a todos, ps estoy empezando con estos temas, tngo un proyecto, dond se programó en microcode, el valor de la salida d es del rango d 0 a 100, y quiero sacar este valor mediante un pwm para poder regular la intensidad de un foco(con un dimmer) o la velocidad de un motor, pero esto dependiendo del valor que me arroje la salida, si alguien me puede ayudar, gracias d antemano.

el pic q estoy utilizando es el 16F877A


----------



## Lalo01 (Mar 17, 2011)

Hola jenr_19, me puedes describir más a detalle tu proyecto para que vea la forma de ayudarte.
Saludos


----------



## xitoblc12 (May 31, 2011)

una pregunta la salida ccp1 del pwm del pic se puede meter a algun circuito de potencia es que quisiera que la luminosidad de led se viera tambien en la lampara incandescente estoy usando el pic16f877a ya tengo el programa jalando que puedo hacer con la potencia alguien podria ayudar


----------



## carlos jara (Jun 1, 2011)

claro que si le puedes poner ckto de potencia compañero lo puedes hacer con reles o triacs no hay problema o que duda tienes


----------



## Lalo01 (Jun 2, 2011)

Como carlos lo menciona puedes utilizar un triac o SCR para conectar tu bombilla. La salida del pic la puedes utilizar como señal de control de dichos dispositivos.


----------



## rodrisra (Nov 2, 2011)

HOLA, 
ESTA FORMULA LA ESTOY USANDO PARA EL PR2
PR2= (PeriodoPWM/(4*TOsc*M)-1

TOsc= 1/frecuencia del cuarzo
M=1/Preescaler del tmr2.
Preescaler usado es de 1

MIREN MI DUDA ES LA SIGUIENTE:

SE QUE EL PR2 TIENE QUE TENER UN VALOR MAXIMO DE 255 (FF), PERO QUIERO USAR UN PERIODO DE PWM DE 20ms Y MI CRISTAL DE CUARZO ES DE 20MHz, LA M=1.

AL DESPEJARLA DE LA FORMULA OBTENGO UN PR2 DE 99999.

EL CCP1CON TENGO ENTENDIDO QUE ES EL CICLO DE TRABAJO, ENTONCES AHI LE PONGO??? EL TIEMPO QUE QUIERO QUE TRABAJE O COMO LO OBTENGO???

SI ESTOY USANDO BIEN LOS DATOS O QUE PASA?, GRACIAS

el codigo que estoy generando es el siguiente:

	__CONFIG _WDT_OFF&_PWRTE_ON&_HS_OSC&_LVP_OFF&_CP_OFF ; Configuración para el programador

	LIST	p=16F877A
	INCLUDE	<P16F877A.INC>
	ORG		0x00

INICIO
	clrf	STATUS
	clrf	PORTC
	bsf		STATUS,RP0
	movlw	0x06
	movwf	ADCON1
	clrf	TRISC
	bcf		STATUS,RP0
;PRINCIPAL DECLARACION DE PWM

	movlw   0x04    ;  -> esta parte no se como manipularla.
   	movwf   T2CON
	bsf   	STATUS,RP0
   	movlw   0x
   	movwf   PR2
   	bcf   	STATUS,RP0
   	movlw   0x3F
   	movwf   CCP1CON
   	movlw   0x0F
   	movwf   CCPR1L

;TERMINACION DE PWM

PRINCIPAL



	nop
	goto   PRINCIPAL


   end


----------



## fea272 (Feb 23, 2012)

hola, alguien sabe como controlar 100 leds rgb con un pic16f84 usando el pwm???


----------



## Pablet (Feb 26, 2012)

que todos tengan el mismo color? o colores diferentes?
un saludo


----------

