电子称单片机制作.docx

上传人:b****7 文档编号:9076685 上传时间:2023-02-03 格式:DOCX 页数:27 大小:2.17MB
下载 相关 举报
电子称单片机制作.docx_第1页
第1页 / 共27页
电子称单片机制作.docx_第2页
第2页 / 共27页
电子称单片机制作.docx_第3页
第3页 / 共27页
电子称单片机制作.docx_第4页
第4页 / 共27页
电子称单片机制作.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

电子称单片机制作.docx

《电子称单片机制作.docx》由会员分享,可在线阅读,更多相关《电子称单片机制作.docx(27页珍藏版)》请在冰豆网上搜索。

电子称单片机制作.docx

电子称单片机制作

电子称--单片机制作

 

 

————————————————————————————————作者:

————————————————————————————————日期:

 

一、设计任务及要求:

1、设计任务:

电子称的设计

2、要求:

1、讨论传感器的选择方案。

2、系统电路仿真。

3、完成实物焊接

 

指导教师签名:

年月日

二、指导教师评语:

 

项目成绩:

 

指导教师签名:

年月日

设计项目成绩评定表

设计报告书目录

 

一、设计目的

1、熟悉单片机的工作原理及各I/O口的控制。

2、掌握C51语言编程方法。

3、熟悉压力传感器的工作原理及控制方式。

4、通过锻炼动手能力,加深对所学知识的理解,并提高学生的系统分析解

决问题的能力。

二、设计思路

1、设计系统原理图和模块框图、流程图。

2、根据功能编写代码。

3、系统仿真及实物检测。

三、设计过程

3.1系统组成

本数字电子秤系统可分为单片机控制电路、A/D转换电路、传感器、LCD显示。

3.1.1单片机最小系统

单片机最小系统主要由电源、复位、晶振等部分组成。

单片机最小系统电路图如图2所示:

图2单片机最小系统电路图

(1)电源部分通过USB供电,输入5V电压。

(2)复位电路由电容和电阻组成,目的是防止系统跑飞。

(3)晶振电路采用12MHZ晶振,给芯片提供时钟频率。

3.1.2应变式电阻传感器

(1)应变片式电阻传感器是以应变片为传感器元件的传感器。

它具有以下优点:

1.精度高,测量范围广;

2.使用寿命长,性能稳定可靠。

3.结构简单、尺寸小、重量轻,因此在测量时,对工件工作状态及应力分布影响小。

4.频率响应特性好。

应变片响应时间约100ns;

5.可在高低温、高速、高温、强烈振动、强磁场、核辐射和化学腐蚀等恶劣环境条件下工作;

6.应变片种类繁多,价格便宜。

电阻应变片的工作原理是基于电阻应变效应,即在导体产生机械形变时,它的电阻值相应发生变化。

应变片式电阻传感器应用很广。

本设计采用的是梁式力传感器,该传感器结构简单、灵敏度高。

适用于小压力测量。

(2)应变片式电阻传感器的结构和原理

电阻应变式传感器是将被测量的力,通过它产生的金属弹性变形转换成电阻变化的原件。

由电阻应变片和测量电路两部分组成。

常用的电阻应变片有两种:

电阻应变片和半导体应变片,本设计采用的是电阻应变片,为获得高电阻值,电阻丝排成网状,并贴在绝缘的基片上,电阻丝两端引出导线,线珊上面有覆盖层,起保护作用。

电阻应变片也有误差,产生的因素很多,所以在测量时我们一定要注意。

其中的温度的影响最重要,环境温度影响电阻值变化的原因主要是:

A:

电阻丝温度系数引起的。

B:

电阻丝与被测原件对桥接零点和输出,灵敏度的影响,即使采用同一批应变也会因应变片之间稍有温度特性之差而引起误差,所以对要求精度较高的传感器,必须进行温度补偿,解决的办法是在被粘贴的基片上采用适当及温度系数的自动补偿,并从外部对它加以适当的补偿。

非线性误差是传感器特性中最重要的一点。

产生非线性误差的原因很多,一般来说主要由结构设计决定,通过线性补偿,也可以得到改善。

滞后和蠕变是关于应变片及粘合剂的误差。

由于粘合剂为高分子材料,其特性随温度变化较大,所以称重传感器必须在规定的温度范围内使用

电阻应变片的工作原理是基于电阻应变效应,即在导体产生机械形变时,它的电阻值相应发生变化。

