
1. 项目概述一个源于真实需求的电子计数方案在电子制作和自动化领域计数是一个基础但至关重要的功能。无论是工厂流水线上的零件统计还是日常生活中的物料清点一个可靠、低成本的自动计数系统都能极大提升效率。今天我想分享的是一个完全基于经典数字逻辑芯片和红外传感技术搭建的小型物体自动计数器。这个项目的灵感来源于一个真实的社区回收活动——学生们需要清点成千上万个回收来的塑料瓶盖。手动计数不仅枯燥而且极易出错。于是我们决定用最“硬核”的纯数字电路方式打造一个不依赖单片机如Arduino、成本低廉且运行稳定的解决方案。这个方案的核心价值在于其纯粹性与教学性。它避开了复杂的编程和软件依赖直指电子系统的底层逻辑传感器如何感知世界数字芯片如何处理信号以及如何将物理事件转化为可视化的数字。对于初学者而言这是一个理解“信号流”从模拟到数字的绝佳案例对于有经验的爱好者它则展示了如何用最基础的元件构建一个功能完整的系统。我们将使用红外对管作为“眼睛”74LS90作为“大脑”进行计数74LS47作为“翻译官”驱动数码管显示。整个系统由一块9V电池供电通过线性稳压器提供稳定的5V电压确保所有TTL芯片可靠工作。接下来我将从设计思路、电路原理、焊接调试到机械结构完整拆解这个项目的每一个环节并穿插大量我在实际制作中踩过的坑和总结的经验希望能为你复现或改进类似项目提供一份可靠的“地图”。2. 系统核心设计思路与方案选型2.1 需求分析与技术路线选择项目的核心需求非常明确非接触、自动、准确地计数小型塑料瓶盖。基于此我们衍生出几个关键的技术指标1) 检测方式需适应不透明塑料物体2) 计数容量至少达到两位数99个3) 系统需便携、低功耗且成本可控4) 最终结果需直观显示。面对这些需求摆在面前的有几条常见技术路线基于单片机的方案使用Arduino搭配红外或超声波传感器通过编程实现计数和显示。优点是灵活、功能强大但缺点是需要编程基础且对于这个简单任务而言有点“杀鸡用牛刀”成本和复杂度相对较高。基于专用计数芯片的方案市面上有CD40110等十进制计数/锁存/译码/驱动一体化芯片。方案集成度高但可定制性差不利于深入理解计数器的内部工作原理。基于标准数字逻辑IC的纯硬件方案这正是我们最终选择的路径。使用74LS90十进制计数器、74LS47 BCD-7段译码器等标准芯片搭建。选择这个方案的核心理由在于其“透明性”和“教育性”。每一个脉冲的传递、每一次计数的进位都能通过芯片引脚的电平变化清晰地追踪到这对于理解数字电路的时序和逻辑至关重要。同时全硬件电路一旦调试成功运行极其稳定没有程序跑飞的风险。注意纯数字电路方案对电源质量和布线噪声比较敏感这是其相对于单片机方案的一个挑战但也正是处理这个挑战的过程能让你学到宝贵的硬件调试经验。2.2 核心模块功能定义整个系统可以划分为四个清晰的模块信号流如下图所示概念性描述[物体通过] - [红外检测模块] - (产生电脉冲) - [计数模块 (74LS90)] - (输出BCD码) - [译码显示模块 (74LS47 7段数码管)] - (显示十进制数字) ↑ [电源模块 (9V电池 LM7805)] - (提供稳定5V) - 为所有模块供电电源模块负责将9V电池电压稳定至5V为所有TTL逻辑芯片提供洁净、稳定的工作电压。这是系统稳定的基石。红外检测模块由红外发射管和接收管光电晶体管对射组成。当无物体遮挡时接收管导通当瓶盖通过时红外光被遮挡接收管截止。这个状态变化经过晶体管放大整形产生一个干净的数字脉冲信号送给计数器。计数模块以74LS90为核心。它是一个异步十进制计数器每接收到一个来自检测模块的上升沿脉冲其输出端Qa, Qb, Qc, Qd的BCD码就加一。我们使用两片74LS90级联实现个位和十位的计数最大计数值为99。译码显示模块以74LS47为核心。它接收74LS90输出的4位BCD码并将其翻译成驱动7段数码管各段亮灭的信号。我们使用共阳极数码管与74LS47的输出特性匹配。这个模块化设计使得调试和维护变得非常方便。你可以单独测试电源输出是否稳定再单独测试红外模块能否产生脉冲最后再集成计数和显示部分。3. 电路原理深度解析与关键器件选型3.1 电源稳压电路系统稳定工作的前提数字逻辑芯片尤其是老式的74LS系列对工作电压的要求比较苛刻。其典型工作电压是5V允许的波动范围通常在4.75V到5.25V之间。而我们常用的9V方块电池满电时电压可达9.5V以上随着使用会逐渐下降。直接连接会烧毁芯片或导致逻辑功能紊乱。因此稳压电路必不可少。我们选择了经典的LM7805三端线性稳压器。它的使用非常简单输入脚接电池正极需高于7V左右接地脚接电池负极输出脚就是稳定的5V。关键细节与参数计算输入/输出电容C1, C2的作用C1输入端通常10µF主要作用是消除来自电池引线的长线电感可能引起的自激振荡同时为LM7805在负载瞬时变化时提供短暂的电流缓冲。C2输出端通常1µF用于改善稳压器的瞬态响应抑制输出端的噪声为负载我们的数字电路提供一个更“平滑”的直流电源。实操心得这两个电容虽然原理上在轻负载时可能“不用也能工作”但强烈建议不要省略。它们能显著提高系统在电机启停或其他干扰下的稳定性。电容应尽量靠近LM7805的引脚焊接。功耗与散热考虑线性稳压器的工作原理是将多余的电压以热量的形式消耗掉。当电池电压为9V输出5V/100mA时LM7805上的功耗为 (9V-5V)*0.1A 0.4W。虽然不算大但连续工作时芯片会有温升。确保芯片背面金属片或塑料封装上的散热片有适当的空气流通不要被紧密包裹。3.2 红外检测与脉冲整形电路这是系统的“感官”部分其可靠性直接决定了计数的准确性。核心器件红外发射管IR LED发出人眼不可见的红外光。光电晶体管IR Phototransistor接收红外光其集电极-发射极间的导通程度受光照强度控制。电路工作原理分析 我们采用经典的“对射式”检测。发射管串联一个限流电阻如120Ω持续发光。接收管与一个上拉电阻如2.2kΩ组成分压电路。无遮挡状态红外光照射到光电晶体管基极使其饱和导通。此时集电极输出点电压被拉低至接近0V低电平。有遮挡状态红外光被阻断光电晶体管截止。输出点电压通过上拉电阻被拉至高电平接近Vcc即5V。这样我们就得到了一个负逻辑的脉冲平时为低遮挡时跳变为高。但这个信号直接来自光电晶体管驱动能力和边沿特性可能不佳需要“整形”。引入NPN晶体管BC547进行整形与驱动 光电晶体管的输出连接到BC547的基极。当输出为高电平时遮挡BC547导通其集电极输出被拉低低电平当输出为低电平时无遮挡BC547截止集电极通过一个上拉电阻如10kΩ输出高电平。效果经过BC547反相我们得到了一个正逻辑的干净脉冲平时为高遮挡时产生一个下降沿。同时BC547提供了更强的电流驱动能力足以可靠地触发后级的74LS90计数器。为什么是下降沿触发74LS90的时钟输入CPA是下降沿触发的。这意味着当输入信号从高电平变为低电平的瞬间计数器进行加一操作。这与我们整形后的脉冲完美匹配。避坑指南红外对管的对准是调试难点。即使没有完全对准光电晶体管可能仍有微弱导通导致输出电平不明确容易产生误计数。务必使用不透光的套管如废旧笔芯将发射管和接收管封装并固定确保光路狭窄且精准。调试时可以用万用表测量BC547集电极电压观察遮挡前后是否有清晰的0V到5V或反之的跳变。3.3 计数与显示核心74LS90与74LS47详解3.3.1 74LS90异步十进制计数器的巧妙运用74LS90是一个功能灵活的芯片可通过不同连接方式配置成二分频、五分频或标准的十进制计数器。我们需要的是十进制模式。关键引脚与连接CPA (Pin 14)时钟输入A连接我们的检测脉冲。下降沿有效。QD (Pin 11)输出位权为8BCD码最高位。QB (Pin 9)输出位权为2。QA (Pin 12)输出位权为1。R0(1) R0(2) (Pin 2, 3)异步复位端。当两者同时为高电平时计数器清零输出Qa~Qd 0000。我们通过一个轻触开关连接到Vcc实现手动清零功能。R9(1) R9(2) (Pin 6, 7)置9端通常不用接地即可。配置为十进制计数器将QA输出Pin 12连接到时钟输入BPin 1。这样芯片内部先进行2分频对CPA再进行5分频对CPB组合成一个10分频的十进制计数器。其输出QA, QB, QC, QD就是标准的8421 BCD码。级联实现两位数计数 个位计数器的QD端Pin 11代表计数值8和QA端Pin 12代表计数值1经过一个与门或直接利用74LS90的特性将QD作为十位计数器的时钟来产生进位信号。更常见的接法是将个位的QD输出连接到十位的CPA时钟输入。因为QD在计数0-7时为低在计8和9时为高在9跳变到0时会产生一个下降沿这个下降沿正好作为十位计数器的触发脉冲实现“逢十进一”。3.3.2 74LS47BCD到7段译码驱动74LS47接收4位BCD输入A, B, C, D其中A是最低位LSB并输出低电平有效的信号直接驱动共阳极7段数码管。关键连接输入 A, B, C, D分别连接74LS90的输出 QA, QB, QC, QD。输出 a, b, c, d, e, f, g通过限流电阻通常220Ω连接到数码管的对应段引脚。LT’ (Lamp Test)灯测试端低电平时所有段亮。通常接高电平Vcc或悬空内部上拉。BI/RBO’ (Blanking Input/Ripple Blanking Output)消隐输入/动态消隐输出。当其为低电平时强制所有段熄灭。我们简单接高电平即可。RBI’ (Ripple Blanking Input)动态消隐输入用于消除多位显示中高位的“前导零”。在我们的双位显示中可以将十位显示器的RBI’接地个位的RBI’接高电平。这样当十位为0时其数码管会完全熄灭只显示个位数字看起来更专业。限流电阻计算 数码管每段LED的典型正向压降约为2V工作电流建议在5-20mA。假设电源为5V则限流电阻 R (5V - 2V) / 0.01A 300Ω。选择220Ω是一个折中既能保证亮度电流也在安全范围内约13.6mA。4. 从零开始的完整制作与调试流程4.1 物料清单与工具准备在开始焊接前请再次清点所有元件这是避免中途停工的关键。核心元件清单类别元件/型号数量说明芯片74LS90 十进制计数器2个位和十位计数74LS47 BCD-7段译码器2驱动数码管LM7805 5V稳压器1电源稳压半导体红外发射管 (5mm)1建议选用940nm波长光电晶体管 (5mm 匹配发射管)1NPN晶体管 BC5471信号整形红色LED (5mm)1用作检测状态指示共阳极7段数码管 (0.5英寸或0.36英寸)2注意是共阳无源元件电阻 220Ω14数码管段限流 (每段1个)电阻 120Ω1红外发射管限流电阻 2.2kΩ1光电晶体管上拉电阻 10kΩ1BC547基极下拉/上拉视电路设计电解电容 10µF/16V1LM7805输入电容电解电容 1µF/16V1LM7805输出电容轻触开关1计数器复位按钮其他9V电池及扣式连接器1套电源实验板 (洞洞板) 或 PCB1块建议用洞洞板便于调试导线、焊锡、排针等若干结构件纸板、塑料棒、热熔胶、废旧笔壳若干制作输送轨道和传感器支架必备工具电烙铁、焊锡丝、吸锡器、万用表、剥线钳、尖嘴钳、镊子。万用表是调试阶段最重要的工具没有之一。4.2 分步焊接与电路搭建强烈建议采用分模块焊接、分模块测试的策略不要一次性焊完所有东西。步骤一搭建并测试电源模块在洞洞板的一角焊接LM7805。注意引脚顺序从左到右芯片正面标签朝向自己通常是输入(1)、地(2)、输出(3)。查阅数据手册确认。焊接输入电容10µF和输出电容1µF注意电解电容的极性长脚为正短脚为负。负极通常对应外壳上的白色条纹。接上9V电池先不要接电路其他部分用万用表直流电压档测量LM7805的输出脚与地之间的电压。确保输出为稳定的4.9V - 5.1V。如果电压偏差大或无输出立即断电检查。步骤二搭建并测试红外检测模块在另一区域搭建电路。先焊接红外发射管回路Vcc - 120Ω电阻 - IR LED正极 - IR LED负极 - GND。焊接光电晶体管回路Vcc - 2.2kΩ电阻 - 连接到光电晶体管集电极(C)作为输出点光电晶体管发射极(E) - GND。关键测试上电。用万用表测量光电晶体管集电极输出点对地电压。用手遮挡红外光路观察电压是否从低电平约0.2-0.7V跳变到高电平约4.5V以上或反之。这验证了传感部分基本正常。接着焊接BC547整形电路。将上一步的输出点通过一个1kΩ电阻连接到BC547的基极(B)。BC547的发射极(E)接地。在集电极(C)和Vcc之间接一个10kΩ的上拉电阻。此时BC547的集电极就是整形后的输出信号。再次测试测量BC547集电极电压。此时逻辑应该反相无遮挡时为高电平~5V遮挡时变为低电平~0V。这个清晰的下降沿就是我们需要的计数脉冲。可以在这个点接一个红色LED串联220Ω电阻到Vcc作为视觉指示遮挡时LED亮非常直观。步骤三搭建个位计数与显示模块焊接个位的74LS90和74LS47。务必先给所有芯片的Vcc通常为右上角引脚如74LS90的Pin 574LS47的Pin 16和GND通常为左下角引脚如74LS90的Pin 1074LS47的Pin 8正确供电这是芯片工作的前提。连接74LS90的CPA (Pin 14) 到红外检测模块BC547的输出。连接74LS90的QA (Pin 12) 到其自身的CPB (Pin 1)配置为十进制模式。连接74LS90的输出QA, QB, QC, QD (Pins 12, 9, 8, 11) 到74LS47的输入A, B, C, D (Pins 7, 1, 2, 6)。注意顺序对应。将74LS47的输出a-g通过7个220Ω限流电阻连接到共阳极数码管的对应段引脚。数码管的公共阳极COM直接接Vcc。焊接一个轻触开关一端接Vcc另一端通过一个10kΩ电阻防止静电干扰连接到74LS90的两个复位端R0(1)和R0(2) (Pins 2, 3)。开关的另一端接地。这样按下按钮时复位端为高电平计数器清零。模块测试上电。此时用手快速遮挡红外传感器观察个位数码管是否从0开始递增。按下复位按钮数码管应归零。如果数码管显示乱码或不计数用万用表检查1) 芯片电源是否5V2) 74LS90的CPA脚在遮挡瞬间是否有电压跳变3) 74LS47的输出脚电平是否随计数变化。步骤四级联十位计数显示模块焊接第二组74LS90和74LS47及数码管作为十位。将个位74LS90的QD输出 (Pin 11) 连接到十位74LS90的CPA时钟输入 (Pin 14)。这就是进位连接。将十位74LS90配置为十进制计数器QA连CPB。连接十位74LS90的输出到十位74LS47再驱动十位数码管。实现自动消隐前导零将十位数码管对应的74LS47的RBI’ (Pin 4) 引脚接地。将个位数码管对应的74LS47的RBI’引脚接高电平Vcc。这样当十位为0时其数码管所有段将熄灭。最终联调上电复位清零。连续遮挡红外传感器10次观察显示是否从00, 01, 02...递增到09第10次时变为10。继续测试到99然后观察下一次是否归零。整个过程中十位在0时应不显示。4.3 机械结构设计与制作要点电路工作正常后需要一个可靠的机械结构来引导瓶盖单列、逐个通过红外光路。核心设计—— “星轮”分拣机构材料用硬纸板或薄塑料板切割一个圆形作为“星轮”在圆周上均匀切割出4-6个凹槽凹槽的宽度和深度略大于瓶盖的厚度和半径。轴与手柄用一根坚固的塑料棒如衣架改造作为轴穿过星轮中心并固定。在轴的一端弯曲成手柄形状。安装将星轮垂直安装在一个纸板箱的侧面其边缘微微伸入箱内底部堆积的瓶盖中。转动把手星轮的凹槽会舀起单个瓶盖并将其提升。滑道在星轮顶部出口用纸板粘接一个倾斜的滑道。被提升上来的瓶盖在重力作用下会沿着滑道单列滑下。传感器安装在滑道的末端开一个窄缝。将红外发射管和接收管分别固定在窄缝两侧并用热熔胶牢牢固定。关键技巧使用一段不透光的废旧塑料笔筒将两个管子分别插入笔筒两端确保它们精确对位且外界杂散光不会干扰。笔筒内部最好涂黑。整体整合将电路板建议用一个小塑料盒保护固定在箱子旁传感器引线用排线连接。确保转动星轮时瓶盖能顺畅、逐个地通过传感器窄缝。这个机械部分需要耐心调试。凹槽的大小、滑道的倾斜角度、传感器缝隙的宽度都需要根据实际瓶盖的大小进行微调目标是保证每次只有一个瓶盖快速、稳定地阻断光路。5. 系统调试、问题排查与优化经验即使按照图纸焊接第一次通电也可能遇到各种问题。以下是常见故障的排查思路和我的实战经验。5.1 上电无任何显示检查电源用万用表测量LM7805输出是否为5V。若无检查电池电压、电池扣连接、LM7805输入输出是否接反、电容是否短路。检查芯片供电直接测量每个74LS90和74LS47的Vcc和GND引脚之间电压确保是5V。有时板子上的电源走线可能虚焊或断裂。检查数码管公共端确认共阳极数码管的公共端COM是否已接Vcc。5.2 数码管显示乱码或部分段不亮检查限流电阻和连接用万用表通断档逐一检查从74LS47输出脚到数码管引脚之间的电阻和连线是否连通。这是最常见的问题点。检查译码器输入手动控制计数器复位此时计数器输出应为0000。用万用表测量74LS47的四个输入引脚A,B,C,D电压应该都是低电平接近0V。如果某个引脚为高则检查与74LS90的连接。检查译码器使能端确认74LS47的LT’、BI/RBO’、RBI’引脚已按前述要求正确接高或接低不要悬空TTL芯片悬空可能被识别为高电平导致异常。5.3 计数不准确漏数、多跳这是红外检测部分的问题最为典型。信号波形问题这是最可能的原因。瓶盖通过时光电晶体管输出的可能不是一个干净的方波而是带有抖动或缓慢变化的波形。74LS90对时钟边沿敏感如果边沿不陡峭可能触发多次或无法触发。解决方案在BC547的基极和地之间并联一个0.1µF - 1µF的电容。这个电容可以吸收短暂的抖动起到“消抖”作用。电容值需要实验太小可能效果不佳太大可能使脉冲边沿过于缓慢。从0.1µF开始尝试。灵敏度与对齐问题红外对管没有完全对准或者环境光太强。解决方案确保传感器安装在暗箱或使用遮光套管。在完全黑暗环境下如用手完全捂住测试BC547输出是否稳定为高电平用白纸完全遮挡时是否稳定为低电平。电源噪声电机如果用了或其它部分引入噪声。解决方案在LM7805的输入和输出端再并联一个0.1µF的陶瓷电容用于滤除高频噪声。确保电源走线粗短。5.4 计数到特定数字后卡住或不进位芯片级联错误检查个位QD到十位CPA的连接是否可靠。用万用表监测当个位从7变8时QD应从低变高从9变0时QD应从高变低产生一个下降沿。芯片损坏在反复测试中静电或短路可能损坏芯片。可以尝试更换一片74LS90测试。5.5 优化与扩展建议增加声音提示可以在BC547的输出端接一个蜂鸣器驱动电路如通过一个晶体管每计数一次发出“滴”的一声提供听觉反馈。增加预置数功能使用74LS192可预置十进制计数器替代74LS90可以通过拨码开关预设一个初始值实现减法计数或从特定值开始计数。提高计数速度本电路受限于红外传感器的响应时间和机械结构。对于高速计数需要选用响应更快的光电传感器并考虑使用施密特触发器如74LS14对信号进行整形以获得更陡峭的边沿。电源管理长时间使用时可以考虑改用5V直流电源适配器或者使用锂电池配合低压差稳压模块更经济环保。这个基于纯数字电路的红外计数器项目就像一台微型的机械计算机每一个逻辑功能都由实实在在的硬件连接实现。完成它所带来的成就感与编写一段代码让屏幕显示数字是截然不同的。它让你亲手触摸到数字世界的物理基础理解时钟、脉冲、逻辑电平这些抽象概念的真实模样。调试过程中遇到的每一个问题都是对电路原理的一次深刻拷问和复习。希望这份超详细的指南能帮助你顺利搭建起自己的计数系统并在过程中收获比计数结果本身更宝贵的知识与经验。