网站首页 | 经济学论文 | 证券金融 | 管理学 | 会计审计 | 法学论文 | 医药学论文 | 社会学论文 | 教育论文 | 计算机 | 艺术论文 | 哲学论文 | 财务管理 |
写论文网
  • 艺术理论论文
  • 电视电影论文
  • 音乐论文
  • 美术论文
  • 您的位置:写论文网 > 艺术论文 > 美术论文 > 基于单片机软件实现直流电机P... 正文 2019-12-27 07:25:33

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

    相关热词搜索:

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

    基于单片机软件实现直流电机PWM以及电机的测速 一、摘要 利用AT89C51设计一个直流电机的软件模拟PWM驱动及测速系统。单片 机读取键盘值来设定转速和正反转,并且通过红外对管来测量转速。本系统具有 精度高,成本低,使用方便等优点。

    关键词:AT89C51;PWM;测速。

    引言 随着社会的发展,各种智能化的产品日益走入寻常百姓家。为了实现产品 的便携性、 低成品以及对电源的限制,小型直流电机应用相当广泛。对直流电机 的速度调节,我们可以采用多种办法,本文给出一种用单片机软件实现PWM调速 的方法及红外对管测转速。

    二、直流电机调速 知道通过调节直流电机的电压可以改变电机的转速,但是一般我们设计的 电源大都是固定的电压,而且模拟可调电源不易于单片机控制,数字可调电源设计 麻烦。所以这里用脉宽调制(PWM)来实现调速。方波的有效电压跟电压幅值和占 空比有关,我们可以通过站空比实现改变有效电压。一般用软件模拟PWM可以有 延时和定时两种方法,延时方法占用大量的CPU,所以这里采用定时方法。

    三、直流电机旋转方向 一般利用H桥电路来实现调速。H桥驱动电路: 图4.12中所示为一个典型的直流电机控制电路。电路得名于“H桥驱动电 路”是因为它的形状酷似字母H。4个三极管组成H的4条垂直腿,而电机就是H中的 横杠(注意:图4.12及随后的两个图都只是示意图,而不是完整的电路图,其中三极 管的驱动电路没有画出来)。

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

    图4.13 H桥电路驱动电机顺时针转动 图4.14所示为另一对三极管Q2和Q3导通的情况,电流将从右至左流过电机。

    当三极管Q2和Q3导通时,电流将从右至左流过电机,从而驱动电机沿另一方向转 动(电机周围的箭头表示为逆时针方向)。

    图4.14 H桥驱动电机逆时针转动 可以把Q1跟Q4接在一起,Q3跟Q2接在一起,这样只要两个单片机I/O口就 行。下面的程序中lun1、lun2就表单片机的两个I/O口。这个桥式电路图只用来说 明原理,实际应用还要看电机的额定电压、电流。也可以用L293、L298直流的集 成芯片。

    四、PWM程序 void timer0() interrupt 1 { -if(temp) { TH0=time_h_0;
    TL0=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;//低电平有效 } -else if(qianjin==2) //反转 { lun1=1;
    lun2=temp;
    } -else if(qianjin==3) //停止 { lun1=1;
    lun2=1;
    } } 这样就可以实现直流电机正反转和调速。当然键盘程序比较简单,篇幅所限,不详细给出。

    五、测速 通过红外对管来测量轮子转速,电路图如下: 测速可以分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;
    //开启计数器 } // Time1中断服务函数 // 对T1溢出产生中断的次数进行计数 // 计满65535,产生一次溢出中断 void timer1() interrupt 3{ //因为电机转速实际测量中电机转速并不超过65536的计数,所以不会进入 中断。不然可以//用一个变量来计数 } 显然转速=(int_h*256+ int_l)/ 125*PWM 这里有一个误差需要修正,因为进入定时中断需要进行进行压栈等工作所 以会有一定误差。摘取进入定时器中断的反汇编程序: 78: void timer0() interrupt 1 79: { 80: C:0x0250 C0E0 PUSH ACC(0xE0) C:0x0252 C0D0 PUSH PSW(0xD0) 81: -if(temp) C:0x0254 30.000A JNB temp(0x20.0),C:0261 82: { 83: TH0=time_h_0;
    C:0x0257 85088C MOV TH0(0x8C),time_h_0(0x08) 84: TL0=time_l_0;
    C:0x025A 850A8A MOV TL0(0x8A),time_l_0(0x0A) 85: temp=0;
    C:0x025D C200 CLR temp(0x20.0) 86:} 87: -else C:0x025F 800A SJMP C:026B 88: {89: TH0=time_h_1;
    C:0x0261 85098C MOV TH0(0x8C),time_h_1(0x09) 90: TL0=time_l_1;
    C:0x0264 850B8A MOV TL0(0x8A),time_l_1(0x0B) 91: temp=1;
    C:0x0267 D200 SETB temp(0x20.0) 92: T0_count++ ;
    C:0x0269 050C INC T0_count(0x0C) 93:} 显然在进入中断后首先要进行ACC和PSW压栈,这里需要4个机器周期。接 着要判断是否temp==1,用到JNB指令需要2个机器周期。另外还有两个MOV指令。

    把这些时间算进去后,精度就会比较高。估计在4000hz情况下测到的是4006hz左 右,这里的误差可能是中断响应需要一定时间,可以通过加上7、8个机器周期来修 正。最后能得到4000hz以内误差只在1hz。

    六、结论 本系统实现了直流电机的转速、方向的设定和转速的测量,而且测速精度 非常高。

    • 范文大全
    • 教案
    • 优秀作文
    • 教师范文
    • 综合阅读
    • 读后感
    • 说说
    基于单片机软件实现直流电机PWM以及电机的测速:单片机直流电机测速》由(写论文网)整理提供,版权归原作者、原出处所有。
    Copyright © 2019 写论文网 All Rights Reserved.