之前是在Android M上进行的pwm控制,发现pwm节点都没有,更不用说去控制了,后面终于加上了,这个功能也可以正常使用了。由于一些原因,现在又要切换到Android L上,所以,现在pwm的控制也是一个问题,不过有了前面在Android M添加的经验后,只要porting过来就可以了。
这是pwm的配置连接,需要的话可以下载看看。链接:http://pan.baidu.com/s/1dFaXEVZ 密码:lxj5,所以这部分就不详细介绍了,pca9685的驱动代码在前面的博客中也有给出过,这里也不再赘述了。
主要说一下在调试过程中遇到的一些问题。
首先是舵机的校准,之前说过,舵机的周期是20ms,一般1.5ms为中值位置,即电机从最小角度转到最大角度的中间位置。
对于180度的舵机而言,0.5ms对应0度;1ms对应45度;1.5ms对应90度;2ms对应135度;2.5ms对应180度。
对于270度的舵机而言,原理相同,0.5ms对应0度;2.5ms对应270度。整个角度分布在0.5---2.5ms之间。
调节精度分别为:180/(2.5-0.5ms); 270/(2.5-0.5ms)。
这里需要注意的是,调节的时候最小值不要小于0.5ms,最大值不要大于2.5ms。
当时并不太明白要进行中值校准,并且要在阈值范围内进行控制,后面经过一番了解有些明白了,中值校准是为了让舵机可以在一定角度内,顺时针和逆时针进行转动,因为我们知道舵机只要是用在无人机和机器人的关节上面,那为什么会有一个阈值呢,这是因为,超出这个范围会导致电位器进入“盲区”,造成整个组件不能正常运行,这对于正在飞行的无人机来说可能是毁灭性的。在调试的过程中我也遇到了这个问题,所以就采取了一个比较笨的方法就是,一个一个的从最小角度到最大角度进行测试,并将这些测试的范围记录现在,这样在控制代码里面就可以设定这些范围,也就不用担心超过阈值了。
既然知道了舵机为什么要校准,接下来就是进行中值校准了,但是,一头雾水,不知该如何操作,和面经过一番查找,有以下几个方法。第一个是比较暴力的,大概过程就是:通电后给pwm信号,找到最小角度位置,然后再找到最大角度位置,这样就知道中间位置在哪里了,然后将pwm的高电平时间设为1.5ms,接下来用手扳动舵机到中间位置,这样就校准完成了,但是能不能校准成功,就要看你的舵机齿轮是不是在你扳动的时候扫齿了,所以说这是一个暴力的方法,容易损害舵机,不过可以在低电压,金属齿轮的舵机上试试。另一种方法就是靠遥控来进行调整,这个方法现在没有试过。目前就知道这两种方法。
图 舵机齿轮
中值校准好之后可能会有部分偏差,不过影响也不是很大。其次在调试的时候发现舵机会抖动,这是怎么回事呢?
1.电源电压不足或者电源容量过小导致的。本人就遇到了这个问题,为了防止舵机烧毁并且方便进行中值校准,所以就将供电电压调节的比较小,3.3v左右,这时就会出现抖动的现象,后来将电压调到了5v,抖动基本上就消失了,但是还存在一个问题,就是机械手臂完全倒下后,自己起不来,要用手拨动一下才可以,所以电压还是不够。
2.电位器接触不良或者移位导致校准pwm不准确。舵机内部的电位器是固定的,可以打开确认一下,然后重新固定安装就可以了。
3.超出控制范围也会出现抖动,所以确认在阈值内进行控制。
当然还有很多我没有碰到过的问题,像炸机、烧机、烧板、各种怪声等,这里就不一一分析了。
|