图 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
5.2. 试验分析运行程序后,螺旋桨开始旋转,并随着油门的增减而增减,实时性较高,总体来说达到了遥控驱动单桨的目的。但是在桨旋转过程中会出现抖动现象则是需要解决的问题,其主要原因是BeagleBone Black板运行程序时下降沿触发丢失,从而使得到的接收机信号波占空比会产生波动影响控制稳定。
为此,在试验中做出了如图16所示的改进,改进后抖动现象有所缓减却仍然存在。
图16 改进方案图
6. 总结 本节对遥控通信做了较为完整的测试,所采集的遥控信号数据为实现遥控控制提供保证。本节还成功实现了通过遥控器驱动单桨,并初步检验了遥控驱动的实时性。在控制过程中,桨出现了抖动现象表明控制稳定性有所不足。因此,接下来要通过平滑滤波来增强控制的稳定性,并着手控制程序双线程的开发。
1