TODOPIC

Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: raraavis en 22 de Diciembre de 2006, 19:48:42

Título: Manejar Backlight con PWM
Publicado por: raraavis en 22 de Diciembre de 2006, 19:48:42
Alguna idea de como puedo manejar el Backlight de un LCD con 2 botones de un menu?.  tengo idea de hacerlo con PWM que alimente un Capacitor y resistencia. o sea si en el menu del lcd eliges modificar la luz de fondo te muestra el valor actual ( 0, 1, 2,3 y 4) y con los botones subir y bajar te cambia este valor,esto es lo que necesito pero tengo dudas, mas que nada con el circuito.

Saludos.
Título: Re: Manejar Backlight con PWM
Publicado por: aitopes en 22 de Diciembre de 2006, 20:42:05
Me estoy yendo, asi que no tengo tiempo de dibujarte un esquema, pero lo podes hacer poniendo entre el PIC y el led de backlight un transistor que sea capaz de manejar la corriente que consume el display, que es mucho mayor a la que puede entregarte el PIC.
Pensa en unos 100mA, por lo que casi CUALQUIER transistor te va a servir....

Si no tenes otra respuesta, mañana te posteo un esquema
Suerte!
Título: Re: Manejar Backlight con PWM
Publicado por: Chaly29 en 22 de Diciembre de 2006, 23:49:15
Hola raraavis , tal como lo comenta el colega aitopes, usando un Tr puedes hacer lo que deseas.

Te recomendaría un BC337, y lo conectas de la siguiente manera:

*  El emisor lo conectas directo a masa.

*  Al colector le conectas una resistencia de bajo valor entre 1 y 22 ohm (ya verás en la practica cual es la necesaria) y esta resistencia la conactas al catodo del Backlight, por supuesto el anodo del Backlight se conecta a los 5Vcc.

*  A la base del Tr le conectas una resistencia de 1K y el extremo opuesto de la resistencia al pin del PIC por donde salga el PWM.

Entonces con la conexión anterior y el PWM podrás controlar la intensidad de iluminación del Backlight, ten en cuenta que la frecuencia del PWM debe ser superior a los 60Hz caso contrario veras el destello del Backlight mientras estes controlando la intensidad luminosa.

Espero te sea de ayuda, si tienes dudas solo consultalas, un saludo.

Atte. CARLOS.
Título: Re: Manejar Backlight con PWM
Publicado por: raraavis en 23 de Diciembre de 2006, 21:08:19
Gracias a Charly29 y Aitopes por la ayuda, estoy queriendo simular en Proteus 6.7 SP3 el ejemplo de Charly29 pero uso un LCD 20x4 que no me dibuja los pines de anodo y katodo del backlight, se pueden agregar?

seguire intentandolo  :lol:
Título: Re: Manejar Backlight con PWM
Publicado por: Chaly29 en 23 de Diciembre de 2006, 21:48:39
Hola raraavis , por más que fuera posible agregarle los pines, al momento de la simulación no verías el efecto final ya que al ISIS no le da la capacidad de simular un PWM aplicado a un LED.

Por lo tanto te recomiendo que sencillamente te limites a observar con el osciloscopio la forma de onda que saldría del pin destinado a tal función

Un saludo.

Atte. CARLOS.
Título: Re: Manejar Backlight con PWM
Publicado por: pikman en 23 de Diciembre de 2006, 22:51:34
Hola, yo pongo un IRF840 con una resistencia de 10K al gate, como es N el source va a masa y el drain al catodo del LCD, en el anodo una rsistencia de 2W de carbon a los 12V de la fuente, asi no cargo el regulador de tension, anda muy bien.

feliz navidad.
Título: Re: Manejar Backlight con PWM
Publicado por: Chaly29 en 24 de Diciembre de 2006, 00:00:17
Hola pikman , ¿no será una transistor muy grande para el uso que le das? un mosfet de 500V 8A y 125W, para solo hacer circular un maximo de 12V 0.2A y menos de 0.1W, te recomendaría que lo reemplaces por un BC337 o máximo un BD135, con esto aparte de ahorrar en costos, ahorrarás espacio en la PCB.

