xuehu5808 发表于 2013-6-19 10:44:47

请教关于CS5550增益校准的问题

鄙人现在想用CS5550测量两路0~100MV的电压信号,看了CS5550的手册,有些问题不明白,CS5550有两路ADC,其中第一路的增益可选则10X,和50X,第二路固定为10X,增益校准寄存器的值为0.0到4之间的数,现在想问的问题是:CS5550的增益是不是这样计算:比如每个通道都选择10X的增益,在校准时当我输入满量程信号100MV时,这时DC增益校准寄存器的值应改为2.5/(信号满量程电压*10)=2.5,也就是说我是这样理解CS5550的增益为: CS5550的实际增益=每个通道选择的固定增益(比如10X)X    增益校准值    。   不知道我这样理解是否正确,如果不正确应该怎样理解 。 烦请知道的大神不吝赐教,鄙人在此先行谢过

wdmfhvk 发表于 2013-6-19 11:02:35

我猜,不用搞这么清楚与复杂,直接校准,得到想要的数据就行了。(教学及搞理论的除外)

xuehu5808 发表于 2013-6-19 11:10:15

wdmfhvk 发表于 2013-6-19 11:02 static/image/common/back.gif
我猜,不用搞这么清楚与复杂,直接校准,得到想要的数据就行了。(教学及搞理论的除外) ...

谢谢,这个不搞清楚不行啊,如果不知道增益是怎么回事那写程序会有问题啊,还有比如通道2只有10X的增益能否测量0~100MV的信号呢,所以必须要搞清楚增益怎么计算或者原理是什么。

wdmfhvk 发表于 2013-6-19 10:44:48

可以问问他们的技术支持。

3htech 发表于 2013-6-19 15:45:42

当个AD用,自己读取AD值,然后自己进行零点和满载的校准就可以了。

xuehu5808 发表于 2013-7-20 00:24:54

wdmfhvk 发表于 2013-6-19 10:44 static/image/common/back.gif
可以问问他们的技术支持。

在网上找到他们的技术支持解决了问题,谢谢,其实增益和校准CS5550的说明书上说的很清楚,只是我没有仔细阅读

xppx1987 发表于 2013-7-31 16:36:12

xuehu5808 发表于 2013-7-20 00:24 static/image/common/back.gif
在网上找到他们的技术支持解决了问题,谢谢,其实增益和校准CS5550的说明书上说的很清楚,只是我没有仔细 ...

请问下哪里有CS5550这款芯片的技术支持,现在头都弄大了~

xuehu5808 发表于 2013-7-31 18:40:35

找到公司的网站,在网站上找到联系电话,打电话去问,她们会告诉你的

xppx1987 发表于 2013-9-3 09:45:28

本帖最后由 xppx1987 于 2013-9-3 10:16 编辑

xuehu5808 发表于 2013-7-31 18:40 static/image/common/back.gif
找到公司的网站,在网站上找到联系电话,打电话去问,她们会告诉你的

您好!我在网上看到了一段关于CS5550增益校准的程序,可是始终没有弄明白这段程序的意思,比如下面的程序是CS5550通道1的增益校准:1、这个fullscale1满量程是根据自己需要的输入范围而得来,还是根据参考电压/gain而来的?2、为什么下面使用了按键操作取了多个点进行校准,而不是直接根据DC增益校准寄存器的值应改为2.5/(信号满量程电压*10),发送校增益准令?:dpPos=0时,delta=fullScale1*(0x800>>dpPos*3)/(float)0x4000=fullScale1*1/2^3;dpPos=1时,delta=fullScale1*(0x800>>dpPos*3)/(float)0x4000=fullScale1*1/2^6;dpPos=2时,delta=fullScale1*(0x800>>dpPos*3)/(float)0x4000=fullScale1*1/2^9;dpPos=3时,delta=fullScale1*(0x800>>dpPos*3)/(float)0x4000=fullScale1*1/2^12。

char key;
float delta;
static char idata dpPos=0;
// -------- AIN1 Gain modify ---------
                                    case GAIN1://AIN1增益
                                                showNum(fullScale1, 1);//显示通道1满量程值
                                                delta=fullScale1*(0x800>>dpPos*3)/(float)0x4000;//先算术运算后移位运算
                                                while(1)
                                                 {
                                                        key=getKey();//读取键值
                                                        switch(key)
                                                         {
                                                          case Menu:
                                                                           showPoint(dpPos);
                                                                           while(1)
                                                                          {      
                                                                                   key=getKey();//读取键值
                                                                                     if(key==OK)
                                                                                    {
                                                                                      delta=fullScale1*(0x800>>dpPos*3)/(float)0x4000;//?
                                                                                       showCommand(opNum);
                                                                                       showNum(fullScale1,1);//显示通道1满量程值
                                                                                       break;
                                                                                   }
                                                                                   switch(key)           
                                                                                    {
                                                                                                  case Down:
                                                                                                 if(dpPos<3) //dpPos=0、1、2、3
                                                                                                  {
                                                                                                                         ++dpPos;
                                                                                                               showPoint(dpPos);
                                                                                             }
                                                                                             break;
                                                                                            case Up:
                                                                                                 if(dpPos>0) //dpPos=0、1、2、3
                                                                                                  {
                                                                                                                --dpPos;
                                                                                                                showPoint(dpPos);
                                                                                              }
                                                                                              break;
                                                                                    }
                                                                       }
                                                                       break;
                                                           case Up:
                                                                        fullScale1 += delta;
                                                                        showNum(fullScale1, 1);
                                                                        break;
                                                          case Down:
                                                                        fullScale1 -= delta;
                                                                        showNum(fullScale1, 1);
                                                                        break;
                                                          case OK:
                                                                        ledOff();
                                                                        modify(0xCA, 0x04); // ain1 gain 发送增益校准命令
                                                                        ledOn();
                                                                        goto toOut;
                                                                        break;
                                                          }
                                                }
                                                break;
页: [1]
查看完整版本: 请教关于CS5550增益校准的问题