1、电子秤 电子信息工程师实践设计报告 开 课 学 院:计算机与信息学院 专 业 班 级: 学 生 姓 名及学号: 指 导 教 师: 课 题 名 称: 3kg电子秤 2017年1月6日1、课题概述 作为一名电子信息工程专业的学生,掌握基本的电路知识,并运用到项目实践中非常重要,能够提高自身的科学文化素养,对知识更加全面的掌握。本课程设计为制作一个电子秤,比较具有实用价值,同时通过制作PCB电路板和AD采样芯片的使用提高自己的能力,掌握基本的专业技能。2、课题任务本课程设计主要任务是设计一个电子秤,电子秤称重范围是:0-3kg,精度是:5g。具有超过称重上限报警功能和复位功能。3、技术方案及关键问题
2、本课程设计从硬件和软件两个方面开始。硬件方面主要分为两个部分,第一部分是基本主电路板的设计,利用51单片机为主电路板。第二部分是AD采样电路板的设计。AD芯片用的是HX711芯片。软件部分主要是驱动HX711芯片以及实现电子秤的功能。关键问题:1、AD采样芯片的使用。在制作电子秤的过程中要将传感器输出的模拟量转换为数字量,因此要用到AD采样芯片。采样芯片的位数直接影响了最终的测量结果,也就是所谓的分辨率。本课程设计使用的是24位的HX711采样芯片,采样精度较高,测量结果较为准确。2、由于普通电脑USB输出电流为500mA会出现电子秤因电流过小而不工作问题并且利用电脑USB作为单片机供电电源携
3、带不方便,因此利用利用了一个电源220V转9V的电源适配器,再利用LM7805稳压芯片将9v电源稳压到5v为单片机供电。3、由于未使用电脑USB作为电源,因此没有USB下载电路,本单片机程序下载器使用的是USB转TTL转RS232下载器。4、称重传感器用的是桥式传感器。 4、设计实现及测试课程设计的第一步便是电路板的制作,本课程设计使用51单片机作为基本电路。电路原理图附后。1、 AD转换电路本次课程设计AD转换电路使用的是24位的HX711芯片。HX711是一款专为高精度称重传感器而设计的24位A/D转换器芯片。与同类型其它芯片相比,该芯片集成了包括稳压电源、片内时钟振荡器等其它同类型芯片所
4、需要的外围电路,具有集成度高、响应速度快、抗干扰性强等优点。降低了电子秤的整机成本,提高了整机的性能和可靠性。该芯片与后端MCU芯片的接口和编程非常简单,所有控制信号由管脚驱动,无需对芯片内部的寄存器编程。输入选择开关可任意选取通道A或通道B,与其内部的低噪声可编程放大器相连。通道A的可编程增益为128或64,对应的满额度差分输入信号幅值分别为20mV或40mV。通道B则为固定的32增益,用于系统参数检测。芯片内提供的稳压电源可以直接向外部传感器和芯片内的A/D转换器提供电源,系统板上无需另外的模拟电源。芯片内的时钟振荡器不需要任何外接器件。上电自动复位功能简化了开机的初始化过程。(1)、HX
5、711芯片特点如下:两路可选择差分输入。片内低噪声可编程放大器,可选增益为64 和128。片内稳压电路可直接向外部传感器和芯片内A/D 转换器提供电源。片内时钟振荡器无需任何外接器件,必要时也可使用外接晶振或时钟。上电自动复位电路。简单的数字控制和串口通讯:所有控制由管脚输入,芯片内寄存器无需编程。可选择10Hz 或80Hz 的输出数据速率。同步抑制50Hz 和60Hz 的电源干扰。耗电量(含稳压电源电路):典型工作电流:1.7mA, 断电电流:1A。工作电压范围:2.6 5.5V。工作温度范围:-20 +85。16 管脚的SOP-16 封装。(2)、管脚说明 SOP-16L封装表一 管脚描述
6、(3)、模拟输入通道A模拟差分输入可直接与桥式传感器的差分输出相接。由于桥式传感器输出的信号较小,为了充分利用A/D转换器的输入动态范围,该通道的可编程增益较大,为128或64。这些增益所对应的满量程差分输入电压分别20mV或40mV。通道B为固定的32增益,所对应的满量程差分输入电压为80mV。通道B应用于包括电池在内的系统参数检测。因此本课程设计使用通道A作为模拟差分输入,选择增益是128。(4)、串口通信串口通信线由管脚PD_SCK和DOUT组成,用来输出数据,选择输入通道和增益。当数据输出管脚DOUT为高电平时,表明A/D转换器还未准备好输出数据,此时串口时钟输入信号PD_SCK应为低
7、电平。当DOUT从高电平变低电平后,PD_SCK应输入25至27个不等的时钟脉冲(图一)。其中第一个时钟脉冲的上升沿将读出输出24位数据的最高位(MSB),直至第24个时钟脉冲完成,24位输出数据从最高位至最低位逐位输出完成。第25至27个时钟脉冲用来选择下一次A/D转换的输入通道和增益,参见表二。 表二输入通道和增益选择PD_SCK的输入时钟脉冲数不应少于25或多于27,否则会造成串口通讯错误。当A/D转换器的输入通道或增益改变时,A/D转换器需要4个数据输出周期才能稳定。DOUT在4个数据输出周期后才会从高电平变低电平,输出有效数据。图一 数据输出,输入通道和增益选择时序图(5)、AD采样
8、电路原理图如下(6)AD采样电路获取输出数据代码如下:/读取HX711unsigned long HX711_Read(void) /增益128 unsigned long count; unsigned char i; HX711_DOUT=1; /DOUT为高电平时,表明A/D转换器没有准备好数据 Delay_hx711_us(); HX711_SCK=0; count=0; while(HX711_DOUT); /直到DOUt为低电平,表明已经准备好数据 for(i=0;i24;i+) HX711_SCK=1; count=count= 0) Weight_Shiwu = (unsign
9、ed long)(float)Weight_Shiwu/GapValue); /计算实物的实际重量 else Weight_Shiwu = 0; /MS延时函数(12M晶振下测试)void Delay_ms(unsigned int n) unsigned int i,j; for(i=0;in;i+) for(j=0;j= Max_Value ) /超过设置最大值或者传感器本身量程最大值报警 Buzzer = 0; else Buzzer = 1; HX711.c#include HX711.h/延时函数void Delay_hx711_us(void) _nop_(); _nop_();/
10、读取HX711unsigned long HX711_Read(void) /增益128 unsigned long count; unsigned char i; HX711_DOUT=1; /DOUT为高电平时,表明A/D转换器没有准备好数据 Delay_hx711_us(); HX711_SCK=0; count=0; while(HX711_DOUT); /直到DOUt为低电平,表明已经准备好数据 for(i=0;i24;i+) HX711_SCK=1; count=count1; HX711_SCK=0; if(HX711_DOUT) count+; HX711_SCK=1; /第2
11、5个脉冲下降沿来时,转换数据,选择的是A通道增益为128 count=count0x800000; /异或操作 Delay_hx711_us(); HX711_SCK=0; return(count);LCD1602.c#include LCD1602.h/MS延时函数(12M晶振下测试)void LCD1602_delay_ms(unsigned int n) unsigned int i,j; for(i=0;in;i+) for(j=0;j0) LCD1602_write_data(*s); s+; Void Init_LCD1602() LCD1602_EN = 0; LCD1602_
12、RW = 0; /设置为写状态 LCD1602_write_com(0x38); /显示模式设定 LCD1602_write_com(0x0c); /开关显示、光标有无设置、光标闪烁设置 LCD1602_write_com(0x06); /写一个字符后指针加一 LCD1602_write_com(0x01); /清屏指令LCD1602.h#ifndef _LCD1602_H_#define _LCD1602_H_#include /LCD1602 IO设置#define LCD1602_PORT P0sbit LCD1602_RS = P25;sbit LCD1602_RW = P26;sbi
13、t LCD1602_EN = P27;/函数或者变量声明extern void LCD1602_delay_ms(unsigned int n);extern void LCD1602_write_com(unsigned char com);extern void LCD1602_write_data(unsigned char dat);extern void LCD1602_write_word(unsigned char *s);extern void Init_LCD1602();#endifHX711.h#ifndef _HX711_H_#define _HX711_H_#incl
14、ude #include /IO设置sbit HX711_DOUT=P33; sbit HX711_SCK=P32; /函数或者变量声明extern void Delay_hx711_us(void);extern unsigned long HX711_Read(void);#endifmain.h#ifndef _MAIN_H_#define _MAIN_H_#include sbit Buzzer = P24;/函数或者变量声明extern void Delay_ms(unsigned int n);extern void Buzzer_Di();extern void Get_Maopi();extern void Get_Weight();#endif九、指导教师评语及成绩评语(学生工作评价):建议成绩: 指导教师(签字): 年 月 日评语(学生工作评价):答辩成绩: 答辩小组组长(签字): 年 月 日学生持设计报告并参加集中答辩,答辩小组合议给出最终成绩。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1