Autor Tema: PWM variable usando PIC18F2431  (Leído 5205 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado trr85

  • PIC10
  • *
  • Mensajes: 1
PWM variable usando PIC18F2431
« en: 30 de Mayo de 2009, 19:18:10 »
Hola soy nuevo en sus foros, soi estudiante de Ing. en Electronica y vengo a exponerles mi proyecto por si alguna persona con su experiencia ha tenido el mismo problema que yo y pueda obtener alguna ayuda como resolverlo.

Este proyecto es mi tesis, el cual es un balastro de leds conectado a la linea 127 V (AC) 60 Hz, teniendo un rectificador de onda completa al inicio del sistema sin capacitor de rizado, de ahi la señal entrara a un convertidor CD-CD boost para correjir el factor de potencia utilizando un PWM variable a partir de un divisor de tension en la salida del rectificador de onda completa, esta señal ira al ADC del pic con el resultado de esa señal se tendra el PWM variable, la señal de salida del elevador PFC Boost, ira a un reductor Buck teniendo ahi una salida adecuada para una matriz de leds, mediante un pot conectado a otro canal del ADC del pic la señal del reductor buck podra atenuarse cumpliendo asi con la funcion de lampara de led y dimming.

Ahora mi problema es el siguiente, estoy utilizando el PIC18F2431 para generar PWM utilizo el POWER CONTROL PWM, para generar una señal PWM con un ciclo de trabajo fijo no tengo ningun problema, la puedo generar a la perfeccion, el problema es cuando trabajo en generar un PWM con un ciclo de trabajo variable la señal de salida no trabaja como deberia, se congela o se va a 5 volts o 0 volts, pero generalmente tengo mucho el congelamiento de la señal, he leido una y otra y otra vez el datasheet y mi programa y no entiendo ke pueda estar mal.

Inicialmente estaba generando 100 KHz de PWM, estoy utilizando HS PLL con un cristal de 8 MHz tenia 32 MHz = Fosc, estaba utilizando 8 bits de PWM por lo tanto utilizaba los 8 bits mas altos del resultado del ADC, utilizaba interrupcion de PWM, cada vez que entraba la interrupcion cargaba el valor del ADC al registro de trabajo del PWM y tenia desactivada la interrupcion del ADC.

El miercoles de esta semana pude consegir un cristal de 10 MHz ahora mi Fosc = 40 MHz, y para cargar los 10 bits de resultado del ADC tube que sacrificar frecuencia del PWM hasta 39 KHz para tener 10 bits de resolucion en PWM, a la hora de probar obtube el mismo malo resultado, la señal de entrada analogica al pic viene de un generador de funciones, una senoide a 60 Hz con una amplitud de 5 Volts, utilizando un rectificador de onda completa de precision con OPAMPS tengo adecuada la señal correctamente.

Ayer hice una nueva prueba utilizando un potenciometro de 10 K ohms, 5 volts DC en el extremo superior, ground en el extremo inferior y el punto medio conectado al ADC del PIC, en teoria al tener 5 volts en el ADC deberia tener ciclo de trabajo PWM 100%, si bajo a 2.5 volts deberia tener 50 % ciclo de trabajo, etc pero a la hora de la implementacion fisica no funcionaba asi, ahora desactive la interrpcion del PWM y active la interrupcion del ADC, cada vez que entraba la interrupcion del ADC cargo el valor del ADC al ciclo de trabajo PWM.

El ultimo link les dejo el video del pwm variable usando dc y pot en adc y les dejo mis 2 codigos, el que la entrada analogica es una senoide rectificada y en la que la entrada analogica es una señal cd con pot.

Les dejo el diagrama a bloques del proyecto   http://img18.imageshack.us/img18/8281/leddimming.jpg

http://img33.imageshack.us/img33/6127/hardwarepwm.jpg
>>> conexion fisica

http://img5.imageshack.us/img5/4380/pwmanaloginput.jpg
>>> entrada analogica por generador

http://www.fileden.com/getfile.php?file_path=http://www.fileden.com/files/2009/5/29/2459605/Variable%20PWM.wmv
>>> video PWM variable con señal senoidal rectificada en AN0

http://www.fileden.com/getfile.php?file_path=http://www.fileden.com/files/2009/5/29/2459605/video%20pwm%20variable%20con%20pot%20y%20codigos.zip
>>> Video PWM variable con dc pot en adc AN0 y codigos en ASM

Gracias por su tiempo y ayuda.
Saludos.
Tom.


 

anything