设有一根电阻丝,如图所示。

它在未受力时的原始电阻值为R=ρ(l/S)。

应变式传感器常用的测量电路有单臂电桥、差动半桥和差动全桥,其中差动全桥可提高电桥的灵敏度,消除电桥的非线性误差,并可消除温度误差等共模干扰。

一般在测量中都使用4片应变片组成差动全桥,本设计所采用的传感器就是全桥测量电路。

桥式测量电路有四个电阻,其中任何一个都可以是电阻应变片电阻,电桥的一个对角线接入工作电压U,另一个对角线位输出电压Uo。

其特点是:

当四个桥臂电阻达到相应关系时,电桥输出为零,或则就有电压输出,可用灵敏检流计来测量,所以电桥能够精确地测量微小的电阻变化。

应变电阻作为桥臂电阻接在电桥电路中。

无压力时,电桥平衡,输出电压为零;有压力时,电桥的桥臂电阻值发生变化,电桥失去平衡。

全桥测量电路中,将受力性质相同的两片应变片接入电桥对边。

其输出灵敏度比半桥提高了一倍,非线性误差和温度误差均得到了改善。

(3)称重传感器参

技术参数表:

表2.1HL-8型称重传感器主要技术参数表

受力方式:

 

图2.5HL-8型传感器受力方式图

 

 

称重传感器的工作原理:

应变式力传感器的受力工作原理如图2所示

图应变式力传感器的受力工作原理

将应变片粘贴到受力的力敏型弹性元件上,当弹性元件受力产生变形时,应变片产生相应的应变,转化成电阻变化。

双孔悬臂平行梁应变式称重传感器

 

将应变片接成如图所示的电桥,力引起的电阻变化将转换为测量电路的电压变化,通过测量输出电压的数值,再通过换算即可得到所测量物体的重量。

 

图应变式力传感器的电路工作原理

电桥的四个臂上接工作应变片,都参与机械变形,同处一个温度场,温度影响相互抵消,电压输出灵敏度高。

当4个应变片的材料、

阻值都想同时,可推导出以下公式:

DUBC=EK4(e1-e2+e3-e4)=EK44e1

 

 

图压力传感器与HX711称重传感器专用模拟/数字(A/D)转换器芯片的连接

3.1.3输出显示电路

(1)HX711称重传感器专用模拟/数字(A/D)转换器芯片

简介:

HX711是一款专为高精度称重传感器而设计的24位A/D转换器芯片。

与同类型其它芯片相比,该芯片集成了包括稳压电源、片内时钟振荡器等其它同类型芯片所需要的外围电路,具有集成度高、响应速度快、抗干扰性强等优点。

降低了电子秤的整机成本,提高了整机的性能和可靠性。

该芯片与后端MCU芯片的接口和编程非常简单,所有控制信号由管脚驱动,无需对芯片内部的寄存器编程。

输入选择开关可任意选取通道A或通道B,与其内部的低噪声可编程放大器相连。

通道A的可编程增益为128或64,对应的满额度差分输入信号幅值分别为±20mV或±40mV。

通道B则为固定的32增益,用于系统参数检测。

芯片内提供的稳压电源可以直接向外部传感器和芯片内的A/D转换器提供电源,系统板上无需另外的模拟电源。

芯片内的时钟振荡器不需要任何外接器件。

上电自动复位功能简化了开机的初始化过程。

特点:

1.两路可选择差分输入

2.片内低噪声可编程放大器,可选增益为64和128

3.片内稳压电路可直接向外部传感器和芯片内A/D转换器提供电源

4.片内时钟振荡器无需任何外接器件,必要时也可使用外接晶振或时钟

5.上电自动复位电路

6.简单的数字控制和串口通讯:

所有控制由管脚输入,芯片内寄存器无需编程

7.可选择10Hz或80Hz的输出数据速率

8.同步抑制50Hz和60Hz的电源干扰

9.耗电量(含稳压电源电路):

典型工作电流:

<1.7mA,断电电流:

<1μA

10.工作电压范围:

2.6~5.5V

11.工作温度范围:

-20~+85℃

12.16脚的SOP-16封装

管脚说明:

模拟输入:

通道A模拟差分输入可直接与桥式传感器的差分输出相接。

由于桥式传感器输出的信号较小,为了充分利用A/D转换器的输入动态范围,该通道的可编程增益较大,为128或64。

