新闻中心

EEPW首页>测试测量>设计应用> 基于Arduino与LabVIEW的直流电机转速控制系统

基于Arduino与LabVIEW的直流电机转速控制系统

作者: 时间:2017-01-06 来源:网络 收藏

pinMode(3,OUTPUT);

analogWrite(3,127);

图4 PWM频率测量结果

在图4所示的PWM频率测量结果中,去除前两个,可以发现频率值稳定在490和491,且4个490之后出现一个491,基本可以认为是490Hz。

同时,为了进一步的确认PWM的频率为490Hz,已验证频率测量的准确性,利用NI USB-6009便携式数据采集卡和LabVIEW 2012软件实现一个简易的模拟量采集器,使用10kps的采样率,5秒的采样时间的参数分别采集了PWM的占空比为10/255、127/255和245/255时的波形图,取波形图的前0.01秒,如图5、图6和图7所示,在0.01秒内约有5个周期,同时使用频率分析工具对占空比为127/255的波形数据进行分许,得到其频率为490.099Hz。

通过对基于Arduino与TimerOne定时器库的频率测量与基于LabVIEW和数据采集卡的数据对比与分析,得出频率测量非常准确。

图5占空比为10/255时的波形

图6占空比为127/255时的波形

图7占空比为245/255时的波形

2.4搭建测量转速的平台

在验证了基于Arduino与TimerOne定时器库的频率测量的准确性之后,我们就可以着手搭建一个直流电机转速测量系统。

2.4.1硬件平台

直流电机转速测量系统的直流电机和编码器有两者分离式,使用联轴器将两者连接起来,也有带有编码器的直流电机,此处为了简化设计,直接选用带有编码器的直流电机。JGB37-371-12V-228RPM带有编码器的直流减速电机如图8所示,额定电压为12V,额定空载转速为228rpm,其编码器为334线增量式光电编码器,其接口有6根数据线,黄色和橙色是电机电源,绿色和白色是AB相脉冲输出,红色和黑色是编码器的电源端和接地端。

图8带有编码器的直流减速电机

图9 OCROBOT Motor Shield

OCROBOT Motor Shield是基于Arduino Motor Shield设计的增强版本的电机驱动器,如图9所示,电机驱动器采用独立供电、GND分离技术,且与Arduino控制器之间采用光耦隔离,这充分保证了Arduino控制器在大负载、大功率、急刹车、瞬时正反转等恶劣电磁环境下的稳定性。需要注意的是:Arduino控制器与电机驱动器应使用两块电池或者两个独立的电源,保证电机驱动板与Arduino控制板电源完全独立,从而保证其电气隔离性。OCROBOT Motor Shield的I/O口的控制功能如表2所示,如果使用电机时还会接驳其他设备应避免占用这些I/O口。

表2OCROBOT Motor Shield的控制引脚

功能

电机A

电机B

方向

D12

D13

速度(PWM)

D3

D11

制动(刹车)

D9

D8

搭建的直流电机转速测量系统如图10所示。OCROBOT Motor Shield直接堆叠在Arduino Uno控制器上,OCROBOT Motor Shield采用7.4V的锂电池供电,Arduino Uno控制器使用方口USB线连接至计算机上,提供电源且可以方便的通过串口上传数据至计算机上。电机的黄色和橙色连接至OCROBOT Motor Shield电机接口A,绿色和白色分别连接至Arduino Uno控制器的数字端口2、3,红色和黑色连接至Arduino Uno控制器的电源端口5V、GND。

图10直流电机转速测量系统

2.4.2软件设计

由于JGB37-371-12V-228RPM直流减速电机的编码器输出AB相脉冲,为了充分利用两相脉冲以提高测量准确性,在程序代码2转速测量程序中的attachInterrupt(0, counter, RISING)之后增加如下代码,将B相脉冲输出也用来计数,以实现2倍频测量。JGB37-371-12V-228RPM直流减速电机的编码器为334线增量式光电编码器,也就说电机旋转一圈输出334个脉冲,2倍频之后即为668个脉冲。

attachInterrupt(1, counter, RISING);//设置编码器B相位上升沿中断

修改完编码器部分,需要增加电机驱动部分的代码,以实现驱动直流电机旋转。由于硬件上将直流电机的电源线接在L298P的A端口,其控制信号为3、9和12,分别为PWM信号、制动信号和方向信号。需要在void setup()中的delay(2000)之后增加如下代码。当PWM值为80时,串口输出的转速如图8所示,且当PWM低于80时,减速电机输出轴不转动;将PWM设置为255时,串口输出的转速如图9所示。

pinMode(12,OUTPUT);

pinMode(3,OUTPUT);

pinMode(9,OUTPUT);//启用电机A的三个管脚,全部设置为输出状态

digitalWrite(9, LOW);//松开电机A的制动

digitalWrite(12, HIGH);//设置方向为正向

analogWrite(3,80);//设置PWM值

图8 PWM为80时转速数据

图9 PWM为255时转速数据

3.转速的比例控制

3.1PID控制方法

PID控制器(比例-积分-微分控制器),由比例单元P、积分单元I和微分单元D组成。通过Kp,Ki和Kd三个参数的设定来实现对某个变量的实时控制,主要适用于基本上线性,且动态特性不随时间变化的系统。

PID控制器是一个在工业控制应用中常见的反馈控制方法,其原理如图10所示,其将采集的数据和设定参考值进行比较,然后将这个差值通过PID三个模块计算出新的控制值用于执行,计算差值的目的是让系统的数据达到或者保持在设定的参考值。PID控制器可以根据历史数据和差别的出现率来调整输入值,使系统更加准确而稳定。



评论


技术专区

关闭