基于51单片机和无线传输的直流电机调速测速系统设计
2018-08-15陈庭伟林艺帆刘巧
陈庭伟 林艺帆 刘巧
摘 要:为了满足工业生产中对发电机、中小型马达、机床转轴等旋转设备的转速控制和转速采集上的需求,本文介绍一种基于51单片机和无线传输的直流电机调速测速系统的设计。以STC89C52单片机为主控芯片,利用PWM的原理,通过按键对直流电机进行调速,速度可分高中低三档;采用槽形光耦传感器对直流电机的转动进行计数,并通过主控芯片将采集到的计数值转化为直流电机的当前速度值;利用nRF24L01无线传输模块与串口通信技术将当前采集到的速度值实时地发送给上位机并在上位机中显示出来。实验表明,此系统具有成本低,功耗低,可靠性高等优点,具有一定的实用性。
关键词:直流电机调速测速;槽型光耦传感器;串口通信;nRF24L01
中图分类号:TP368.2 文献标识码:A
Abstract:To meet the needs of speed control and speed collection for rotating equipment such as generators,small and medium motors,rotating shafts,this paper introduces a design of DC motor speed control and measurement system based on 51 micro-controller and wireless transmission.Taking STC89C52 micro-controller as the main control chip,following the principle of PWM,using the keys to control the DC motor speed,the speed can be divided into three sections:low,middle and high;Use trough optocoupler sensor to count DC motor rotations,and turn the collected data into the DC motor speed value by the main control chip.Use nRF24L01 wireless transmission module and serial communication technology to collect the current velocity and send it simultaneously to the host computer to be displayed.The experiment shows that the system has the advantages of low cost,low power consumption and high reliability as well as certain practicability.
Keywords:DC motor speed control and measurement;slot-type optocoupler sensor;serial communication;nRF24L01
1 引言(Introduction)
如今,大量的产品是在自动化生产流水线上生产出来的,使用自动化生产流水线就不可避免地需要使用大量的电机,来对生产速度的快慢进行控制,因此,对于电机调速测速的控制就显得尤为重要了。但是,有线传输测速系统存在成本高、灵活性差、占用空间大等缺點,所以,为解决以上问题,有线系统改为无线系统是一个很好的解决方案。目前,在市面上的各种射频芯片中,一款由挪威Nordic公司生产的nRF24L01无线收发射频芯片可以满足无线传输测速系统的要求,它具有可靠性高、灵活性好、成本低等优点,现已在市面上得到广泛地应用。本文所介绍的基于51单片机和无线传输的直流电机调速测速系统设计,正是使用的这款无线模块。
2 系统硬件设计(System hardware design)
2.1 系统整体设计思路
系统采用STC89C52单片机作为主控芯片,并由五大部分电路组成,这五大部分电路分别是按键电路、直流电机驱动电路、测速电路、显示电路和无线传输电路。驱动电路采用L9110芯片设计,测速电路采用槽形光耦传感器设计,而无线传输电路则采用nRF24L01无线收发射频芯片来设计。系统整体工作流程如图1所示。
2.2 直流电机调速原理及其电路设计
直流电机可以通过改变其两端电压大小来控制其速度,电压越大转速越快,反之越慢,直流电机的速度调节可通过PWM原理来实现。PWM中文全程叫脉冲宽度调制,即占空比可调的脉冲波形,利用PWM实现直流电机调速的原理为:给直流电机传送一定频率的脉冲信号,通过微控制器对此脉冲信号的占空比进行控制,来间接控制直流电机两端的电压,从而控制电机的转速,起到电机调速的功能。
本文所介绍的系统采用L9110芯片来搭建直流电机的驱动电路,L9110是为控制和驱动电机设计的两通道推挽式功率放大专用集成电路器件,将分立电路集成在单片IC之中,使外围器件成本降低,整机可靠性提高,其各管脚定义与功能如图2所示,输入输出管脚逻辑关系如表1所示。L9110被广泛应用于玩具汽车电机驱动、脉冲电磁阀门驱动,步进电机驱动和开关功率管等电路上。P1.5和P1.6都是51单片机的两个I/O口,将这两个I/O口分别连接到L9110芯片的两个输入端上,P1.5口恒定输出低电平,P1.6口则输出PWM信号,同时在L9110芯片的输出端接上直流电机,这样就组成了一个直流电机驱动电路。通过对单片机P1.6口输出的PWM信号进行控制,即可实现直流电机调速。值得注意的是,在VCC与GND之间需加一个4.7μF的电容,起电源电压滤波和防止电机抖动的作用。
2.3 直流电机测速原理及其电路设计
直流电机的测速是通过槽形光耦传感器来实现的,其电路图如图3所示。槽形光耦传感器的工作原理为:槽两端分别是光发射器和光接收器,当有物体从槽中通过时,光被遮挡,光电开关便动作,输出一个开关控制信号,切断或接通负载电流,从而完成一次控制动作。简而言之就是当无物体遮挡时,传感器OUT端恒定输出高电平,而当有物体遮挡时,OUT端输出低电平。
利用槽形光耦传感器的工作原理,可以把传感器OUT端连接到STC89C52单片机的P3.4口。P3.4这个I/O口有两个功能,一个是做普通的输入输出口用,另一个则是作为TO定时器/计数器用,此处需要用到P3.4口的T0计数器功能。51单片机当中有一个8位寄存器TMOD是用来控制定时器/计数器的工作方式的,TMOD各位的定义如表2所示,D7-D4是用来控制T1定时器/计数器的,D3-D1则是用来控制T0定时器/计数器的。当时,T0或T1为计数器模式,可记录低电平数目,当时,T0或T1为定时器模式。当T0处以计数器模式时,计数值每满65536次,T0产生一次中断,计数值清零。利用上述原理,可以很轻松的完成直流电机的测速工作。在直流电机上安装上码盘,让码盘的位置放在槽形光耦传感器的凹槽处,利用码盘上的过孔,每当直流电机转动并带动码盘一起转动的时候,槽形光耦传感器会存在“导通”和“遮挡”两种状态,此时在传感器的OUT端就会输出连续的由高低电平组成的方波,T0在就会记录下方波中的低电平的数目。利用STC89C52单片机,在规定的一段时间内,对T0记录下的低电平数目进行换算:(低电平数目/码盘一圈的过孔数目)/记录时间(秒),即可得出当前直流电机的转速了。
2.4 无线模块nRF24L01传输原理及其电路设计
本系统采用一款由挪威Nordic公司生产的nRF24L01无线收发射频模块来传输直流电机速度值。该模块工作在2.4—2.5GHz世界通用ISM频段,其无线收发芯片中含有频率发生器、增强型SchockBurstTM模式控制器、功率放大器、晶体振荡器、调制器和解调器,输出功率、频道选择和协议设置可以通过SPI接口进行设置。由于本系统采用的主控芯片STC89C52RC中没有SPI接口,可使用普通I/O口来模拟SPI接口进而对nRF24L01模块进行控制,如图4所示,CSN为SPI片选信号口,SCK为SPI时钟口,MOSI为SPI的数据输入口,MISO为SPI的数据输出口,通过STC89C52RC的P3.7、P2.3、P2.0和P2.2这四个普通I/O口可以进行对SPI接口的模拟,当然,选用STC89C52RC的其他I/O口也是可以模拟的。nRF24L01有五种工作模式,分别是掉电模式、发射模式、接收模式、等待模式1和等待模式2。可通过SPI接口配置nRF24L01寄存器中的PWM_UP位和PRIM_RX位,以及控制CE脚的电平高低来对其工作模式进行设置,如表3所示。本系统只用到发送模式。
需要注意的是,nRF24L01支持的最大工作电压为3.6V,而51单片机的工作电压为5V,因此不能直接将nRF24L01无线模块的VCC端直接与51单片机的VCC相连,需要用过转换。如图4所示,利用AMS1117-3.3V芯片可将5V转为3.3V,供nRF24L01无线模块使用,在AMS1117-3.3V芯片的VIN端和VOUT端加上100μF的电容起稳压和滤除杂波的作用。
3 系统软件设计(System software design)
3.1 下位机程序设計
下位机程序可采用C语言或者汇编语言开发。但是相比于汇编语言而言,用C语言开发可以拥有更高的开发效率,而且C语言更接近于自然语言,方便阅读和后期维护,因此本系统的下位机程序是采用C语言来开发的。
下位机程序的开发可以遵循分块编程的思想,即将每个单独的模块或者功能单拎出来开发,最后在把它们整合在一起组成一个完成的下位机程序。本系统有主要有LCD1602显示模块、直流电机控制模块和nRF24L01无线传输模块这三大模块,除此之外还用到一个51单片机内部的一个重要资源——中断。因此下位机程序开发可分为四大部分:LCD1602显示程序开发、直流电机控制程序开发、nRF24L01无线传输程序开发和中断程序开发。
其中,定时器中断程序如下:
void T1_time(void) interrupt 3
{
TR1=0;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
T1_num++;
if(T1_num>=20)
{
speed_num=TL0;
TH0=0;
TL0=0;
T1_num=0;
}
TR1=1;
}
3.2 上位机软件设计
上位机软件是采用VB程序开发的,使用Microsoft公司推出的Visual Basic 6.0开发工具进行开发。要让下位机与上位机进行通信,离不开一个重要的通信方式——串口通信。本上位机软件的核心功能就是串口通信功能。
Visual Basic 6.0开发工具中有一个名为MSComm的控件可以实现串口通信。MSComm控件中有几个比较重要的属性,对这些属性进行设置可以控制数据的传输,属性如下:
(1)CommPort属性:设置并返回连接的串行端口号,Windows系统将会利用该串口端口和外界进行通信。
(2)Settings属性:设置并返回数据传输速率、奇偶校验、数据比特、停止比特参数。
(3)PortOpen属性:用于打开或者关闭端口。
(4)InBufferCount属性:返回输入缓冲区内的等待读取的字节个数,可以通过该属性值为0来清除接收缓冲区。
(5)InputMode属性:设置为ComInputModeText或0即以文本方式取回数据,设置为ComInputModeBinary或1即以二进制方式取回数据。
4 实验验证(Experimental verification)
为上述系统设计的可靠性进行验证。给系统上电,调整电机以中速转动,让其与PC保持30米左右间距,并在它们之间放置遮挡物;同时,打开PC上位机与对应串口。此时可见上位机的接收界面正实时接收显示由系统传送过来的当前电
机转速,如图5所示。除此之外,还让电机处于高速和低速状态,并按上述要求进行多次实验。实验证明,此系统在30米内有遮挡物的环境下仍能有效地接受数据,具有很高的可靠性。
5 结论(Conclusion)
针对工业生产中在旋转设备中转速控制和转速采集上的需求,本文提出了一款基于51单片机和无线传输的直流电机调速测速系统的设计方案。该系统运行可靠稳定、成本低且易于实现,能够满足工业生产中对电机测速的需求,且利用nRF24L01模块实现了信息的无线传输,摆脱了有线传输带来的局限性,大大提高了系统的灵活性。基于以上的各种优点,该系统可投入到实际生产应用中去,具有一定的实用价值和推广价值。
参考文献(References)
[1] 李健,周建.直流电机调速和测速系统设计[J].仪器仪表用户,2016,23(08):28-29;65.
[2] 尹冬梅.基于单片机控制的直流电机调速测速系统[J].科技风,2011(14):29-30.
[3] 时志云,盖建平,王代华,等.新型高速无线射频器件nRF24L01及其应用[J].国外电子元器件,2007(08):42-44.
[4] 王天娇.基于nRF24L01的高效无线传输系统设计[A].中国高科技产业化研究会智能信息处理产业化分会、中国高科技产业化研究会信号处理专家委员会.第十一届全国信号和智能信息处理与应用学术会议专刊[C].中国高科技产业化研究会智能信息处理产业化分会、中国高科技产业化研究会信号处理专家委员会,2017:7.
[5] 徐灵均,李志宏.基于串口通信的控制系统设计[J].电子技术与软件工程,2017(15):48.
作者简介:
陈庭伟(1997-),男,本科生.研究领域:电子信息工程.
林艺帆(1997-),女,本科生.研究领域:信息管理与信息系统.
劉 巧(1980-),女,硕士,讲师.研究领域:嵌入式自动控制.