锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

Proteus实现电子秤仿真与称重检测显示

时间:2022-10-03 23:00:00 基于电阻应变片式体重秤

Proteus实现电子秤模拟和称重检测显示

  • 测量原理(或设计方案)
  • 原理图
  • 代码

测量原理(或设计方案)

数字电子秤总体框图如图所示:
在这里插入图片描述

  1. 金属箔应变片的工作原理
    当电阻线在外力作用下发生机械变形时,其电阻值发生变化,即电阻应变效应的描述
    电阻应变效应的关系

    金属箔应变片是光刻、腐蚀等工艺制成的应变敏感元件。如图所示,四个金属箔应变片(R1、R2、R3、R4)分别贴在双杆悬臂梁弹性体的上下两侧,弹性体在压力下变形,应变片随悬臂梁变形而拉伸或压缩
  2. 测量电路
    悬臂梁受力状态的变化可以通过应变片转换成串联或并联的电桥。
    如图所示,在整个桥测量电路中,两个具有相同应力性能的应变片连接到桥的对面,不同的连接到相邻边缘。当应变片的初始电阻值相等,变化量相等时,桥输出
    测量电路的功能是将电阻应变片的电阻变化转化为电压输出。由于惠斯登电桥具有抑制温度变化、侧向力干扰、解决称重
    传感器补偿问题等诸多优点,因此惠斯登电桥已广泛应用于称重传感器中。由于全桥等臂电桥灵敏度最高,各臂参数一致,各种干扰的影响容易相互抵消,称重传感器采用全桥等臂电桥。
    3.信号放大电路
    电子秤的信号放大电路采用三运放差分放大电路,其典型结构如图所示。它主要由两级差分放大器电路组成。其中,运放 A1,A2 同相输入可以大大提高电路的输入阻抗,减少电路对微弱输入信号的衰减;差异输入可以放大电路只放大差异信号,只跟随共模输入信号,使差异信号与共模信号之比(即共模抑制比) CMRR)得到提高。这样在运放 A3 在由核心部件组成的差分放大电路中CMRR 对电阻的要求可以显著降低 R3 和 R4,Rf 和 R5 精度匹配要求,使三运差分放大电路比简单差分放大电路具有更好的共模抑制能力。在 R1=R2,R3=R4,Rf=R5 在条件下,图 2-4 电路增益为:G=(1 2R1/Rg)Rf/R3。根据公式,可以改变电路增益的调节 Rg 阻值实现。

    图中,A1、A2、A3 可选择 OP07 集成操作放大器,A1,A2 同一输入端接全桥测量
    路的输出端
    4.A/D 转换电路
    TLC2543 是美国 TI 公司生产多渠道、低价 11 通道 12 位串行 A/D 转换器具有输入通道多、性价比高、单片机接口方便等特点,可广泛应用于各种数据采集系统。TLC2543 与外围电路连接简单,三个控制输入端为 CS(片选),输入/输出时钟(I/O CLOCK)以及串行数据输入端(DATA INPUT)。片内的 14 可选择通道多路器 11 任何输入中的任何一个或 3 在内部自测电压中,采样-保持自动,转换结束,EOC 输出变高。

    TLC2543 如图所示。引脚功能说明如下:
    AIN0~AIN10:模拟输入端,由内部多路器选择。对 4.1MHz 的 I/O CLOCK,驱动源阻抗必须小于或等于 50Ω;CS:片选端,CS 复位内部计数器由高到低变化,并控制和使能 DATA OUT、DATA INPUT 和 I/O CLOCK。CS 禁止从低到高的变化在设高的变化
    DATA INPUT 和 I/O CLOCK;(低电平有效,不需要时间 1.用时保持 0) DATA INPUT:串行数据输入端,串行数据 MSB 为前导并在 I/O CLOCK 的前 4 上升沿移动 4 用于选择下一个模拟输入信号或测试电压,之后 I/O CLOCK依次输入剩余部分;
    DATA OUT:A/D 三态输出端的转换结果 CS 高时,引脚处于高阻状态;当 CS
    当引脚较低时,引脚从前一次转换结果 MSB 相应的逻辑电平(10 位);
    EOC:转换结束。 I/O CLOCK 下降后,EOC 从高电平到低电平
    持有转换完成和数据准备传输;
    VCC、GND:电源正端、地面;
    REF+、REF-:正负基准电压端。 REF+接 VCC( 5V), REF-接 GND。最
    大输入电压范围取决于两端电压差;
    I/O CLOCK:时钟输入/输出端。

