搜索
bottom↓
回复: 34

第一次做项目,ADS1232接称重传感器,不怎么变化,有图~~

[复制链接]

出0入0汤圆

发表于 2013-3-24 23:27:33 | 显示全部楼层 |阅读模式
我使用ADS1232接2mv/v的称重传感器,使用通道2,增益128,速递10次每秒,关闭温度传感器功能,可读出来的数不管怎么按压传感器都不怎么变,这个传感器是没有问题的,在HX711芯片上用四线制测试吹气都能有变化。可在用六线的ADS1232上数值就不怎么变化了。希望大家给予指点。
第一次做实际项目,如果设计中有其他不合理的地方希望大家批评指出,谢谢。
测试环境如下,呵呵,蜗居,只有一个床当桌子了。

串口接收到的从ADS1232中读取出来的十进制数

下面是电源和ADS1232的电路



传感器和PCB的连接

称重传感器的接线图

PCB








本帖子中包含更多资源

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

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

 楼主| 发表于 2013-3-24 23:30:21 | 显示全部楼层
  1. #include "ADS1232.H"
  2. #include "port.h"


  3. /*
  4. sbit ADS1232_DOUT  = P2^0;
  5. sbit ADS1232_SCLK  = P2^1;
  6. sbit ADS1232_PWDN  = P2^2;
  7. sbit ADS1232_SPEED = P2^3;
  8. sbit ADS1232_GAIN1 = P2^4;
  9. sbit ADS1232_GAIN0 = P2^5;
  10. sbit ADS1232_A0    = P2^6;
  11. sbit ADS1232_TEMP  = P2^7;
  12. */

  13. #define ADS1232_SCLK_HIGH    do{ADS1232_SCLK=1;}while(0);
  14. #define ADS1232_SCLK_LOW     do{ADS1232_SCLK=0;}while(0);
  15. #define ADS1232_PWDN_HIGH    do{ADS1232_PWDN=1;}while(0);
  16. #define ADS1232_PWDN_LOW     do{ADS1232_PWDN=0;}while(0);
  17. #define ADS1232_SPEED_HIGH   do{ADS1232_SPEED=1;}while(0);
  18. #define ADS1232_SPEED_LOW    do{ADS1232_SPEED=0;}while(0);
  19. #define ADS1232_GAIN1_HIGH   do{ADS1232_GAIN1=1;}while(0);
  20. #define ADS1232_GAIN1_LOW    do{ADS1232_GAIN1=0;}while(0);
  21. #define ADS1232_GAIN0_HIGH   do{ADS1232_GAIN0=1;}while(0);
  22. #define ADS1232_GAIN0_LOW    do{ADS1232_GAIN0=0;}while(0);
  23. #define ADS1232_A0_HIGH      do{ADS1232_A0=1;}while(0);
  24. #define ADS1232_A0_LOW       do{ADS1232_A0=0;}while(0);
  25. #define ADS1232_TEMP_HIGH    do{ADS1232_TEMP=1;}while(0);
  26. #define ADS1232_TEMP_LOW     do{ADS1232_TEMP=0;}while(0);

  27. void ADS1232_init(unsigned char channel, unsigned char gain, unsigned char speed, unsigned char temp)
  28. {
  29.     ADS1232_SCLK = 0;
  30.     ADS1232_PWDN_LOW;
  31.     if(channel==CHANNEL1)
  32.     {
  33.         ADS1232_A0_LOW;
  34.     }
  35.     else if(channel==CHANNEL2)
  36.     {
  37.         ADS1232_A0_HIGH;
  38.     }
  39.    
  40.     if(GAIN_1==gain)
  41.     {
  42.         ADS1232_GAIN1_LOW;
  43.         ADS1232_GAIN0_LOW;
  44.     }
  45.     else if(GAIN_2==gain)
  46.     {
  47.         ADS1232_GAIN1_LOW;
  48.         ADS1232_GAIN0_HIGH;
  49.     }
  50.     else if(GAIN_64==gain)
  51.     {
  52.         ADS1232_GAIN1_HIGH;
  53.         ADS1232_GAIN0_LOW;
  54.     }
  55.     else if(GAIN_128==gain)
  56.     {
  57.         ADS1232_GAIN1_HIGH;
  58.         ADS1232_GAIN0_HIGH;
  59.     }
  60.    
  61.     if(SPEED_10==speed)
  62.     {
  63.         ADS1232_SPEED_LOW;
  64.     }
  65.     else if(SPEED_80==speed)
  66.     {
  67.         ADS1232_SPEED_HIGH;
  68.     }
  69.    
  70.     if(TEMP_ON==temp)
  71.     {
  72.         ADS1232_TEMP_HIGH;
  73.     }
  74.     else if(TEMP_OFF==temp)
  75.     {
  76.         ADS1232_TEMP_LOW;
  77.     }
  78.    
  79.     ADS1232_PWDN_HIGH;
  80. }


  81. char ADS1232_read_value(long int *value)
  82. {
  83.     long int temp=0;
  84.     unsigned char i=0;
  85.    
  86.     if(ADS1232_READY==ADS1232_DOUT)
  87.     {
  88.         ADS1232_SCLK_LOW;
  89.         for(i=0; i<24; i++)
  90.         {
  91.             ADS1232_SCLK_HIGH;
  92.             temp <<= 1;
  93.             if(1==ADS1232_DOUT)
  94.             {
  95.                 temp |= 0x01;
  96.             }
  97.             ADS1232_SCLK_LOW;
  98.         }
  99.         ADS1232_SCLK_HIGH;  // The 25th SCLK to force DOUT high
  100.         ADS1232_SCLK_LOW;
  101.         if((temp&0x800000)==0x800000)
  102.         {
  103.             temp ^= 0Xffffff;
  104.             temp = -(temp+1);
  105.         }
  106.         *value = temp;
  107.         return ADS1232_READ_FINISH;
  108.     }
  109.     else
  110.     {
  111.         return ADS1232_BUSY;
  112.     }
  113. }
