什么是PWM?如何对直流电机调速?怎样通过定时器中断实现?

  • 时间:
  • 浏览:170
  • 来源:中国微特电机网

你说这PWM,听起来怪高深的,可实际上却在咱们身边好多电器设备里都藏着!它到底是啥东西,又咋给直流电机调速?还有那定时器中断实现PWM调速,这都是啥原理?看完这篇文章,说不定你这脑袋里就跟拨云见日似的,敞亮多!

PWM基本概念

PWM也就是脉宽调制这名字特别专业。它干的事就是改变脉冲宽度,以此来控制输出的电压;改变脉冲的周期,就能控制输出的频率。这脉冲,你就把它当成IO口一次高低电平的改变,这么一想就容易理解多了。生活里好多地方都离不开这PWM,咱家里的电器设备里基本都有它的影子。

PWM可太重要,电压和频率就跟它手心手背似的,它都能掐得死死的。好多电子产品要是没了PWM,那运转得肯定乱糟糟。

PWM对直流电机调速原理

用PWM给直流电机调速的时候,得改变占空比才行。就这占空比,指的是一个脉冲循环内,通电也就是高电平的时间pwm控制电机原理,在总时间里占的比例。改变占空比,实际上就是改变脉冲宽度,电压跟着被控制,电压小了pwm控制电机原理,电机转速自然就降下来了。

这脉冲的频率对电机转速那也是有决定性作用的。脉冲频率越高,电机转动的连续性就越好。打个比方,你要是玩遥控车,调整它的速度就得靠这手法。这就是咱们通过改变占空比调整电机转速的办法。

定时器中断实现PWM调速的缘由

51单片机没有附带PWM硬件电路,这不就得想其他办法。所以大家一般会利用软件模拟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的初始值。这脉冲周期是定时器溢出时间和占空比总份数相乘得到的。设置周期0.01s,占空比总份数设置成256,依据这些算下来,就能知道TH0和TL0的初始值是220。

专业人士设计电路时,这样的计算就是家常便饭。经过精确计算和调试,产品性能才能得到保证。

上代码及测试情况

现在就把代码拿出来讲讲,这里代码经过亲测,可以达到预想的效果。用了这些代码,能实现咱前面说的PWM调速等功能。大家调试代码的时候,要注意各种参数的设置是不是合适。好多从事嵌入式开发的小伙伴写过类似的调试代码。

我都解说得差不多,对于这个PWM调速代码实现的难点你是咋看的?

#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();//前进 } }

猜你喜欢

10kV电机功率咋算?基本公式法带你轻松搞定

I_相\times\cos\varphi\),不过在10kV系统中,如果已知线电压\(U_线=10kV\),那么相电压\(U_相=\fracU_线\sqrt3\),再结合已知的相电流\(I_相\)和功率因数\(\cos\varphi\)就可以计算功率。

2025-06-16

功率的分类及计算公式,电学中你了解多少?瞬时功率公式解析

在电学中,下述瞬时功率计算公式普遍适用在力学中,下述瞬时功率计算公式普遍适用在电学和力学中,下述平均功率计算公式普遍适用电学中,下述视在功率计算公式普遍适用:在非正弦电路中,有功功率和视在功率的定义不变,然而,此时,电压、电流相位差已经没有明确的物理意义,此时,q按照下述公式定义:

2025-06-16

简述高压电机主绝缘发展历史、现状及未来发展方向

摘要:本文简述了高压电机主绝缘发展历史、国内外慨况。最后对各种主绝缘体系提出所存在问题及今后发展方向。发电机产生虽有一百余年历史,但基本结构未显著变化,仅是冷却和绝缘技术进行改进,由此可知绝缘在电机中的重要性。至今世界各大电机公司仍在不断改进各自的绝缘系统,因此主绝缘被认为是可持续发展的课题。

2025-06-16

2023年上海市大众工业学校招生分数线是多少?一文了解

2023年上海市大众工业学校招生分数线多少?填报上海大众工业学校最低要多少分?上海中考小编整理出2023年上海市大众工业学校在上海的招生控制分数线:中本贯通-大众自动化-贯通高校:上海第二工业大学7、2023年上海大众工业学校分数线10、2023年上海电机学院附属科技学校分数线

2025-06-16

电机功率计算常见严重问题?如何合理计算与选驱动设备?

我们如何才能对电机功率计算得最为合理,并选择适合的电动机驱动设备呢?大家知道三相异步电机是我们常见的电机类型,三相异步电机功率计算公式为P=√3*U*I*cosj,这个公式是一个基础的公式,有一定的局限性,本文对这个三相异步电机的功率计算公式基础知识的做一个详细总结。

2025-06-16