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。
就这些了,大概想了想,没找到比较简单直接的算法。
请教一下各位,谢谢! 中秋深夜发帖实属不易,大家节日快乐! pwm有点问题,最低电压的问题,最低电压是0.3V,这个要注意一下。 为啥12mA要对应到32767呢?
要想这样对应, 须在AD之后用硬件做一个电流偏移 xzq1019@163.com 发表于 2013-9-21 02:33
pwm有点问题,最低电压的问题,最低电压是0.3V,这个要注意一下。
我这个是根据实测4mA得出的占空比寄存器的值,也就是占空比给10955的时候,正好输出电流为4mA。 albert_w 发表于 2013-9-21 02:43
为啥12mA要对应到32767呢?
要想这样对应, 须在AD之后用硬件做一个电流偏移
软件算法做不到吗
其实这里主要问题是零点被抬高,中间点和顶点又是正常,所以还不太容易想出简单的办法。 kevin_me 发表于 2013-9-21 03:30 static/image/common/back.gif
软件算法做不到吗
其实这里主要问题是零点被抬高,中间点和顶点又是正常,所以还不太容易想出简单的办法 ...
一个线性(直线)的东西,两点已定,第三点对不上就不好搞了,只能掰弯^_^ 如果线性度不是很好可以多测几个点然后用线性插值法 kevin_me 发表于 2013-9-21 03:30 static/image/common/back.gif
软件算法做不到吗
其实这里主要问题是零点被抬高,中间点和顶点又是正常,所以还不太容易想出简单的办法 ...
除了零点被抬高了,其它点都是线性的?要是这样,你把零点当特殊点处理一下就行了。
页:
[1]