arduino编码器计数_Arduino编码器小车左右转速同步的PID调节实验

本文介绍了一个使用Arduino和LabVIEW进行编码器小车左右转速同步的PID调节实验。通过LabVIEW人机交互界面监控电机转速和功率,利用XBee无线通信模块实现无线数据传输。PID算法在Arduino中实现,动态调整右电机功率以保持与左电机转速一致。实验过程中,观察到当施加阻力时,PID算法能够实时调整电机功率,确保转速同步。
摘要由CSDN通过智能技术生成

图1 DFRobot编码器小车全景图

如何才能直观地看到小车左右车轮电机转速和功率值的变化以及PID比例调节的效果,小车上的Arduino单片机控制器是做不到这点的,我采用的是上位机LabVIEW制作的前面板作为人机交互的界面,来实现对它们的监控。Arduino控制器作为下位机,接受上位机的小车左电机功率值,并把左右电机的转速和PID调节后右电机的功率值反馈到上位机去显示出来。上下位机的串口通信采用了XBee 1mW Zigbee100米传输无线数传模块套装,目的是使USB有线通信变为无线通信模式。如图2所示。

图2编码器小车与PC机的XBee无线通信设备

LabVIEW人机交互界面如下图所示,这个图是实验当时用截图软件截屏而得,可以看到,当左电机的PWM功率值为68时,PID调节后的右电机PWM功率值需为60,才能使左右电机转速一致。(注意:左右电机转速相差5,并不说明是转速不同,而是编码器的分辨率不够,因为这个小车编码器码盘的齿数只有12个。)

图3编码器小车左右转速同步的PID调节实验人机交互面板

PID算法放在下位机Arduino程序中,这个指令是:

val_right=(float)val_right+(rpm1-rpm2)*0.4;

式子中rpm1是左电机的转速;rpm2是右电机的转速;val_right是右电机的PWM功率值。左右电机的转速差乘以比例因子0.4叠加到上一次PID计算得到的val_right,就得到了当前右电机PWM功率值val_right。如果左电机转速rpm1比右电机转速rpm2要低,则从算式中可以看到,会自动减小右电机功率值val_right,通过循环执行Arduino程序中PID算式,以达到两电机转速一致的目的。

一个有趣的实验,可以边实验边观察。如果您拿起这个编码器小车,用手摩擦小车的左轮,左轮的转速变慢,在PID比例算式的作用下,右轮电机的PWM功率值会变小,以使右轮速度也跟着变慢。这时,再把手移到小车右轮,右轮遇到阻力时,为了保证依然与左轮转速同步,在LabVIEW前面板反馈的右电机PWM功率值,您会观察到它的值再不断增加。所以一个PID比例算法的功效,通过编码器小车这个物理设备和LabVIEW这个人机交互界面,就真真切切地感受到了。

LabVIEW虚拟仪器程序由前面板和框图程序组成,前面板是人机交互的界面,界面上有用户输入和显示输出两类控件;框图程序则是用户编制的程序源代码,以定义和控制在前面板上的控件输入和输出功能。这个LabVIEW上位机程序用到了事件结构的编程技术,以响应前面板上的四个按钮,这个四个按钮分别为“前进”、“后退”、“停止”和“退出”。图4为框图程序的“前进”事件分支的程序截图。(双击图片,可以放大!)

图4框图程序的“前进”事件分支

从图4看出,如果按下前面板的“前进”按钮,在后台程序中就会引发“前进”:值改变事件分支,这个分支程序的任务是先把三个字节数据转换为一个字符串,再输入到VISA写入V

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值