打印
[51单片机]

AD7705的使用问题。

[复制链接]
2226|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
popeye021|  楼主 | 2013-8-22 14:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
使用AD7705来采集称重传感器的差分信号。
现在称重传感器的激励电源是5V,传感器差分信号最大输出是10mV。单片机的电源是3.3V的,称重传感器的5V激励电源是由LM2940-5得到。

我的一个方案是:AD7705的VDD就用LM2940-5出来的5V,参考电压用一个5V转2.5V的REF192;和单片机的接口方面,单片机的输出IO经过一个HCT243,把3.3V电平转换为5V电平,再接AD7705的数字接口,单片机本身是可以容忍5V逻辑输入的。不过这个方案需要一个电平转换。

还有一个方案是:AD7705也采用单片机的3.3V电源,而称重传感器使用5V电源。看芯片资料,当电源采用3.3V时,参考电压最大只能1.75V,有一点几伏的参考电压芯片吗?求推荐。对于输入的共模电压,当不采用缓冲模式时,共模电压可以从0到VDD,此处共模输入电压大约2.5V左右。

这两个方案哪个可行,或者都有问题??求指教。

附带问一下,称重传感器输出的差分信号一般都是单极性的吧??因为一般都是对传感器加压。
如果即可加压又可拉伸的桥式电阻应变片式传感器才会输出双极性的差分信号??

相关帖子

沙发
popeye021|  楼主 | 2013-8-22 17:18 | 只看该作者
快沉的没影了

使用特权

评论回复
板凳
wangyy608| | 2013-8-22 18:57 | 只看该作者
参考电压用电阻分压也是可以的,双极性

使用特权

评论回复
地板
popeye021|  楼主 | 2013-8-22 19:03 | 只看该作者
wangyy608 发表于 2013-8-22 18:57
参考电压用电阻分压也是可以的,双极性

我用的3000公斤的传感器,输出差分信号可能为负值?

使用特权

评论回复
5
popeye021|  楼主 | 2013-8-22 19:05 | 只看该作者
wangyy608 发表于 2013-8-22 18:57
参考电压用电阻分压也是可以的,双极性

我的两个方案,求看法,求指导。

使用特权

评论回复
6
wangyy608| | 2013-8-23 07:45 | 只看该作者
满足要求的前提下,当然选择成本较低的方案;
传感器差分信号有可能为负

使用特权

评论回复
7
popeye021|  楼主 | 2013-9-1 10:42 | 只看该作者
wangyy608 发表于 2013-8-23 07:45
满足要求的前提下,当然选择成本较低的方案;
传感器差分信号有可能为负 ...

请教一下传感器差分信号在什么情况下会为负?
按我的理解,压力传感器没有加压时,传感器输出差分信号理论值为零,有压力时就为正值了,不可能出现负的啊。

使用特权

评论回复
8
xuyaqi| | 2013-9-1 14:13 | 只看该作者
也可以像拔河一样拉传感器,和压相反输出就是负的

使用特权

评论回复
9
zourunbeng| | 2014-1-14 10:18 | 只看该作者
你好,请问你的问题解决了吗,我现在也在用AD7705做一个相关的项目,目前有点问题,是否可以请教一下,QQ286603895

使用特权

评论回复
10
popeye021|  楼主 | 2014-1-14 10:32 | 只看该作者
zourunbeng 发表于 2014-1-14 10:18
你好,请问你的问题解决了吗,我现在也在用AD7705做一个相关的项目,目前有点问题,是否可以请教一下,QQ28 ...

做了一个小实验板,但是数据跳动比较大,精度不够,可能是抗干扰什么的做的不好,放弃了:lol

使用特权

评论回复
11
zourunbeng| | 2014-1-14 10:36 | 只看该作者
那你现在是用什么来做的呢?是放大称重传感器的信号吧

使用特权

评论回复
12
zourunbeng| | 2014-1-14 10:58 | 只看该作者
可以加个QQ,交流一下吗

使用特权

