TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: diego_castano00 en 04 de Marzo de 2006, 22:17:00
-
Hola estoy trabajando en un proyecto para mover unos servos y el manual (futaba) me indica una señal de control de 50HZ modulada por PWM (ancho de pulso), sera que es posible generar esta señal a esta frecuencia si trabajo con un PIC 16f877A a 4MHZ, (ah uso MPLAB y e simulador PIC SIMULATOR IDE)
alguien tiene un ejemplo en assembler que me indique como saco la señal o un diagramita de flujo que me guie, tengo muy poco entendimiento del tema; eso de los registros ccp1con, pir, es poco lo que entiendo
gracias
-
Ayer estuve haciendo los calculos porque tambien queria usar el pwm a 50 Hz, y los resultados me daban una frecuencia minima de aproximadamente 240Hz con un cristal de 4Mhz, lo hice para 8 bits, pero si no me equivoco aunque se haga para 10 bit tampoco saldra pues entonces se usa la frecuencia del cristal sin dividir por 4
-
Escrito originalmente por kain589
Ayer estuve haciendo los calculos porque tambien queria usar el pwm a 50 Hz, y los resultados me daban una frecuencia minima de aproximadamente 240Hz con un cristal de 4Mhz, lo hice para 8 bits, pero si no me equivoco aunque se haga para 10 bit tampoco saldra pues entonces se usa la frecuencia del cristal sin dividir por 4
Usar 10 bits solo aumenta la precisión del duty cycle pero no te cambia la frecuencia. La frecuencia depende del PR2 que siempre es de 8 bits
Saludos
-
Escrito originalmente por diego_castano00
Hola estoy trabajando en un proyecto para mover unos servos y el manual (futaba) me indica una señal de control de 50HZ modulada por PWM (ancho de pulso), sera que es posible generar esta señal a esta frecuencia si trabajo con un PIC 16f877A a 4MHZ, (ah uso MPLAB y e simulador PIC SIMULATOR IDE)
alguien tiene un ejemplo en assembler que me indique como saco la señal o un diagramita de flujo que me guie, tengo muy poco entendimiento del tema; eso de los registros ccp1con, pir, es poco lo que entiendo
gracias
Fijate lo siguiente:
En el datasshet puedes ver bien el período, del cual la frecuencia será el inverso.
Frec = 1 / PeriodoPwm
PeriodoPWM = (PR2 + 1) * 4 * Tosc * Prescaler Tmr2.
En el caso mas lento para 4Mhz tienes
PR2 = 255 ,
Tosc = 250nseg para 4 Mhz
Prescaler Tmr2 = 16
Esto hace que Frec = 244 Hz.
Entonces, o desciendes la frecuencia del Clock de tu microcontrolador o bien lo haces por software.
Saludos
-
como lo hago por software, es que me dicen que no se puede, y que mas bien lo haga por retardos uno de 20ms y otro de 10 ms (50% duty cycle) pero para mi proyecto se necesita cambiar o seleccionar varios duty cycle (5%,6%,7%10%,15%...) y creo que me es mas facil manejando el modulo pwm del pic
entonces, sabes como hacerlo por software o que XT uso para obtener la frecuencia de 50HZ
Gracias por la respuesta
-
Si quieres poder variar de 1% en 1%, puedes crear una rutina que temporice 20ms/100= 200us, y poner a funcionar 2 variables pulsos_ciclo y pulsos_duty por ejemplo. Asi introduces 100 en pulsos_ciclo para que sea a 50Hz (20 ms) que te indica cuando debe ponerse a 1 la señal(cuando se ponga a cero la variable contadora de ciclo) y restaurar el valor al conmutar y pulsos_duty que despues de ponerse a 1 se decremente hasta ponerse a cero (la variable contadora) y que conmute a estado bajo la señal.
Los decrementos se hacen por interrupcion del timer, debes tener en cuenta el peso en tiempo de las rutinas para la actualizacion de las variables
-
Solo puedes lograr una frecuencia así usando un cristal de 1MHz. Puedes cambiarle el cristal a tu PIC.