基于单片机软件实现直流电机PWM以及电机测速

基于单片机软件实现直流电机PWM以及电机测速

ID:43412217

大小:100.00 KB

页数:6页

时间:2019-10-01

基于单片机软件实现直流电机PWM以及电机测速_第1页
基于单片机软件实现直流电机PWM以及电机测速_第2页
基于单片机软件实现直流电机PWM以及电机测速_第3页
基于单片机软件实现直流电机PWM以及电机测速_第4页
基于单片机软件实现直流电机PWM以及电机测速_第5页
资源描述:

《基于单片机软件实现直流电机PWM以及电机测速》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、一、摘要利用AT89C51设计一个直流电机的软件模拟PWM驱动及测速系统。单片机读取键盘值来设定转速和正反转,并且通过红外对管来测量转速。本系统具有精度高,成本低,使用方便等优点。关键词:AT89C51;PWM;测速。引言随着社会的发展,各种智能化的产品日益走入寻常百姓家。为了实现产品的便携性、低成品以及对电源的限制,小型直流电机应用相当广泛。对直流电机的速度调节,我们可以采用多种办法,本文给出一种用单片机软件实现PWM调速的方法及红外对管测转速。二、直流电机调速知道通过调节直流电机的电压可以改变电机的转速,但是一般我们设计的电源大都是固定的电压,而且模拟可调电源不易于单片机控制,数

2、字可调电源设计麻烦。所以这里用脉宽调制(PWM)来实现调速。方波的有效电压跟电压幅值和占空比有关,我们可以通过站空比实现改变有效电压。一般用软件模拟PWM可以有延时和定时两种方法,延时方法占用大量的CPU,所以这里采用定时方法。三、直流电机旋转方向一般利用H桥电路来实现调速。H桥驱动电路:图4.12中所示为一个典型的直流电机控制电路。电路得名于“H桥驱动电路”是因为它的形状酷似字母H。4个三极管组成H的4条垂直腿,而电机就是H中的横杠(注意:图4.12及随后的两个图都只是示意图,而不是完整的电路图,其中三极管的驱动电路没有画出来)。如图所示,H桥式电机驱动电路包括4个三极管和一个电机

3、。要使电机运转,必须导通对角线上的一对三极管。根据不同三极管对的导通情况,电流可能会从左至右或从右至左流过电机,从而控制电机的转向。                  图4.12H桥驱动电路要使电机运转,必须使对角线上的一对三极管导通。例如,如图4.13所示,当Q1管和Q4管导通时,电流就从电源正极经Q1从左至右穿过电机,然后再经Q4回到电源负极。按图中电流箭头所示,该流向的电流将驱动电机顺时针转动。当三极管Q1和Q4导通时,电流将从左至右流过电机,从而驱动电机按特定方向转动(电机周围的箭头指示为顺时针方向)。               图4.13H桥电路驱动电机顺时针转动图4.1

4、4所示为另一对三极管Q2和Q3导通的情况,电流将从右至左流过电机。当三极管Q2和Q3导通时,电流将从右至左流过电机,从而驱动电机沿另一方向转动(电机周围的箭头表示为逆时针方向)。             图4.14H桥驱动电机逆时针转动可以把Q1跟Q4接在一起,Q3跟Q2接在一起,这样只要两个单片机I/O口就行。下面的程序中lun1、lun2就表单片机的两个I/O口。这个桥式电路图只用来说明原理,实际应用还要看电机的额定电压、电流。也可以用L293、L298直流的集成芯片。四、PWM程序voidtimer0()interrupt1{if(temp){TH0=time_h_0;TL0=

5、time_l_0;//设置低电平时间temp=0;}else{TH0=time_h_1;TL0=time_l_1;//设置高电平时间,可以通过键盘设定来达到调速功能。temp=1;T0_count++;//作测速定时用}//这样定时在两个时间里变化起到类似两个定时器的作用//qianjin从键盘读取if(qianjin==1)//正转{lun1=temp;lun2=1;//低电平有效}elseif(qianjin==2)//反转{lun1=1;lun2=temp;}elseif(qianjin==3)//停止{lun1=1;lun2=1;}}这样就可以实现直流电机正反转和调速。当然键

6、盘程序比较简单,篇幅所限,不详细给出。五、测速通过红外对管来测量轮子转速,电路图如下:测速可以分3种:测频法、测周法和测频侧周混合法。这里我只介绍测频法,因为已经用了一个定时器,可以在这个定时器基础上设定时间,程序中T0_count就是时间变量。若要用侧周法,会有一个误差,主要来自定时器的误差。时间定了后接下来要测脉冲数,可以用计数器或者外部中断,采用计数器比较方便。程序:if(T0_count>=125){TR1=0;//关闭计数器T0_count=0;int_h=TH1;//T1计数缓冲单元int_l=TL1;TH1=0;//清计数器TL1=0;T1_count=0;TR1=1;

7、//开启计数器}//Time1中断服务函数//对T1溢出产生中断的次数进行计数//计满65535,产生一次溢出中断voidtimer1()interrupt3{//因为电机转速实际测量中电机转速并不超过65536的计数,所以不会进入中断。不然可以//用一个变量来计数}显然转速=(int_h*256+int_l)/125*PWM脉冲周期。这里有一个误差需要修正,因为进入定时中断需要进行进行压栈等工作所以会有一定误差。摘取进入定时器中断的反汇编程序:78:vo

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。