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

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

难得请教个问题。。也试试深浅。。不要让我失望哦。

[复制链接]
跳转到指定楼层
楼主
发表于 2010-4-18 20:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
关于舵机的指数曲线,也就是常说的EXP。。

它的计算公式到底是如何的?

我已经越来越茫然了。。

本来,舵机角速度与作用在十字盘的直线并不相同。。是个SIN曲线。。

而JR与F控,默认100%是直线。。

那好。。就算是直线吧。。

那+个百分之几,在小动作时舵量小些的,最终一样的曲线。。到底该怎么玩?

找了俄国老毛子的资料,它分为五段

在out_cur=(input+750)*k/100+Y0*75/10;

500,250,-250,-500

我的问题是,为什么?什么道理??

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

沙发
 楼主| 发表于 2010-4-18 20:56 | 只看该作者
嗯?问了半小时,没有侠客来到此一游?

再顶下。。
3
发表于 2010-4-18 22:29 | 只看该作者
这个问题问得太有学问了,顶你一下:em15:
4
 楼主| 发表于 2010-4-19 09:23 | 只看该作者
再顶下。。期待有大牛帮解惑。。
5
发表于 2010-4-19 13:25 | 只看该作者
定性地说,应该就是指数曲线,EXP嘛,本来就是指数的意思。
而且它的转换关系是遥杆满舵舵机那头也满舵,只是中间有变化,可以认为是1的任意次乘方结果都是1。高数忘差不多了,剩下的就可以根据原点处斜率去求解指数值了。至于实际程序实现是怎么做的,可能是多段直线近似,可能是查表,等等。
6
 楼主| 发表于 2010-4-19 19:00 | 只看该作者
来个公式如何?

指数曲线,这很明显。。。但在调整时的加、减百分之几,到底是什么公式?

或者说,这是加减什么值?

而加减后的指数运算,又怎么能与原来总量(总舵量)一样呢?
7
发表于 2010-4-20 00:32 | 只看该作者
我的理解exp是速率,即你操纵舵杆的角度和舵机舵臂角度之间的比例关系。设置为正值时,比如舵杆移动度数为10度,舵臂可能已经移动了30度。但待舵杆移动到底时,舵臂也移动到底,并不能增加舵臂的移动角度。或者可以将exp理解为负值为柔和模式,正值为激烈模式。
8
发表于 2010-4-20 10:55 | 只看该作者
学习学习~~~~~~~~~~
9
 楼主| 发表于 2010-4-20 11:47 | 只看该作者
仔细研究了老毛子的代码,

