- 什么是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();//前进 } }
上一篇:51单片机—LCD1602显示模块
下一篇:关于51单片机中的几种通信模式与总结
推荐阅读最新更新时间:2024-11-22 11:12
推荐帖子
- 为什么MOSFET在升压和降压模式的电压振铃尖峰差异很大
- 双向直流变换器,部分管子在升压运行的时候电压振铃尖峰很大,但降压就改善了很多,部分管子与之相反。除了升降压模式下管子的关断电流有不同,还会有别的什么因素影响吗?PCB布局的时候只考虑了环路面积,可是感觉师兄做的板子回路面积都很大的,有的管子电压波形却很好,非常困惑。还请大家指点~谢谢!为什么MOSFET在升压和降压模式的电压振铃尖峰差异很大翻页再扯 嗯?双向直流变换器,部分管子在升压运行的时候电压振铃尖峰很大与什么样的控制芯片是否有关芯片datasheet怎么讲
- squareshawn PCB设计
- 谁有模拟滤波器与电路设计手册 (美),求一份PDF
- 谁有模拟滤波器与电路设计手册(美),求一份PDF谁有模拟滤波器与电路设计手册(美),求一份PDFmark我回去给你查查 谁写的?https://download.eeworld.com.cn/detail/tyw/572298本论坛就有吧。本坛就有,可以下载。模拟滤波器与电路设计手册
- nono000 RF/无线
- 去耦电容器......是否真的有必要?
- 作者:ArtKay德州仪器在担任应用工程师之前,我在TI的职位是IC测试开发工程师。我的项目之一是对I2C温度传感器进行特性描述。在编写一些软件之后,我手工焊接了一个原型设计电路板。由于时间仓促,我省去了比较麻烦的去耦电容器。谁会需要它呢,对吧?我收集数据大概有一个星期了,但获得的任何结果都无法与预期结果相匹配。于是我做了大量更改,试图提升性能,但都没有效果。最后,我决定添加一个去耦电容器,不出所料,问题解决了。这让我不禁思考……,会不会总是需要使用去耦电容器
- qwqwqw2088 模拟与混合信号
- 一个很简单的程序,怎么结果不对呢?
- #includepic.hmain(){inti=0;TRISA=1;TRISC=0;while(1){if(RA4==1&&RA5==0){PORTC=0x01;}elseif(RA4==0&&RA5==1){PORTC=0x02;}else{PORTC=0x00;}}}
- ieewxg Microchip MCU
- 霍尔器件[应用电路][转]
- 与大家分享!霍尔器件不错哦,学习学习回复:霍尔器件虽然不需要希望楼主再接再厉发更多的好贴回复:霍尔器件谢谢!!回复:霍尔器件谢谢分享回复:霍尔器件好样的回复:霍尔器件学习学习!!!!!!!!!回复:霍尔器件先学学回复:霍尔器件先谢谢了,谢谢共享回复楼主yetai的帖子谢谢分享!!!好,是挺好得谢谢分享了,呵呵
- yetai 模拟电子
- LM2675MX-ADJ可调电源及ISL21009电压基准模块设计
- 测试结果(12V转5V):1、经多次测量,电压基准输出不变,输出较为稳定,无漂移。2、可调电源空载输出有效纹波一般在20mv以内,满载(800mA输出)时,输出有效纹波在40mv以内,超载(1A)时输出有效纹波也在50mv以内。3、在不同电压输出下,系统空载时输入电流在3mv以内,加上负载后效率一般在80%以上。4、测试过程中,系统工作
- aboutnow 微控制器 MCU