Controlar brillo de LED con PWM en PIC16F628A

No es nada complicado calcular los valores para la frecuencia y el ciclo activo. (Ver Hoja de Datos)
Pero para generar bajas frecuencias hay que usar un oscilador más lento y la programación es diferente.
Y dependiendo de la frecuencia requerida puede existir un error y no obtenerla exactamente.
Sobre algún tema del Foro ya se ha tratado, necesitas buscar.

Adjunto un programa para encontrar los valores de forma muy sencilla.
Con este programa únicamente necesitas ingresar los parámetros necesarios y automáticamente genera el código para PIC C Compiler.
 

Adjuntos

  • Setup PWM.rar
    6.2 KB · Visitas: 11
No se pueden ver los cambios de intensidad en el LED durante simulación con PWM.

D@rbytes yo he podido hacerlo, no perfecto al 100%, pero funciona por si se quiere ver.

Con un transistor 2n2222, conectando su base a la salida del pic, el colector a + y el emisor al diodo led amarillo, estè conectado con una resistencia en serie de 220Ω y a estos un condensador electrolitico de 220µf



Creo que estás equivocado. El programa que subí hace los cambios automáticamente.
No se tiene que presionar ningún botón para que realice la variación del ciclo activo.
De hecho el único botón que tiene es el de reset, y es opcional.

Prueba el circuito físicamente y lo podrás comprobar. :cool:

Si lo hace por que yo lo he probado
 
Última edición:
Yo lo hago utilizando el Timer 0 para aumentar y disminuir el ciclo activo del PWM.
Es muy sencillo hacerlo de esa forma y el código no es complicado.

Adjunto el ejemplo con simulación. (Oscilograma)
Físicamente se nota un efecto de variación de luminosidad en el LED, lento y estable que sube y baja.
Esto viene siendo como las lámparas de obstrucción en sistemas de seguridad y señalamiento.
hola a todos buscando llegue a este post estoy buscando un ejemplo de pwm con un potenciometro con el pic16f628a y revise el codigo que uste compartio con el señor y me sirve pero como le hago para que suba y baje la frecuencia con un potenciometro me podrias ayudar por favor
 
PWM mantiene la frecuencia constante, lo que cambia es el reparto.


Si es eso lo que quieres, lees una entrada analógica, y ese valor lo escribes en el PWM.
Lo escribes directamente o adaptando los valores, según sea el caso.
 
Última edición:
hola necesito un ejemplo con el pic16f628a que en el pin 17 que es el puerto RA0 este un potenciometro que me controle en el pin 12 que es el puerto RB6 una frecuencia para un inverte
PWM mantiene la frecuencia constante, lo que cambia es el reparto.


Si es eso lo que quieres, lees una entrada analógica, y ese valor lo escribes en el PWM.
Lo escribes directamente o adaptando los valores, según sea el caso.
tienes un ejemplo que me sirva por favor
en proteus seria algo asi
 

Adjuntos

  • Screenshot_2.png
    Screenshot_2.png
    27 KB · Visitas: 12
Última edición:
Porque lo quieres con un PIC? de que frecuencias se trata? lo puedes hacer con operacionales y entender lo que estas haciendo
bueno te cuento estoy reparando un equipo energizador y usa un pic16f628a el cual el alto voltaje lo controla un potenciometro y el puerto RB6 sale a un transistor que esta funcionando como un oscilador un sircuito inverte elevador de voltaje
 
Última edición:
No creo que tengas mucha dificultad en encontrar lo que buscas si le dedicas un poco de tiempo.

Si el PWM es de 8 bits y el conversor es de 12 bits, cosa común. Entonces
PWM = Lectura/4
O mejor
PWM = rotar dos bits Lectura

No aclaras si quieres modificar frecuencia como decías o en realidad quieres modificar amplitudo como he supuesto, no sé si erróneamente.

Offtopic:
Por cierto, ¿"Haci" = "así"?
(Si es eso no caben más faltas en menos letras)
 
Última edición:
No creo que tengas mucha dificultad en encontrar lo que buscas si le dedicas un poco de tiempo.

Si el PWM es de 8 bits y el conversor es de 12 bits, cosa común. Entonces
PWM = Lectura/4
O mejor
PWM = rotar dos bits Lectura


Por cierto:
¿"Haci" = "así"?
(Si es eso no caben más faltas en menos letras)
pero tienes por favor por lo menos ejemplo donde me lea un potenciometro rotativo
 
