发动态
综合 最新发布 最新回复
图文
列表
#技术干货##技术干货##技术干货##技术干货##技术干货# 比较器电路是硬件设计里很常用的一种电路,它的功能是比较两个输入端电压的大小,并且根据比较结果输出高电平或者低电平。在电压检测、过压/欠压保护、波形整形、频率测量等场景下比较器电路使用非常广泛。 在多数场景下,使用比较器需要加入一定的迟滞;如果没有迟滞,当输入信号接近比较阈值时,在噪声的作用下比较器的输出会多次翻转,导致后级电路误判;下图中绿色三角波为输入,红色方波为输出;在三角波越过比较阈值2.5V时,比较器的输出多次连续反转;如果比较器后级为MCU,很可能导致MCU连续多次误动作; 而引入迟滞电压后,输出波形明显改善,不再有连续翻转; 因为有不同的使用需求,比较器的种类也很丰富。有需要外部电阻电路的比较器,也有集成度更高不需要外围电阻的比较器。在绝大多数场景下,专用比较器价格更便宜,而且参数更优秀;只有在特定的场景下,比如系统里有多余运放,同时对速度要求又比较低的情况下,才适合用运放搭一个比较器电路,降低硬件BOM成本。 常见的比较器芯片比如LM393(安森美出品)需要用到一个运放和几个外围电阻;配合电源电压,合理设定电阻的阻值大小就能搭建一个有迟滞效应的比较器。下面介绍一下使用电阻+比较器芯片搭建迟滞比较器的原理和参数计算方法。原理解析 迟滞比较实际上就是基于正反馈做的一个闭环结构,通过在输出端与同相输入端之间引入电阻分压网络,使比较器的输出值不仅与当前输入值有关,而且与当前时刻的输出值有关;典型的反向迟滞比较器电路结构如下。 图中所选的比较器输出极为开漏输出,需要外接上拉电阻R1才能输出高电平。很多比较器都是这种输出,它的好处在于可以灵活控制输出的高电平大小;对于多数MCU可以将输出上拉的电压设定为3.3V,与MCU供电电源保持一致,方便MCU接收;对于特定电路,可以设定上拉电压与比较器供电电压不同,比如设定为5V或者更高,以符合后级电路的输入幅度要求。 图 1 原理图 待比较信号从比较器反向端输入,比较阈值结合上拉电压VCC及外围电阻值进行设定。输出特性曲线如下图所示: 图2 输出特性曲线 对于输入信号而言,电路中存在两个比较电平,VL与VH。当输入信号高于VH时,输出电平肯定会变成0;当输入低于VL时,输出肯定会变成1;(因为信号输入到比较器的反向端,所以输出逻辑和输入信号的变化趋势是相反的)。而当输入信号处于VH与VL中间时,就要依靠当前输出电平状态来判断变化曲线。如果此时输出为1,那么输入必须继续上升,直到超过电平VH时才能使输出为0,否则输出仍然保持为1;如果此时输出为0,那么输入必须继续下降,直到低于VL时才能使输出为1,否则输出仍然保持0; 之所以出现这个曲线的原因在于,不同的输出状态会影响VTH处的电压值;导致输入信号所面对的比较值不同。当比较器输出为1(高电平)时,电阻R1+R3等效于与电阻R2并联的状态,此时VTH节点电压对应于图2中的VH,也就是我们目标设计参数中的2.7V。 图3 输出高电平时等效电路 而当比较器输出为0(低电平)时,电阻R4与电阻R3成并联关系,此时VTH节点电压对应于图2中的VL,也就是我们目标设计参数中的2.4V。 图4 输出低电平时等效电路 能做图3、图4等效的原因在于,比较器的输出是开漏输出。下图是LM393的结构框图,当比较器输出高电平的时候Q16处于关断状态;而比较器输出低时Q16导通,导致输出output直接接地。 参数计算 接下来就需要根据参数需求,来设定外围电阻值。为了计算方便我们可以举一个有具体数值的例子,来看一下如何根据参数计算电阻值。假设供电电源为5V,要求设计VH电平为2.7V,VL电平为2.4V,也就是中间迟滞电平为300mV。 为了保证输出电平的驱动能力,一般选定R1的阻值比较小;我们选定R1的阻值为4.7KΩ;同时为了尽量减少静态电流降低功耗,选择R4电阻为100KΩ。接下来就要根据这两个电阻参数计算剩下的R2、R3阻值。 根据电阻串并联分压的计算方法,两个阈值电压计算公式如下: 因为R1与R4已经选定,Vcc、VH、VL这些参数已经明确,计算R2与R3就是解这个二元一次的方程组。由于电阻之间存在串并联关系,这个方程求解过程比较复杂,在实际计算时并不实用,所以有必要根据实际情况做一点简化。 图3 输出高电平时等效电路 如果我们重新观察图3的结构就会发现,对于开漏输出的比较器而言,R1的阻值相较于R2、R3、R4必须是个很小的值,这样当比较器输出电平为高时才能使输出节点Output的电压尽可能接近Vcc;对于MCU应用来说更容易被MCU管脚检测到高电平。这样在实际应用时可以忽略在VH、VL计算公式中的影响;根据这个实际应用需求,在计算过程中忽略R1的影响,可以得到R2、R3的表达式为: 带入计算公式,就可以得到R2≈95.83KΩ;R3≈766.66KΩ。选取最接近的1%标准电阻值,R2 = 95.3KΩ,R3= 768KΩ,R1取R3的1/100大小,为7.68KΩ;仿真验证 接下来我们使用LTspice进行仿真,验证参数设置是否正确。仿真中使用了MAX9095做比较器,这个比较器也是一个开漏输出;使用5V供电,输入一个5V正弦波进行比较;可以看到标线处,VL≈2.4V,VH≈2.7V; 输入输出电压扫描特性如下 我还设计了一个简易的电阻计算程序,输入供电电压,下拉电阻阻值,VH、VL电压就可以计算出剩余电阻取值,并且推荐最为接近的1%精度标准电阻值,非常简单。把刚才的设计参数VH、VL和电源电压都标注进去,就能够获得标准外围阻值; 需要的朋友可以留言索取。关于这个小程序开发还踩了很多坑,里面的代码都是AI辅助编写的,其中有很多需要注意的事项,之后有时间我再写文章发出来。
告别反复调试:比较器迟滞电阻网络计算,看这篇就够(附计算小工具)
开源硬件平台
反激电源复刻,大佬们纠纠错 第一次正经画板子,即将打样前想看看哪里还有错误
5
严重问题>>高压侧线间绝缘间隙太小了,不安全,容易炸 其他问题>>光耦开槽只挡住一半,跟不开槽没区别 新手建议先不要做元件太紧凑的板子. 研究开关电源先要掌握安全规范相关知识,不然做出东西只会害人害己
开源硬件平台
我们最近刚把一个后台系统从 element-plus 切成了完全自研组件,CSS 层统一用 Tailwind。全员同意设计稿一致性提升了,但代码里怨言开始冒出来。这篇文章不讲原理,直接上代码对比和团队真实使用反馈,看看是谁在享受,谁在撑着。1.组件内样式迁移原先写法(BEM + scoped): <template> <div class="card"> <h2 class="card__title">用户概览</h2> <p class="card__desc">共计 1280 位</p> </div> </template> <style scoped> .card { padding: 16px; background-color: #fff; border-radius: 8px; } .card__title { font-size: 16px; font-weight: bold; } .card__desc { color: #999; font-size: 14px; } </style> Tailwind 重写: <template> <div class="p-4 bg-white rounded-lg"> <h2 class="text-base font-bold">用户概览</h2> <p class="text-sm text-gray-500">共计 1280 位</p> </div> </template> 优点:组件直接可读,不依赖 class 定义样式即结构,调样式时不用来回翻缺点:设计稿变了?全组件搜索 text-sm 改成 text-base?无法抽象:多个地方复用 .text-label 变成复制粘贴【顺便提一嘴】技术大厂,前端-后端-测试,全国均有机=会,感兴趣可以试试。待遇和稳定性都还不错~2.复杂交互样式纯 CSS(原写法) <template> <button class="btn">提交</button> </template> <style scoped> .btn { background-color: #409eff;color:#fff; padding: 8px 16px; border-radius: 4px; } .btn:hover { background-color: #66b1ff; } .btn:active { background-color: #337ecc; } </style> Tailwind 写法 <button class="bg-blue-500 hover:bg-blue-400 active:bg-blue-700 text-white py-2 px-4 rounded"> 提交 </button> 问题来了:✅ 简单 hover/active 很方便❌ 多态样式(如 disabled + dark mode + hover 同时组合)就很难读: <button class="bg-blue-500 text-white disabled:bg-gray-300 dark:bg-slate-600 dark:hover:bg-slate-700 hover:bg-blue-600 transition-all"> > 提交 </button> 调试时需要反复阅读 class 字符串,不能直接 Cmd+Click 查看样式来源。3.统一样式封装,复用方案混乱原写法:统一样式变量 + class $border-color: #eee; .panel { border: 1px solid $border-color; border-radius: 8px; } Tailwind 使用中经常出现的写法: <div class="border border-gray-200 rounded-md" /> 问题来了:设计稿调整了主色调或边框粗细,如何批量更新?BEM 模式下你只需要改一个变量,Tailwind 下必须靠 @apply 或者手动替换所有 .border-gray-200。于是我们项目里又写了一堆“语义类”去封装 Tailwind: /* 自定义 utilities */ @layer components { .app-border { @apply border border-gray-200; } .app-card { @apply p-4 rounded-lg shadow-sm bg-white; } } 最后导致的问题是:我们重新“造了个 BEM”,只不过这次是基于 Tailwind 的 apply 写法。🧪 实测维护成本:100+组件、多人协作时的问题我们项目有 110 个组件,4 人开发,统一用 Tailwind,协作两个月后出现了这些反馈:👨‍💻 A 开发:写得很快,能复制设计稿的 class 直接粘贴🧠 B 维护:改样式全靠人肉找 .text-sm、.p-4,没有结构命名层🤯 C 重构:统一调整圆角半径?所有 .rounded-md 都要搜出来替换所以我们内部的结论是:Tailwind 写得爽,维护靠人背。它适合“一次性强视觉还原”,不适合“结构长期型组件库”。🔧 我们后来的解决方案:Tailwind + token 化抽象我们仍然使用 Tailwind 作为底层 utilities,但同时强制使用语义类抽象,例如: @layer components { .text-label { @apply text-sm text-gray-500; } .btn-primary { @apply bg-blue-500 hover:bg-blue-600 text-white py-2 px-4 rounded; } .card-container { @apply p-4 bg-white rounded-lg shadow; } } 模板中统一使用: <h2 class="text-label">标题</h2> <button class="btn-primary">提交</button> <div class="card-container">内容</div> 这种方式保留了 Tailwind 的构建优势(无 tree-shaking 问题),但代码结构有命名可依,后期批量维护不再靠搜索。📌 最终思考Tailwind 是给设计还原速度而生的,不是给可维护性设计的。 设计师爱是因为它像原子操作; 开发者撑是因为它把样式从结构抽象变成了“字串组合游戏”。如果你的团队更在意开发效率,样式一次性使用,那 Tailwind 非常合适。 如果你的组件系统是要长寿、要维护、要被多人重构的——你最好在 Tailwind 之上再造一层自己的语义层,或者别用。分享完毕,谢谢大家🙂——转载自:ErpanOmer
Tailwind 到底是设计师喜欢,还是开发者在硬撑?
开源硬件平台
此题何解
开源硬件平台
V3.0 – 两板集成方案 版本:V3.0 日期:2026-03-21 用途:厂家评估、出样、量产开发 一、项目目标 开发一套双电机升降控制系统,用于控制: 电机1:桌面升降 电机2:显示器升降 系统需具备: 电容触控控制(4键) 无线遥控控制(433MHz) 记忆位置(站姿/坐姿) 自动行程学习 完整安全保护机制 二、系统架构(强制要求) 2.1 整体架构(两板方案) 主控板(MCB)位于底部金属结构内,负责: 双电机驱动(H桥+PWM) 霍尔信号处理 主逻辑控制与安全保护 电源转换(24~29V → 5V) UART通信接口 ↓ UART通信线(≤2m),信号:5V / TX / RX / GND HMI+无线合并板安装在桌面内部(非金属环境),集成: 电容触控区(4弹簧,中心灯珠) 天线区(433MHz) 本地MCU(处理触控、背光、无线、UART) 集成433无线接收 UART通信接口 2.2 架构设计原则(不可更改) 主控板(MCB)位于底部金属结构内,负责电机驱动与主逻辑。 HMI+无线合并板安装在桌面内部(非金属环境),集成触控与无线功能。 主控与HMI之间采用UART通信,线缆长度 ≤2m。 无线模块必须集成在HMI板上,远离金属,与触控弹簧保持 ≥15mm 间距。 禁止将电容触控原始信号通过长线传输(触控信号在HMI板上本地处理)。 HMI板需独立MCU进行本地处理,不得依赖主控进行触控扫描。 三、硬件系统要求 3.1 主控板(MCB) 功能: 双电机驱动(正反转 + PWM,频率 ≥20kHz) 霍尔信号处理(双路AB相,5V供电) 主逻辑控制 安全保护 与HMI板UART通信 电气要求: 输入电压:24~29V DC 输出:5V(供HMI板使用) 电机驱动:双路独立 H桥 持续电流:≥2A/路 峰值电流:≥3A/路 待机功耗:≤0.5W(休眠状态下) 驱动要求: 必须支持正反转(H桥或等效方案),不接受继电器切换方向 PWM频率 ≥20kHz Hall信号需做RC滤波及施密特触发处理 5V电源方案: 24V→5V 降压建议采用同步降压 DC-DC(如 MP2307 或同类),效率≥85%,输出电流≥500mA(含 HMI 板+霍尔供电余量)。 硬件急停: 硬件急停通过切断 24V 主供电链路实现(串联急停开关或继电器),MCU 软件急停为辅助手段,不可替代硬件断电。 电机接口线序(仅供参考): 电机线序建议按捷昌标准6芯:MOTOR+、MOTOR-、HALL_B、HALL_A、HALL_GND、HALL_5V。若使用其他线序,请提前沟通。 3.2 HMI+无线合并板 功能组成: 电容触控(4键) LED背光(4个,每个弹簧中心一颗) 本地MCU(处理触控、背光、无线、UART通信) 433MHz无线接收模块(集成在板上) 触控要求(不可妥协): 电容弹簧:直径 ≥12mm,高度 8~10mm 面板:木板,感应距离3~5mm(局部薄区约1mm) 触控芯片需具备上电自动基准校准和自适应环境基准跟踪,能稳定穿透木板厚度 触控信号在本地处理,不得通过长线传输 LED要求: 每键1颗LED,支持PWM调光 无线模块要求: 频率:433MHz(学习码) 距离:室内 ≥5米 模块集成在HMI板上,远离金属结构,与触控弹簧保持 ≥15mm 间距 天线区域(后部约53×17mm)正反面禁止铺铜,天线走线做阻抗匹配 无线模块电源需独立滤波(100nF+10µF),不与触控芯片共用 遥控器配套: 配套遥控器由厂家推荐或采购市售 433MHz EV1527 学习码遥控器(4键),需与接收方案兼容,厂家需提供配对测试说明。 布局建议: HMI板尺寸约53×70mm(具体以附图为准),触控区与天线区物理分隔 触控感应走线建议加 Guard Ring(地线包围) 触控IC的模拟地与无线模块的数字地单点汇合,避免大面积混用 UART接口(5V/TX/RX/GND)放置于板侧边,方便与主控连接 3.3 通信接口 主控 ↔ HMI: UART,线长 ≤2m 电平:5V逻辑,建议上拉4.7kΩ 支持校验(建议CRC)和超时机制 HMI ↔ 无线模块: 由模块接口决定(UART/GPIO),直接连接至本地MCU 四、功能逻辑 详细功能逻辑见单独提供的 《功能逻辑表》(含按键映射、唤醒休眠、长按运行、组合键学习、记忆位置、安全保护等)。 请厂家按该表完整实现,本处不再重复。 五、抗干扰要求(必须满足) 系统在电机运行、LED PWM、长线通信等条件下必须稳定运行,不得出现误触发、死机、无线失效。 HMI板布局需分区、单点接地 无线模块电源独立滤波 UART通信线建议使用屏蔽线或双绞线,远离动力线 六、交付要求(量产级) 必须交付以下文件,确保可直接移交生产: 硬件部分: 原理图(源文件+PDF) PCB Layout(源文件+Gerber) BOM(含替代料) 贴片坐标文件 装配图 固件部分: 完整源码(C语言,注释清晰) 烧录文件(hex/bin) 烧录工具及烧录说明 固件版本管理说明 测试部分: 功能测试规范(含测试点说明) 老化测试方案(≥48小时) 不良品判断标准 其他: 线束图纸 接口定义说明 装配说明 物料承认书清单 七、验收标准 功能验收:按《功能逻辑表》逐项验证通过 无线验收:遥控器室内5米稳定控制,配对可靠 稳定性验收:连续运行48小时无异常(含休眠唤醒) 量产文件验收:所有文件齐全,可支持工厂直接生产 八、厂家评估要求 请提供: 方案说明:是否基于现有平台,简要技术路线 样品周期:从合同到提供2套完整样机的时间 报价:NRE(研发费)与BOM成本(按1000套批量)分开列出 重点评估: 53×70mm空间内集成触控、LED、MCU、433模块及天线的布局可行性 3~5mm实木板穿透的触控灵敏度稳定性 天线区净空及抗干扰措施的实现 附:推荐器件参考清单 (厂家可替换,需提前沟通) 主控MCU:STC8H8K64U(LQFP-32,约2元) HMI MCU:STC8G1K08(SOP-16,约0.8元) P-MOS高边:AP40P100K(TO-252,约0.6元) N-MOS低边:HYG180N10LS1P(TO-220FB,约0.6元) 电容触控IC:BS86C04A(合泰,SOP-16,约1.5元) 433接收IC:SYN480R(杰盛微,SOP-8,约0.7元) 5V电源:MP2307/MP1584 类(SOT-23,约0.5元) 说明:以上器件仅为参考,厂家可根据自身供应链选用同等性能、封装兼容的替代料,需提前沟通确认。 附件: 板框示意图(附后) 功能逻辑表(附后)
双电机升降桌控制系统(PRD)
开源硬件平台
"微服务是银弹!" "Docker不是银弹!" "React才是真正的银弹!" 天天在文章和评论区看到这个词语,他到底是个啥,又是从哪里开始的。今天不讲技术,聊一下啥是银弹。概念来源"银弹"(Silver Bullet)这个概念来自于弗雷德里克·布鲁克斯(Fred Brooks) 的经典著作《人月神话》(The Mythical Man-Month)。1986年,布鲁克斯在著名论文《没有银弹:软件工程的本质与偶然性》中提出了这个影响深远的论断:在软件工程领域,没有任何技术或方法能够在十年内使生产率、可靠性和简洁性有数量级的提升。狼人传说的隐喻为什么要用"银弹"这个词?这个比喻来自狼人传说:狼人:被认为是不死的、无坚不摧的怪物银弹:传说中唯一能够杀死狼人的武器布鲁克斯用这个比喻来说明:软件开发的本质复杂性 = 狼人(看似不可战胜的难题)神奇的技术解决方案 = 银弹(人们期望的一招制敌的办法)残酷的现实 = 银弹根本不存在软件困难的分类布鲁克斯将软件开发的困难分为两类:本质性困难(Essence)这些是软件开发固有的、无法避免的困难:概念结构的复杂性:软件本身的概念结构不可见性:软件没有物理实体,无法直观把握一致性和可变性:必须适应不断变化的需求离散性:软件系统的状态组合极其庞大偶然性困难(Accident)这些是由于当前工具和技术限制造成的困难:开发工具的限制编程语言的复杂性硬件性能约束团队协作问题布鲁克斯的核心观点是:银弹最多只能解决偶然性困难,但无法触及本质性困难。 ,虽然我没看完,但总结下来应该就是这个意思😂需要一个跳板工作的,想一手抓主业,一手抓副业的,不妨看看这个机会~:技术大厂,前端-后端-测试,全国均有机会,感兴趣可以试一试;待遇和稳定性都还可以~ 且不需要你耗费很多“人际关系的心力”在上面。2. 现在"银弹"的实际含义银弹 = 能够解决所有问题的技术、方法或工具技术圈中的典型使用当有人说"xxx是银弹"时,通常意味着:这东西太厉害了,能解决我们所有的烦恼有了它,之前的所有问题都不是问题了别的技术都可以不用考虑了典型例子: // React派 const ReactIsSilverBullet = () => {     return "React才是真正的银弹,解决所有前端问题!"; }; // Vue派 const VueIsSilverBullet = () => {     return "Vue才是银弹,简单易学,性能无敌!"; }; // 微服务派 const MicroservicesAreSilverBullet = () => {     return "微服务就是银弹,拆分后所有扩展问题都解决了!"; }; // Docker派 const DockerIsSilverBullet = () => {     return "Docker就是银弹,一次构建到处运行!"; }; 当有人说"xxx不是银弹"时,意思是:这个技术有局限性,不能解决所有问题不要指望它能一劳永逸还是需要配合其他方案典型例子: -- MySQL不是银弹 -- "MySQL虽然不错,但面对大数据量时还是有限制,不是银弹!" -- K8s不是银弹 -- "K8s功能强大,但运维复杂度很高,不是银弹!" -- 敏捷开发不是银弹 -- "敏捷不是银弹,还需要结合其他工程实践!" 3. 银弹概念的传播路径3. 银弹含义的演变过程原始含义(1986年)核心概念: 能够数量级(10倍)提升软件开发生产率、可靠性和简洁性的技术或方法软件开发的本质复杂性是否存在革命性的突破技术软件工程的基本限制现在的技术圈上普遍的含义能够神奇完全解决具体场景的一系列问题的技术、工具或方法React vs Vue 哪个更好微服务 vs 单体如何选择MySQL vs MongoDB 哪个更适合Docker vs K8s 如何选择总结能很清晰的看到银弹这个词从抽象的架构设计理念,演变成了具体的对某件技术、框架、工具、方法的评价。原本:指软件工程中的架构设计和整体方法论现在:变成了对具体某个技术方案、技术框架的评价工具具体含义变化原始含义:布鲁克斯指的是能否根本上解决软件复杂性的架构方法现在含义:用来评价某个具体技术、框架、工具是否万能也反映了大家讨论技术的时候,越来越具体,越来越落地。 普通人也很难接触到什么太抽象,太宏大的架构设计,我们也更应该关心更具体的方案,来更好的解决问题。——转载自:9号达人#嘉立创PCB#
大家天天说的'银弹'到底是个啥?
开源硬件平台
优质硬件创作分享平台
打赏记录
服务时间:周一至周六 9::00-18:00 · 联系地址:中国·深圳(福田区商报路奥林匹克大厦27楼) · 媒体沟通:pr@jlc.com · 集团介绍
移动社区