复制代码
下面是ADS1232的驱动代码

出0入0汤圆

 楼主| 发表于 2013-3-24 23:32:35 | 显示全部楼层
主函数也来了
  1. int main(void)
  2. {
  3.         signed char brightness=8;
  4.     long int num = 0;
  5.     int i=-20;
  6.     char temp=0;
  7.         TM1638_init();
  8.         TM1638_set_brightness(4);
  9.         uart_init(9600);
  10.     timer_init();
  11.     ADS1232_init(CHANNEL2, GAIN_128, SPEED_10, TEMP_OFF);

  12.     EA = 1;
  13.     while(1)
  14.     {
  15.         communicate_with_HMI();
  16.         TM1638_display_num(i++);
  17.         timer0_main_loop();
  18.         key_main_loop();
  19.         if(key1_on)
  20.         {
  21.             LED1 = ~LED1;
  22.         }
  23.         temp = ADS1232_read_value(&num);
  24.         if(temp==ADS1232_READ_FINISH)
  25.         {
  26.             printf("%8ld\r\n", num);
  27.         }
  28.         if(f_1s)
  29.         {
  30.             LED2 = ~LED2;
  31.         }
  32.     }
  33. }
复制代码

出0入0汤圆

 楼主| 发表于 2013-3-25 18:42:59 | 显示全部楼层
顶一下吧,希望有人能指点一下。

出0入0汤圆

发表于 2013-3-25 22:29:45 | 显示全部楼层
做这么高精度的采集,7805供电好像不好吧。

出0入0汤圆

 楼主| 发表于 2013-3-25 22:45:18 | 显示全部楼层
一刀断天下 发表于 2013-3-25 22:29
做这么高精度的采集,7805供电好像不好吧。

