单片机
返回首页

51单片机—使用PWM对直流电机调速

2021-09-01 来源:eefocus

- 什么是PWM

PWM(脉宽调制),是靠改变脉冲宽度来控制输出电压,通过改变周期来控制其输出频率。


(脉冲可以理解为是IO口的一次高低电平改变)


- PWM是怎么对直流电机进行调速的

使用PWM对电极调速时,是靠改变占空比(改变脉冲宽度)来控制输出电压的,电压较小电机转速就会下降;再通过改变周期(脉冲的周期)来控制其输出频率,脉冲频率对电机的转速有着决定性作用,脉冲频率越高连续性就越好。


我们一般时通过改变占空比来改变电机转速的。


(占空比:占空比是指一个脉冲循环内,通电(高电平)时间相对于总时间所占的比例。)


- 通过定时器中断实现PWM调速

因为51单片机不附带PWM硬件电路,所以我们一般通过软件模拟PWM,具体是利用定时器中断来实现PWM调速。


改变脉冲宽度:此处利用定时器0的工作方式2(即8位自动装填 TMOD=0X02),一次计时溢出就代表一次脉冲,所以占空比的改变(脉冲宽度的改变是在每一次脉冲改变的)就在中断函数内进行了。


主要是在中断函数内进行占空比设置,如下


void timer0() interrupt 1

{

pwm_t++;

if(pwm_t == 255) //将一个周期分成256份

pwm_t = left_en = right_en = 0;

if(pwm_left_val == pwm_t)//达到pwm_left_val后开启左使能开关

left_en = 1;

if(pwm_right_val == pwm_t)//达到pwm_left_val后开启右使能开关

right_en = 1;  

}


改变周期:那周期的改变是依据什么呢?当然是控制溢出时间了(即控制TH0和TL0的初始值)脉冲周期=定时器溢出时间x占空比的总份数。


当设置周期为0.01s、占空比总份数为256时,可以根据定时器溢出时间算出TH0和TL0的初始值为220。


- 上代码

代码经过本人亲测,可以实现


#include

sbit left_en=P1^4;

sbit right_en=P1^5;

sbit left_advance=P1^3;

sbit left_back=P1^2;

sbit right_advance=P1^6;

sbit right_back=P1^7;

unsigned char pwm_left_val = 200;//左电机占空比值 取值范围0-170,0最快

unsigned char pwm_right_val = 0;//右电机占空比值取值范围0-170 ,0最快

unsigned char pwm_t=0;//周期计数变量

/*小车前进*/

void forward()

{

left_advance=1; //左电机前进

left_back=0;

right_advance=1; //右电机前进

right_back=0;

}


//定时器0中断

void timer0() interrupt 1

{

pwm_t++;

if(pwm_t == 255) //将一个周期分成256份

pwm_t = left_en = right_en = 0;

if(pwm_left_val == pwm_t)//达到pwm_left_val后开启左使能开关

left_en = 1;

if(pwm_right_val == pwm_t)//达到pwm_left_val后开启右使能开关

right_en = 1;  

}

void main()

{

TMOD |= 0x02;//8位自动重装模块

TH0 = 220;

TL0 = 220;//11.0592M晶振下占空比最大比值是256,输出100HZ

TR0 = 1;//启动定时器0

ET0 = 1;//允许定时器0中断

EA = 1;//总中断允许

while(1)

{

forward();//前进

}

}

进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

最新器件
精选电路图
  • CCD图像传感器在微光电视系统中的应用

  • 光控音效发生器电路

  • 非常简单的150W功放电路图

  • 分享一个电网倾角计电路

  • 电谐波图形均衡器示意图

  • 一种构建12V和230V双直流电源的简单方法

    相关电子头条文章