5iMX.com 我爱模型 玩家论坛 ——专业遥控模型和无人机玩家论坛(玩模型就上我爱模型,创始于2003年)

标题: 难得请教个问题。。也试试深浅。。不要让我失望哦。 [打印本页]

作者: mr.laoa    时间: 2010-4-18 20:20
标题: 难得请教个问题。。也试试深浅。。不要让我失望哦。
关于舵机的指数曲线,也就是常说的EXP。。

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

我已经越来越茫然了。。

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

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

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

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

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

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

500,250,-250,-500

我的问题是,为什么?什么道理??
作者: mr.laoa    时间: 2010-4-18 20:56
嗯?问了半小时,没有侠客来到此一游?

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

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

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

而加减后的指数运算,又怎么能与原来总量(总舵量)一样呢?
作者: n44303    时间: 2010-4-20 00:32
我的理解exp是速率,即你操纵舵杆的角度和舵机舵臂角度之间的比例关系。设置为正值时,比如舵杆移动度数为10度,舵臂可能已经移动了30度。但待舵杆移动到底时,舵臂也移动到底,并不能增加舵臂的移动角度。或者可以将exp理解为负值为柔和模式,正值为激烈模式。
作者: 铜河    时间: 2010-4-20 10:55
学习学习~~~~~~~~~~
作者: mr.laoa    时间: 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里存了五段,或七段的数据,

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

结论:在液晶屏上显示的曲线,与代数里的指数曲线没有关系。。
作者: starmoon    时间: 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, 表现为下凹的指数曲线

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

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

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

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

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

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

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


加减的就是指数值。我得回去复习高数了。你也去吧。别的说不出来了。
作者: KGy    时间: 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点的油门曲线?
作者: starmoon    时间: 2010-4-20 17:04
那段代码应该是曲线,不是EXP
作者: mr.laoa    时间: 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)”来玩。。这样感觉接近成品控一点。。
作者: mr.laoa    时间: 2010-4-20 19:53
忘了。。在EXP过程前,还是要考虑5点或7点设置的问题。
作者: starmoon    时间: 2010-4-20 20:35
楼主要是想做控,还得恶补一阵子
作者: PlaneFan    时间: 2010-4-20 22:56
其实就是代数,不复杂。高中毕业应该都可以算出来。
作者: mr.laoa    时间: 2010-4-21 10:33
原帖由 starmoon 于 2010-4-20 20:35 发表
楼主要是想做控,还得恶补一阵子



谢谢关心了。。

不做控。。改控。。

想把0406A加LCD,用DSX7的设置靠拢。。

用AVR玩。

目前已经积累得差不多。。可以开始尝试搭建测试环境了。。

有问题话,请您们不吝指教哦。。
作者: reberca    时间: 2010-4-22 14:38
高深啊:em26:
作者: tiexuejueshi    时间: 2010-4-23 16:25
恩,这个问题,的确很复杂,,,,
我没看明白,呵呵。数学从初中以后就从没好过,高中大学的数学都是混下来的,加减乘除倒还顺溜,再高一级就不行了。
不过,倒是很期待楼主的研究有个结果。
作者: peter    时间: 2010-4-23 18:35
标题: 看出来了,
楼主是揣着明白装糊涂,
看标题以为是菜鸟,结果。。。。
太高深了,一般不会考虑。
只是飞机灵了,exp调个负值而已。




欢迎光临 5iMX.com 我爱模型 玩家论坛 ——专业遥控模型和无人机玩家论坛(玩模型就上我爱模型,创始于2003年) (http://5imx.com/) Powered by Discuz! X3.3