本帖最后由 不光写程序 于 2011-5-11 20:59 编辑
这一次,当它离开我手的支撑以后,没有倒下。。。。 然而这是经历了无数次倒下后的结果!
http://www.tudou.com/programs/view/GCK-zlLq_ko/
呵呵,不念诗了。看着这个小东西第一次站起来还是很兴奋的。虽然这个比较简单,但为下一步玩好老大(123jj)的那个复杂自平衡小车(匠人正在玩的)奠定了基础吧。
同时指出这个小车的一些问题,请大家一起进步吧:
1、陀螺仪(ENC03)和运放(LM324)的温漂问题:大家知道陀螺仪(ENC03)是个角速度传感器,它输出端电压的变化和当前的角速度成比例关系的(即0.67mv/°/s)。
在它静止时会输出一个静态电压(1.25v-1.35v左右),我们就用ENC03输出端的实测电压减去这个静态电压,然后根据比例关系算出当前角速度的。
问题在于,这个静态电压不是雷打不变的,相反,它及其善变(情商有点高:lol ),当外界温度变化时静态电压也会跟着变,而且信号还要经过运放(LM324)的放大,
悲剧的是,运放的情商也不低(也有温漂),这些就导致每次开机时测得的静态电压是不一样的,如果任其变化就会导致小车倒下。。。这个还是比较好解决的,在
开机时初始化程序中加入测量当前静态电压的小程序就可以解决问题。
可是事情远没有这么简单。更为麻烦的是当这个静态电压处于ADC分辨率的两个数值之间时,ADC就可能转换出两个不一样的数值。这就抓狂了,无法确定一个
稳定的当前静态电压了。我现在是在开机后手动调整电位器使静态电压接近于一个ADC分辨率的整倍数,这样就不会转换出两个不同的数值了,而且换算角度时产生的
积累误差也会很小。当然这个方法很笨很繁琐,所以晒出来让大家一起解决进步,呵呵。
2、小车的运动平稳度度问题:这一点相信大家已经看到了,就如楼下所言:就像表演杂技!123jj已经给出了点评,呵呵。
照成这个现象的原因是在小车达到平衡位置时没有有效的刹车处理,它又随着惯性偏到了另一边,如此循环,就像自然界无处不在的震动波
一样。
我认为要解决这个问题有以下几点可以试试:(1)、现在的小车用的是比例反馈调整姿势,效果不怎么好。我想可以采用另一种更合适的控制
算法,使电机转速与小车倾角成一条曲线关系,这个函数关系尚待摸索(由于和硬件息息相关,所以代价可能比较大)。 (2)、使用有效的
刹车处理(这点123jj是高手)。使小车每次检测倾角的同时再检测电机的运动方向和速度,根据当前小车的倾角及时调整电机的转速,从而更
有效控制小车的运动。感觉这点好像是向伺服电机看齐了啊!(3)、这点本不应该有的,都怪我电源设计能力基本没有,又舍不得多花银子,
就拿了个十来年前的那种大块头手机充电器当做小车的电源使用了。此电源虽然做工好,分量足,但是其结构异常简单,就一个大块头变压器
加上四个二极管构成的整流桥(
)装入一个大容量塑料盒中,连个滤波电容都没有。可想而知输出的电压波形是多么的坑洼不平。。。我小车陀螺
仪采样的频率是5KHz,而电源的电压是一个100Hz的半波
,所以电源对电机的影响可能不容忽视。我想做个这样的教科书电源(
)不知可否?当中的 那个三端稳压管用1.5A的7812,问题是电流会不会太大导致稳压器烧坏?
以上是我的一些小想法,说的可能不对,权当抛砖引玉了。希望各大高手献策指点:lol ! |