微波EDA网,见证研发工程师的成长!
首页 > 测试测量 > 测试测量技术文库 > 基于Arduino与LabVIEW的直流电机转速控制系统

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

时间:01-06 来源:互联网 点击:

冲数,实现对旋转轴转速测量的一种方法,适用于高、中转速的测量。该法本质上属于定时测角法,为提高测量的准确度,有时采用多标记或开齿的方法,其不确定度主要取决于时间测量和计数量化。

测周法是在转速脉冲的间隔内,用时钟脉冲来测量转速的一种方法,适合于低转速测量。该法实际上就是定角测量法,即用时标填充的方法来测量相当于某一旋转角度的时间间隔。在高、中转速时,可采用多周期平均来提高测量准确度,其不确定度主要取决于时间测量、计数量化及触发的不确定度。

混合法是在测频法的基础上,吸取测周法的优点汇集而成的一种转速测量方法。它是在转速传感器输出脉冲启动定时脉冲的同时,计取传感器输出脉冲个数和时钟脉冲个数,而当到达测量时间时,先停止对传感器输出脉冲的计数,在下一个定时脉冲启动之前再停止时钟脉冲的计数。因此,该种方法可在较宽的范围内使用。

此处,我们选择测频法来测量转速,其工作原理为:当被测信号在特定时间段T内的周期个数为N时,则被测信号的频率f=N/T。

2.2转速测量程序设计

利用TimerOne定时器库来实现定时,通过外部中断对电机编码器输出的脉冲进行计数,计数值除以定时时间即为一定时间内的转速。实现1秒内转速测量的程序如程序代码2所示。

程序代码2:转速测量程序

#include

long counter_val[2] = {0,0};//定义数组,用于存放外部中断计数值

byte CurCnt = 0;//定义当前计数器标志,用于判断当前正在计数的数组

int j=0;//定义定时器中断标志,用于判断是否发生中断

void setup() {

delay(2000);

Serial.begin(115200);//初始化波特率为115200

attachInterrupt(0, counter, RISING);//设置中断方式为上升沿

Timer1.initialize(1000000); //设置定时器中断时间,单位微秒,此处为1秒

Timer1.attachInterrupt( timerIsr ); //打开定时器中断

interrupts();//打开外部中断

}

void loop()

{

long lTemp = 0; //定义临时存储数据变量

if(j==1)//判断是否发生定时器中断,即定时时间是否到达

{

j=0; //清除定时器中断标志位

if((CurCnt&0x01) == 0) //当前使用的是偶数计数器,则上次频率值存放在第二个元素中

{

lTemp = counter_val[1];//读取数组第二个元素中的数值

counter_val[1]=0;//读完清除原来的数值,以便下次使用

}

else//当前使用的是奇数计数器,则上次频率值存放在第一个元素中

{

lTemp = counter_val[0];//读取数组第二个元素中的数值

counter_val[0]=0;//读完清除原来的数值,以便下次使用

}

Serial.print("S");//发送帧头大写S

Serial.print( lTemp);//发送频率数据,并回车换行

}

}

//外部中断处理函数

void counter()

{

//通过当前计数器来实现对外部中断计数值存储的切换

counter_val[CurCnt& 0x01] += 1;//发生一次中断则加1

}

//定时器中断处理函数

void timerIsr()

{

j=1;//置位定时器中断标志位

CurCnt++; //当前计数器的值加1,实现另一个计数值切换

}

2.3验证频率测量的准确性

前面提到了Arduino的模拟输出(PWM)的频率约为490Hz,且转速测量采用的是测频法,此时用来正好来验证一下程序设计的正确性。在上面的转速测量程序中的void setup()里面delay(2000)之前增加如下代码,以产生方波。串口输出的频率测量结果如图4所示。

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-

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top