lmt50211 发表于 2014-6-4 17:57:18

请教ADC0838不同接法的作用(优势)及相应程序代码作用

本帖最后由 lmt50211 于 2014-6-4 18:04 编辑

一般情况我们都是使用八通道的方法。如图

还有一种是四通道的方法,如图

这个是老控温产品上的ADC转换原理图(详见附件),但是不知道此种接法的作用,设计人员已经不知道是谁了,估计换了很多人了。
硬件主要是测试PT100,采用电桥分压,5V线性稳压器稳压PT100基准,差分放大器放大33倍,摄氏温度是0-255度,精确到1度,华氏温度为0-500,精确到2华氏度。

有很多看不明白,现在上传程序,希望各位能解答一下温度转换部分。
/*********************temperature()******读温区温度*****************************/
uchar temperature(uchar x)
{
    uchar i;
    OU0838=1;
    CL0838=0;
    CS0838=0;
    for(i=0; i<5; i++)
    {
      if(x&0x01)
      {
            IN0838=1;
      }
      else
      {
            IN0838=0;
      }
      _nop_();
      _nop_();
      _nop_();
      _nop_();
      CL0838=1;
      _nop_();
      _nop_();
      _nop_();
      _nop_();
      CL0838=0;
      x=x>>1;
    }
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    for(i=0; i<8; i++)
    {
      _nop_();
      _nop_();
      _nop_();
      _nop_();
      CL0838=1;
      _nop_();
      _nop_();
      _nop_();
      _nop_();
      CL0838=0;
      x=x<<1;
      if(OU0838)
      {
            x+=1;
      }
    }
    CS0838=1;
    CL0838=1;
    return(x);
}

void temp_process(void)//温度转换
{
        t=temperature(0xe3);
                if(t==255)
                {
                  t=temperature(0xe9);
                  if(t==255)
                  {
                        t=temperature(0xf1);
                        if(t==255)
                        {
                            TANK=t;
                        }
                        else
                        {
                            TANK=t/3+165;
                        }
                  }
                  else
                  {
                        TANK=t/3+80;
                  }
                }
                else
                {
                  TANK=t/3;
                }
}

alias 发表于 2014-6-4 19:27:13

本帖最后由 alias 于 2014-6-4 19:29 编辑

>>但是不知道此种接法的作用

这差分接法是用来得到 10-Bit 的总分辨率的,差分输入(+)端电压如果小於(-)端,ADC 结果将会是零。这接法是四组,用者只要检查那些组别差分输入ADC 结果是零就能给出额外 2bit 的值。

locky_z 发表于 2014-6-4 20:05:28

你的图,那个是PT100 ?
另外 ADC0838 ch0 2 4 6接ADC是接到哪里?
你这电路ADC0838没用到差分方式测量,因为每个差分通道另一端并不是接到测量电路中。


没看你的程序,只看电路来分析,我认为这只是一个多量程电路而已,估计R10是PT100。
电路中ADC0838用的Vref只有1.25V左右,估计就是为了提高小电压测量能力。
,如果R10阻值小状态时,CH1 3测出来溢出,系统就使用CH5的测量值,
当R10阻值很大时,CH3 5的测量值很小、不准确,系统于是使用CH1的测量值。
页: [1]
查看完整版本: 请教ADC0838不同接法的作用(优势)及相应程序代码作用