您给推荐个好的电源芯片吧?
或者电源方案,输入是24V工业电源。

出0入0汤圆

发表于 2013-3-26 09:42:57 | 显示全部楼层
你传感器是不是没安装好?还需要一个东西把传感器“托”起来的。

出0入0汤圆

发表于 2013-3-26 10:11:42 | 显示全部楼层
固定端和加载端请先确认。。。
话说,传感器你用原配的插头不是很好么?

本帖子中包含更多资源

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

x

出0入0汤圆

 楼主| 发表于 2013-3-26 13:48:45 | 显示全部楼层
andyli 发表于 2013-3-26 10:11
固定端和加载端请先确认。。。
话说,传感器你用原配的插头不是很好么? ...

您好,客户拿过来的时候,木有那个插头的座,
看来要自己去市场找找了。确实剪掉接线不方便。

出0入0汤圆

 楼主| 发表于 2013-3-26 13:51:08 | 显示全部楼层
wallelectronics 发表于 2013-3-26 09:42
你传感器是不是没安装好?还需要一个东西把传感器“托”起来的。

按照德州仪器FAE的建议,做了几个实验
<1>AINP2,AINN2悬空,REFP接基准正,REFPN接基准负,输出结果:8388607(0X7FFFFF)。

<2>AINP2,AINN2悬空,REFP和REFPN短接,输出结果:76700±200左右。

<3>REFP接基准正,REFPN接基准负,AINP2和AINN2短接,输出结果:76700±200左右。

<4>REFP接基准正,REFPN接基准负,AINP2和AINN2短接,输出结果:76700±200左右。

木有效果,
貌似芯片对REFN和REFP很敏感,对AINP2和AINN2很不敏感。

出0入0汤圆

发表于 2013-3-26 15:38:31 | 显示全部楼层
前辈  能给个联系方式么?我也在做电子秤,用的是hx711芯片,可是现在出了点问题。想找人请教一下

出90入372汤圆

发表于 2013-3-26 16:15:27 | 显示全部楼层
进口小开关 发表于 2013-3-25 22:45
您给推荐个好的电源芯片吧?
或者电源方案,输入是24V工业电源。

推荐用LM2576 输出端加223S 三端滤波器,我们很多工业产品都用这个方案

出0入0汤圆

发表于 2013-3-26 19:28:51 | 显示全部楼层
这种东西用这种供电方式都不好,可以加个电压基准,或是用些稳压芯片自己做电路。

出0入0汤圆

发表于 2013-3-27 16:22:08 | 显示全部楼层
keshipt 发表于 2013-3-26 16:15
推荐用LM2576 输出端加223S 三端滤波器,我们很多工业产品都用这个方案

方案很熟悉,哈哈

出0入0汤圆

发表于 2013-3-27 16:24:29 | 显示全部楼层
给传感器供电不是说电压一定要准,你要是来个高精度的2.5V片子做基准的话你就大大的错了,传感器供电和基准要是一个电源,一块波动

出0入85汤圆

发表于 2013-3-27 16:26:37 | 显示全部楼层
这1232可以不接外部晶振?用过124X系列的是需要外接晶振的。短路模拟输入看看会变不?

出0入0汤圆

发表于 2013-3-27 17:36:10 | 显示全部楼层
f8023m 发表于 2013-3-27 16:24
给传感器供电不是说电压一定要准,你要是来个高精度的2.5V片子做基准的话你就大大的错了,传感器供电和基准 ...

有道理,支持一下,以前还真没想过这个问题

出0入0汤圆

 楼主| 发表于 2013-3-28 07:48:45 | 显示全部楼层
keshipt 发表于 2013-3-26 16:15
推荐用LM2576 输出端加223S 三端滤波器,我们很多工业产品都用这个方案

您好,223S是一种什么样的滤波器?

出90入372汤圆

发表于 2013-3-28 09:16:23 | 显示全部楼层
进口小开关 发表于 2013-3-28 07:48
您好,223S是一种什么样的滤波器?