评论回复
13
zourunbeng| | 2014-1-14 10:59 | 只看该作者
QQ286603895

使用特权

评论回复
14
popeye021|  楼主 | 2014-1-14 11:16 | 只看该作者
zourunbeng 发表于 2014-1-14 10:36
那你现在是用什么来做的呢?是放大称重传感器的信号吧

现在太忙,用HX710来做的。本来我对精度要求也不是太高。
你可以考虑一下ADS1230,如果精度也不是要求很高的话。

使用特权

评论回复
15
zourunbeng| | 2014-1-15 13:51 | 只看该作者
popeye021 发表于 2014-1-14 11:16
现在太忙,用HX710来做的。本来我对精度要求也不是太高。
你可以考虑一下ADS1230,如果精度也不是要求很 ...

用HX710,能否给个电路和程序参考一下,谢谢!

使用特权

评论回复
16
popeye021|  楼主 | 2014-1-15 16:23 | 只看该作者
zourunbeng 发表于 2014-1-15 13:51
用HX710,能否给个电路和程序参考一下,谢谢!

直接下载官方的datasheet就有推荐应用电路图,我就是照着那个来的。程序也是网上找来,然后修改一下。程序如下:

//HX710断电
void ADpd( void )
{
        ADsclk = 0;

        ADsclk = 1;

        Device_Clk_Delay( 6000 );       

}


//读取HX710的转换结果
unsigned long ADconvert( void )
{
        unsigned long ulResult = 0;
        unsigned int uiTemp = 0;
        unsigned char ucTemp = 0;
        unsigned char i = 0;
        unsigned char j = 0;
       
        ADsclk = 0;
       
//        for( j = 0 ; j < 30 ; j++ );
       
        while( 1 )
        {
                PCA0CPH4 = 0;
               
          if( ADdout == 0 )                                     //确认AD转换是否完成
                  {
                          for( j = 0 ; j < 180 ; j++ );
                       
                          for( i = 0 ; i < 16 ; i++ )                     //读高16位数据
                          {
                                  ADsclk = 1;
                               
                                  for( j = 0 ; j < 30 ; j++ );
                               
                                  if( ADdout == 1 )
                                          {
                                                  uiTemp = ( uiTemp << 1) | 0x0001;
                                          }
                                  else
                                          {
                                                  uiTemp = uiTemp << 1;
                                          }
                                       
                                  ADsclk = 0;
                               
                                  for( j = 0 ; j < 30 ; j++ );
                          }
                       
                          for( i = 0 ; i < 8 ; i++ )                      //读低8位数据
                          {
                                  ADsclk = 1;
                               
                                  for( j = 0 ; j < 30 ; j++ );
                               
                                  if( ADdout == 1 )
                                          {
                                                  ucTemp = ( ucTemp << 1) | 0x01;
                                          }
                                  else
                                          {
                                                  ucTemp = ucTemp << 1;
                                          }
                                       
                                  ADsclk = 0;
                               
                                  for( j = 0 ; j < 30 ; j++ );
                          }
                       
                          ADsclk = 1;                                    
                       
                          for( j = 0 ; j < 30 ; j++ );
                               
                          ADsclk = 0;
                       
                          for( j = 0 ; j < 30 ; j++ );
                       
                          ADsclk = 1;                                    
                       
                          for( j = 0 ; j < 30 ; j++ );
                               
                          ADsclk = 0;
                       
                          for( j = 0 ; j < 30 ; j++ );

                          ADsclk = 1;                                    
                       
                          for( j = 0 ; j < 30 ; j++ );
                               
                          ADsclk = 0;
                       
                          for( j = 0 ; j < 30 ; j++ );
                          
                          PCA0CPH4 = 0;
                          
                          break;
                  }
               
        }
       
        ulResult = uiTemp;
        ulResult = ulResult << 8;       
        ulResult = ulResult | ucTemp;
                       
        return ulResult;
               
}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

86

主题

455

帖子

4

粉丝