什么是电子秤
电子秤(英文名:electronic balance)是衡器的一种,是利用胡克定律或力的杠杆平衡原理测定物体质量的工具。按结构原理可分为机械秤、电子秤、机电结合秤三大类。
电子秤主要由承重系统(如秤盘、秤体)、传力转换系统(如杠杆传力系统、传感器)和示值系统(如刻度盘、电子显示仪表)3部分组成。
基于stm32的电子秤方案大全(一)
基于STM32的多功能电子秤设计
题目要求:
1、基本部分:
(1)能用键盘设置单价,称重后能同时显示重量、单价和总额;电子计价秤:最大称重为10.000公斤,重量误差不大于±0.1%;
a、重量显示为5位数码,单位为公斤,最大重量显示值为99.999公斤;
b、单价金额显示为5位数码,单位为元,最大单价金额显示值值为999.99元;
c、总价金额显示为6位数码,单位为元,最大总价金额显示值值为9999.99元, 总价金额误差不大于0.01元;
(3)具有去皮功能和总额累加计算功能;
(4)能预存10种商品的单价;可以随意调出使用
(5)测量并显示环境温度,温度测量误差不大于1℃;
(6)称量0-10kg称重;
(7)语音播报测量结果
2、发挥部分:
(1)具有实时时钟显示并具有掉电保护,可显示日历时钟(年、月、日、时、分、秒);
(2)扩展高精度A/D转换器,提高电子计价秤测量精度,测量误差不大于±0.01%;
(3)能预存10种商品的名称(或代号)和商品的单价;
单元模块设计:
1、主控芯片模块
2、TFT液晶屏模块
3、称重模块
4、语音播报模块
5、24bitAD HX711转换模块
6、软件部分
模块介绍:
1、主控芯片模块
在该制作中,我们采用了STM32为主控芯片,主要是考虑到HX711是24bit的AD,运算量大,且我们的制作还加设了TFT彩色液晶模块,语音播报模块等的外设,普通的MCU的刷屏和运算速度是不够的,所以我选择了STM32作为主控芯片。下面是关于芯片的主要介绍:STM32F103xC 、STM32F103xD 和STM32F103xE 增强型系列使用高性能的ARM® Cortex™-M3 32位的RISC内核,工作频率为72MHz,内置高速存储器( 高达512K字节的闪存和64K 字节的SRAM),丰富的增强I/O 端口和联接到两条APB总线的外设。所有型号的器件都包含3个12位的ADC、4个通用16位定时器和2 个PWM定时器,还包含标准和先进的通信接口:多达2 个I2C 接口、3 个SPI接口、2个I2S 接口、1个SDIO接口、5个USART接口、一个USB接口和一个CAN接口。
2、TFT彩色液晶模块
TFT-LCD即薄膜晶体管液晶显示器。其英文全称为:Thin Film Transistor-Liquid Crystal Display。TFT-LCD与无源TN-LCD、STN-LCD的简单矩阵不同,它在液晶显示屏的每一个象素上都设置有一个薄膜晶体管(TFT),可有效地克服非选通时的串扰,使显示液晶屏的静态特性与扫描线数无关,因此大大提高了图像质量。TFT-LCD也被叫做真彩液晶显示器。该模块有如下特点:
1、320×240的分辨率。
2、16位真彩显示。
3、自带触摸屏,可以用来作为控制输入。
4、通用的接口,除了ALIENTEK MiniSTM32开发板,该液晶模块还可以使用在优异特、 STMSKY、红牛等开发板上。
这里在硬件上,TFTLCD模块与IO口对应关系如下:
LCD_LED对应PC10;
LCD_CS对应PC9;
LCD _RS对应PC8;
LCD _WR对应PC7;
LCD _RD对应PC6;
LCD _D[17:1]对应PB[15:0];
TFTLCD显示需要的相关设置步骤如下:
1) 设置STM32与TFTLCD模块相连接的IO。
这一步,先将我们与TFTLCD模块相连的IO口设置为输出,具体使用哪些IO口,这里需要根据连接电路以及TFTLCD模块的设置来确定。
2) 初始化TFTLCD模块。
其实这里就是上和上面OLED模块的初始化过程差不多。通过向TFTLCD写入一系列的设置,来启动TFTLCD的显示。为后续显示字符和数字做准备。
3) 通过函数将字符和数字显示到TFTLCD模块上。
触控部分:
电阻式触摸屏利用压力感应进行控制。电阻触摸屏的主要部分是一块与显示器表面非常配合的电阻薄膜屏,这是一种多层的复合薄膜,它以一层玻璃或硬塑料平板作为基层,表面涂有一层透明氧化金属(透明的导电电阻)导电层,上面再盖有一层外表面硬化处理、光滑防擦的塑料层、它的内表面也涂有一层涂层、在他们之间有许多细小的(小于1/1000英寸)的透明隔离点把两层导电层隔开绝缘。 当手指触摸屏幕时,两层导电层在触摸点位置就有了接触,电阻发生变化,在X和Y两个方向上产生信号,然后送触摸屏控制器。控制器侦测到这一接触并计算出(X,Y)的位置,再根据获得的位置模拟鼠标的方式运作。这就是电阻技术触摸屏的最基本的原理。
电阻屏的特点有:
1)是一种对外界完全隔离的工作环境,不怕灰尘、水汽和油污。
2)可以用任何物体来触摸,可以用来写字画画,这是它们比较大的优势。
3)电阻触摸屏的精度只取决于A/D转换的精度,因此都能轻松达到4096*4096。
3、称重模块
满量程输出电压=激励电压x灵敏度2.0mv/v
例如:供电电压是5v乘以灵敏度2.0mv/v=满量程10mv
接线:红线输入电压+,黑线输入电压-,绿线输出信号+,白线输出信号- 安装方式:悬臂梁安装方式
4、语音播报模块
WT588D 语音芯片是一款功能强大的可重复擦除烧写的语音单片机芯片。WT588D 让语音芯片不再为控制方式而寻找合适的外围单片机电路,高度集成的单片机技术足于取代复杂的外围控制电路。配套 WT588D VoiceChip 上位机操作软件可随意更换 WT588D语音单片机芯片的任何一种控制模式,把信息下载到 SPI-Flash 上即可。软件操作方式简洁易懂,撮合了语音组合技术,大大减少了语音编辑的时间。完全支持在线下载,即便是 WT588D 通电的情况下,一样可以通过下载器给关联的 SPI-Flash 下载信息,给 WT588D语音芯片电路复位一下,就能更新到刚下载进来的控制模式
本作品的语音播报模块使用了一线串口控制模式,可通过发码端控制语音播放、停止、循环播放和音量大小,或者直接触发 0~219 地址位的任意语音,发码速度 600us~2000us; 有两种输出方式:PWM 和 DAC ,PWM 输出可直接推动 0.5W/8Ω的扬声器,DAC 输出外接功放,音质好。由于本作品对音质没有过高要求,所以使用PWM输出方式。
使用WT588D语音播报模块时需要使用语音合成软件合成语音,然后通过Voice_Chip_V-B软件将语音对应特定地址编译成bin文件下载进WT588D模块中。
5、24bitAD HX711转换模块
HX711 采用了海芯科技集成电路专利技术,是一款专为高精度电子秤而设计的 24 位 A/D 转换器芯片。与同类型其它芯片相比,该芯片集成了包括稳压电源、片内时钟振荡器等其它同类型芯片所需要的外围电路,具有集成度高、响应速度快、抗干扰性强等优点。降低了电子秤的整机成本,提高了整机的性能和可靠性。
该芯片与后端 MCU 芯片的接口和编程非常简单,所有控制信号由管脚驱动,无需对芯片内部的寄存器编程。输入选择开关可任意选取通道 A 或通道 B,与其内部的低噪声可编程放大器相连。通道 A 的可编程增益为 128 或 64,对应的满额度差分输入信号幅值分别为±20mV或±40mV。通道 B 则为固定的 64 增益,用于系统参数检测。芯片内提供的稳压电源可以直接向外部传感器和芯片内的 A/D 转换器提供电源,系统板上无需另外的模拟电源。芯片内的时钟振荡器不需要任何外接器件。上电自动复位功能简化了开机的初始化过程。 特点:
• 两路可选择差分输入
• 片内低噪声可编程放大器,可选增益为 64 和128
• 片内稳压电路可直接向外部传感器和芯片内A/D 转换器提供电源
• 片内时钟振荡器无需任何外接器件,必要时也可使用外接晶振或时钟
• 上电自动复位电路
• 简单的数字控制和串口通讯:所有控制由管脚输入,芯片内寄存器无需编程
• 可选择 10Hz 或 80Hz 的输出数据速率 • 同步抑制 50Hz 和 60Hz 的电源干扰
• 耗电量(含稳压电源电路): 典型工作电流:《 1.7mA, 断电电流:《 1µA • 工作电压范围:2.6~ 5.5V
• 工作温度范围:-20~ +85℃ • 16 管脚的 SOP-16 封装
6、软件部分 TFT驱动部分:
void LCD_WR_REG(u8 data) 写寄存器函数
u16 LCD_ReadReg(u8 LCD_Reg) 读寄存器
void LCD_WriteRAM_Prepare(void) 开始写GRAM
u16 LCD_ReadPoint(u16 x,u16 y) 读取个某点的颜色值
void LCD_DisplayOn(void) //LCD开启显示/ void LCD_Clear(u16 Color) 清屏函数
void LCD_Init(void) 初始化lcd
void LCD_DrawPoint(u16 x,u16 y) 画点
void LCD_Fill(u16 xsta,u16 ysta,u16 xend,u16 yend,u16 color) 在指定区域内填充指定颜色
void LCD_DrawLine(u16 x1, u16 y1, u16 x2, u16 y2) 画线
void LCD_DrawRectangle(u16 x1, u16 y1, u16 x2, u16 y2) 画矩形
void Draw_Circle(u16 x0,u16 y0,u8 r) 在指定位置画一个指定大小的圆
void LCD_ShowChar(u16 x,u16 y,u8 num,u8 size,u8 mode) 在指定位置显示一个字符
void LCD_ShowNum(u16 x,u16 y,u32 num,u8 len,u8 size) 显示数字
void LCD_Show2Num(u16 x, u16 y, u16 num, u8 len,u8 size,u8 mode) 显示2个数字
void LCD_ShowString(u16 x,u16 y,const u8 *p) 显示字符串
WT588D部分:
void wt588d_init(void) WT588D初始化
void send_dat(u8 addr) 以一线串口方式发送数据到WT588D
void pronounce_num(u16 t) 整数部分数字发音 范围(0~9999)
void pronounce_point3num(u16 t) 小数部分数字发音范围(0~0.999)
void pronounce_point2num(u8 t) 小数部分数字发音范围(0~0.99) HX711部分:
u32 Read_HX711(void) 该函数读取HX711采集回来的经过放大以后的值
u32 Sampling(void) 该函数将AD采样回来的值算术平均数字滤波,去掉最低和最高后的平均值
main.c部分:
void UI(void) 设置界面
main函数中整合各个模块的函数实现电子秤称重功能,TFT显示功能等等。
评论