这些增益所对应的满量程差分输入电压分别±20mV或±40mV。

通道B为固定的32增益,所对应的满量程差分输入电压为±80mV。

通道B应用于包括电池在内的系统参数检测。

供电电源:

数字电源(DVDD)应使用与MCU芯片相同的的数字供电电源。

HX711芯片内的稳压电路可同时向A/D转换器和外部传感器提供模拟电源。

稳压电源的供电电压(VSUP)可与数字电源(DVDD)相同。

稳压电源的输出电压值(VAVDD)由外部分压电阻R1、R2和芯片的输出参考电压VBG决定(图1),VAVDD=VBG(R1+R2)/R2。

应选择该输出电压比稳压电源的输入电压(VSUP)低至少100mV。

如果不使用芯片内的稳压电路,管脚VSUP和管脚AVDD应相连,并接到电压为2.6~5.5V的低噪声模拟电源。

管脚VBG上不需要外接电容,管脚VFB应接地,管脚BASE为无连接。

时钟选择:

如果将管脚XI接地,HX711将自动选择使用内部时钟振荡器,并自动关闭外部时钟输入和晶振的相关电路。

这种情况下,典型输出数据速率为10Hz或80Hz。

如果需要准确的输出数据速率,可将外部输入时钟通过一个20pF的隔直电容连接到XI管脚上,或将晶振连接到XI和XO管脚上。

这种情况下,芯片内的时钟振荡器电路会自动关闭,晶振时钟或外部输入时钟电路被采用。

此时,若晶振频率为11.0592MHz,输出数据速率为准确的10Hz或80Hz。

输出数据速率与晶振频率以上述关系按比例增加或减少。

使用外部输入时钟时,外部时钟信号不一定需要为方波。

可将MCU芯片的晶振输出管脚上的时钟信号通过20pF的隔直电容连接到XI管脚上,作为外部时钟输入。

外部时钟输入信号的幅值可低至150mV。

串口通讯:

串口通讯线由管脚PD_SCK和DOUT组成,用来输出数据,选择输入通道和增益。

当数据输出管脚DOUT为高电平时,表明A/D转换器还未准备好输出数据,此时串口时钟输入信号PD_SCK应为低电平。

当DOUT从高电平变低电平后,PD_SCK应输入25至27个不等的时钟脉冲(图二)。

其中第一个时钟脉冲的上升沿将读出输出24位数据的最高位(MSB),直至第24个时钟脉冲完成,24位输出数据从最高位至最低位逐位输出完成。

第25至27个时钟脉冲用来选择下一次A/D转换的输入通道和增益,参见表三。

表三输入通道和增益选择

PD_SCK的输入时钟脉冲数不应少于25或多于27,否则会造成串口通讯错误。

当A/D转换器的输入通道或增益改变时,A/D转换器需要4个数据输出周期才能稳定。

DOUT在4个数据输出周期后才会从高电平变低电平,输出有效数据。

复位和断电:

当芯片上电时,芯片内的上电自动复位电路会使芯片自动复位。

管脚PD_SCK输入用来控制HX711的断电。

当PD_SCK为低电平时,芯片处于正常工作状态。

如果PD_SCK从低电平变高电平并保持在高电平超过60μs,HX711即进入断电状态(图三)。

如使用片内稳压电源电路,断电时,外部传感器和片内A/D转换器会被同时断电。

当PD_SCK重新回到低电平时,芯片会自动复位后进入正常工作状态。

芯片从复位或断电状态进入正常工作状态后,通道A和增益128会被自动选择作为第一次A/D转换的输入通道和增益。

随后的输入通道和增益选择由PD_SCK的脉冲数决定,参见串口通讯一节。

芯片从复位或断电状态进入正常工作状态后,A/D转换器需要4个数据输出周期才能稳定。

DOUT在4个数据输出周期后才会从高电平变低电平,输出有效数据。

LCD显示:

LCD液晶显示器是LiquidCrystalDisplay的简称,LCD的构造是在两片平行的玻璃当中放置液态的晶体,两片玻璃中间有许多垂直和水平的细小电线,透过通电与否来控制杆状水晶分子改变方向,将光线折射出来产生画面。

比LED要好的多,但是价钱较其贵。

在日常生活中,我们对液晶显示器并不陌生。

液晶显示模块已作为很多电子产品的通过器件,如在计算器、万用表、电子表及很多家用电子产品中都可以看到,显示的主要是数字、专用符号和图形。

