5iMX宗旨:分享遥控模型兴趣爱好

5iMX.com 我爱模型 玩家论坛 ——专业遥控模型和无人机玩家论坛(玩模型就上我爱模型,创始于2003年)
楼主: xunicheng
打印 上一主题 下一主题

大家齐动手,跟我来做头部运动传感器。终于成功了,感谢Gale兄的辛苦!

[复制链接]
81
发表于 2008-5-16 22:26 | 只看该作者
郁闷啊,写了一段最简单的延时生成波形(如下),舵机在某些值上还是狂抖,看来输出的信号步进要严格遵循要求,否则打在舵机的某些点上,就会让舵机识别不清。。。

void Wave(BYTE v)
{
        BYTE i,j;

        PWM1H();
        for(i=0;i<200;i++)        Delay5us();                //延时1ms
        for(i=0;i<v;i++)        Delay5us();                //根据舵机比例延时
        PWM1L();
        for(j=v;j<200;j++)        Delay5us();                //补充延时至1ms

        for(j=0;j<20;j++)        //延时完剩下的20ms
        {
                for(i=0;i<200;i++)        Delay5us();
        }

}

欢迎继续阅读楼主其他信息

82
 楼主| 发表于 2008-5-16 22:30 | 只看该作者
脉冲不稳定是不是传感器抖动引起的??静态的时候是有正负2.5mv的抖动的。
83
 楼主| 发表于 2008-5-16 22:33 | 只看该作者
晕,也许最古老的模拟电路的舵机反倒兼容性会最好。数字化处理,一旦存在精度差异,就晕菜了。
84
 楼主| 发表于 2008-5-16 22:37 | 只看该作者
舵机处理是10位的??似乎很多电调,混控之类的东东都是8位精度。

gale你试试别按正负100%来算,按正负128来算,256级。也许就和舵机对上了。
85
 楼主| 发表于 2008-5-16 22:44 | 只看该作者
关于传感器灵敏度的问题。

刚又搜了半天,这个传感器和正宗的ews82还是有区别的,正品是5脚的,一个空脚,这个有7只管脚,而且从拆解的图片上看,7只管脚全都接到电路中,多出来的两只管脚是做什么用的??现在是把它们直接悬空了。有没有可能这多出来的两只管脚能够调整灵敏度??  传感器内部使用的芯片是AN6731,没找到相关资料,不知道是什么东东。
86
发表于 2008-5-18 21:44 | 只看该作者
今天终于腾出点时间,折腾了一下M8,先驱动舵机,发现原来舵机颤抖问题不是信号发生的问题,是舵机的问题(舵机接到接收机上某些位置也抖),不过我好几个辉盛都这德行,看来辉盛舵机质量下降了。手头有几个高级的DS13MG舵机,拿来测试,我靠,精准!稳定!本来打算卖的,现在不卖了。

这个舵机测试值啊,呵呵
87
 楼主| 发表于 2008-5-19 08:57 | 只看该作者
嗬嗬,辉盛的东东俺就没见好过…………
88
发表于 2008-5-19 12:26 | 只看该作者
很感兴趣。这个帖子应该发在航拍版。
89
 楼主| 发表于 2008-5-19 14:51 | 只看该作者
原帖由 jtltt 于 2008-5-19 12:26 发表
很感兴趣。这个帖子应该发在航拍版。

发在航拍版根本没人会看。

那边的米人基本不屑DIY。
90
发表于 2008-5-19 16:08 | 只看该作者
我也做了一个 计划使用两个比较器  积分弄不来,这里就用了个比较器A
目前来说用用可以, 精度保证不了。。
基本思路是 陀螺信号进来的是 数值176 (至少我这个是这样的,使用的是M16 内部2.56V的比较电源)
之后乘上9 就差不多是1580 舵机的中立点。
然后消除抖动,故所以大于1700或小于1450时候比较器才会加上或减去数值。我不知道上面的算不算消抖动,反正现在这个陀螺放在桌上舵机不乱斗了。
精度很差,转动陀螺的时候幅度不能太大。不能可能转不到 你想要让他转到的角度。



                                 $regfile = "m16def.dat"
  Config Portd = Output

Config Adc = Single , Prescaler = Auto , Reference = Internal

Enable Adc
Enable Interrupts
Enable Compare1a
Compare1a = 1500

Dim W As Word , Channe1 As Byte
Dim A As Byte

Dim G As Single
Dim D As Word
Dim E As Word                                               '与ADC转换相关变量
Dim F As Word
Dim H As Word
Dim Z As Word

  Cls
  Cursor Off

     Channe1 = 1

     Z = 1500
     Start Adc
Do

     H = Compare1a
   D = Getadc(channe1)
   E = D * 9
   If E > 1700 Then
   Compare1a = Compare1a + 30
   Elseif Compare1a > 2400 Then
    Compare1a = 2400
   Elseif E < 1450 Then
   Compare1a = Compare1a - 30
   Elseif Compare1a < 600 Then
    Compare1a = 600

   End If


