找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5883|回复: 7
打印 上一主题 下一主题
收起左侧

请问怎么用按钮控制电机加减速?

[复制链接]
跳转到指定楼层
楼主
ID:77982 发表于 2015-4-24 23:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我的毕业设计主题是:基于51单片机的直流电机调速系统,学校这学期才刚刚教单片机,大神来看看,要求是两个独立按键与51单片机连接,单片机通过驱动芯片与直流电机连接。两个独立按键可以分别控制电机的加速、减速,从而实现调速功能,请问怎么用按钮控制电机加减速?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:58502 发表于 2015-4-24 23:21 | 只看该作者
直流电机加减速靠的是PWM,也就是脉宽调制,只要改变了占空比就改变了速度
回复

使用道具 举报

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

那就是说老师要求用按钮控制加减速是不行的吗?
回复

使用道具 举报

地板
ID:58502 发表于 2015-4-24 23:29 | 只看该作者
qwe2935188396 发表于 2015-4-24 23:26
那就是说老师要求用按钮控制加减速是不行的吗?

可以,用按键控制占空比就是控制转速了
回复

使用道具 举报

5#
ID:58502 发表于 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改成一个变量,然后用按键控制这个变量的大小就能达到改变转速
回复

使用道具 举报

6#
ID:77982 发表于 2015-4-24 23:36 | 只看该作者
liaolinhui 发表于 2015-4-24 23:33
/********************************************************************************
*  标题: 恒速运行 ...

有点明白了
回复

使用道具 举报

7#
ID:58502 发表于 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++;
   
}

好比这样,简单加个按键
回复

使用道具 举报

8#
ID:77982 发表于 2015-4-24 23:40 | 只看该作者
liaolinhui 发表于 2015-4-24 23:37
/********************************************************************************
*  标题: 恒速运行 ...

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

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表