搜索
bottom↓
回复: 14

单片机称重系统设计

[复制链接]

出0入85汤圆

发表于 2021-1-24 14:31:29 | 显示全部楼层 |阅读模式
1.传感器简介

    称重系统在工业级日常生活中应用非常广泛,从小型的电子称到大型的地磅。其中传感器大部分为电阻应变式压力传感器。一般由四个电阻应变片组成惠更斯电桥,安装在弹性体上。当有压力时,应变片随弹性体发生形变,电阻产生变化,电桥产生不平衡电压。一般压力与电桥不平衡电压成线性比例关系。



     传感器的输出电压一般比较小,为mV级别。具体取决于激励电压和传感器灵敏度。常见的灵敏度有1mV/V、2mV/V、3mV/V。对于2mV/V的传感器,在激励电压为5V时,满量程时输出电压为2mV/V*5V=10mV。

2.硬件设计

    传感器信号比较小,需要放大后再进行AD采集。目前有很多称重系统专用的AD芯片,内部集成了放大器,大大简化了硬件电路的设计。如TI的ADS1231,芯海科技的CS1231、海芯科技的HX710等。这些芯片都是24位AD,且集成了128倍的放大器(部分芯片放大倍数可设置)。本文以HX710为例进行介绍。其电路图如下:



    查询手册可以看到芯片5V供电时的性能要优于3V供电。但需要注意的是HX710的AVDD不能大于DVDD,而目前大部分单片机为3.3V供电,所以这里都用3.3V供电。ADS1231是没有这个限制的,即DVDD可以是3.3V,AVDD可以是5V。

    芯片共模输入电压范围为AGND+0.9V到AVDD-1.3V,这一点在其它应用时需要注意。

    芯片差分输入电压范围为±0.5VREF/放大倍数(128)≈±12.89mV。对于3.3V激励电压,2mV/V灵敏度的传感器,最大输出电压为±6.6mV,在芯片要求范围内。两个值相差近一倍,会损失约1位的分辨率。激励电压越大,传感器输出电压越接近AD的输入范围,AD的分辨率就越能得到有效利用。但也要综合考虑整个电源系统的设计。

    另外,传感器的激励电压尽量与芯片的VREF采用同一个电源,这样可以抑制一些共模干扰。

3.软件设计

    芯片与单片机接口简单,一个数据输出引脚DOUT,一个时钟引脚SCK。

    当AD一次转换完成后,DOUT由高电平变为低电平,此时SCK引脚输入25~27个不等的时钟脉冲,每个时钟的上升沿从DOUT读取数据。时序图如下。其它芯片的读取数据时序与此芯片基本相同。



程序编写

  1. int32_t ad_val=0;//AD值

  2. void Get_HX710()
  3. {
  4.     HX710_SCLK_CLR;
  5.     if(READ_HX710_DOUT_PIN)return ;

  6.     for(i=0;i<24;i++)
  7.     {
  8.          HX710_SCLK_SET;
  9.          ad_val=ad_val<<1;
  10.          HX710_SCLK_CLR;
  11.          if(READ_HX710_DOUT_PIN)
  12.            ad_val++;
  13.     }
  14.     HX710_SCLK_SET;
  15.     if(ad_val&0x800000)ad_val|=0xFF000000;
  16.     HX710_SCLK_CLR;
  17. }
复制代码


传感器校准

    上面读取的是AD原始值,转换成重量前需要对传感器进行校准。一般传感器校准至少需要两个点:零点和任满量程(当然,其它任意两个点也可以,因为两点确定一条直线)。对于一些要求高的场合,则需要多个点进行分段校准,甚至不同温度区间进行校准。本文以两个点的校准为例。校准数据包括零点校准值、零点AD值、满量程校准值、满量程AD值。

    计算称重值比较简单,即在通过两个校准点确定一条直线,找到该曲线上AD值对应的重量。程序如下:

  1. int32_t CaliADCValue[2];//校准的AD值
  2. int32_t CaliSensorValue[2];//校准的传感器值
  3. int32_t ZeroValue;//去皮AD值

  4. void CalcWeight(int32_t AD_Value)
  5. {
  6.        int32_t Sensor_Value = 0;
  7.        int32_t TempCaliADCValue[2];//校准AD值      

  8.        TempCaliADCValue[0] = CaliADCValue[0] + ZeroValue;
  9.        TempCaliADCValue[1] = CaliADCValue[1] + ZeroValue;//去皮
  10.       

  11.        if(AD_Value < TempCaliADCValue[0])//小于0点值
  12.        {
  13.               Sensor_Value = 0;
  14.        }
  15.        else if(AD_Value > TempCaliADCValue[1])//大于最大校准值
  16.        {
  17.               Sensor_Value = CaliSensorValue[1] + (float)(AD_Value - TempCaliADCValue[1])/(float)(TempCaliADCValue[1] - TempCaliADCValue[0]) * (float)(CaliSensorValue[1] - CaliSensorValue[0]);
  18.        }
  19.        else//在校准范围内
  20.        {
  21.               Sensor_Value = CaliSensorValue[0] + (float)(AD_Value - TempCaliADCValue[0])/(float)(TempCaliADCValue[1] - TempCaliADCValue[0]) * (float)(CaliSensorValue[1] - CaliSensorValue[0]);
  22.        }
  23. }
