进口小开关 发表于 2013-3-24 23:27:33

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

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

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

下面是电源和ADS1232的电路



传感器和PCB的连接

称重传感器的接线图

PCB








进口小开关 发表于 2013-3-24 23:30:21

#include "ADS1232.H"
#include "port.h"


/*
sbit ADS1232_DOUT= P2^0;
sbit ADS1232_SCLK= P2^1;
sbit ADS1232_PWDN= P2^2;
sbit ADS1232_SPEED = P2^3;
sbit ADS1232_GAIN1 = P2^4;
sbit ADS1232_GAIN0 = P2^5;
sbit ADS1232_A0    = P2^6;
sbit ADS1232_TEMP= P2^7;
*/

#define ADS1232_SCLK_HIGH    do{ADS1232_SCLK=1;}while(0);
#define ADS1232_SCLK_LOW   do{ADS1232_SCLK=0;}while(0);
#define ADS1232_PWDN_HIGH    do{ADS1232_PWDN=1;}while(0);
#define ADS1232_PWDN_LOW   do{ADS1232_PWDN=0;}while(0);
#define ADS1232_SPEED_HIGH   do{ADS1232_SPEED=1;}while(0);
#define ADS1232_SPEED_LOW    do{ADS1232_SPEED=0;}while(0);
#define ADS1232_GAIN1_HIGH   do{ADS1232_GAIN1=1;}while(0);
#define ADS1232_GAIN1_LOW    do{ADS1232_GAIN1=0;}while(0);
#define ADS1232_GAIN0_HIGH   do{ADS1232_GAIN0=1;}while(0);
#define ADS1232_GAIN0_LOW    do{ADS1232_GAIN0=0;}while(0);
#define ADS1232_A0_HIGH      do{ADS1232_A0=1;}while(0);
#define ADS1232_A0_LOW       do{ADS1232_A0=0;}while(0);
#define ADS1232_TEMP_HIGH    do{ADS1232_TEMP=1;}while(0);
#define ADS1232_TEMP_LOW   do{ADS1232_TEMP=0;}while(0);

void ADS1232_init(unsigned char channel, unsigned char gain, unsigned char speed, unsigned char temp)
{
    ADS1232_SCLK = 0;
    ADS1232_PWDN_LOW;
    if(channel==CHANNEL1)
    {
      ADS1232_A0_LOW;
    }
    else if(channel==CHANNEL2)
    {
      ADS1232_A0_HIGH;
    }
   
    if(GAIN_1==gain)
    {
      ADS1232_GAIN1_LOW;
      ADS1232_GAIN0_LOW;
    }
    else if(GAIN_2==gain)
    {
      ADS1232_GAIN1_LOW;
      ADS1232_GAIN0_HIGH;
    }
    else if(GAIN_64==gain)
    {
      ADS1232_GAIN1_HIGH;
      ADS1232_GAIN0_LOW;
    }
    else if(GAIN_128==gain)
    {
      ADS1232_GAIN1_HIGH;
      ADS1232_GAIN0_HIGH;
    }
   
    if(SPEED_10==speed)
    {
      ADS1232_SPEED_LOW;
    }
    else if(SPEED_80==speed)
    {
      ADS1232_SPEED_HIGH;
    }
   
    if(TEMP_ON==temp)
    {
      ADS1232_TEMP_HIGH;
    }
    else if(TEMP_OFF==temp)
    {
      ADS1232_TEMP_LOW;
    }
   
    ADS1232_PWDN_HIGH;
}


char ADS1232_read_value(long int *value)
{
    long int temp=0;
    unsigned char i=0;
   
    if(ADS1232_READY==ADS1232_DOUT)
    {
      ADS1232_SCLK_LOW;
      for(i=0; i<24; i++)
      {
            ADS1232_SCLK_HIGH;
            temp <<= 1;
            if(1==ADS1232_DOUT)
            {
                temp |= 0x01;
            }
            ADS1232_SCLK_LOW;
      }
      ADS1232_SCLK_HIGH;// The 25th SCLK to force DOUT high
      ADS1232_SCLK_LOW;
      if((temp&0x800000)==0x800000)
      {
            temp ^= 0Xffffff;
            temp = -(temp+1);
      }
      *value = temp;
      return ADS1232_READ_FINISH;
    }
    else
    {
      return ADS1232_BUSY;
    }
}
下面是ADS1232的驱动代码

进口小开关 发表于 2013-3-24 23:32:35

主函数也来了int main(void)
{
        signed char brightness=8;
    long int num = 0;
    int i=-20;
    char temp=0;
        TM1638_init();
        TM1638_set_brightness(4);
        uart_init(9600);
    timer_init();
    ADS1232_init(CHANNEL2, GAIN_128, SPEED_10, TEMP_OFF);

    EA = 1;
    while(1)
    {
      communicate_with_HMI();
      TM1638_display_num(i++);
      timer0_main_loop();
      key_main_loop();
      if(key1_on)
      {
            LED1 = ~LED1;
      }
      temp = ADS1232_read_value(&num);
      if(temp==ADS1232_READ_FINISH)
      {
            printf("%8ld\r\n", num);
      }
      if(f_1s)
      {
            LED2 = ~LED2;
      }
    }
}

进口小开关 发表于 2013-3-25 18:42:59

顶一下吧,希望有人能指点一下。

一刀断天下 发表于 2013-3-25 22:29:45

