基于51单片机的直流电机调速实验

工业控制

1096人已加入

描述

一、实验原理

PWM:即脉冲宽度调制,在具有惯性的系统中,可以通过对一系列脉冲的宽度进行调制,来等效的获得所需要的模拟量,常用于电机调速,灯光亮度调节等。

该实验和之前LED呼吸灯(定时器实现),实验原理本质上是相同的,可以结合之前的文章进行理解学习,这里就不再赘述了。(下图引用LED呼吸灯实验)

电机控制

二、关键代码

void Timer0_Routine() interrupt 1
{
  TL0 = 0x66;    
  TH0 = 0xFF;    
  Counter++;
  Counter%=100;  //计数值变化范围限制到0~99
  if(Counter< Compare)  //计数值小于比较值        
  {
    Motor=1;    //输出1               马达转动   (ULN2003芯片是一个7路反向器电路,即当输入端为高电平时ULN2003输出端为低电平)
  }
  else        //计数值大于比较值
  {
    Motor=0;    //输出0               马达停止
  }




sbit Motor=P1^0;


unsigned char Counter,Compare;  //计数值和比较值,用于输出PWM
unsigned char KeyNum,Speed;
//主函数
void main()
{
  Timer0_Init();
  while(1)
  {
    KeyNum=Key();
    if(KeyNum==1)
    {
      Speed++;
      Speed%=4;
      if(Speed==0){Compare=0;}  //改变比较值,改变PWM占空比
      if(Speed==1){Compare=60;}
      if(Speed==2){Compare=75;}
      if(Speed==3){Compare=100;}
    }
  }
}

通过定时器来实现一定周期的PWM波,再通过改变比较值Compare来改变高电平的占空比,进而改变电机的转速。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分