单片机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 63609|回复: 90
收起左侧

基于51单片机的称重传感器(电子秤)设计 有原理图 程序 pcb 视频 论文

  [复制链接]
hdqstone 发表于 2016-6-12 21:12 | 显示全部楼层 |阅读模式
下面是一个完整的基于51单片机的称重传感器设计,

0.png
电子秤的实物图
0.png
单片机电子秤的原理图

电子秤设计
本设计采用以stc89C52单片机为核心的低成本、高精度、微型化数字显示压力的硬件电路和软件设计方法。整个电路采用模块化设计,由主程序、初始化子程序、显示子程序等模块组成。压力传感器的信号经单片机综合分析处理,实现压力测量并显示。在此基础上设计了系统的总体方案,最后通过硬件和软件实现了各个功能模块。相关部分附有硬件电路图、程序流程图。
关键词:单片机;重力传感;显示
1 内容提要····················································
2设计内容及总体方···················································
3单元电路的具体设计··············································
4总体工作电路原理图··············································
5系统所需元件列表··············································
  • 内容提要

电子秤具有称重精确度高,简单实用,携带方便成成本低,制作简单,测量准确,分辨率高,不易损坏和价格便宜等优点。是家庭购物使用的首选。其电路构成主要有测量电路,差动放大电路,A/D转换,数据处理,显示电路。其中测量电路中最主要的元器件就称重传感器。称重传感器是传感中应用最多的一种,广泛应用于电子秤以及各种新型结构的测量装置。而差动放大电路的作用就是把传感器输出的微弱的模拟信号进行一定倍数的放大,以满足A/D转换器对输入信号电平的要求。A/D转换的作用是把模拟信号转变成数字信号,进行模数转换,然后把数字信号输送单片机处理,再传输到显示电路中去,最后由显示电路显示出测量结果。

  • 设计内容及总体方案

内容是设计一个电子秤
要求:
  • 称重传感器
  • 秤重范围为3kg
  • 电路由单片机最小系统,差动放大电路,A/D转换电路,串口程序下载电路,显示电路以及电源电路等部分组成
  • 工作原理,附系统原理图

首先利用由称重传感器组成的测量电路测出物质的重量信号,以模拟信号的方式差动放大器电路。其次,由差动放大器电路把传感器输出的微弱信号进行一定倍数的放大,然后送A/D转换电路中。再由A/D转换电路把接收到的模拟信号转换成数字信号,传送到单片机中进行处理,再有单片机控制显示电路,最后由显示电路显示数据。

具体方案如下:


0.png


三、单元电路的具体设计

1测量电路:重力传感器就是将被测物理量的变化电压的变化 , 再经相应的测量电路而最后显示或记录被测量值的变化。在这里,我们用重力传感器作为测量电路的核心。并应根据测量对象的要求,恰当地选择精度和范围度。

1称重传感器的组成以及原理

通过重物使重力传感器称重端受力弯曲,视其受力情况的不同输出相应线性的电压。通过重力传感器上的那个孔,可以以各种方式及电路的不同联接构建整个系统,即可测得重力、变形、扭矩等机械参数

  • 称重传感器的相关参数
1.产品编号: hl-8
2.技术参数
1.010.jpg
  • 接线方法
红 +
(输入 +)
白 -
(输出 -)
黑 -
(输入 -)
绿 +
(输出+)

引出线为四芯,为确保精度,一般不要调整线长。

4.受力方式
1.011.jpg

一般将传感器的接线端固定,另一端可悬挂重物也可托起重物。

1.012.jpg 5.传感器电路部分
1.013.jpg
  • 差动放大电路:

(1)原理:本次设计中,要求用一个放大电路,即差动放大电路,主要的元件就是差动放大器。在许多需要用A/D转换和数字采集的单片机系统中,多数情况下,传感器输出的模拟信号都很微弱,必须通过一个模拟放大器对其进行一定倍数的放大,才能满足A/D转换器对输入信号电平的要求,在此情况下,就必须选择一种符合要求的放大器。仪表仪器放大器的选型很多,这里使用一种用途非常广泛的仪表放大器,就是典型的差动放大器。它只需高精度LM358和几只电阻器,即可构成性能优越的仪表用放大器。广泛应用于工业自动控制、仪器仪表、电气测量等数字采集的系统中。本设计中差动放大电路结构图如下:


