
#第九届立创电赛#SHT40_8167989A
简介
2024暑假班“电路设计手把手教你学”线上训练营
简介:2024暑假班“电路设计手把手教你学”线上训练营开源协议
:Public Domain
描述
目录
一、总体方案设计
本设计目的是实现便捷与直观的获取当前环境的温度与湿度,整个系统采用一枚STM32G030K6T6作为主控芯片,该芯片使用Arm Cortex-M0+内核,最大主频64Mhz,具有32KB的Flash以及8K的SRAM,供电电压在2.0V~3.6V之间。使用I2C协议与SHT40传感器进行通信,读取温度与湿度;通过主控芯片进行数据处理后将数据发送至3个74HC595驱动两个共阴极三位数码管进行显示;由预留SWD下载调试接口完成程序的烧录,通过两个LED灯进行初步测试。
本设计采用两节7号电池进行供电,考虑到功耗问题,默认不开机,进入睡眠模式;当有按键按下时,触发中断,此时结束睡眠模式,执行按键判断,获取温湿度并启动数码管进行显示;同时启动定时器中断,显示数据1s后再次进入睡眠,等待下次唤醒。
图1 系统框图
二、硬件电路设计
(一)主控及晶振电路
图2 主控及晶振电路原理图
1. 主控及晶振电路
(1)主控电路:使用一片STM32G030K6T6完成数据的输入、处理与输出,在芯片的电源输入端使用一枚磁珠与滤波电容并联,滤除杂波、防止串扰,稳定电源的输入;。
(2)晶振电路:芯片虽然内置时钟,但精度上存在一定误差,使用一枚32.768KHz的无源晶振,外接两个18pF电容,构成外部时钟源。
(二)传感器模块
1. SHT40传感器工作原理与特点
(1)工作原理:
图3 SHT40传感器功能框图
温湿度传感器获取模拟量数据后,通过模数转换器将其转变为数字信号,并在校准后将数据放在寄存器中进行存储;通过I2C同信协议完成指令的写入与读取数据的操作。
(2)特点: 它能够在测量范围内提供高精度和高稳定性的测量结果。SHT40的主要特点和优势包括:
高精度测量:SHT40能够测量相对湿度从0至100%,温度范围从-40℃至125℃,并且具有±1.8%的湿度精度和±0.2℃的温度精度。这些精度指标在同类产品中属于领先水平,能够满足大多数应用的需求。
优异的稳定性:通过内部增加的自校准功能,SHT40具有更好的长期稳定性,能够有效地补偿传感器老化和温度漂移,确保测量数据的准确性和一致性。快速响应:SHT40在灵敏度和响应速度上也进行了优化,尤其在湿度测量方面,其响应时间更快,能够更迅速地捕捉到环境变化。这种特性使其在需要快速响应的应用场景中非常适用。
低功耗设计:SHT40在继承了前代产品低功耗和紧凑封装的基础上,进一步优化了功耗控制,更适合于低功耗应用,如物联网(IoT)设备和能源敏感的系统。其电源电压范围从1.08 V扩展到3.6 V,非常适合移动和电池驱动应用。
增强抗干扰能力:SHT40还增强了抗干扰能力,能够更好地抵抗电磁干扰(EMI)和其他环境因素的影响,确保在复杂环境中也能提供可靠的测量结果。
SHT40因其高精度、低功耗和快速响应等特性,被广泛应用于智能楼宇、天气站、仓库存储、养殖、孵化等场景
2. SHT40传感器电路原理
该传感器共4个引脚,分别为:见表1。
引脚名称 |
SDA |
SCL |
VDD |
GND |
定义 |
数据线 |
时钟 |
电源 |
接地 |
表1 SHT40引脚定义表
图4 SHT40传感器典型应用电路图
在管脚SDA与SCL上都需要一个10KΩ的上拉电阻,且正极与接地之间存在一个100nF的电容;通过观察传感器的实物图可以发现,厂家出厂时配备了100nF的电容,但上拉电阻需要在使用中自行布置。
图5 SHT40传感器实物图
传感器上关于管脚定义无任何标识,需要注意的是在插入传感器之前要确定管脚方向,因为传感器插反将会电源反接,瞬间烧毁传感器。
图6 传感器模块电路原理图
在实际电路使用时,使用一个4Pin排母,这样方便传感器的拆装与检查;同时,在排母的1、4脚处增加上拉电阻,2、3脚接入3V直流电路,从而完成传感器模块的硬件电路搭建。
(三)测试LED
图7 测试LED电路原理图
两个测试LED灯是为了方便调试程序对出现的问题进行测试,将问题具体现象直观展示所设计,LED负极接入单片机,正极通过4.7KΩ电阻接入3V电源,当单片机对应引脚输出为低电平时,LED灯点亮。
(四)74HC595
图8 74HC595驱动电路原理图
通过使用3个74HC595芯片进行驱动2个3位共阴数码管,U2与U3分别负责LED1与LED2的段码输送,U4负责实现数码管的位选。C23、C24、C25三个滤波电容在PCB板处要靠近三个595芯片,进行电源滤波。
(五)唤醒按键
图9 按键电路原理图
将按键的一端与单片机管脚相连,另一端与地线相连,通过读取单片机该管脚的高低电平即可识别按键是否按下。
(六)数码管
图10 数码管显示电路原理图
使用两个三位的共阴数码管,每个元件上单片机驱动595芯片输出高电平时就能点亮对应的数码管
(七)电源系统
图11 电源系统电路原理图
在电源处设置两颗精度为±0.1%的分压电阻,用于检测电池电压,通过单片机的ADC进行电压读取;同时考虑到电池可能装反等情况,在电池电压的输入端加入一个场效应管,防止电池反接。
(八)SWD下载调试接口
图12 SWD下载调试接口电路原理图
使用4Pin的排针作为信号引脚,方便用杜邦线连接,实现MCU的程序烧录。
三、软件设计
(1)总体设计
图13 软件整体流程图
当有按键按下时,触发中断,此时结束睡眠模式,执行按键判断,获取温湿度并启动数码管进行显示;同时启动定时器中断,显示1S数据后再次进入睡眠,等待下次唤醒。若想检测电池电压,可增加ADC相关代码;若想进行定时读取,可以增加RTC实时时钟代码;
(2)数码管模块
在gpio.c文件的用户区编写测试代码,SN74HC595的引脚初始化已经生成好了,现在要做的是编写相关的驱动函数与显示函数;
SN74HC595驱动时序相对简单,首先输入高电平或低电平到SER引脚中,随后产生一个SCLK的上升沿,将数据发送出去,这里是8位数据移位寄存器,所以循环8次,最后一个RCLK的上升沿将数据锁存住,保持不变,直到下一次发送;
这里模拟一下发送时序;假如的数据是0xFE(1111 1110)
此时先发送最高位,也就是0xFE&0x80,判断高低电平;随后数据被送入QA;
然后继续,发送次高位,也就是(0xFE<<1)&0x80,判断高低电平,随后之前的数据被挤到QB,这个数据移位到QA。
依次类推,根据前面的原理图可知,这两个数码管的阴极总共是6个阴极,全部连接在SN74HC595-U6上,通过这一个595芯片,可以指定某一个位导通,同时,两个数码管的阳极,又分别连接在另外两个595芯片上,通过这两个芯片配合,就可以实现单个位显示数据;并根据数码管中LED导通的顺序,从而使数码管显示不一样的值;
图14 数码管显示模块流程图
(3)定时器模块
图15 定时器执行模块流程图
通过定时器完成数码管的动态显示与计数功能,两行数码管轮流显示,但因人眼的视觉暂留效果影响,所以两行数码管看上去为同时显示;当sleep_flag到达1000,即1S时间到达时,结束数码管显示,并使系统进入休眠模式。
(4)传感器模块
图16 传感器型号与地址对应图
图17 传感器通信时序图
图18 传感器指令概述图
传感器使用I2C协议进行通信,完成指令的输入与数据的传输;打开SHT40的相关数据手册,重点查看IIC地址与数据传输协议。
由数据手册可知,0x44是IIC地址;当地址最低位是0,表示写入,最低位是1,表示读取;当发送0xFD指令时,代表高精度测量温湿度;并且数据手册提供了相关温湿度的计算公式如下。
(1)
(2)
通过调用HAL库中关于I2C通信函数,可以很便捷的将数据读取出来。具体通信流程如下图所示。
图19 传感器通信流程图
四、电路制作与调试
(1)电路制作
1.原理图绘制:使用嘉立创EDA(专业版)绘制本次项目原理图,绘制时将电路按功能模块进行区分,便于后续查找与PCB的绘制。
图20 项目原理图
2.PCB绘制与制作:将原理图元件导入PCB后按功能进行分区,合理排布元器件位置,设置好导线规则进行走线、补泪滴、铺铜、优化(删除空岛、修剪铺铜形状、删除传感器下方铺铜、删除晶振下方铺铜);DRC检查无误后提交嘉立创打板订单,同时根据生成的BOOM元件清单进行元件购买,对订货周期过长的器件进行替换。
图21 PCB顶层图
(二)代码编写
1.创建工程:使用STM32CubeMX软件进行基础代码生成与配置
2.设置参数:根据原理图,设置所有外设引脚
将SN74HC595引脚设置为推挽输出、快速模式,同时依据原理图对其进行重命名,方便后续代码编写;将按键引脚设置为上拉输入模式并对其进行重命名;将测试LED灯设置为推挽输出模式并对其进行重命名;打开ADC、定时器、IIC功能;配置时钟树;填写输出工程的名称,选择工程输出路径以及适配的IDE;生成相关文件的.c与.h文件;选择HAL库创建工程。
图22 芯片引脚定义图
3.使用Keil5 MDK软件进行程序的编写与测试
工程源码见附录。
(3)PCB焊接
在PCB板与元件到货后进行焊接。
图23 PCB板正面图
图24 PCB板背面图
图25 项目成品正面图
图26 项目成品背面图
(四)程序烧录
1.打开keil工程文件;
2.将DP-LINK针脚与PCB板上的调试口相连接;
3.点击编译(Build),点击下载(Download);
图27 编译、下载按钮位置图
4.断开DP-LINK,放入电池。
(五)故障排除
故障1:程序烧录故障。
故障描述:连接下载器后烧录程序报错,Keil提示invalid rom table。
解决过程:由于有让MCU进入休眠模式的代码,在上电后它会立即进入休眠模式,以保持低功耗运行。此时可以先插好ST-LINK,在Keil程序编译好,然后按下唤醒按钮,在数码管仍在显示数值的过程中,手快速地点击Keil的下载按钮即可。
故障原因:MCU进入休眠模式。
故障2:数码管不显示。
故障描述:烧录程序后第一行用于显示温度的数码管不显示,湿度数码管工作正常。
解决过程:因为湿度数据正常显示,能够读取传感器数据,且数码管显示正常无乱码,这说明软件有正常运行;所以问题大致出现在硬件上,通过分析电路原理图判断,因为第二行数码管工作正常,所以U3-595芯片无异常,问题大致出在主控芯片与U2-595芯片或主控芯片与U4-595芯片的连接上,使用万用表测量各线路通断,检查是否存在虚焊;若不存在虚焊则可能U2-595芯片损坏。
故障原因:U2-595芯片13脚虚焊,OE使能未接地,输出 QA - QH 被禁用。
(六)项目成品
图28运行结果图
附录
(一)项目原理图
(二)项目PCB图
设计图

BOM


评论