目录
一、揭开 2016 电子设计大赛 G 题的神秘面纱
在电子设计领域,每年的电子设计大赛都是一场汇聚智慧与创新的盛宴。2016 年的电子设计大赛,更是吸引了无数电子爱好者和专业选手参与其中。而其中的 G 题,犹如一颗神秘的明珠,激发着大家的探索欲望。
2016 电子设计大赛 G 题是 “简易电子秤” ,要求参赛选手自行设计应变片与铁质悬臂梁结构,利用仪表放大器电路将应变片的电阻变化信号转化为差分信号并进行放大。在这个过程中,要实现自动称重、计价功能,还要保证精度达到较高标准,比如测量称重范围最大为 500g,最小精度要求为 0.5g。同时,还需具备去皮、自动计算等实用功能,数据通过数字显示,甚至要有语音播报以及显示实时温度等拓展功能。从这些要求不难看出,G 题综合性很强,既考查了选手对硬件电路设计的能力,又对软件编程实现各种功能提出了挑战。
二、G 题题目深度剖析
(一)任务要求拆解
从硬件搭建来看,自行设计应变片与铁质悬臂梁结构是基础。应变片作为将力学量转换为电学量的关键元件,其与悬臂梁的结合方式、粘贴位置等都对测量精度有着重要影响。仪表放大器电路的设计也至关重要,它要将应变片微小的电阻变化信号精准地转化为差分信号并进行有效放大,这就要求对放大器的选型、参数计算以及电路布局有深入的理解 。比如选择 INA128 芯片作为仪表放大器,它具有精密低功耗、电路实现简单等优点,通过单个外部电阻就能实现从 1 至 10000 的任一增益选择,满足了 G 题对信号放大的需求。
在功能实现方面,自动称重功能需要准确采集应变片输出的信号,并将其转换为对应的重量值。计价功能则涉及到与单价的运算,这就要求系统具备精确的数学运算能力。去皮功能要能够自动扣除容器等的重量,实现精准测量。数字显示部分,需要选择合适的显示器件,如 3.2 寸彩色电阻式触摸屏,它不仅能清晰显示重量、价格等信息,还具有较高的扩展性,可以实现键盘输入等功能,方便用户操作。语音播报功能为电子秤增添了更多的便利性,选择 WT588D 语音模块,能够根据测量结果进行语音提示,如播报重量、价格等信息。显示实时温度功能则需要接入温度传感器,实时采集环境温度并显示在屏幕上。
(二)关键技术点提炼
完成 G 题需要掌握多方面的关键技术。传感器应用技术是核心之一,应变片作为力传感器,其工作原理是基于金属的应变效应,即金属丝在受力变形时,其电阻值会发生变化。了解应变片的特性,如灵敏系数、温度系数等,对于准确测量重量至关重要。同时,温度传感器的应用也不容忽视,它能实时监测环境温度,为可能的温度补偿提供数据支持。
信号处理技术也是重点,从应变片输出的微弱信号,经过仪表放大器放大后,还需要进行滤波、模数转换等处理。采用均值低通等数字滤波算法,可以有效去除信号中的噪声,使数据更加平稳,减少跳变。模数转换则将模拟信号转换为数字信号,便于单片机进行处理,STM32 单片机内部集成的 12 位 ADC,能够满足 G 题对测量精度的要求 。
此外,单片机控制技术贯穿整个系统。以 STM32F103 系列单片机为例,它基于 ARMCortex-M3 内核,具有高性能、低成本、低功耗的特点,集成外设功能强大,可扩展性强。通过编写相应的程序,单片机能够实现对数据的采集、处理、控制显示以及语音播报等功能,是整个电子秤系统的核心控制单元。
三、方案设计与论证
(一)多种方案对比呈现
在解决 G 题 “简易电子秤” 时,我们提出了多种设计方案。以控制器选用为例,方案一是采用 51 系列单片机 ,它价格便宜,控制原理也相对简单,对于初学者来说容易上手。像一些基础的电子小制作中,51 单片机常常被选用。但是它存在明显的短板,作为 8 位机,其运算速度慢,在处理一些复杂的数据运算时,会花费较多时间。而且片内资源少,存储容量小,难以存储大体积的程序。在电子秤需要实现高精度称重以及复杂功能时,就显得力不从心,比如难以快速精准地处理应变片采集来的大量数据,实现快速精准的反应控制。并且受时钟限制,计时精度不高,外围电路也增加了系统的不可靠性。
方案二则是采用 STM32F103 系列单片机 ,它基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的 ARMCortex - M3 内核。集成外设功能强大,可扩展性强。它能够轻松应对电子秤中的各种数据处理任务,无论是快速采集应变片信号,还是进行复杂的计价运算等,都能高效完成。比如在与各种传感器和显示模块的连接与通信中,其丰富的接口资源使得连接更加便捷。
在显示方案选择上,方案一是采用 LCD1602 作为显示屏,它是工业字符型液晶,能够同时显示 16x02 即 32 个字符,常用于显示字母、数字、符号等。它的优点是使用与学习方便,在一些简单的电子设备显示中广泛应用。然而它的可扩展能力弱,对于电子秤需要显示重量、价格、温度等多种信息,以及实现人机交互功能来说,就无法满足需求。
方案二是采用 3.2 寸彩色电阻式触摸屏 ,它具有 320*480 分辨率,彩色显示效果好。而且有较高的扩展性,可以用它实现键盘、显示等多种功能,功能强大,还可自制 UI 进行使用。在电子秤中,用户可以通过触摸屏方便地输入单价、进行去皮操作等,提升了用户体验。
在仪表放大器的选择上,方案一是使用 3 片 op07 制作仪表放大器电路 ,op07 是一种低噪声,非斩波稳零的双极性运算放大器集成电路,具有非常低的输入失调电压(对于 OP07A 最大为 25μV )。仪表放大器电路主要由两级差分放大器电路构成,其中,运放前两片为同相差分输入方式,后一片为差分放大电路。这种方式虽然能实现信号放大,但是电路结构较为复杂,在实际搭建和调试过程中,难度较大,电路也较难做到准确无误。
方案二是使用一片 INA128 芯片 ,INA128 为精密低功耗仪表放大器,它们通用的 3 运放 3 - op amp 设计和体积小巧使其应用范围广泛,且电路实现简单,由单个外部电阻即可实现从 1 至 10000 的任一增益选择。在电子秤中,能够方便地根据应变片输出信号的强弱,灵活调整放大倍数。
在控制系统方面,方案一是 AD 采样后直接对数据进行分析与显示,可以快速地看到数据的变化,能及时反馈应变片采集到的信号情况。但缺点是数据容易受到外界干扰,波动较大,不够稳定。
方案二是采样后对数据进行均值低通等数字滤波 ,虽然数据显示会有一定延迟,但是数据较为平稳,不会有较大跳变,能为后续的重量计算和显示提供更可靠的数据基础。
(二)最优方案敲定依据
综合考虑各方案的优缺点,我们最终选择采用 STM32F103 系列单片机作为控制器,3.2 寸彩色电阻式触摸屏作为显示方案,INA128 芯片作为仪表放大器,以及采用采样后对数据进行均值低通等数字滤波的控制系统。
选择 STM32F103 系列单片机,是因为其高性能、低成本、低功耗的特点,以及强大的集成外设功能和可扩展性,能够满足电子秤复杂的数据处理和功能实现需求。3.2 寸彩色电阻式触摸屏功能强大、扩展性高,能够为用户提供良好的交互界面,实现多种信息的显示和操作输入。INA128 芯片电路实现简单,增益选择灵活,能准确地对应变片信号进行放大。而采用数字滤波的控制系统,虽然牺牲了一定的显示速度,但是换来了数据的稳定性,对于需要高精度测量的电子秤来说,数据稳定至关重要,只有稳定的数据才能保证重量测量的准确性和计价的精准性 。
四、硬件电路设计详解
(一)核心硬件选型揭秘
在硬件电路设计中,核心硬件的选型至关重要。我们选用 STM32F103 系列单片机作为核心控制单元,它基于 ARMCortex - M3 内核,工作频率可达 72MHz ,能够快速处理应变片采集来的信号,实现高精度的称重计算和各种功能控制。而且它丰富的片上资源,如多个定时器、串口通信接口等,方便与其他硬件模块进行通信和协同工作。
对于应变片,我们选择了箔式应变片,它具有精度高、稳定性好、粘贴方便等优点。其灵敏系数较高,能够将微小的应力变化转化为明显的电阻变化,为后续的信号处理提供可靠的数据基础。在实际应用中,将应变片粘贴在铁质悬臂梁上,当悬臂梁受力发生形变时,应变片的电阻也会随之改变。
仪表放大器选用 INA128 芯片,它是精密低功耗仪表放大器,电路实现简单,通过单个外部电阻就能方便地实现从 1 至 10000 的任一增益选择。在电子秤中,能够根据应变片输出的微弱信号,灵活调整放大倍数,将信号放大到适合单片机处理的范围。
温度传感器采用 DS18B20,它是一款数字温度传感器,具有体积小、精度高、抗干扰能力强等优点。通过单总线与单片机通信,能够方便地将环境温度数据传输给单片机,实现实时温度显示功能。
显示模块采用 3.2 寸彩色电阻式触摸屏,它具有 320*480 分辨率,显示效果清晰。而且可扩展性强,不仅能显示重量、价格、温度等信息,还能通过触摸屏实现人机交互功能,如输入单价、去皮操作等 。
(二)电路原理图精细绘制
下面是完整的电路原理图(此处可插入手绘或软件绘制的清晰原理图) 。
- 电源电路部分:电源电路为整个系统提供稳定的工作电压。采用 USB 接口输入 5V 电源,经过 LM1117 稳压芯片将电压稳定为 3.3V,为 STM32 单片机、INA128 仪表放大器等芯片供电。同时,通过电容滤波,去除电源中的杂波和干扰,保证电源的稳定性。比如在 LM1117 的输入端和输出端分别并联了 10uF 和 0.1uF 的电容,组成 π 型滤波电路,有效提高了电源的纯净度。
- 应变片与仪表放大电路:应变片粘贴在铁质悬臂梁上,组成惠斯通电桥。当悬臂梁受力时,应变片的电阻发生变化,导致电桥输出不平衡电压。这个微弱的电压信号输入到 INA128 仪表放大器进行放大。通过调整 INA128 外接的电阻阻值,设定合适的放大倍数,将电桥输出的微弱信号放大到 0 - 3V 左右,以便后续的 ADC 采集。
- 单片机最小系统:STM32F103 单片机最小系统包括晶振电路、复位电路和电源电路。8MHz 的外部晶振与单片机的 OSC_IN 和 OSC_OUT 引脚相连,为单片机提供稳定的时钟信号。复位电路采用按键复位方式,通过一个电阻和电容组成的 RC 电路实现,当按下复位按键时,单片机复位,重新开始工作。
- 显示电路:3.2 寸彩色电阻式触摸屏通过 SPI 接口与 STM32 单片机相连。单片机将需要显示的重量、价格、温度等信息通过 SPI 总线传输给触摸屏,触摸屏根据接收到的数据进行显示。同时,触摸屏的触摸信号也通过中断引脚输入到单片机,当用户触摸屏幕时,单片机能够及时响应,实现人机交互功能。
- 语音播报电路:WT588D 语音模块与 STM32 单片机通过串口通信。单片机根据称重结果和操作指令,向语音模块发送相应的语音播报命令,语音模块接收到命令后,播放对应的语音信息,如播报重量、价格等。
- 温度检测电路:DS18B20 温度传感器通过单总线与 STM32 单片机的一个普通 IO 口相连。单片机通过单总线协议与 DS18B20 进行通信,读取环境温度数据,并将其显示在触摸屏上。
五、软件代码实现全流程
(一)编程思路清晰梳理
软件部分采用模块化的程序架构进行设计,主要分为数据采集模块、数据处理模块、显示控制模块、语音播报模块和温度检测模块。数据采集模块负责通过 STM32 单片机的 ADC 外设采集应变片输出经过放大后的电压信号 。数据处理模块对接收到的原始数据进行均值低通滤波处理,去除噪声干扰,然后根据标定的电压与重量的转换关系,计算出实际的重量值。同时,根据用户输入的单价,计算出总价。显示控制模块负责将处理后的数据,如重量、单价、总价、实时温度等信息,通过 SPI 接口传输给 3.2 寸彩色电阻式触摸屏进行显示,并处理触摸屏的触摸事件,实现人机交互功能,比如响应去皮操作、单价输入等指令。语音播报模块根据称重结果和操作指令,通过串口向 WT588D 语音模块发送相应的语音播报命令,实现重量、价格等信息的语音播报。温度检测模块通过单总线协议与 DS18B20 温度传感器通信,读取环境温度数据,并将其传输给数据处理模块和显示控制模块进行处理和显示。
(二)关键代码逐行解读
下面以数据采集和处理部分的关键代码为例进行解读。
// 定义ADC采集通道
#define ADC_CHANNEL ADC_Channel_0
// 定义采样次数,用于均值滤波
#define SAMPLE_COUNT 10
// 数据采集函数
uint16_t ADC_Collect(void)
{
uint32_t sum = 0;
uint8_t i;
// 进行多次采样
for (i = 0; i < SAMPLE_COUNT; i++)
{
// 使能ADC1
ADC_Cmd(ADC1, ENABLE);
// 启动规则通道的软件转换
ADC_SoftwareStartConvCmd(ADC1, ENABLE);
// 等待转换结束
while (!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC));
// 读取ADC转换结果
sum += ADC_GetConversionValue(ADC1);
// 关闭ADC1
ADC_Cmd(ADC1, DISABLE);
}
// 返回均值
return sum / SAMPLE_COUNT;
}
// 数据处理函数
float Data_Process(uint16_t adc_value)
{
float voltage;
// 根据ADC分辨率和参考电压计算电压值
voltage = (float)adc_value * 3.3 / 4096;
// 根据标定的电压与重量关系计算重量值,这里假设已经标定好的转换系数为calibration_factor
return voltage / calibration_factor;
}
在这段代码中,首先定义了 ADC 采集通道和采样次数。ADC_Collect函数用于采集 ADC 数据,通过循环多次采样并累加结果,最后取平均值,实现了简单的均值滤波,提高了数据的稳定性。Data_Process函数将采集到的 ADC 值转换为实际的电压值,再根据标定的转换系数将电压值转换为重量值,完成了数据从原始采集到实际物理量的转换。
(三)代码调试技巧大公开
在代码调试过程中,遇到了不少问题。比如在初期,ADC 采集的数据波动很大,经过检查发现是硬件电路中的电源滤波电容取值不合适,导致电源噪声干扰了 ADC 采集。更换合适的电容后,数据波动情况得到了改善。还有在显示模块调试时,触摸屏显示出现乱码,经过仔细排查,发现是 SPI 通信的时序设置有问题。通过参考触摸屏的技术手册,重新调整 SPI 通信的时钟极性、相位等参数,最终解决了显示乱码的问题。另外,在语音播报功能调试中,发现语音模块有时无法正确响应单片机发送的指令,经过检查是串口通信的波特率设置不一致,将单片机和语音模块的波特率设置为相同值后,语音播报功能正常运行。在调试过程中,使用示波器观察硬件信号,利用串口调试助手查看单片机发送和接收的数据,以及在代码中合理添加打印语句输出关键变量的值,这些方法都对快速定位和解决问题起到了重要作用 。
六、系统测试与结果评估
(一)全面测试方案制定
为了确保设计的简易电子秤性能可靠、功能完备,我们制定了全面且细致的测试方案。测试项目涵盖了硬件和软件的各个关键部分。
在硬件测试方面,重点对各个硬件模块进行单独测试以及整体联调测试。对于应变片与仪表放大电路,使用高精度信号发生器模拟应变片的电阻变化信号,输入到仪表放大电路中,通过示波器观察输出信号的幅值和波形,验证其放大功能是否正常,检查放大倍数是否符合设计要求。同时,对温度传感器、语音播报模块等硬件也进行类似的功能测试,确保每个硬件模块都能正常工作。
软件测试则主要针对数据采集、处理、显示和控制等功能。通过编写测试程序,模拟不同的称重情况,对数据采集模块进行测试,检查采集的数据是否准确、稳定。在数据处理模块,验证滤波算法是否有效,重量和价格的计算是否准确无误。对于显示控制模块,测试触摸屏的触摸响应是否灵敏,显示内容是否清晰、正确。语音播报模块则测试其是否能根据不同的称重结果和操作指令,准确地进行语音播报。
(二)测试数据详细分析
经过一系列的测试,我们得到了丰富的测试数据。在称重测试中,对不同重量的物体进行多次测量,得到的部分测试数据如下表所示:
实验重量 /g | 显示重量 /g | 误差 /g |
5 | 5.04 | 0.04 |
10 | 10.10 | 0.10 |
20 | 20.12 | 0.12 |
40 | 40.14 | 0.14 |
60 | 60.16 | 0.16 |
80 | 80.18 | 0.18 |
100 | 100.20 | 0.20 |
150 | 150.25 | 0.25 |
200 | 200.45 | 0.45 |
250 | 250.55 | 0.55 |
300 | 300.60 | 0.60 |
350 | 350.75 | 0.75 |
400 | 400.80 | 0.80 |
450 | 450.90 | 0.90 |
500 | 500.94 | 0.94 |
从数据中可以看出,在小重量范围内(0 - 100g),测量误差相对较小,基本能满足最小精度 0.5g 的要求。但随着重量的增加,误差逐渐增大,在 500g 时,误差达到了 0.94g ,略超出了精度要求。分析原因,可能是在信号放大和数据处理过程中,存在一定的系统误差积累,以及应变片在大重量下的非线性特性影响了测量精度。
在温度检测测试中,将电子秤置于不同温度环境下,与标准温度计的测量结果进行对比,发现温度显示误差在 ±1℃以内,满足设计要求。在语音播报和触摸屏操作测试中,语音播报清晰准确,触摸屏触摸响应灵敏,操作流畅,各项功能均能正常实现 。
(三)优化改进方向探讨
基于测试结果,我们提出了以下优化改进方向。针对称重精度问题,首先可以对硬件电路进行优化,在仪表放大器电路中增加温度补偿电路,减少温度变化对应变片和放大器性能的影响,从而提高测量精度。其次,在软件算法上进行改进,采用更复杂的滤波算法,如卡尔曼滤波,进一步去除噪声干扰,提高数据的准确性。同时,可以对系统进行多点标定,建立更精确的电压与重量的转换关系,以减小测量误差。
在功能拓展方面,可以增加无线通信功能,如蓝牙或 Wi-Fi,使电子秤能够与手机或电脑等设备进行数据传输,方便用户进行数据管理和分析。还可以进一步优化用户界面,增加更多的操作提示和功能设置选项,提升用户体验。此外,考虑到电子秤的长期使用稳定性,对硬件的可靠性和耐用性进行优化,选择质量更高的电子元件,加强电路的防护设计,以延长电子秤的使用寿命 。
七、经验总结与启示分享
(一)参赛过程经验复盘
回顾整个参赛过程,团队协作无疑是取得成果的关键因素。我们团队成员分别在硬件设计、软件编程和电路调试方面各有所长。在硬件设计阶段,负责的成员充分发挥专业知识,精心挑选电子元件,绘制电路原理图,确保硬件电路的稳定性和可靠性。软件编程成员则根据硬件设计和功能需求,编写高效、准确的代码,实现各种功能的逻辑控制。在电路调试阶段,大家一起排查问题,分享思路,通过不断地测试和优化,逐步解决了硬件和软件之间的兼容性问题。
然而,我们也遇到了一些挑战。比如在时间管理方面,由于前期对部分技术难题的攻克花费了过多时间,导致后期在系统测试和优化阶段时间紧张。在备赛过程中,对一些可能用到的新技术、新器件的调研不够充分,在比赛中遇到相关问题时,需要花费额外的时间去学习和探索。通过这次参赛,我们深刻认识到在团队协作中,要充分发挥每个成员的优势,加强沟通和协调。同时,在时间管理上,要制定合理的计划,并严格按照计划执行,预留足够的时间进行系统的测试和优化。在备赛时,要拓宽知识面,对相关技术和器件有更深入的了解,以便在比赛中能够快速应对各种问题。
(二)对电子设计学习的启示
通过对 2016 电子设计大赛 G 题的解析和实践,我们对电子设计学习有了更深刻的认识和启示。电子设计是一个综合性很强的领域,它不仅要求我们掌握扎实的电路原理、模拟电子技术、数字电子技术等基础知识,还需要具备良好的编程能力和创新思维。在学习过程中,不能仅仅停留在理论知识的学习上,要注重实践操作,通过实际项目的锻炼,提高自己解决实际问题的能力。
对于电子设计中的各种技术和方法,要知其然更要知其所以然。比如在选择硬件芯片和设计电路时,要深入了解芯片的性能参数、工作原理以及电路的设计思路,这样才能在实际应用中灵活运用,优化设计。同时,要关注电子技术的发展动态,不断学习新的知识和技术,拓宽自己的视野,为未来的电子设计工作打下坚实的基础。在电子设计学习中,要注重知识的积累和实践的锻炼,培养自己的综合能力和创新精神,才能在这个充满挑战和机遇的领域中取得更好的成绩。
八、结语:电子设计之路,永不止步
回顾 2016 电子设计大赛 G 题 “简易电子秤” 的解析过程,从最初对题目的深度剖析,到多种方案的对比论证,再到硬件电路的精心设计和软件代码的实现,以及最后的系统测试与优化,每一个环节都凝聚着电子设计爱好者的智慧与汗水。通过这个项目,我们不仅掌握了电子秤设计的关键技术,更在实践中提升了自己的综合能力。
电子设计领域犹如一片广阔的海洋,充满了无限的可能性和挑战。在这片海洋中,每一次的项目实践都是一次探索未知的航行。希望大家能够从这篇关于 2016 电子设计大赛 G 题的解析中汲取灵感,勇敢地踏上电子设计的探索之旅。无论是改进现有的设计,还是尝试全新的项目,都要保持对电子设计的热爱和创新精神,不断挑战自我,突破技术瓶颈,相信你在电子设计的道路上会收获更多的成长与惊喜。