搞不懂的校准函数,谁能帮忙解除疑惑!!!!

[复制链接]
 楼主| qqq44488 发表于 2013-7-11 16:07 | 显示全部楼层 |阅读模式
void Calibration_AD(char value)
{

//        long temp_value;
        switch (value)
        {
                case 1:       
                        channelswitch( 0 );
                        CH1_zero=read_single_data(0);
                        CH1_zero=read_single_data(0);
                        break;
                case 2:
                        channelswitch( 0 );
                        CH1_full=read_single_data(0);
                        CH1_full=read_single_data(0);
                        CH1_A=(CH_FULL-CH_ZERO)*32768/(CH1_full-CH1_zero);
                        CH1_B=(CH_ZERO*CH1_full-CH_FULL*CH1_zero)/(CH1_full-CH1_zero);


程序如上所示:  其中CH_FULL=58982。。。CH_ZERO=32768。。。CH1_full为测得AD输入为4.5V时的值,返回的是一个字。。。CH1_zero为测得AD输入为2.5V时的值,同样返回的是一个字。。。。。
我的问题是,这里的58962和32768是干什么的???为什么要这样计算???
cjhk 发表于 2013-7-11 20:39 | 显示全部楼层
我也不是很了解这一块   楼主   帮你顶一个   很不错哦   顶起来   
 楼主| qqq44488 发表于 2013-7-12 11:06 | 显示全部楼层
本帖最后由 qqq44488 于 2013-7-12 16:28 编辑

Upo = (CH1_A*(Upo)/32768+CH1_B-32768)*2.5/32768*RESGAIN;                                                
Unp = (32768-(Unp*CH2_A/32768+CH2_B))*2.5/32768*RESGAIN;
然后又代到这里计算的
其中:公式里的Upo是采到的0通道实时数据,Up1是1通道实时数据。
adamug 发表于 2013-7-12 11:52 | 显示全部楼层
爱莫能助,帮顶一下
outstanding 发表于 2013-7-12 14:57 | 显示全部楼层
 楼主| qqq44488 发表于 2013-7-12 16:14 | 显示全部楼层
本帖最后由 qqq44488 于 2013-7-12 16:30 编辑

我好想懂一点了  (4.5 / 2.5) * 32768 = 58982.4         
现在的问题是,假如CH1_zero输入的不是2.5V,若是0V,那就要把32768换为1吗?????
zeluo 发表于 2013-7-12 20:04 | 显示全部楼层
帮楼主顶一个   呼唤版主   香主   他们应该有办法解决这个问题   楼主
trumpxp 发表于 2013-7-13 10:07 | 显示全部楼层
不是很了解这一块    楼主   帮你顶一个   看看有没有高手能够解决这个问题  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

359

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部

15

主题

359

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部