在单片机的人机交流界面中,一般的输出方式有以下几种:

发光管、LED数码管、液晶显示器。

发光管和LED数码管比较常用,软硬件都比较简单,在前面章节已经介绍过,在此不作介绍,本章重点介绍字符型液晶显示器的应用。

在单片机系统中应用晶液显示器作为输出器件有以下几个优点:

(1)显示质量高:

由于液晶显示器每一个点在收到信号后就一直保持那种色彩和亮度,恒定发光,而不像阴极射线管显示器(CRT)那样需要不断刷新新亮点。

因此,液晶显示器画质高且不会闪烁。

(2)数字式接口:

液晶显示器都是数字式的,和单片机系统的接口更加简单可靠,操作更加方便。

(3)体积小、重量轻:

液晶显示器通过显示屏上的电极控制液晶分子状态来达到显示的目的,在重量上比相同显示面积的传统显示器要轻得多。

(4)功耗低:

相对而言,液晶显示器的功耗主要消耗在其内部的电极和驱动IC上,因而耗电量比其它显示器要少得多。

液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。

液晶显示器具有厚度薄、适用于大规模集成电路直接驱动、易于实现全彩色显示的特点,目前已经被广泛应用在便携式电脑、数字摄像机、PDA移动通信工具等众多领域。

1602字符型LCD:

字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,目前常用16*1,16*2,20*2和40*2行等的模块。

我们以1602LCD字符型液晶显示器为例。

1602LCD分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别,

四、系统调试与结果

4.1系统原理图

系统原理图如图所示:

图4.1系统原理图

图4.2蜂鸣器原理图

图4.3lcd原理图

4.3系统整体测试及实物图如下图所示:

图5实物图

图63个20克砝码实物图

系统硬件调试比较简单,首先检查电路的焊接是否正确,用万用表检测电路板是否存在短路或者断路。

经检测后再接上电源,用万用表测量电源部分的各个输出电压值,经调试正常后方可接到各部分电路。

先按下单片机复位键将系统复位,调用液晶显示子函数显示1234,显示无误后,接上传感器和由24位串行A/D转换芯片构成的调理电路和A/D转换电路,将全部的程序烧到芯片中,观察液晶上是否显示0000,如果没有显示,即进行软件调零工作,待调零完成后,用手给传感器慢慢施加压力,看数液晶的数值是否也跟随增大,当放手后,看液晶的数值是否回到0000附近。

AD值反向转换重力值的参数计算满量程输出电压=激励电压*灵敏度1.0mv/v,例如:

供电电压是5v乘以灵敏度2.0mv/v=满量程10mv。

相当于有10Kg重力产生时候产生10mV的电压。

假设重力为AKg,(x<10Kg),测量出来的AD值为y,10Kg传感器输出,发送给AD模块儿的电压为AKg*8.6mV/10Kg=0.86AmV经过128倍增益后为128*0.86A=110.08AmV转换为24bit数字信号为110.08AmV*224/4.3V=429496.7296A所以y=429496.7296A/100=4294.967296A因此得出A=y/4294.967296Kg≈y/4.30g所以得出程序中计算公式Weight_Shiwu=(unsignedint)((float)Weight_Shiwu/4.90+0.05);

误差分析

由于所采用的传感器灵敏度很高,如果传感器在水平方向固定的不是很好,会存在一定的误差。

另外传感器的引线也很灵敏,稍微触动一下,也会产生误差。

五、主要元器件与设备

名称

规格

数量

STC芯片

STC89C52RC

1

陶瓷电容

33p

2

晶振

12MHZ

1

电源插头

直流/DC

1

排针座

单排*4

2

杜邦线

若干

蜂鸣器

1

压力传感器

HL-8

1

AD转换模块

Hx711

1

Lcd显示屏

Lcd1602

1

砝码

20g

10

六、课程设计的总结和建议

6.1、设计总结

通过五天的课程设计学习,虽然设计时间短暂。

但我们还是不懈努力做出来了实物。

设计过程中遇到许多错误与不理解的部分。

通过查找资料以及问老师得以解决。

从选材道开始制作,从理论到实践。

不仅巩固了一起爱你学到的知识。

而且学到了单片机的知识。

通过这次课程设计使我们懂得理论与实际相结合的重要性,通过制作电子称发现自己对AD转换不是很了解,通过查找资得以掌握。

程序需加强对LCD的理解。