Aparte lo de cargar el regulador no le veo sentido, ya que un 7805 entrega una corriente de asta 1A sin problemas y es raro el proyecto que se acerque a  ese limite.

En conclusión aparte del desperdicio de hardware está el factor potencia, ya que esa resistencia de 2W debe calentarce un tanto y eso significa desperdicio de potencia.

Espero no te moleste mi opinión, es solo para que sepas las perspectivas que dispones para el mismo uso.

Un saludo.

Atte. CARLOS.
Título: Re: Manejar Backlight con PWM
Publicado por: pikman en 24 de Diciembre de 2006, 00:13:24
No para nada me molesta tu comentario, probaste un bc337 en la configuracion que propones?, yo no lo pude hacer andar, eso que uso lo encontre en un circuito, puede que sea exajerado, pero el 840 vale 2 pesos, la resistencia no calienta ni me molesta, y la lcd al maximo brillo consume 250 ma, que es el 25% de la capacidad del regulador.

El 840 es 8 amp a 500 V pero no es capaz de manejar 125 W (11 amp) en 12 volts ni por casulidad, fijate un transistor 2N3055 creo que es para 20 amp a 100V pero para una fuente de 20 amp hay que poner 6 u 8 si no queres que se queme todo, osea un 3055 en 12 V no maneja  mas de 3 amp., creo que esto se cumple con el 840, o a lo mejor me equivoco.
Título: Re: Manejar Backlight con PWM
Publicado por: Chaly29 en 24 de Diciembre de 2006, 00:52:38
Hola pikman, te responderé:

No para nada me molesta tu comentario, probaste un bc337 en la configuracion que propones?, yo no lo pude hacer andar, eso que uso lo encontre en un circuito, puede que sea exajerado, pero el 840 vale 2 pesos, la resistencia no calienta ni me molesta, y la lcd al maximo brillo consume 250 ma, que es el 25% de la capacidad del regulador.

Si lo e probado y a funcionado bien, y si tienes miedo de la corriente el BD135 va sobrado. Por los 250mA te recomendaría que miraces el datasheet del display ya que no conosco ninguno de los display chicos que consuma eso, y es muy facil pasarlos de intensidad con el consiguiente acortamiento de su vida util.

El 840 es 8 amp a 500 V pero no es capaz de manejar 125 W (11 amp) en 12 volts ni por casulidad, fijate un transistor 2N3055 creo que es para 20 amp a 100V pero para una fuente de 20 amp hay que poner 6 u 8 si no queres que se queme todo, osea un 3055 en 12 V no maneja  mas de 3 amp., creo que esto se cumple con el 840, o a lo mejor me equivoco.

Por supuesto que el IRF840 no es capas de disipar los 125W en 12V ya que primero se ve limitado por la intensidad, pero de la manera que lo usas no llega a disipar ni siquiera el 1% de esa potencia.

El 2N3055 es para 15A y para la fuente de 20A necesitaras tantos como sea la potencia a disipar, por ejemplo yo tengo una fuente de 100A y solo usa 20 transistores 2N3055, lo que quiere decir que estan circulando 5A por cada uno a máxima potencia entregada, aparte de eso te puedo segurar que los 2N3055 no tienen ningun problema en manejar los 15A mencionados, siempre y cuando estos 15A no supongan una disipación de potencia mayor a los 115W que soportan.

Ten en cuenta que en una fuente de alimentación y en cualquier circuito siempre todo está calculado para que ante un error o falla no se queme lo más caro, por lo tanto siempre está todo sobre-dimencionado, por lo tanto la relación que me planteas no tiene mucho sentido.

Tú circuito: 12V 0.25A 0.2W max.
     BC337: 50V 0.8A   0.625W

Por lo tanto y como puedes apreciar el BC337 funciona muy bien para ese uso

Vuelvo a repetirte, prueba usando un BC337, con una resistencia de 1K y verás que todo funciona correctamente, luego me comentas los resultados

Un saludo.

Atte. CARLOS.
Título: Re: Manejar Backlight con PWM
Publicado por: pikman en 24 de Diciembre de 2006, 01:05:32
Ok, Carlos, voy a probarlo y te cuento.

