本帖最后由 zoomone 于 2011-10-23 14:56 编辑
我把我的源码文件上传上来
硬件有所改动,所以不要直接编译烧写,读懂后改一下再用
我的硬件改动不大,记得有个是测速计数中断原来电路用的int2,我把这一路改成int0;其他可能也有。所以先要读懂程序再对照自己的电路改
调平衡的关键在于让角度、角速度正确转化,说白了将传感器的电压变化正确的转变成数字量,所以
gyro=0.011557*ADC(1)-3.035+105*3.14/180; //后面105*3.14/180是对角速度零点的修正
acceler=0.003052*ADC(0)-1.4375; //计算角度时,只用了加速度传感器的Z轴就够了
这两行的参数可能要根据自己的电路调整一下,调好的标志就是像我一楼视频那个效果。
角度方面调好后,基本就成了三分之二,剩下的主要是调那四个辅助变阻器,最好先把角度、角速度放一起调(另两个量设为0),我的经验是光
靠这两个还不能平衡,但是能看出来车轮是不是随倾角向相反方向转动,这个好了后,再加上电机转速那个量(电机转角依然为0),三个量调好后
小车完全可以平衡。由于电机的问题,让小车跑起来很困难,电机转角这个量就没必要加了,加上了反倒成了干扰。
这时可能小车虽然平衡了但是老有往某一边跑的趋势,这是因为程序认为小车的中心不是真正的中心,需要微调,调右上角三个变阻器里最上边那个就可以了。
测试发现51计算卡尔曼滤波速度很慢,计算角度有延迟,反而不好用。互补滤波对零点温飘处理的不好。各有利弊。 |