复制代码

   
    称重系统的一个重要功能就是去皮。上面程序中包括了去皮的功能,去皮即在原来校准AD值的基础上加上去皮AD值,作为新的校准AD值去计算。

    AD去皮值=当前AD值-零点校准AD值。

  1. ZeroValue = ad_val - CaliADCValue[0];
复制代码



    本文介绍的只是一种常见的称重系统设计方案。在一些要求高的场合,可能需要对传感器进行蠕变补偿,采用交流激励等方式。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出16170入6148汤圆

发表于 2021-1-24 14:39:59 来自手机 | 显示全部楼层
发技术帖子欢迎。广告不欢迎,广告已经删除。

请以后不要再发广告,否则将封锁ID处理。

出100入101汤圆

发表于 2021-1-24 15:04:17 来自手机 | 显示全部楼层
请教,不用外置adc,使用内置带24bit的mcu是否合适?

出0入85汤圆

 楼主| 发表于 2021-1-24 15:09:58 | 显示全部楼层
fengyunyu 发表于 2021-1-24 15:04
请教,不用外置adc,使用内置带24bit的mcu是否合适?

没用过,不好评价

出0入85汤圆

发表于 2021-1-24 15:58:41 | 显示全部楼层
HX71X系列性能很垃圾,重复性再现性都不行

出235入235汤圆

发表于 2021-1-24 16:28:18 | 显示全部楼层
marshallemon 发表于 2021-1-24 15:58
HX71X系列性能很垃圾,重复性再现性都不行

有什么推荐吗?

出0入50汤圆

发表于 2021-1-24 17:02:06 | 显示全部楼层
fengyunyu 发表于 2021-1-24 15:04
请教,不用外置adc,使用内置带24bit的mcu是否合适?

内置24bit的MCU,都是基于数字/模拟混合集成电路工艺制造的,而实际上数字和模拟往往会才用不同的工艺,才是最佳选择,合并在一个芯片上,就很难把模拟部分做到很好,所以市面上常见的这类MCU,其自带的ADC性能都不是很好,比如C8051F350,SH79F085等等。
当然对于精度要求不高的应用,这些芯片用起来方便,也不是一无是处。

海芯的HX系列ADC,最大的问题就是温漂性能都不是很理想,比芯海的差了不少。

出150入640汤圆

发表于 2021-1-25 12:20:19 | 显示全部楼层
温度补偿如何做的?能不能把相关代码发上来学习一下,谢谢!

出0入4汤圆

发表于 2021-1-25 15:02:04 | 显示全部楼层
楼主   您最后说的 交流激励    有什么方案 ?

出0入0汤圆

发表于 2021-1-25 20:20:13 | 显示全部楼层
已经是烂大街的方案  

出0入4汤圆

发表于 2021-1-26 16:10:08 | 显示全部楼层
not_at_all 发表于 2021-1-25 20:20
已经是烂大街的方案

烂大街  ?

我还不知道 啥是交流激励方案呢

出0入12汤圆

发表于 2021-1-26 17:12:39 | 显示全部楼层
diyzxh 发表于 2021-1-26 16:10
烂大街  ?

我还不知道 啥是交流激励方案呢

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入4汤圆

发表于 2021-1-26 19:26:41 | 显示全部楼层

请教下  这里的  MOS   T1--T4  用啥类型的  MOS
或者直接上型号

出0入12汤圆

发表于 2021-1-26 21:55:53 | 显示全部楼层
diyzxh 发表于 2021-1-26 19:26
请教下  这里的  MOS   T1--T4  用啥类型的  MOS
或者直接上型号

手册里是BSH112

出0入4汤圆

发表于 2021-2-3 16:27:03 | 显示全部楼层
ADS1230
ADS1232

稳定性、温漂比较好,500g精度可以达到0.01g
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-2 20:41

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表