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

发布时间: 2024-08-29
来源: 电子工程世界

一、实验原理

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来改变高电平的占空比,进而改变电机的转速。


文章来源于: 电子工程世界 原文链接

本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。