传感器已经可以熟练应用。

我们的工作是一个3个人的小组。

在原理了解透彻的前提下。

我们分工进行。

团结协作是我们设计成功的一项非常重要的保障。

6.2、设计建议

希望这样的课程设计能多多举行,这样可以提高我们的动手能力。

加强对理论知识的理解和应用。

七、附件

全部程序

#include

#include

#include

#include

#defineucharunsignedchar

#defineuintunsignedint

#defineulongunsignedlong

intweight;

uinttemp;

sbitlcdrs=P2^6;

sbitlcdwr=P2^5;

sbitlcden=P2^7;

sbithx711_dout=P2^0;

sbithx711_sck=P2^1;

sbitspk=P2^2;

/*lcd第一行显示*/

unsignedchari;

unsignedcharcodeTab[]={"dianzicheng"};

/*LCD1602显示程序*/

voiddelayms(uintk)

{

uinti,j;

for(i=k;i>0;i--)

for(j=110;j>0;j--);

}

voidwrite_com(ucharcom)//写命令

{

lcdrs=0;

P0=com;

delayms(5);

lcden=1;

delayms(5);

lcden=0;

}

voidwrite_date(uchardate)//写数据

{

lcdrs=1;

P0=date;

delayms(5);

lcden=1;

delayms(5);

lcden=0;

}

voidinit_1602()

{

lcden=0;

lcdwr=0;

write_com(0x38);//设置16x2显示5x7点阵,8位数据接口

write_com(0x0c);//设置开显示,不显示光标

write_com(0x06);//写一个字符后地址指针加1

write_com(0x01);//显示清0,数据指针清0

}

voiddisplaywpm(void)

{

ucharcodetable[]="W:

kg";

write_com(0x80+0x40);

write_date(table[0]);

write_date(table[1]);

write_com(0x80+0x47);

write_date(table[2]);

write_date(table[3]);

}

voidweight_shuzhi(uintaaa)

{

ucharidataweighttable[4]={0,0,0,0};

weighttable[3]=aaa%10;

weighttable[2]=aaa/10%10;

weighttable[1]=aaa/100%10;

weighttable[0]=aaa/1000;

write_com(0x80+0x42);//设置显示位置

write_date(0x30+weighttable[0]);

write_com(0x80+0x43);//设置显示位置

write_date('.');

write_com(0x80+0x44);//设置显示位置

write_date(0x30+weighttable[1]);

write_com(0x80+0x45);//设置显示位置

write_date(0x30+weighttable[2]);

write_com(0x80+0x46);//设置显示位置

write_date(0x30+weighttable[3]);

write_com(0x4c);//不显示光标

}

/*hx711程序*/

voidDelay__hx711_us(void)

{

_nop_();

_nop_();

}

ulongReadCount(void)//增益128

{

ulongcount;

uchari;

hx711_dout=1;

Delay__hx711_us();

hx711_sck=0;

count=0;

while(hx711_dout);

for(i=0;i<24;i++)

{

hx711_sck=1;

count=count<<1;

hx711_sck=0;

if(hx711_dout)

count++;

}

hx711_sck=1;

Delay__hx711_us();

hx711_sck=0;

return(count);

}

/*皮重,获得重量的程序*/

voidget_pizhong()//获取皮重,秤盘重量

{

uintj;

ulonghx711_dat;

for(j=0;j<5;j++)

delayms(10);

hx711_dat=ReadCount();//HX711AD转换数据处理

temp=(uint)(hx711_dat/100);//缩放long数据为int型,方便处理

}

voidget_weight()//获得被测物体重量

{

ulonghx711_data,a;

uintget,aa;

hx711_data=ReadCount();//HX711AD转换数据处理

get=(uint)(hx711_data/100);

if(get<(temp+4))//判断是否有正向重量

{

while

(1)

{

weight=0;

weight_shuzhi(weight);//显示重量

hx711_data=ReadCount();//HX711AD输出数据处理

get=(uint)(hx711_data/100);

if(get>(temp+4))break;

}

}

a=ReadCount();

aa=(uint)(a/100)-temp;

weight=(uint)((float)aa/4.9+0.05);/*重量转换函数,传感器不同,函数不同*/

}

/*喇叭函数*/

voiddelayus(uintz)

{

while(z--)

{

_nop_();

}

}

voidsound()

{

uintj;

for(j=0;j<200;j++)

{

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1