简介:一份面向数字电子技术课程设计的完整报告,围绕电子脉搏计的设计任务,提供了从需求分析、方案论证、单元电路设计到仿真验证的完整过程。报告以15秒内测量并显示1分钟脉搏次数为目标,比较了基于传感器与放大整形电路的两种实现方案,详细分析了四倍频、计数、计时控制、时钟产生、译码显示等核心电路的设计原理,并结合仿真结果验证了设计可行性,适合正在完成数电课设、需要参考脉搏计或类似计数器类课题的学生使用。压缩包内共1个pdf文件,大小约1.26MB,内容按目录章节编排,包含设计任务书、方案对比、电路原理图、仿真结果、作品照片以及学习心得体会,查阅起来较为方便。该资源目前已有371人学习下载。除可直接借鉴的设计思路外,报告还给出了元器件选型、误差分析和改进方向,对理解数字电路系统设计及撰写规范课设报告都有参考价值。
1. 数电课设的电子脉搏计:难点其实在模拟信号到数字脉冲的接口
电子脉搏计这个课设题目,绝大多数人先想到的是一堆数字计数器:把脉搏跳一次变成一个脉冲,数一分钟多少下,再送到数码管上显示。很多数电教材里频率计就是这么讲的,但真正动手搭的时候你会发现,计数器、锁存器、译码器这些数电主菜反而简单,真正卡住进度的是前端那套光电传感器和放大整形电路。指尖透射或反射回来的脉搏信号只有几毫伏到几十毫伏,叠加着工频、肢体抖动和基线漂移,直接送进74HC14或比较器,出来的是一串乱脉冲,后面计数再准也没有意义。所以这篇文章顺着完整的信号链来讲:从PPG传感器选型、放大滤波、施密特整形,到闸门计数、锁存译码、时基精度,最后落到仿真和实物的调试验证。适合正在做数电课设写实验报告的人,也适合第一次搭生理信号测量链路的工程师当作参考。
2. 传感器与信号调理:电子脉搏计的PPG前端放大、滤波和整形
2.1 光电传感器选型:透射式与反射式决定的信号幅度
电子脉搏计本质上测的是光电容积脉搏波(PPG)。用LED照亮皮下组织,血液随心脏搏动改变光吸收量,光敏管输出的电流随之波动。课设里最常见的两类接法,信号幅度差一个数量级。
| 传感器方案 | 典型输出幅度 | 主要干扰 | 课设推荐 |
|---|---|---|---|
| 红外对管透射式(LED+光敏三极管) | 数十毫伏级的AC波动叠加在直流上 | 手指压力变化、对不准光路 | 推荐,信号大,好调 |
| 反射式光电(ST188、TCRT5000) | 几毫伏到十几毫伏 | 环境光、皮肤颜色、贴合力 | 可用,但要有二级放大 |
| 光敏二极管+跨阻放大器 | 电流到电压后幅度与反馈电阻相关 | 噪声放大明显 | 不推荐课设首版 |
选择时主要看两个参数:一是传感器在静态时的直流工作点,二是AC波动与直流的比例。透射式方案在手指夹紧时,光敏管输出直流分量往往到电源的30%~70%,而AC分量只占其中1%~5%。这个直流分量是第一道坎,后面如果直接做放大,直流也会被放大,运放很容易饱和。
我一般会在传感器后先加一个隔直电容,把直流挡掉只保留脉搏波动,再接放大级。这样后面每一级的直流工作点都独立设计,调试时不用来回动偏置电阻。
2.2 放大与偏置:单电源运放的增益分配和直流工作点
脉搏波的有用频谱集中在0.5Hz到4Hz,对应30到240拍每分钟。第一级放大增益做到50到100倍就够了。单5V供电时,运放推荐LM358或LM324,输入端要偏置到电源中点2.5V附近,否则负半周会被削掉。
典型第一级是同相放大:
输入信号 → 隔直电容 C1 → 同相输入端(经R3/R4分压到2.5V) 反馈:Rf 从输出接到反相输入端,Rg 从反相输入端到地 增益 = 1 + Rf / Rg如果取Rf=100k、Rg=1k,增益约101倍。这个级别的增益下,LM358在1kHz以内的噪声和带宽都够用,而且单电源工作范围宽,不容易出稳定性问题。注意隔直电容的取值要和输入阻抗配合,C1与同相输入端到地的等效电阻构成高通滤波器,截止频率要低于0.5Hz,一般C1取10uF到47uF,电阻取100k级别。
运放输出点的静态电压要实测确认:示波器DC耦合下应该稳定在2.5V附近,指尖放上去后能看到明显波动。如果输出已经贴近0V或电源轨,说明增益太高或偏置有问题,先把增益降下来再逐级加大。
2.3 整形与去抖:直接进比较器会让计数翻倍
脉搏信号经过放大后仍然不是整齐的方波。原因是PPG波形上升沿缓、下降沿缓,且存在二次谐波和小平台,如果直接接到TTL计数器时钟端,波形在阈值附近缓慢穿越,会产生多次触发。正确的做法是加施密特整形或比较器加滞回。
用74HC14是最省事的方案,5V供电时典型正向阈值约1.7V、负向阈值约0.9V,回差0.8V。施密特反相器对缓慢变化的信号有抑制作用,算是最简单的去抖电路。如果放大后的信号幅度不够,也可以先用LM393比较器,输出端接一只10k上拉到5V,并在同相输入端加正反馈电阻形成滞回。
手头有Python环境的话,可以先用脚本验证滤波频带和理论波形是否一致。下面是一个用scipy设计带通滤波器的快速验证代码,仿真阶段把它当作信号链检查工具:
from scipy.signal import butter, sosfilt import numpy as np fs = 200.0 # 仿真采样率,200Hz low = 0.5 # 高通截止0.5Hz,对应30拍/分 high = 4.0 # 低通截止4Hz,对应240拍/分 sos = butter(2, [low / (fs/2), high / (fs/2)], btype='band', output='sos') print(sos)带通范围0.5Hz到4Hz是PPG信号能量最集中的区间。低于0.5Hz的基线漂移和呼吸分量会被滤掉,高于4Hz的工频、肌电和高次噪声也能压住。这个参数不是随手填的,它直接对应人体生理范围:30拍/分到240拍/分。仿真时可以用函数发生器输出1Hz正弦波,把幅度调到放大器输入范围,观察整形输出是不是每个周期只有一个脉冲。
3. 计数、锁存与译码:电子脉搏计的闸门电路设计
3.1 计数方案:测60秒还是测更短时间
确定测量时长是计数电路设计的第一步。测满60秒最直观,计数器显示的就是每分钟心跳;缺点是演示时要等整整一分钟。很多课设会改成测15秒乘4或30秒乘2,但这样做量化误差会放大。
| 闸门时长 | 计数范围(60拍/分时) | 量化误差带来的显示误差 | 演示体验 |
|---|---|---|---|
| 60秒 | 52~72拍 | ±1拍/分 | 等得久,但准确 |
| 30秒乘2 | 26~36拍×2 | ±2拍/分 | 快一些,误差略大 |
| 15秒乘4 | 13~18拍×4 | ±4拍/分 | 快,但边缘值跳动明显 |
课程设计选60秒方案,显示和验算都简单;如果担心答辩现场等太久,可以在电路上加一个启动按钮,配合数码管刷新逻辑做到“随时开始,跑完60秒自动锁存显示”。
3.2 闸门、锁存、清零的顺序不能靠硬凑
无论用74LS160计数还是用四位BCD计数器级联,核心都是“闸门打开期间计数,闸门关闭瞬间锁存,之后清零”。这三个动作的顺序一旦搞错,显示结果就会是0或者上一个周期的旧值。
常见做法是这样:
- 1Hz秒脉冲经过分频后产生60秒的高电平信号,作为gate。
- gate与脉搏整形信号相与,输出送到计数器时钟端。
- gate下降沿触发锁存器74LS373或CD4511的LE端,把此时计数器的值保存下来。
- 锁存稳定后,再由一个单稳态电路产生清零脉冲,把计数器复位到0。
这里最容易踩的坑是锁存和清零同时发生。如果用同一个gate下降沿同时触发锁存和复位,锁存器采到的很可能是清零后的0。解决办法是先锁存,清零信号经过一个RC延时或单稳态延迟几十微秒再触发。用74HC123做单稳态是比较稳的做法,RC定时电阻电容选好,脉冲宽度控制在100微秒左右,既够锁存建立时间,也不至于影响下一次计数。
3.3 显示路的两种做法:CD4511还是FPGA
显示部分建议用CD4511直接驱动共阴数码管。CD4511自带锁存功能,它的LE端可以直接接到gate反向信号上,这样在计数过程中数码管保持上一次的结果,闸门结束瞬间更新,不会看到跳变闪烁。注意每段数码管要串接限流电阻,典型值330Ω到470Ω,5V供电下段电流大约10mA,亮度足够且不会损伤芯片。
如果想用FPGA或CPLD做,核心逻辑也就是一个带门控的计数器,Verilog参考实现如下:
module pulse_counter ( input wire clk, // 1Hz时基,作为计数闸门 input wire pulse, // 已整形的脉搏脉冲 input wire rst_n, // 复位,低有效 output reg [11:0] cnt // 计数值,BCD编码 ); always @(posedge pulse or negedge rst_n) begin if (!rst_n) cnt <= 12'd0; else if (clk) // 闸门为高时加1 cnt <= cnt + 1'b1; end endmodule这段代码里把clk当作门控使能而不是时钟,posedge用的是pulse,所以计数器只在脉冲上升沿动作。用74系列芯片搭时,对应的硬件结构是“与门 + 计数器”,pulse和gate经过与门后接计数器CLK,二者本质是一个意思。参数上要注意的是:如果改用15秒测量,clk就不接1Hz,而是一个15秒高电平的控制信号;后者在FPGA里需要用分频产生,而不是直接给一个脉冲。
4. 时基电路与精度计算:电子脉搏计的NE555定时参数怎么设
4.1 1Hz时基的RC取值与占空比修正
NE555无稳态电路的频率公式是:
f = 1.44 / ((R1 + 2 * R2) * C) t_H = 0.693 * (R1 + R2) * C t_L = 0.693 * R2 * C设计目标是周期1秒。常见的取值组合:C=10uF,R1=4.7k,R2=68k。代入后周期约0.977秒,频率约1.024Hz,误差约2.4%;把R2换成可调电位器,用示波器数99个周期校准到99秒,精度可以压到1%以内。
用Python计算一组目标值很方便:
r1 = 4.7e3 r2 = 68e3 c = 10e-6 period = 0.693 * (r1 + 2 * r2) * c freq = 1.44 / ((r1 + 2 * r2) * c) duty = (r1 + r2) / (r1 + 2 * r2) print(f"频率: {freq:.4f} Hz") print(f"周期: {period:.4f} s") print(f"高电平占空比: {duty:.2%}")R1、R2对频率和占空比的影响不一样:R1减小时周期变短,但占空比变化不大;R2同时影响充放电时间,微调频率时先动R2。注意NE555输出的占空比天然不是50%,因为充电经由R1+R2、放电只经由R2。如果直接用它做60秒闸门,闸门时长会受占空比影响,最稳妥的做法是后面接一个D触发器二分频,变成周期2秒、高电平1秒的对称方波,再做分频控制。
提示:微调时基不要只调R2让静态频率接近1Hz,还要用示波器测量多周期的总时长。RC振荡器在短时稳定度上没问题,长时间漂移主要来自电容的温漂,所以定时电容建议用CBB聚丙烯电容,不要用普通电解电容。
4.2 从1Hz得到60秒闸门:分频比和复位逻辑
有了高精度1Hz对称方波后,60秒闸门可以用两个CD4518双BCD计数器做60分频得到。具体接法是第一个CD4518计到9清零并进位,第二个计到6清零,两者级联后输出高电平。这个高电平维持的时间是整整60秒。
另一条路子是直接用CD4060 + 32768Hz晶振:CD4060内部自带振荡器,Q14输出是32768Hz除以2的14次方,也就是2Hz,再经过一个CD4013接成T触发器得到1Hz。这个方案的时基精度取决于晶振本身,典型偏差只有20ppm左右,比NE555稳定两个数量级。缺点是元件多一些,但实物演示时不容易被质疑精度。
闸门结束后的复位时序重申一遍:gate下降沿先锁存,锁存稳定后再产生清零脉冲。清零脉冲可以由单稳态电路从gate下降沿延迟生成,也可以利用CD4060分频链里下一周期的起始沿来触发。后者同步性更好,但设计时要注意下一周期起始沿和锁存信号之间的竞争。
4.3 误差预算:把每一拍误差折算到显示结果上
电子脉搏计显示值偏离真实心率,误差来自源头信号和时基两部分。以60拍/分为例,做一个简单的误差预算:
| 误差来源 | 典型偏差 | 对60拍/分的影响 |
|---|---|---|
| NE555 RC时基 | ±2% | 约±1.2拍/分 |
| 计数量化误差 | ±1拍 | ±1拍/分 |
| 传感器与整形抖动 | 每周期<5ms | 可忽略 |
| 运动伪影未滤净 | 偶发多脉冲 | 可能+2拍/分以上 |
60秒直接计数方案下,量化误差恒定为±1拍;如果改用30秒乘2,这个误差就变成±2拍。NE555时基通过电位器校准后可以压到±1%以内,也就是约0.6拍/分。整体误差做到±2拍/分是可以实现的。运动伪影是最大的不可控项,这也是为什么前端带通滤波比一味加大增益更重要,滤不干净的话靠时基完全救不回来。
5. 从仿真到实物:电子脉搏计的调试顺序与故障定位
5.1 Multisim仿真里必测的三个观察点
用Multisim搭完电路,不要急着看数码管,先把示波器接到三个关键点逐级确认信号正确。
观察点A是运放输出端,应该看到周期约1秒的脉搏波,幅度在1V到3V之间,波形有明显起伏且不削顶。观察点B是74HC14输出端,应该是5V方波,每个脉搏周期恰好一个正脉冲,没有连续抖动。观察点C是计数器CLK端或闸门与门输出端,闸门打开时能数到方波脉冲。
虚拟信号发生器可以模拟传感器输出:设成1Hz正弦波,幅度定在放大电路的输入范围,比如50mV峰值。如果整形输出端每秒出现一个脉冲,计数部分就是通的;再把频率改成2Hz对应120拍/分,数码管显示值应该翻倍。这个步骤能快速区分问题是出在前端模拟部分还是后端数字计数部分。
5.2 实物的逐级检查顺序
实物调试的顺序建议按信号流向走:电源和偏置、传感器、放大器、整形、时基、计数、显示。
示波器用DC耦合先把各级静态电压量一遍。重点确认运放输出静态在2.5V附近、比较器或施密特输入端的静态电平不贴着阈值、NE555输出有稳定的方波且周期接近1秒。确认静态后再放手指,观察放大输出有没有随脉搏起伏。很多情况下数码管跳字乱跳,问题根本不在数字电路,而是模拟输出信号本身就带毛刺,先处理整形级比改计数器快得多。
5.3 常见故障对照与标准源验证
| 现象 | 原因 | 处置 |
|---|---|---|
| 数码管显示结果狂跳 | 施密特整形前毛刺多 | 检查放大输出波形,降低增益或加强滤波 |
| 计数始终为0 | 传感器没贴紧或限流电阻过大 | 减少LED限流电阻,固定传感器位置 |
| 显示结果偏大且稳定 | 阈值过低导致每个脉搏多次触发 | 提高比较器阈值或增大施密特回差 |
| 显示结果偶发跳一拍 | 运动伪影混入 | 收紧带通滤波器高频或增加一次均值处理 |
| 锁存结果恒为0 | 清零和锁存时序冲突 | 延迟清零脉冲,让锁存先完成 |
最后一步建议用函数发生器做标准源验证:输出1Hz方波,从整形级输入端注入,闸门走满60秒,数码管应显示60;换2Hz应显示120。这个结果和实物传感器无关,是纯数字电路的验证,能直接确认计数、锁存、显示链路完整无误。确认后再切回传感器模式,此时如果显示偏差在±2拍以内,整个数电课设的指标就算扎实了。
本文还有配套的精品资源,点击获取