AD自带内部增益问题,帮忙看下

2020-02-03 10:08发布

图中的红线部分是什么意思
我做AD时  其它的功能都做出来了
但是在增益这 怎么做都有问题估计是这个输入红 {MOD}区域没搞明白吧
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
52条回答
haolei432370
1楼-- · 2020-02-06 10:32
 精彩回答 2  元偷偷看……
marshallemon
2楼-- · 2020-02-06 11:22
haolei432370 发表于 2012-8-27 15:34
恩恩

       

通常这种16bit的AD的精度还远远不及4 1/2的万用表,对于多通道的AD,每切换一个通道都要进行校准一次后再读取,另外切换通道后的头几个数据需要丢弃
haolei432370
3楼-- · 2020-02-06 16:39
本帖最后由 haolei432370 于 2012-8-28 20:47 编辑

未命名.jpg (275.78 KB, 下载次数: 0)

下载附件

2012-8-28 20:46 上传




1.增益为1的时候  三个通道的测试很精确(应该能说明我切换通道没问题吧)
2.单增益为64的时候。单通道测试的时候也很精确
R3到地的电压是300mv(满足GND+300mv)
R2两端的电压差值为10mv
当不接来自信号发生器的信号时候(AIN+接R2与R1之间,AINI-接R2与R3之间)测电压也很精确
当按照上图接线的时候R3到地的300mv不稳定测试的值偏低(测试的值应该为A100(16进制),但是测试的值8932(16进制))
I/O 寄存器位复位值为0x00,(默认为输入,不用设置)
输入不同的模拟量测试的值相差不大(估计还是电路问题(三通道测试的时候接法跟上面一样),所以有以上测试)
哎~电路知识差了,等这东西做完,找时间补补
  1.         while(1)
  2.         {
  3.             for(i=0;i<3;i++)
  4.                 {
  5.                
  6.                 Init_Ad7798(i);//通道1、通道2、通道3初始化       
  7.             ReadData_7798();       

  8.                 j=2*i+1;
  9.                 Serial_Receive(hData); //发送高字节数据(在ReadData_7798中读出)
  10.                 Serial_Receive(lData); //发送低字节数据(在ReadData_7798中读出)
  11.                 }
  12.         }这是主程序
复制代码
  1. void Init_Ad7798(unsigned char ChannelNum)
  2. {               
  3.     WriteByte_7798(0xff);//reset ad7798
  4.     WriteByte_7798(0xff);
  5.     WriteByte_7798(0xff);
  6.     WriteByte_7798(0xff);

  7.     WriteByte_7798(0x10);//写入通讯寄存器设置下一个操作,写信给配置寄存器
  8.     WriteByte_7798(0x26);//增益为128
  9.     WriteByte_7798(0x30+ChannelNum);

  10.    //写入模式注册启动  内部零刻度校准
  11.     WriteByte_7798(0x08);//写入通讯寄存器设置下一个操作,写信给模式寄存器
  12.     WriteByte_7798(0x80);
  13.     WriteByte_7798(0x0a);
  14.     WaiteRDY();//等待及由RDY销去低显示最终的校准周期

  15.         //写入模式注册启动  内部满刻度校准
  16.     WriteByte_7798(0x08);//写入通讯寄存器设置下一个操作,写信给模式寄存器
  17.     WriteByte_7798(0xa0);
  18.     WriteByte_7798(0x0a);
  19.     WaiteRDY();//等待及由RDY销去低显示最终的校准周期

  20.     WriteByte_7798(0x08);//写入通讯寄存器设置下一个操作,写信给模式寄存器
  21.     WriteByte_7798(0x00);
  22.     WriteByte_7798(0x0a);
  23. }这是初始化程序(每次通道改变的时候)
复制代码
haolei432370
4楼-- · 2020-02-06 18:49
本帖最后由 haolei432370 于 2012-9-12 15:16 编辑

分享如下  
PCB+CODE
haolei432370
5楼-- · 2020-02-06 22:22
本帖最后由 haolei432370 于 2012-9-12 15:16 编辑
marshallemon 发表于 2012-8-27 21:47
通常这种16bit的AD的精度还远远不及4 1/2的万用表,对于多通道的AD,每切换一个通道都要进行校准一次后再 ...


  用AD7798进行三路(重量、温差、温度)小于10mv的电压进行采集,其中重量、温差两路信号是在起原始信号的基础上进行了二次放大,再用AD进行采集,这个没有问题。现在的问题出在第三路的采集,它是来源于化学反应(热电偶)过程中信号(阻抗很小),直接送到AD中进行采集,但是用万用表测量很稳定的信号接到AD上就出出现0.1mv-0.4mv的跳动,而且很有规律从0.1mv-0.4mv-0.1mv这个过程大概是一秒钟一个周期,并且它在其原始信号的基础上有了0.05mv-0.2mv的增量,增量大小规律不确定!


图和程序在分享里
单独热电偶那路信号(不管接AIN1  还是AIN2,AIN3)都不稳定    另两路信号很好
marshallemon
6楼-- · 2020-02-07 02:59
 精彩回答 2  元偷偷看……

一周热门 更多>