1.014.jpg

推导过程:I= 1.015.jpg

Vo=(R8+R7+R8)I

=(1+ 1.016.jpg )Vi,

则Avf=1+ 1.017.jpg

1.018.jpg 1.019.jpg

1.020.jpg 2)所用芯片:

  LM358内部包括有两个独立的、高增益、内部频率补偿的双运算放大器,适合于电源电压范围很宽的单电源使用,也适用于双电源工作模式。它的使用范围包括传感放大器、直流增益模块和其他所有可用单电源供电的使用运算放大器的场合。   

3A/D转换:A/D转换的作用是进行模数转换,把接收到的模拟信号转换成数字信号输出,我们这里选用ADC0832, ADC0832 是美国国家半导体公司生产的一种8 位分辨率、双通道A/D转换芯片。由于它体积小,兼容性,性价比高而深受单片机爱好者及企业欢迎,其目前已经有很高的普及率。A/D转换误的位数确定与整个测量控制系统所需测量控制的范围和精度有关,系统精度涉及的环节很多,包括传感器的变换精度,信号预处理电路精度A/D转换器以及输出电路等。
(1)ADC0832的特点
· 8位分辨率;
  · 双通道A/D转换;
  · 输入输出电平与TTL/CMOS相兼
  · 5V电源供电时输入电压在0~5V之间;   
  · 工作频率为250KHZ,转换时间为32μS;
  · 一般功耗仅为15mW;
  · 8P、14P—DIP(双列直插)、PICC 多种封装;
  · 商用级芯片温宽为0°C to +70°C,工业级芯片温宽为−40°C to +85   °C;

(2)ADC0832芯片接口说明
· CS_ 片选使能,低电平芯片使能。
  · CH0 模拟输入通道0,或作为IN+/-使用。
  · CH1 模拟输入通道1,或作为IN+/-使用。
  · GND 芯片参考0 电位(地)。
  · DI 数据信号输入,选择通道控制。
  · DO 数据信号输出,转换数据输出。
  · CLK 芯片时钟输入。
  · Vcc/REF 电源输入及参考电压输入(复用)。
1.021.jpg
     ADC0832
  • ADC0832部分电路图
1.022.jpg

  • 数据处理部分  