原理图

两个数字管一个用于显示对称重量,另一个用于显示对称重量A/D转换结果的显示可以添加到代码中,以方便我们调整放大电路中的电阻值控制放大倍数

代码

/* 电子秤 要求:测量范围0~1KG,测量精度0.001KG */   #include<reg51.h> #define uint unsigned int  #define uchar unsigned char   sbit SDO=P1^0;                                                         sbit SDI=P1^1; sbit CS=P1^2; sbit CLK=P1^3; sbit wei1=P2^0; sbit wei2=P2^1
       
        ; sbit wei3
        =
        P2
        ^
        2
        ; sbit wei4
        =
        P2
        ^
        3
        ; sbit wei21
        =
        P2
        ^
        4
        ; sbit wei22
        =
        P2
        ^
        5
        ; sbit wei23
        =
        P2
        ^
        6
        ; sbit wei24
        =
        P2
        ^
        7
        ; uchar code table
        [
        ]
        =
        { 
         
        0xC0
        ,
        0xF9
        ,
        0xA4
        ,
        0xB0
        ,
        0x99
        ,
        0x92
        ,
        0x82
        ,
        0xF8
        ,
        0x80
        ,
        0x90
        }
        ; 
        //共阳极数码管0-9的段码 uint 
        read2543
        (uchar con_word
        )
        ; 
        void 
        delay
        (uchar n
        )
        ; 
        void 
        main
        (
        ) 
        { 
          uint ad0
        ,ad1
        ; uchar ge
        ; uchar shi
        ; uchar bai
        ; uchar qian
        ; 
        while
        (
        1
        ) 
        { 
          ad0
        =
        read2543
        (
        0x00
        )
        ;
        //读入AD转换数据 
        //显示函数待补充; ad1
        =ad0
        ; qian
        = ad1
        /
        1000
        ; 
        //控制位数显示 bai
        =
        (ad1
        %
        1000
        )
        /
        100
        ; shi
        =
        (ad1
        %
        100
        )
        /
        10
        ; ge
        =ad1
        %
        10
        ; 
        P2 
        = 
        0x10
        ; 
        P3 
        =table
        [qian
        ]
        +
        0x80
        ;
        //小数点显示 
        delay
        (
        5
        )
        ; 
        P2 
        = 
        0x20
        ; 
        P3 
        =table
        [bai
        ]
        ; 
        delay
        (
        5
        )
        ; 
        P2 
        = 
        0x40
        ; 
        P3 
        =table
        [shi
        ]
        ; 
        delay
        (
        5
        )
        ; 
        P2 
        = 
        0x80
        ; 
        P3 
        =table
        [ge
        ]
        ; 
        delay
        (
        5
        )
        ; 
        } 
        } 
        //向TLC2543写命令及读转换后的数据 uint 
        read2543
        (uchar con_word
        ) 
        { 
          uint ad
        =
        0
        ,i
        ; 
        CLK
        =
        0
        ; 
        //时钟首先置低 
        CS
        =
        0
        ; 
        //片选为0,芯片工作 
        for
        (i
        =
        0
        ;i
        <
        12
        ;i
        ++
        ) 
        { 
          
        if
        (
        SDO
        ) 
        //首先读TLC2543的一位数据 ad
        =ad
        |
        0x01
        ; 
        SDI
        =
        (bit
        )
        (con_word
        &
        0x80
        )
        ; 
        //向TLC2543写一位数据 
        CLK
        =
        1
        ; 
        //时钟上升沿,TLC2543输出使能 
        delay
        (
        3
        )
        ; 
        CLK
        =
        0
        ; 
        //时钟下降沿,TLC2543输入使能 
        delay
        (
        3
        )
        ; con_word
        <<=
        1
        ; ad
        <<=
        1
        ; 
        } 
        CS
        =
        1
        ; ad
        >>=
        1
        ; 
        return
        (ad
        )
        ; 
        } 
        //延时程序 
        void 
        delay
        (uchar n
        ) 
        { 
          uchar i
        ,j
        ; 
        for
        (i
        =
        0
        ;i
        <n
        ;i
        ++
        ) 
        for
        (j
        =
        0
        ;j
        <
        125
        ;j
        ++
        )
        ; 
        } 
       
锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章