Título: Re: Manejar Backlight con PWM
Publicado por: GustavoT en 24 de Diciembre de 2006, 01:51:33
que onda el mosfet 2N7000 encapsulado TO92, es una brutalidad poner un TO220 para un backlight

Lo que me pregunto es si tendra algun tipo de stress que le redusca la vida util el hecho de usarlo con PMW al led
Título: Re: Manejar Backlight con PWM
Publicado por: Chaly29 en 24 de Diciembre de 2006, 09:30:02
Hola GustavoT, el stress de los led no viene producido por la conmutación, si no que está producido por la sobre-intesodad que se le aplique, si la intensidad se mantiene dentro de los margenes dados por el fabricante, de seguro cumplirá con las horas de uso detalladas.

Con respecto al 2N7000 no creo sea buena elección ya que solo soporta 200mA, pero el 2N7010 si lo es, este permite 1.3A, pero no sé que tan complicado será su obtención.

Un saludo.

Atte. CARLOS.
Título: Re: Manejar Backlight con PWM
Publicado por: raraavis en 25 de Diciembre de 2006, 16:50:10
controlando backlight con 2 pulsdores y PWM.
alguien podria revisar mi codigo por favor el problema esta en que grabo un valor en eeprom interna, y despues quiero usar ese valor como index de Branchl y eso no funciona, no se como convertir el valor de la eeprom en una variable decimal.quisiera subir el DNS pero no se como.

Código: [Seleccionar]
Device 16F877
    XTAL 4
               
        ' Text LCD pin Assignments
        LCD_TYPE = 0       
        Declare LCD_DTPIN PORTD.4
        Declare LCD_RSPIN PORTC.4
        Declare LCD_ENPIN PORTC.5
        Declare LCD_LINES 4
        Declare LCD_INTERFACE 4
       
        ALL_DIGITAL = TRUE
        trisD = 1
        portD = 0
        Symbol Pulso = portb.4
        symbol Subir = portD.0
        symbol Bajar = portD.1
        EWRITE 10, [2]         'grabo en la posicion 10 el valor 2
Inicio:       
        DIM Valor as Byte
        Valor = EREAD 10
        Delayms 500
        cls
        print at 1,2, "Backlight (0-3)", @valor
                     
        goto Cambio
        'se va
Loop:       
        ' Si pulsa Boton Subir
        if Subir = 1 then
        if Valor < 3 then      'si es menor de 3 suma 1
        inc Valor
        EWRITE 10, [Valor]
        goto Cambio
        end if       
        end if
       
        ' Si pulsa Boton Bajar
        if Bajar = 1 then
        if Valor > 0 then        ' si es mayor a 0 resta 1
        dec Valor
        EWRITE 10, [Valor]
        goto Cambio       
        end if
        end if
       
        goto Loop
       
Cambio: Valor = EREAD 10
        BRANCHl Valor,[v_0, v_1, v_2, v_3]  'aqui esta el problema
        'goto loop
v_0:    PWM Pulso,0,70   'Valor 0
        Delayms 500
        print at 2,2, "Valor Luz:", @Valor
        Delayms 500
        goto Loop
v_1:    PWM Pulso,64,70  'valor 1
        Delayms 500
        print at 2,2, "Valor Luz:", @Valor
        Delayms 500
        goto Loop
v_2:    PWM Pulso,128,70    'valor 2
        Delayms 500
        print at 2,2, "Valor Luz:", @Valor
        Delayms 500
        goto Loop
v_3:    PWM Pulso,255,70       'valor 3
        Delayms 500
        print at 2,2, "Valor Luz:", @Valor
        Delayms 500
        goto Loop
        end
Título: Re: Manejar Backlight con PWM
Publicado por: elreypic2 en 25 de Diciembre de 2006, 19:42:52
Que tal Raraavis:

Lo que yo observo es que la parte donde usas el branch es correcto. Lo que no me parece funcional es que solamente se ejecuta una sola vez la instruccion del PWM, lo que hace que no veas el efecto del cambio en la intensidad del backlight. Si pudieras ser mas especifico en cuanto lo que ocurre con tu programa, seria fabuloso.

