完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 辉哥的歌 于 2016-10-8 10:45 编辑 1. 本节目标 本节主要目的是采用已有航模遥控器和接收机遥控单桨转速,测试BeagleBone Black板的GPIO信号采集功能,以及控制的实时性,以实现BeagleBone Black板采集遥控器发出PWM波的信号并计算占空比(DutyRatio),从而完成对单桨的驱动控制。 2. 设备介绍本节所需的设备见表1所示: 表 1 实验所用设备
3. 遥控通信基本性能测试3.1. 供电和对频 (1)供电方式 连接电脑和BeagleBoneBlack板,用电脑给板供电,再连接BeagleBone Black板和接收机的对应端口,用板子为接收机供电,板子和接收机的具体连接方式如图1中所示。 图 1 通信测试连接图 从图中我们可以看出,要将接收机正极与板子5V引脚相连并使接收机的负极接地,实现板子对接收机的供电。同时,图中也给出了接收机4个信号通道的具体位置。 (2)遥控器与接收机对频 1) 打开遥控器 打开之后,遥控器界面如图2所示。 图2 遥控器开机界面 2) 双击link面板 双击link键之后,遥控器进入菜单界面,如图3所示。 图 3 遥控器菜单 3) 选择system 选择system后界面如图4中所示。 图 4 system界面 4) 选择FASSTEST-12CH 在system菜单中选中FASSTest-12CH并确认,如图5中所示。 图 5 确认提示 5) 确认连接 将光标移动到LINK上,单击OK键,显示“NOW LINKING...”说明现在开始对频连接,如图6(a)和(b)所示。 图 6(a) 光标移动到LINK上 图 6(b) 单击控制板上的OK键开始对频连接 6) 对频成功 接收机供电,由红灯转为绿灯对频成功,否则按住接收机对频触点,或重复上述步骤并重新给接收机上电,直至接收机指示灯由红变绿,如图7所示。 图 7 红灯变绿灯对频成功 3.2. 遥控通信测试(1)硬件连接 用BeagleBoneBlack板给接收机供电,将示波器的探测头正端与接收机信号线的插头接触,一头通过BeagleBone Black板接地,如图8所示。 图 8 遥控通信测试硬件连接图 (2)四通道频率和占空比测试 使用示波器可清晰地显示出接收机发出信号的波形图及其相关信息,如图8中所示。在示波器上我们可以看到,随着遥控器发出指令,PWM波的占空比会发生明显变化。表2列出了通过示波器采集的四通道发出信号的频率和占空比数据。 其中,1通道的测试过程视频网址如下: http://v.youku.com/v_show/id_XMTc0OTMzNjM0OA==.html 1通道最大最小占空比如图9-10所示: 图9 1通道滚转控制的最大占空比 图10 1通道滚转控制的最小占空比 3通道(油门)最大最小占空比如图11-12所示: 图11 油门通道最大占空比 图12 油门通道最小占空比 四通道最大最小占空比总结如表2所示: 表 2 四通道信号频率和占空比
4. 遥控信号采集及识别占空比 通过使用BeagleBone Black板来采集接收机信号数据是为之后的控制测试做好准备,一方面所得数据可以与之前测量的数据互验,另一方面采集接收机的信号并求得占空比本身就是实现控制中的一环。 使用BeagleBone Black板采集PWM波的上升沿,下降沿以及上升沿这3个时间点,再通过计算可以得到周期和占空比,所得数据与直接测量得的数据基本吻合,但是此过程中也出现了一个问题:在一段时间后,采得的数据出现严重的不稳定现象,周期和占空比均产生巨大偏差。通过分析与测试后,得到的结论是:由于BeagleBone Black板自身的限制,无法长时间及时完成对如此多数据的采集和处理,导致下降沿出发丢失,从而得到错误的数据。在通过采集下降沿,上升沿,上升沿这3个时间点及每次计算后稍加延时,得到明显的改善。 用BeagleBone Black板进行数据采集的示意图如下: 图 13 信号采集及处理示意图 5. 遥控驱动单桨试验 5.1. 试验内容 (1)硬件连接 试验的硬件连接可参考图14。其中值得注意的是要使电池的负极接地,否则无法给电机供电。 图 14 硬件连接实物图 (2)试验程序 在Cloud 9 IDE环境下,将动力测试和信号采集所用程序的python语言进行综合整理后可以得到此次测试所用程序,如图15中所示。 图 15 程序界面 具体代码如下: import Adafruit_BBIO.PWM as PWM import Adafruit_BBIO.ADC as ADC import Adafruit_BBIO.GPIO as GPIO import time data = 0 PWM.start("P9_14", 0) GPIO.setup("P9_12",GPIO.IN) while True: GPIO.wait_for_edge("P9_12",GPIO.FALLING) t1 = time.time() GPIO.wait_for_edge("P9_12",GPIO.RISING) t2 = time.time() time.sleep(0.006) t = t2-t1 duty = 1 - t/(0.0063) duty1 = int(duty*100) duty1 = (duty1-17)*100/14 if duty1<=0: duty1 = 0 if duty1>=100: duty1 = 100 print "duty = " + str(duty1) PWM.set_duty_cycle("P9_14",duty1) PWM.set_frequency("P9_14", 200) time.sleep(0.001) 选用P9_12引脚作为信号输入端,P9_14引脚作为PWM信号输出端,保证输入端信号在换算后使占空比的范围在0-100%以内,且PWM的频率设置为200Hz。 (3)试验过程 试验具体过程的视频地址如下: http://v.youku.com/v_show/id_XMTc0OTM0MDk0OA==.html 运行程序后,螺旋桨开始旋转,并随着油门的增减而增减,实时性较高,总体来说达到了遥控驱动单桨的目的。但是在桨旋转过程中会出现抖动现象则是需要解决的问题,其主要原因是BeagleBone Black板运行程序时下降沿触发丢失,从而使得到的接收机信号波占空比会产生波动影响控制稳定。 为此,在试验中做出了如图16所示的改进,改进后抖动现象有所缓减却仍然存在。 图16 改进方案图 6. 总结 本节对遥控通信做了较为完整的测试,所采集的遥控信号数据为实现遥控控制提供保证。本节还成功实现了通过遥控器驱动单桨,并初步检验了遥控驱动的实时性。在控制过程中,桨出现了抖动现象表明控制稳定性有所不足。因此,接下来要通过平滑滤波来增强控制的稳定性,并着手控制程序双线程的开发。
|
||||
相关推荐
7 个讨论
|
||||
只有小组成员才能发言,加入小组>>
164个成员聚集在这个小组
加入小组BBB通过sd卡启动ubuntu16.04后不能升级下载联网的问题
4385 浏览 2 评论
3155 浏览 0 评论
7448 浏览 5 评论
313浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 12:04 , Processed in 0.904929 second(s), Total 77, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号