Locate 2 , 1
Lcd "H=" ; H ; " ms" ;
  Locate 1 , 1
Lcd "E=" ; E ; " ms" ;
  Locate 2 , 10
Lcd "G=" ; G ;
   Locate 1 , 10
Lcd "D=" ; Compare1a ;


Pulseout Portd , 0 , H
Loop
End
91
发表于 2008-5-19 20:32 | 只看该作者
楼上的这个仅仅是振荡算法,不是锁尾算法吧?
92
发表于 2008-5-19 20:37 | 只看该作者
经过昨天的试验,熟悉了舵机的特性,即平时可以不送信号给舵机,只有在需要改变舵机位置的时候,送一系列脉冲给舵机即可(比如10个脉冲),这样的话可以大大降低CPU的负担,也不用定时器来驱动舵机了。理论上看,TINY13应该也能撑的住(但是PPM解析重构还是需要定时器的。。。),今晚继续尝试。
93
 楼主| 发表于 2008-5-19 21:10 | 只看该作者
呵呵,加油!!
94
发表于 2008-5-19 22:12 | 只看该作者
晚上的试验很成功,现在已经达到了陀螺仪的非锁尾状态了,用的是一片MEGA8,12M晶振,运算速度嗖嗖的!再干半个小时睡觉
95
 楼主| 发表于 2008-5-19 22:28 | 只看该作者
太好了太好了。我订的贴片Mega8芯片也到了,好小啊!做成PCB也许比上次那块板子的面积还会小。板子上应该预留一组下载线的插口吧。
96
发表于 2008-5-19 22:34 | 只看该作者
不是锁尾的 我不知道公式。。。
97
发表于 2008-5-19 22:36 | 只看该作者
还有 用我这种 IF THEN 方法不好,
刚刚接两个舵机 接连个传感器。运行起来就表现的很迟钝了。。。
看来我要靠你了。 我是搞不定了
98
发表于 2008-5-19 23:01 | 只看该作者
1、先不要着急布板啊
2、锁尾公式的数学理论很简单,但实现起来就难了,道理如下:

为说明方便,下面的加速度、速度等都是指角加速度、角速度
a.传感器可以得到当前加速度a(用电压表征)
b.定时获取加速度,比如隔时间t取一次,用加速度a乘以时间t可以得到速度v
c.用速度v乘以t即可得到偏转角度angel
d.根据当前的偏转角度决定用多大的尾螺距去推动飞机尾巴

LZ要做的头部传感器只需要a b c 三步,因此比较简单,上面的方法在t足够小时是比较精确的,这也是微分或者说离散化的原理,要想更精确,可以用两次的加速度a1 a2复合计算,这样 angel=1/2*(a1+a2)*t,所有这些都是中学物理知识。

但是这个理论要想实践有几个难点:
1、电压V和加速度a的关系未必是线性关系,怎样得到?
2、间隔时间t是否足够小?这决定于CPU是不是够快
3、由于单片机使用大量的整数运算,在如此多次的乘除运算中有大量的截断误差,如何消除截断误差的积累?

不过事物总是辩证的,看着有难点,但落到工程上总是有办法的,事实上,真正的陀螺仪才不管那么多,凑活着能够锁尾也就卖了。GY401贵就贵在软件,硬件呢?比低档陀螺仪确实好那么一些,但毕竟不完全是决定性的。

我所要做的效果就是把传感器和舵机固定在一起,当舵机转动时,其摇臂始终指着一个方向(锁尾),这样就可以实现LZ FPV头部控制的愿望了。

这个试验决定成败的关键是软件效能和CPU的运算速度的乘积,如果有90MHz的ARM或者更高的速度,采用浮点运算那么我想随便写写软件锁尾精度都会非常高。

最后说个奇怪的事情,传感器我认为是输出VCC的一半作为中立点,于是刚开始试验我就用3.3V左右供电,结果也很理想,他输出1.7V,但是调了几次以后,它就输出2.2V了,奇怪,最后我只好改用5V供电了。。。

这里上图很麻烦,而且只能100k,我就上到三国上了
http://bbs.mx3g.com/viewthread.php?tid=19061&extra=page%3D1&frombbs=1
99
发表于 2008-5-20 07:21 | 只看该作者
顶起!gale 加油!!看起来很有意思啊,传感器没有规格书吗?怎么电压是不定的呢?

找到规格书了,
http://www.isbox.cn/xxxxxx/071022/EWTS82.pdf

[ 本帖最后由 yhybear 于 2008-5-20 09:52 编辑 ]
100
发表于 2008-5-20 11:05 | 只看该作者
角速度传感器 那么便宜? 玩玩是可以。

没想到楼主也会AVR单片机,我是每天都在www.ouravr.com 上乱逛。
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

关闭

【站内推荐】上一条 /1 下一条

快速回复 返回顶部 返回列表