看看这段,遥控杆电位器经AD转换后,曲线化实际值的代码:

  1. #define dX   100.0/(CURVE_NODES/2)
  2. #define max_signal_rate 8164.0
  3. #define cell max_signal_rate/3
  4. #define percent max_signal_rate / 100
  5. #define NODES_2 CURVE_NODES/2





  6. float curve_124 (double x, CONTR_SETTINGS_PROP_124 *node)            // 趔黻鲨 恹麒耠屙 耔沩嚯?镱 牮桠铋
  7. {
  8. double k;
  9. double out;
  10. unsigned int i=0;

  11. if (x>0)
  12.         {
  13.         for (i=NODES_2;i
  14.                 if((x>((float)(i-NODES_2))*cell)&&(x<=((float)(i-NODES_2+1))*cell))
  15.                         {
  16.                         k=(float)((node->nodes[i+1])-(node->nodes[i]))/(dX);
  17.                         out=k*(x-cell*(float)(i-NODES_2))+percent*((float)node->nodes[i]);
  18.                         
  19.                         return out;
  20.                         }
  21.         }
  22. else
  23.         {
  24.         for (i=0;i
  25.                 if((x>(float)(NODES_2-i)*cell*-1.0)&&(x<=(float)(NODES_2-i-1)*cell*-1.0))
  26.                         {
  27.                         k=(float)((node->nodes[i+1])-(node->nodes[i]))/(dX);
  28.                         out=k*(x+cell*(float)(NODES_2-i-1))+percent*((float)node->nodes[i+1]);
  29.                         
  30.                         
  31.                         return out;
  32.                         }
  33.         }




  34. if(x>max_signal_rate) out=max_signal_rate*node->nodes[CURVE_NODES-1]/100.0;
  35. if(x<-max_signal_rate) out=max_signal_rate*node->nodes[0]/100.0;

  36. return out;
  37.             
  38. }
复制代码


我发现,我们都错了。。

一开始就被J控与F控的曲线所迷惑了。。

实际,只不过是在ROM里存了五段,或七段的数据,

然后把五段、七段数据曲线平滑化后,对照输入值做真实输出。。

结论:在液晶屏上显示的曲线,与代数里的指数曲线没有关系。。
10
发表于 2010-4-20 12:10 | 只看该作者
指数定义公式可以这样表达

Y= a*X^(1+EXP/100)

a 是常数,一般=1
EXP=0 时, Y=aX, 表现为线性关系
0<EXP<100 时, Y = aX^n , n > 1, 表现为上凸的指数曲线
-100<EXP<0时, Y= aX^n,  n < 1, 表现为下凹的指数曲线

另: 上述代码不代表任何系统都是这样
11
发表于 2010-4-20 12:15 | 只看该作者
指数曲线原有用意,是为了减少舵机圆周运动变为直线运后的圆差(指数<1时和正弦曲线初段接近)

后来扩展用途主要用来微调零点附近的灵敏度关系

另:无论指数是多少,都不影响总值,因为1的任意次方都是1
12
发表于 2010-4-20 12:18 | 只看该作者
有的电气仪器指标不好的时候  需要调试其指标 合格了出厂 都是用软件修正  使其曲线和理想曲线吻合
曲线高了的 就拉低一点  低了的就拉上去一点  曲线就接近想要的理想曲线了
我调的互感器校验仪就是这样的
你画条正玄曲线  -90度到90度的 再画条y=x     公式的目的就是重合你画的这两条曲线
不上图了
13
发表于 2010-4-20 12:18 | 只看该作者
希望我说的通俗:em00:
14
发表于 2010-4-20 13:19 | 只看该作者
你说的没错不过exp不是为了修正误差
15
发表于 2010-4-20 13:21 | 只看该作者
原帖由 starmoon 于 2010-4-20 13:19 发表
你说的没错 不过exp不是为了修正误差

的确 :em00:
16
发表于 2010-4-20 16:53 | 只看该作者
原帖由 mr.laoa 于 2010-4-19 19:00 发表
来个公式如何?

指数曲线,这很明显。。。但在调整时的加、减百分之几,到底是什么公式?

或者说,这是加减什么值?

而加减后的指数运算,又怎么能与原来总量(总舵量)一样呢?


加减的就是指数值。我得回去复习高数了。你也去吧。别的说不出来了。
17
发表于 2010-4-20 16:54 | 只看该作者
原帖由 mr.laoa 于 2010-4-20 11:47 发表
仔细研究了老毛子的代码,

看看这段,遥控杆电位器经AD转换后,曲线化实际值的代码:

#define dX   100.0/(CURVE_NODES/2)
#define max_signal_rate 8164.0
#define cell max_signal_rate/3
#define percen ...


你确定这个是EXP而不是什么5点,7点的油门曲线?
18
发表于 2010-4-20 17:04 | 只看该作者
那段代码应该是曲线,不是EXP
19
 楼主| 发表于 2010-4-20 19:47 | 只看该作者
原帖由 starmoon 于 2010-4-20 12:10 发表
指数定义公式可以这样表达

Y= a*X^(1+EXP/100)

a 是常数,一般=1
EXP=0 时, Y=aX, 表现为线性关系
0

感谢回复!!
在今天之前,我一直在等这个公式。。之前曾经见过。。忘记了。。
综合思路。。
准备这样考虑:
EXP功能,还是简单化。。单一出来。。在取到电位器AD后,经反相运算,经DR运算,再加一下EXP过程,再输出到实际操作值。。
在LCD上,还是用“Y= a*X^(1+EXP/100)”来玩。。这样感觉接近成品控一点。。
20
 楼主| 发表于 2010-4-20 19:53 | 只看该作者
忘了。。在EXP过程前,还是要考虑5点或7点设置的问题。
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

关闭

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

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