三端滤波器  

本帖子中包含更多资源

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

x

出0入0汤圆

发表于 2013-3-29 22:25:24 | 显示全部楼层
楼主厉害啊

出0入0汤圆

发表于 2013-5-8 08:31:29 | 显示全部楼层
正好也在做电子称。

出0入10汤圆

发表于 2014-4-26 15:18:23 | 显示全部楼层
本帖最后由 lklhzu 于 2014-4-26 15:19 编辑
keshipt 发表于 2013-3-26 16:15
推荐用LM2576 输出端加223S 三端滤波器,我们很多工业产品都用这个方案


开关电源不是比LDO纹波要大吗?为啥不直接用LDO?

出0入0汤圆

发表于 2014-6-1 21:45:13 | 显示全部楼层
ldo  也要 看psrr的,纹波抑制比。

出0入85汤圆

发表于 2014-6-1 21:48:30 | 显示全部楼层
2mV/V 这个怎么理解?

出0入0汤圆

 楼主| 发表于 2014-6-27 10:43:21 | 显示全部楼层
marshallemon 发表于 2014-6-1 21:48
2mV/V 这个怎么理解?

假如传感器的激励电压是10V,那么这个传感器的满量程输出电压为:10V * 2mV/V = 20mV.

出0入0汤圆

发表于 2014-6-30 13:36:52 | 显示全部楼层
不错                                 

出0入0汤圆

发表于 2014-8-2 22:07:44 | 显示全部楼层
4线和6线没什么本质的区别, 只是在传输距离远的时候能降低长线带来的误差, 做实验的时候应该看不出差别的

另外C3精度算不上高精度, 随便弄弄就行了

出0入4汤圆

发表于 2015-7-21 20:27:48 | 显示全部楼层
请问楼主  这传感器HBM的 哪里买的  价格怎么样?

还有这PCB  铺地的时候, 画圈的地方怎么搞的?

出0入0汤圆

 楼主| 发表于 2015-7-23 10:36:47 | 显示全部楼层
diyzxh 发表于 2015-7-21 20:27
请问楼主  这传感器HBM的 哪里买的  价格怎么样?

还有这PCB  铺地的时候, 画圈的地方怎么搞的? ...

传感器是客户的不清楚去哪里买的。
你说的PCB画圆圈是说哪个地方?

出0入0汤圆

发表于 2015-7-23 10:42:42 | 显示全部楼层
进口小开关 发表于 2015-7-23 10:36
传感器是客户的不清楚去哪里买的。
你说的PCB画圆圈是说哪个地方?

差不多两年了?问题解决没有。。

出0入0汤圆

 楼主| 发表于 2015-7-23 10:46:42 | 显示全部楼层
bad_fpga 发表于 2015-7-23 10:42
差不多两年了?问题解决没有。。

当时项目紧,直接换其他方案的芯片好使了。
ADS1232再也没用过,不知道是因为我程序的问题、线路板的问题还是淘宝买的芯片的问题。

出0入4汤圆

发表于 2015-7-29 22:15:35 | 显示全部楼层
上面的圈里面, 地跟空脚空余的是圆弧怎么搞的?



还有您换了什么芯片方案成功了?

本帖子中包含更多资源

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

x

出0入0汤圆

发表于 2016-1-17 12:54:15 | 显示全部楼层
收藏下正准备用ADS1232,看到楼主例子犹豫了

出0入0汤圆

发表于 2016-2-10 20:11:53 | 显示全部楼层
传感器 没有固定啊 悬臂梁的传感器一定要一端固定

出0入0汤圆

发表于 2018-8-9 20:58:11 | 显示全部楼层
f8023m 发表于 2013-3-27 16:22
方案很熟悉,哈哈

你好,在论坛上看见您的留言,试问一下,是不是做过称重传感器的项目,小白一个,求助!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-7-24 06:26

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

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