kevin_me 发表于 2013-9-21 02:21:22

AO输出线性转换,0至100转换为4至20mA问题

手机发帖有些无力

大概描述一下:
用户在界面上配置AO输出的值的范围是0至100,我在下面需要需要转换为4至20mA。

单片机使用PWM模拟输出电流信号。

上面给0下来的时候,单片机的PWM占空比寄存器填入10955,这时输出电流为4mA。

当上面给100下来的时候,单片机的占空比寄存器填入65535,这时输出电流为20mA。

想了半天,发现我想实现的还真不是线性的,
需要上面的0的对应当下面的10955,上面的100对应下面的65535,同时对于中间点50,需要对应下面的32767,保证输出电流是12mA。

就这些了,大概想了想,没找到比较简单直接的算法。

请教一下各位,谢谢!

kevin_me 发表于 2013-9-21 02:23:42

中秋深夜发帖实属不易,大家节日快乐!

xzq1019@163.com 发表于 2013-9-21 02:33:57

pwm有点问题,最低电压的问题,最低电压是0.3V,这个要注意一下。

albert_w 发表于 2013-9-21 02:43:17

为啥12mA要对应到32767呢?
要想这样对应, 须在AD之后用硬件做一个电流偏移

kevin_me 发表于 2013-9-21 03:27:42

xzq1019@163.com 发表于 2013-9-21 02:33
pwm有点问题,最低电压的问题,最低电压是0.3V,这个要注意一下。

我这个是根据实测4mA得出的占空比寄存器的值,也就是占空比给10955的时候,正好输出电流为4mA。

kevin_me 发表于 2013-9-21 03:30:06

albert_w 发表于 2013-9-21 02:43
为啥12mA要对应到32767呢?
要想这样对应, 须在AD之后用硬件做一个电流偏移

软件算法做不到吗

其实这里主要问题是零点被抬高,中间点和顶点又是正常,所以还不太容易想出简单的办法。

albert_w 发表于 2013-9-21 03:38:34

kevin_me 发表于 2013-9-21 03:30 static/image/common/back.gif
软件算法做不到吗

其实这里主要问题是零点被抬高,中间点和顶点又是正常,所以还不太容易想出简单的办法 ...

一个线性(直线)的东西,两点已定,第三点对不上就不好搞了,只能掰弯^_^

max-men 发表于 2013-9-21 08:30:06

如果线性度不是很好可以多测几个点然后用线性插值法

ksn13 发表于 2013-9-22 12:27:22

kevin_me 发表于 2013-9-21 03:30 static/image/common/back.gif
软件算法做不到吗

其实这里主要问题是零点被抬高,中间点和顶点又是正常,所以还不太容易想出简单的办法 ...

除了零点被抬高了,其它点都是线性的?要是这样,你把零点当特殊点处理一下就行了。
页: [1]
查看完整版本: AO输出线性转换,0至100转换为4至20mA问题