De cualquier manera, yo te recomendaria debido al microcontrolador que estas usando, utilices el PWM por hardware ya que este micro lo contiene (PIC16F877) y asi no tendras que preocuparte por realizar varios ciclos del PWM, con el hardware simplemente lo configuras y el solito generara el PWM que tu le solicites, asi como el ciclo de trabajo y ya unicamente te preocupes por los botones en el programa principal.

Con respecto a lo que te comentaba de que tu codigo no es funcional, esto es porque lees un valor de la EEPROM interna y luego ese valor lo usas como index para la instruccion BRANCHL, y lo ejecuta, pero el problema viene con las siguientes instrucciones; te explico por que:

Imaginemos que despues de leer el valor en la EEPROM, este tiene un 1, entonces al llegar al BRANCHL, el programa saltara a la etiqeta, V_1, entonce ejecuta lo siguiente:

        PWM Pulso,64,70  'valor 1

Esta instruccion ejecuta el PWM solamente durante 350 milisegundos y no mas (5ms *  70), entonces realizas un delay de 500 milisegundos en donde el backlight se apaga completamente,
        Delayms 500

Luego despliegas en pantalla el valor que tomaste de la EEPROM, pero el Backlight ya esta apagado, ya no existe mas el PWM y despues ejecutas otro delay de 500 milisegundos
        print at 2,2, "Valor Luz:", @Valor
        Delayms 500
        goto Loop                         'Aqui te regresas a preguntar por lo que sucede en los botones, pero unicamente eso, una vez que preguntas por lo botones y no presionas ninguno, se cicla ahi preguntando continuamente por los botones, por lo que el PWM no se ejecutara a menos que alguno boton este presionado.

Espero que a eso te refieras con "no funciona". Si no es asi, como te mencione anteriormente si pudieras explicar un poco mas que sucede con este codigo que actualmente estas usando.

De cualqueir manera hechale un vistazo el HPWM que es mas util que el simple PWM.

Saludos y esperamos tus comentarios.

Elreypic.
Título: Re: Manejar Backlight con PWM
Publicado por: raraavis en 26 de Diciembre de 2006, 08:35:56
hola reypic

Lo que quiero es manejar el Backlight de un LCD con 2 botones .  o sea en un menu del lcd eliges modificar la luz de fondo y te muestra el valor actual ( 0, 1, 2,3 ) y con los botones subir y bajar te cambie este valor.
aqui estan el source y el dns modificado con HPWM.   :-/