les estoy pidiendo ejemplos es por que yo no soy programador pero tengo un amigo que sabe programar en C y el es el que me esta ayudando con el código por que yo le busco los ejemplos pero el no sabe sobre PIC por eso de los ejemplo ya me a ayudado en casi todo pero falta esa parte del potenciometro
Pues si, porque "reparar" no cuadra con reprogramar el código.
bueno el equipo se daño el pic16f628a cuando lo prendo no ase nada tengo otro equipo igual le puse el pic del ese equipo al malo y funciona bien pero como todos sabemos no puedo copiar ese pic por que esta protegido entonces necesito programar tengo un pic16f628a nuevo pero esta vació
 
Última edición:
Ah, eso sí que tiene todo el sentido.

Pregunta el precio de un pic programado al fabricante, si haces bien los números es bastante probable que sea mucho más barato que programarlo tu.

Cuenta el precio de tus horas, el precio de las horas en que la máquina no produce y que si programas algo mal puede que dañes el equipo.

Si no eres programador pues una de dos, aprovechas para aprender en esta ocasión, se tardan meses o años si es que se consigue alguna vez, o bien asume que te viene grande el proyecto y busca un programador. O llama al fabricante.
 
Ah, eso sí que tiene todo el sentido.

Pregunta el precio de un pic programado al fabricante, si haces bien los números es bastante probable que sea mucho más barato que programarlo tu.

Cuenta el precio de tus horas, el precio de las horas en que la máquina no produce y que si programas algo mal puede que dañes el equipo.
si supieras que llame al distribuidor y me dijo que comprara otro equipo pero estoy en Venezuela y es super caro el equipo nuevo
 
Esa es otra. He visto equipos con un microcontrolador del que se usaba solo un pin. Yo, que soy adicto, lo hubiera hecho también así con toda probabilidad, pero donde hay carencia de materiales un 555 o incluso un circuito discreto a base de transistores puede ser la solución.

Como te ha dicho 2m detalla lo mejor posible que hace el equipo que es probable que se pueda sustituir por otra cosa.
 
Bueno, es un equipo de alto voltaje para cercos electricos , el pic en el módulo controla una sirena que se activa si corta la linea del cerco, también controla el alto voltaje como dije al principio controla el oscilador del inverter de 12 voltios los eleva a 400 voltios, controla un trias que hace el corte para que la bobina de alta induzca y eleve el voltaje a unos 20 mil voltios ; pero eso ya mi amigo lo tiene listo lo que nos falta es la parte del potenciómetro que controle la señal del oscilador.
S
i el equipo fuera analógico y le hiciera el circuito con el NE555 o el NE556 no hay problema por que yo lo he echo antes, la tarjeta dónde está el pic ese maneja practicamente todo, a ese pic le están usando todos, aquí es donde hago la simulación
Ésta es la tarjeta donde va el pic16f628a

Me dí cuenta que en éste pic16f628a no están usando PWM , están usando RB6/T1OSO/T1CKI salida oscilador TIMER1 para el inverter.
 

Adjuntos

  • 22.png
    22.png
    114 KB · Visitas: 24
  • 444.png
    444.png
    75.8 KB · Visitas: 27
  • P90505-121702.jpg
    P90505-121702.jpg
    327.7 KB · Visitas: 27
Para sustituir ese PIC debes hacer "ingeniería inversa", se comienza sacando el esquema eléctrico del aparato, luego si hay uno que funciona a mano, se miden y detalla y analiza todas las funciones.

Con esos datos se pasa a hacer el programa que reemplaza al original con funcionalidad similar o mejorada.

Sin todos esos datos esenciales a la hora de programar es difícil llegar a un buen resultado.

No se tiene el esquema total del aparato y no se sabe que hace el que llamas potenciómetro(no se si es el preseet de 100K que se ve en la fotografía o es otro).

Ese PIC no tiene ADC incluido por lo que para usar un preset y dosificar algo, hay que implementar métodos de lectura alternativos a la simple lectura de la caída de voltaje clásica.

Uno de ellos es medir el tiempo de carga y descarga de un capacitor conectado a la resistencia variable del preset o potenciómetro(RC) y tomar decisiones en base a ello.
Adjunto un ejemplo y simulación en Proteus y Proton Basic en cuanto al lenguaje de programación.
 

Adjuntos

  • Pote.zip
    78.8 KB · Visitas: 10
Última edición:
Atrás
Arriba