Autor Tema: Regulación PWM  (Leído 3540 veces)

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

Desconectado rferrero

  • PIC16
  • ***
  • Mensajes: 113
Regulación PWM
« en: 27 de Noviembre de 2004, 10:17:00 »

    Hola. Estoy iniciándome en el mundo del PWM para manejar un pequeño motor. El caso es que tampoco consigo una gran regulación de la velocidad del mismo. Es normal??

     El programa realizado en C es el siguiente:

#include <16F876.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP,NOPUT
#use delay(clock=4000000)

void main()
{
   long int value=10;
   setup_ccp1(CCP_PWM);   // Configure CCP1 as a PWM

          //   The cycle time will be (1/clock)*4*t2div*(period+1)
          //   In this program clock=10000000 and period=127 (below)
          //   For the three possible selections the cycle time is:
          //     (1/10000000)*4*1*128 =  51.2 us or 19.5 khz
          //     (1/10000000)*4*4*128 = 204.8 us or 4.9 khz
          //     (1/10000000)*4*16*128= 819.2 us or 1.2 khz

  while(1) {

    set_pwm1_duty(value);          // This sets the time the pulse is
                                   // high each cycle.  We use the A/D
                                   // input to make a easy demo.
                                   // the high time will be:
                                   //  if value is LONG INT:
                                   //    value*(1/clock)*t2div
                                   //  if value is INT:
                                   //    value*4*(1/clock)*t2div
                                   // for example a value of 30 and t2div
                                   // of 1 the high time is 12us
                                   // WARNING:  A value too high or low will
                                   //           prevent the output from
                                   //           changing.
    value=value+10;                          
  }
}


    Trato de incrementarle el valor del duty cycle, pero no aumenta la velocidad. Se mantiene constante. Alguno ha tenido problemas o alguna experiencia más avanzada con este tema??

    Gracias. Un saludo.

Desconectado pocher

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2569
RE: Regulación PWM
« Respuesta #1 en: 27 de Noviembre de 2004, 12:17:00 »
Te falta definir el setup_timer_2(....., ......, .....) de lo contrario no irá.

Desconectado rferrero

  • PIC16
  • ***
  • Mensajes: 113
RE: Regulación PWM
« Respuesta #2 en: 28 de Noviembre de 2004, 05:32:00 »

   Ehm ... sí, je, je,  se me había pasado. Lo probé ayer con el timer2 activado, lo que ocurre es que he puesto otro programa. Tengo mil y una modificaciones.
 
    El timer 2 lo pongo como DIV_BY_16, 50, 1. Y he cambiado y nada, apenas veo regulación de la velocidad por ningún lado. Con un potenciómetro se consigue algo más, pero metiendo así los valores, no. Por qué???

 

Desconectado pocher

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2569
RE: Regulación PWM
« Respuesta #3 en: 28 de Noviembre de 2004, 07:24:00 »
Ponle un delay_ms(500) delante de value=value+10 y verás como aumenta progresivamente.

Luego tienes que poner en tu programa un tope, para pararlo cuando llegue al máximo.

Desconectado rferrero

  • PIC16
  • ***
  • Mensajes: 113
RE: Regulación PWM
« Respuesta #4 en: 28 de Noviembre de 2004, 14:02:00 »

    Muchas gracias, Pocher!! Si te pagaran un euro por cada repuesta ...  
 
     A qué se debe que haya que poner un retraso?? No entiendo cómo influye.
 
    Un saludo.

Desconectado pocher

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2569
RE: Regulación PWM
« Respuesta #5 en: 29 de Noviembre de 2004, 00:55:00 »
Pués que el Duty llega muy rápidamente al máximo y no te dá tiempo a ver como aumenta progresivamente la velocidad de tu motor por ejemplo.

Luego una vez sobrepasa el máximo hace lo que quiere, por eso lo del tope, para que se mantenga girando a la tensión máxima indefinidamente si así lo deseas.

Un saludo