Bajar aqui Source y DNS (http://www.box.net/public/ppo0i56ubi)

Foto (http://www.box.net/public/vlskx2gfa5)
Título: Re: Manejar Backlight con PWM
Publicado por: elreypic2 en 26 de Diciembre de 2006, 13:13:03
Que tal rarasvis,

Le he hechado por el momento una mirada al esquema que estas usando y lo primero que veo es que tienes una mala configuracion en el transistor con el que manejas el backlight de tu LCD. Te comento por que:

Actuanlmente tu tienes el colector a GND por lo que es un error y tienes el pin VSS del backlight hacia un resistor en serie, y la otra terminal al emisor por lo que tambien es un error. Es decir tienes invertidas las conexiones.

El emisor, que es la terminar que se representa con la flechita debe estar conectado a GND y por otro lado la terminal del colector de estar conectado al circuito serie del backlight con la resistencia.

No he revisado el codigo, pero en cuanto tenga oportunidad le hechare un vistazo tambien.

Saludos

Elreypic.
Título: Re: Manejar Backlight con PWM
Publicado por: elreypic2 en 26 de Diciembre de 2006, 14:11:41
Que tal raraavis,
Ya le heche una mirada a tu codigo, y estas son mis observaciones:

Segun veo en tu esquema estas utilizando el pin RC1 lo que corresponde a usar el canal 2 del PWM.

Entonces la forma de usar es la siguiente:

HPWM   channel,Dutycycle,Frecuency


Para nuestro caso, entonces channel sera el 2, y no como tu lo defines. Debido a que tu asignas PULSO al pin RC2, o sea el PWM se generara en ese canal, pero tu le debes de decir cual (es decri canal 2) y no el pin el hardware sabe que si le dices el canal 2 entonces el automaticamente lo generara en el pin RC2. Entonces ahi pone 2.
Para el Dutycicle que es el que hace que se modifique la intensidad de luz en el backlight, que va desde 0 a 255, en donde 0 es la mas baja y 255 es el mas alto. Un valor de 127 te entregara un ciclo de trabajo del 50%. Aqui es donde tu colocas el valor que deseas de intensidad que como lo veo usas los valores, 0, 64,128 (cambialo a 127), 255.
Para la frecuencia usas 70, pero el hardware PWM no podra generar esa frecuancia de 70 HZ, en el manual existe una tabla que te menciona el valor minimo de frecuencia para diferentes cristales usados. En tu caso que es de 4 MHz, la frecuencia minima posible es de 145 Hz por lo tanto necesitas cambiar ese valor al menos en 145 (para generar una frecuencia de 145 Hz) puede ser mas grande hasta 32767 pero con 145 estara bien.

Entonces, con lo anterior las 4 opciones de instruccion deberan ser:

HPWM  2,0,145

HPWM 2,64,145

HPWM 2,127,145

HPWM 2,255,145

Espero haber sido claro con esta explicacion y cuentame que paso.

Saludos.

Elreypic.
Título: Re: Manejar Backlight con PWM
Publicado por: raraavis en 26 de Diciembre de 2006, 22:22:09
Gracias por la ayuda Reypic2.

Aqui esta el source y el dns corregido.espero haber entendido bien la conexion del transistor,cuando presiono los botones no hace nada. gracias por la paciencia.

Correccion de source y DNS (http://www.box.net/public/pfhzg27ym7)

Título: Re: Manejar Backlight con PWM
Publicado por: Chaly29 en 26 de Diciembre de 2006, 22:48:47
Hola raraavis, lamentablemente tienes mal conectado el transistor, tal como está lo que haces es introducir PWM a la parte lógica del display, por lo que en la realidad seguro que no funcionará y hasta quemarás el display.

Fíjate que estas conectando el Tr al pin 1 del display y ese pin es la masa de la parte lógica, los pines del Backlight son los 15 y 16 que el el ISIS no figuran, para ser más exactos por lo general (no es un standard) el pin 15 es el ánodo y el 16 el cátodo si el Backlight es de led's, por lo tanto tu deberías conectar el Tr al pin 16 que en la gráfica del ISIS no se encuentra.

Un saludo.

Atte. CARLOS.
Título: Re: Manejar Backlight con PWM
Publicado por: raraavis en 27 de Diciembre de 2006, 10:50:06
Gracias Carlos, o sea que tengo que asumir que no voy a poder simularlo  :?

a proposito alguien sabe para que es el pin VEE del LCD ?.

Si alguien tiene creado en Proteus un display LCD con patitas para el Backlight y quiere hacer un poco de caridad es bienvenido.  :lol:
Título: Re: Manejar Backlight con PWM
Publicado por: LABmouse en 27 de Diciembre de 2006, 11:07:35
raraavis el pin VEE, es por el cual le puedes controlar el contraste a la pantalla LCD. yo lo conecto al pin central de un potenciometro, y una punta a VCC y la otra a GND.

VCC
|
|
/
\
/<-------VEE
\
/
\
|
|
GND
Título: Re: Manejar Backlight con PWM
Publicado por: LABmouse en 27 de Diciembre de 2006, 11:08:41
El potenciometro es de 10K.
Título: Re: Manejar Backlight con PWM
Publicado por: LABmouse en 27 de Diciembre de 2006, 11:14:23
Revisa estos lados. Esta un esquema y como usar una LCD con solo 3 pines del PIC

http://www.todopic.com.ar/foros/index.php?topic=4713.0
Título: Re: Manejar Backlight con PWM
Publicado por: aitopes en 27 de Diciembre de 2006, 11:19:49
Si no quieres gastar $$$ o espacio con un potenciometro, una resistencia de 4.7K a masa suele dar un buen nivel de contraste. ;)