做这么高精度的采集,7805供电好像不好吧。

进口小开关 发表于 2013-3-25 22:45:18

一刀断天下 发表于 2013-3-25 22:29 static/image/common/back.gif
做这么高精度的采集,7805供电好像不好吧。

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

wallelectronics 发表于 2013-3-26 09:42:57

你传感器是不是没安装好?还需要一个东西把传感器“托”起来的。

andyli 发表于 2013-3-26 10:11:42

固定端和加载端请先确认。。。
话说,传感器你用原配的插头不是很好么?

进口小开关 发表于 2013-3-26 13:48:45

andyli 发表于 2013-3-26 10:11 static/image/common/back.gif
固定端和加载端请先确认。。。
话说,传感器你用原配的插头不是很好么? ...

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

进口小开关 发表于 2013-3-26 13:51:08

wallelectronics 发表于 2013-3-26 09:42 static/image/common/back.gif
你传感器是不是没安装好?还需要一个东西把传感器“托”起来的。

按照德州仪器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很不敏感。

蛋疼飞 发表于 2013-3-26 15:38:31

前辈能给个联系方式么?我也在做电子秤,用的是hx711芯片,可是现在出了点问题。想找人请教一下{:cry:}

keshipt 发表于 2013-3-26 16:15:27

进口小开关 发表于 2013-3-25 22:45 static/image/common/back.gif
您给推荐个好的电源芯片吧?
或者电源方案,输入是24V工业电源。

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

一刀断天下 发表于 2013-3-26 19:28:51

这种东西用这种供电方式都不好,可以加个电压基准,或是用些稳压芯片自己做电路。

f8023m 发表于 2013-3-27 16:22:08

keshipt 发表于 2013-3-26 16:15 static/image/common/back.gif
推荐用LM2576 输出端加223S 三端滤波器,我们很多工业产品都用这个方案

方案很熟悉,哈哈

f8023m 发表于 2013-3-27 16:24:29

给传感器供电不是说电压一定要准,你要是来个高精度的2.5V片子做基准的话你就大大的错了,传感器供电和基准要是一个电源,一块波动

marshallemon 发表于 2013-3-27 16:26:37

这1232可以不接外部晶振?用过124X系列的是需要外接晶振的。短路模拟输入看看会变不?

sgzzour 发表于 2013-3-27 17:36:10

f8023m 发表于 2013-3-27 16:24 static/image/common/back.gif
给传感器供电不是说电压一定要准,你要是来个高精度的2.5V片子做基准的话你就大大的错了,传感器供电和基准 ...

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

进口小开关 发表于 2013-3-28 07:48:45

keshipt 发表于 2013-3-26 16:15 static/image/common/back.gif
推荐用LM2576 输出端加223S 三端滤波器,我们很多工业产品都用这个方案

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

keshipt 发表于 2013-3-28 09:16:23

进口小开关 发表于 2013-3-28 07:48 static/image/common/back.gif
您好,223S是一种什么样的滤波器?

三端滤波器

LYG75 发表于 2013-3-29 22:25:24

楼主厉害啊

OYL 发表于 2013-5-8 08:31:29

正好也在做电子称。

lklhzu 发表于 2014-4-26 15:18:23

本帖最后由 lklhzu 于 2014-4-26 15:19 编辑

keshipt 发表于 2013-3-26 16:15
推荐用LM2576 输出端加223S 三端滤波器,我们很多工业产品都用这个方案

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

zdc 发表于 2014-6-1 21:45:13

ldo也要 看psrr的,纹波抑制比。

marshallemon 发表于 2014-6-1 21:48:30

2mV/V 这个怎么理解?

进口小开关 发表于 2014-6-27 10:43:21

marshallemon 发表于 2014-6-1 21:48
2mV/V 这个怎么理解?

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

rockyyangyang 发表于 2014-6-30 13:36:52

不错                                 

gamalot 发表于 2014-8-2 22:07:44

4线和6线没什么本质的区别, 只是在传输距离远的时候能降低长线带来的误差, 做实验的时候应该看不出差别的

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

diyzxh 发表于 2015-7-21 20:27:48

请问楼主这传感器HBM的 哪里买的价格怎么样?

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

进口小开关 发表于 2015-7-23 10:36:47

diyzxh 发表于 2015-7-21 20:27
请问楼主这传感器HBM的 哪里买的价格怎么样?

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

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

bad_fpga 发表于 2015-7-23 10:42:42

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

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

进口小开关 发表于 2015-7-23 10:46:42

bad_fpga 发表于 2015-7-23 10:42
差不多两年了?问题解决没有。。

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

diyzxh 发表于 2015-7-29 22:15:35

上面的圈里面, 地跟空脚空余的是圆弧怎么搞的?



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

aaabbbad 发表于 2016-1-17 12:54:15

收藏下正准备用ADS1232,看到楼主例子犹豫了

langshan 发表于 2016-2-10 20:11:53

传感器 没有固定啊 悬臂梁的传感器一定要一端固定

落草火子 发表于 2018-8-9 20:58:11

f8023m 发表于 2013-3-27 16:22
方案很熟悉,哈哈

你好,在论坛上看见您的留言,试问一下,是不是做过称重传感器的项目,小白一个,求助!
页: [1]
查看完整版本: 第一次做项目,ADS1232接称重传感器,不怎么变化,有图~~