数据处理部分我们采用STC89C52单片机系统对ADC0832所采集回来的数据进行处理,然后将输出处理后的数据显示在数码管上。
(1)单片机对ADC0832 的控制原理
    正常情况下ADC0832 与单片机的接口应为4条数据线,分别是CS、CLK、DO、DI。但由于DO端与DI端在通信时并未同时有效并与单片机的接口是双向的,所以电路设计时可以将DO和DI 并联在一根数据线上使用。当ADC0832未工作时其CS输入端应为高电平,此时芯片禁用,CLK 和DO/DI 的电平可任意。当要进行A/D转换时,须先将CS使能端置于低电平并且保持低电平直到转换完全结束。此时芯片开始转换工作,同时由处理器向芯片时钟输入端CLK 输入时钟脉冲,DO/DI端则使用DI端输入通道功能选择的数据信号。在第1 个时钟脉冲的下沉之前DI端必须是高电平,表示启始信号。在第2、3个脉冲下沉之前DI端应输入2 位数据用于选择通道功能,其功能项见官方资料。如资料 所示,当此2 位数据为“1”、“0”时,只对CH0 进行单通道转换。当2位数据为“1”、“1”时,只对CH1进行单通道转换。当2 位数据为“0”、“0”时,将CH0作为正输入端IN+,CH1作为负输入端IN-进行输入。当2 位数据为“0”、“1”时,将CH0作为负输入端IN-,CH1 作为正输入端IN+进行输入。到第3 个脉冲的下沉之后DI端的输入电平就失去输入作用,此后DO/DI端则开始利用数据输出DO进行转换数据的读取。从第4个脉冲下沉开始由DO端输出转换数据最高位DATA7,随后每一个脉冲下沉DO端输出下一位数据。直到第11个脉冲时发出最低位数据DATA0,一个字节的数据输出完成。也正是从此位开始输出下一个相反字节的数据,即从第11个字节的下沉输出DATD0。随后输出8位数据,到第19 个脉冲时数据输出完成,也标志着一次A/D转换的结束。最后将CS置高电平禁用芯片,直接将转换后的数据进行处理就可以了。作为单通道模拟信号输入时ADC0832的输入电压是0~5V且8位分辨率时的电压精度为19.53mV。如果作为由IN+与IN-输入的输入时,可是将电压值设定在某一个较大范围之内,从而提高转换的宽度。但值得注意的是,在进行IN+与IN-的输入时,如果IN-的电压大于IN+的电压则转换后的数据结果始终为00H。

  • 单片机数据处理及数码管显示程序


  1. #include//包含相应的头文件
  2. #include
  3. #include
  4. sbit CS=P1^6;//定义数模转换器硬件对应引脚
  5. sbit CLK=P1^3;
  6. sbit DO=P1^4;
  7. sbit DI=P1^5;
  8. bit ADFlag;
  9. unsigned char code DIS[]={0xf7,0xfb,0xfd};  //定义数码管位码
  10. unsigned char code Datatab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//7段数码管段码表
  11. data unsigned char  Display[3];//定义临时存放数码管数值

  12. void Init_Timer1(void)
  13. {
  14. TMOD |= 0x10;                                             
  15. TH1=0xff;                                          /* Init value */
  16. TL1=0x00;
  17. //PT1=1;                   /* 优先级    */
  18. EA=1;                      /* interupt enable */
  19. ET1=1;                     /* enable timer1 interrupt */
  20. TR1=1;
  21. }

  22. unsigned char ReadADC(unsigned char channel)
  23. {
  24. unsigned char i,j;
  25. unsigned char Temp=0;
  26.   channel <<=3;               
  27.   channel |=3;
  28.      CS =0;                  //按照资料进行时序操作
  29. for(i=0;i<3;i++)            //输入指令,包含通道选择
  30.     {
  31.      CLK=0;
  32.               _nop_();
  33.      DI=channel;
  34.      channel>>=1;
  35.      _nop_();
  36.      CLK=1;  
  37.    }  
  38.    CLK=0;
  39.     _nop_();
  40.    CLK=1;
  41. for(j=0;j<8;j++)   //处理读入8位数据
  42.    {
  43.     CLK=0;
  44.               _nop_();
  45.     Temp=(Temp<<1)|DO;
  46.    _nop_();
  47.     CLK=1;
  48.     }
  49.   CS=1;
  50. return(Temp); //返回转换值
  51. }

  52. void Timer1_isr(void) interrupt 3 using 1//定时器1执行数码管动态扫描
  53. {
  54. static unsigned char count,j;
  55. TH1=0xfb;                            /* Init value */
  56. TL1=0x00;
  57. j++;
  58. if(j==200) {j=0;ADFlag=1;}
  59. P0=Display[count];
  60. P2=DIS[count];
  61. count++;
  62. if(count==3)
  63. count=0;
  64. }

  65. main()
  66. {
  67. unsigned char ADtemp;//定义中间变量
  68. // unsigned char temp;
  69. Init_Timer1();
  70.     while(1)
  71.                             {
  72.                             if(ADFlag)      //定时采集输入模拟量
  73.            {
  74.         ADFlag=0;
  75.                                ADtemp=ReadADC(1);
  76.                             Display[0]=Datatab[((ADtemp)/50)];//处理电压显示
  77.                               Display[1]=Datatab[((ADtemp)%50)/10];
  78.                               Display[2]=Datatab[((ADtemp)%50)%10];
  79.                                }
  80.                             }
复制代码

  • 单片机部分电路
1.023.jpg
5.显示以及电源部分
     关于显示部分,我们选用4位共阳数码管进行显示,电源部分我们采用一般的12V直流电源给重力传感器和LM358供电,另外单片机,ADC0832, 数码管供电我们采用LM7805将12V转成5V直流给它们提供电源。
以下为数码管显示部分电路:
1.024.jpg
以下为12V 以及5V电源部分:
1.025.jpg
  • MAX232串口程序下载及USB供电部分电路
下图为MAX232串口下载部分电路:
1.026.jpg
下图USB供电的下载部分电路:
1.027.jpg
  • 总体工作电路原理图

    1.028.jpg


数显电子秤具有准确度高,易于制作,成本低廉,体积小巧,实用等特点。本电路结构简单且易于调试。

、系统所需元件列表:

  元件/集成块

型号

功能

说明

U3

ADC0832

A/D转换

转换模-数信号

U4

LM358

高精度低温标双运算运放

放大传感信号

U2

STC89C52

单片机

数据处理

U1

MAX232

串口通信芯片

用于单片机程序下载

Q6~Q8

8550

三极管

数码管驱动

电容

104P  10uF

22UuF

30P

极性电容  瓷片电容

滤波  震荡等作用

A1

LM7805

电平转换

12V转5V

电阻

51K 330欧

1K  10K

4.7K

精密金属膜电阻

具体个数请参见电路图

M1

共阳数码管

显示输出

共阳数码管

B2

HL-8

压电转换

重量传感器

K1



连接电脑串口

串口头子(孔)

B1


下载程序通过usb给单片机以及MAX232供电

USB母头

S2,S3


控制电源通断

自锁开关

S1


单片机复位开关

微动开关

J3


单片机上P0口拉电阻

排阻

D1

LED

Usb供电是电源指示灯

LED

杂件


单排排针一排

跳线若干等





0.png 0.png



五、 调试

调试分为硬件调试与软件调试两个方面。

   1 硬件调试

         首先,对PCB板进行打孔和过孔操作,当过完所有孔后用数字万用表来检测地线、电源线、信号线是否全部连通,避免虚焊的存在。

其次,在已经过孔的PCB板中焊接电阻、瓷片电容、母头和晶振等器件,然后插上所有芯片的IC管座和数码管,在这一过程中,应遵循“先小头,后大头”的原则。

最后,装上所有IC芯片,插上stc89C52,接通电源,连接传感器、跳线等,先下载一个数码管示列程序,如果看到数码管点亮,说明硬件没有问题,然后就可以开始调试软件部分了。

   2 软件调试

为了检测显示部分的硬件连接情况,我先将数码管检测程序烧写stc89C52中,然后插进管座接通电源运行程序,如果看到数码管显示,证明系统显示部分的电路连接无误。

       确认显示部分电路和下载部分电路连接无误后,接下来编写AD0832程序。在这一步的设计中,我首先大量查阅了关于AD0832的pdf资料,弄清它的引脚图和时序图,下一步就是编写它的检测子程序。这一步的困难较大,在做这一步的过程中,我向在编程方面有经验的同学和老师请教,经过他们的指点,最后取得了成功。

             最后的一步就是检查运发电路,确认无误后,连上压力传感器。      

        通过以上几步调试,确认硬件连接没有错误后,就可以将单片机端的完整程序烧写进单片机中了。

           当一切准备就绪后,接通系统的电源。此时我们用手按压力传感器,传感器的电压变化经运放单元放大的电压信号送给AD采集,转化为数字信号,送给单片机处理,最后在数码管上显示。

由于时间较紧,没做到高精度,这些看似简单的要求,实现起来也并不是容易的,这就增加挑战性和刺激性。



0.png
所有资料下载包含电子秤的pcb和原理图程序,以及课程设计论文等等:
基于51单片机的称重传感器设计.rar (1.84 MB, 下载次数: 872)

评分

参与人数 11黑币 +102 收起 理由
XINGYALEE + 4 共享资料的黑币奖励!
as挂2 + 5 很给力!
Freedence + 5 共享资料的黑币奖励!
201730645473 + 5
xiegh + 5 共享资料的黑币奖励!
购物助手告诉我 + 5 很给力!
757205697 + 1 很给力!
大胸男 + 7 共享资料的黑币奖励!
151389477 + 5
慕凉秋白 + 10
admin + 50 共享资料的黑币奖励!

查看全部评分

151389477 发表于 2016-8-17 14:01 | 显示全部楼层
非常的需要
151389477 发表于 2016-8-24 10:16 | 显示全部楼层
不错的资料,要是能够配上相关的程序就更好了
gk18965 发表于 2016-8-24 11:16 | 显示全部楼层
6666谢谢分享
Sjhaaan 发表于 2016-10-11 09:37 | 显示全部楼层
非常好的
Sjhaaan 发表于 2016-10-11 09:45 | 显示全部楼层
非常好的
yanhuayileng 发表于 2016-12-5 16:44 | 显示全部楼层
很详细,谢谢分享
feel义 发表于 2016-12-8 11:45 | 显示全部楼层
很好的东西
adls 发表于 2016-12-9 06:13 | 显示全部楼层
很详细,谢谢分享
王企鹅 发表于 2016-12-11 20:17 | 显示全部楼层
6666谢谢分享
王企鹅 发表于 2016-12-11 20:17 | 显示全部楼层

非常感谢楼主的分享
独上丶西楼 发表于 2017-1-5 14:58 | 显示全部楼层
学习下
123456ABCD 发表于 2017-1-5 16:06 | 显示全部楼层
谢谢楼主
gk204 发表于 2017-2-11 16:48 | 显示全部楼层
币不够呀
zs3945 发表于 2017-3-14 13:14 | 显示全部楼层
挺不错,谢谢分享
printf8000 发表于 2017-3-23 23:15 来自手机 | 显示全部楼层
资料不错,多谢了!
printf8000 发表于 2017-3-23 23:20 来自手机 | 显示全部楼层
似乎源代码不全。
w515748522 发表于 2017-4-6 13:53 | 显示全部楼层
最喜欢DIY的那种
KeLe丶 发表于 2017-4-10 10:14 | 显示全部楼层
非常需要
julian2008 发表于 2017-4-10 15:17 | 显示全部楼层
最近正想做一个,谢谢分享
WE1866 发表于 2017-4-10 16:34 | 显示全部楼层
很详细,很复杂,谢谢分享
LYHKoaty 发表于 2017-4-20 13:06 | 显示全部楼层
WE1866 发表于 2017-4-10 16:34
很详细,很复杂,谢谢分享

你下载下来的可以分享给我么
LYHKoaty 发表于 2017-4-20 13:10 | 显示全部楼层
不错!很详细
LYHKoaty 发表于 2017-4-20 13:11 | 显示全部楼层
谢谢分享。。。
成森林 发表于 2017-4-23 10:40 | 显示全部楼层
谢谢楼主,我正需要,辛苦了!
萌萌的小吱吱 发表于 2017-5-17 12:32 | 显示全部楼层
黑币不够秋楼主分享
萌萌的小吱吱 发表于 2017-5-17 13:27 | 显示全部楼层
有人在么?我特别需要这个。有没有大神能发给我一份   谢谢
1359147682 发表于 2017-5-20 11:06 | 显示全部楼层
很不错,值得下载
a2242 发表于 2017-5-25 18:59 | 显示全部楼层
放大电路的L3的2脚怎么和LM358的4脚连在一起了,LM358的4脚不是GND吗?按道理不是要接地吗
a2242 发表于 2017-5-25 21:57 | 显示全部楼层
为什么LMV358没有接GND啊
vody 发表于 2017-10-1 10:28 | 显示全部楼层
我特别需要这个。有没有大神能发给我一份   谢谢
liushui2011 发表于 2017-10-11 09:38 | 显示全部楼层
不错,虽然功能很基本,对于初学者来说也够了
wangw8155 发表于 2017-10-21 13:46 | 显示全部楼层
来参考一下
yyt895213586 发表于 2018-1-22 09:48 | 显示全部楼层
谢谢分享
林大爷 发表于 2018-3-8 14:56 来自手机 | 显示全部楼层
很好!!!
舒马赫 发表于 2018-3-12 16:38 来自手机 | 显示全部楼层
感谢楼主分享,参考一下啦
xiegh 发表于 2018-3-14 16:02 | 显示全部楼层
先感谢一下,再问一下压缩包里有相应的程序吗
tony_chxd 发表于 2018-3-15 11:25 | 显示全部楼层
好详细,值得学习
jianangege 发表于 2018-3-20 18:19 | 显示全部楼层
看着挺好的啊
wwyjk 发表于 2018-3-20 21:40 | 显示全部楼层
非常不错
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|单片机论坛 |51黑电子论坛6群 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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