标题: 请问怎么用按钮控制电机加减速? [打印本页]

作者: qwe2935188396    时间: 2015-4-24 23:08
标题: 请问怎么用按钮控制电机加减速?
我的毕业设计主题是:基于51单片机的直流电机调速系统,学校这学期才刚刚教单片机,大神来看看,要求是两个独立按键与51单片机连接,单片机通过驱动芯片与直流电机连接。两个独立按键可以分别控制电机的加速、减速,从而实现调速功能,请问怎么用按钮控制电机加减速?

作者: liaolinhui    时间: 2015-4-24 23:21
直流电机加减速靠的是PWM,也就是脉宽调制,只要改变了占空比就改变了速度
作者: qwe2935188396    时间: 2015-4-24 23:26
liaolinhui 发表于 2015-4-24 23:21
直流电机加减速靠的是PWM,也就是脉宽调制,只要改变了占空比就改变了速度

那就是说老师要求用按钮控制加减速是不行的吗?
作者: liaolinhui    时间: 2015-4-24 23:29
qwe2935188396 发表于 2015-4-24 23:26
那就是说老师要求用按钮控制加减速是不行的吗?

可以,用按键控制占空比就是控制转速了
作者: liaolinhui    时间: 2015-4-24 23:33
/********************************************************************************
*  标题: 恒速运行                                                               *
*                                                                                                                                                                *
*********************************************************************************
* 通过本例程了解PWM 的基本原理和使用                                                                                         *
*                                                                                                                                                                 *
*   请将直流电机线接在+5V P12对应的端子上(步进马达接口出)                                                *
*                                                                                    *
* 请学员认真消化本例程                                                               *
*********************************************************************************/



#include <reg52.h>

unsigned char timer1;
sbit PWM=P1^2;

void system_Ini()
{
    TMOD|= 0x11;
        //PWM  
        TH1 = 0xfe; //11.0592
        TL1 = 0x33;
        TR1  = 1;
    IE =0x8A;       
}

main()
{
  system_Ini();
  while(1)
  { if(timer1>100) timer1=0;
    if(timer1<30) PWM=0;
    else PWM=1;

   }


}

/*************************************
[ t1 (0.5ms)中断] 中断中做 PWM 输出
  ------------1000/(0.02ms*250)=200Hz
*************************************/
void T1zd(void) interrupt 3    //3 为定时器1的中断号  1 定时器0的中断号 0 外部中断1 2 外部中断2  4 串口中断
{
        TH1 = 0xfe; //11.0592
        TL1 = 0x33;
         timer1++;
   
}
这是一个输出PWM输出恒定转速的例子,里面的30是占空比,你把30改成一个变量,然后用按键控制这个变量的大小就能达到改变转速
作者: qwe2935188396    时间: 2015-4-24 23:36
liaolinhui 发表于 2015-4-24 23:33
/********************************************************************************
*  标题: 恒速运行 ...

有点明白了
作者: liaolinhui    时间: 2015-4-24 23:37
/********************************************************************************
*  标题: 恒速运行                                                               *
*                                                                                                                                                                *
*********************************************************************************
* 通过本例程了解PWM 的基本原理和使用                                                                                         *
*                                                                                                                                                                 *
*   请将直流电机线接在+5V P12对应的端子上(步进马达接口出)                                                *
*                                                                                    *
* 请学员认真消化本例程                                                               *
*********************************************************************************/



#include <reg52.h>

unsigned char timer1;
unsigned char zk=50;
sbit PWM=P1^2;
sbit k1=P0^0;
SBIT k2=P0^1;

void system_Ini()
{
    TMOD|= 0x11;
        //PWM  
        TH1 = 0xfe; //11.0592
        TL1 = 0x33;
        TR1  = 1;
    IE =0x8A;       
}

main()
{
  system_Ini();
  while(1)
  { if(timer1>100) timer1=0;
    if(timer1<zk) PWM=0;
    else PWM=1;
        if(k1==0)zk++;
        if(k2==0)zk--;
   }


}

/*************************************
[ t1 (0.5ms)中断] 中断中做 PWM 输出
  ------------1000/(0.02ms*250)=200Hz
*************************************/
void T1zd(void) interrupt 3    //3 为定时器1的中断号  1 定时器0的中断号 0 外部中断1 2 外部中断2  4 串口中断
{
        TH1 = 0xfe; //11.0592
        TL1 = 0x33;
         timer1++;
   
}

好比这样,简单加个按键
作者: qwe2935188396    时间: 2015-4-24 23:40
liaolinhui 发表于 2015-4-24 23:37
/********************************************************************************
*  标题: 恒速运行 ...

就是用按键来控制它的占空比进而控制电机加减速。




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