标题: PWM调速程序,调速不理解,请Y友帮忙 [打印本页]

作者: 俠歌无畏    时间: 2016-1-13 21:11
标题: PWM调速程序,调速不理解,请Y友帮忙
#include<reg52.h>
#include"delay.h"
/*
  ENB            IN1   IN2    直流电机状态
   0               *     *          停止

   1             0     0          制动
      
   1             0     1          正转
  
   1             1     0          反转

   1             1     1          制动


*/
sbit IN1=P0^1;
sbit IN2=P0^2;
sbit IN3=P0^3;
sbit IN4=P0^4;
sbit ENB_A=P0^5;
sbit ENB_B=P0^6;

/* 前进 */
void true(void)
{   
    ENB_A=1;
    delay_ms(5);
    ENB_A=0;
    delay_ms(5);
    ENB_B=1;
    delay_ms(5);
    ENB_B=0;
    delay_ms(5);
    IN1=0;
    IN2=1;
    IN3=0;
    IN4=1;
}


/*  后退  */
void false(void)
{
    ENB_A=1;
    delay_ms(5);
    ENB_A=0;
    delay_ms(5);
    ENB_B=1;
    delay_ms(5);
    ENB_B=0;
    delay_ms(5);
    IN1=1;
    IN2=0;
    IN3=1;
    IN4=0;   
}




/*   前进左转  */
void true_left(void)
{
    ENB_A=1;
    ENB_B=1;
    IN1=0;
    IN2=0;
    IN3=0;
    IN4=1;   
}



/*   前进右转  */
void true_right(void)
{
    ENB_A=1;
    ENB_B=1;
    IN1=0;
    IN2=1;
    IN3=0;
    IN4=0;   
}



/*  后退左转  */

void false_left(void)
{
    ENB_A=1;
    ENB_B=1;
    IN1=0;
    IN2=0;
    IN3=1;
    IN4=0;
}


/*  后退右转  */

void false_right(void)
{
    ENB_A=1;
    ENB_B=1;
    IN1=1;
    IN2=0;
    IN3=0;
    IN4=0;
}


/*  加速前进至满速  */
void true_up(void)
{
    unsigned int true_up_st,true_up_et;
        true_up_et=2000;
    while(true_up_et!=0)
        {
            ENB_A=1;
            delay_us(true_up_st++);
            ENB_A=0;
            delay_us(true_up_et-true_up_st);
            ENB_B=1;
            delay_us(true_up_st++);
            ENB_B=0;
            delay_us(true_up_et--);
            IN1=0;
            IN2=1;
            IN3=0;
            IN4=1;
        }
}





PWM调速时可以满电压运行,当频率较小时会不会一停一停的。


作者: xuyaqi    时间: 2016-1-14 22:33
由于有惯性停的时间又很短不会一停一停的




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1