ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

电压分压器与戴维南等效:电位器负载效应及光敏电阻追光实测

电压分压器与戴维南等效:电位器负载效应及光敏电阻追光实测

简介:这份山东大学崇新学堂电子电路实验七的报告以机器人头部追光项目为主线,面向电子电路入门、嵌入式实验及课程报告撰写者,帮助读者理清从基本电路仿真到原型搭建的关键概念。压缩包内含1个docx文档,约578KB,按实验目标、材料清单、操作步骤与知识点总结组织内容,篇幅集中、便于检索。正文涉及电路原型工具、万用表与电源箱的测量调试,电压分压器和电位器的设计思路,CMax仿真环境的操作流程,以及利用一对光敏电阻搭建光传感器“眼睛”的方法,并进一步说明机器人头部机械结构与旋转追踪光线的实现逻辑。已有98人学习下载,可作为实验预习、报告整理和仿真排错时的参考,尤其适合需要对照电路原理与动手环节查漏补缺的学习者,也能为同类追光机器人实验提供可复用的分析框架。

1. 一个 5kΩ 电位器拧到 2.0V,挂个 100Ω 就掉到 0.21V

拧到 2.0V,万用表也读 2.0V,看起来稳如老狗;随手并一个 100Ω 电阻到地,读数瞬间塌到 0.21V。这不是表坏了,是戴维南等效在收账。这份 EECS 实验课 Lab7 的资源,就是把这类事逼你亲手量一遍:先用 CMax 在屏幕上搭电压分压器,再拿真实的 1kΩ 电阻、鳄鱼夹和面包板复刻,最后把两只光敏电阻装到机器人头部当眼睛,让它转头追光。它面向刚学完基尔霍夫定律、但还没把公式和面包板对上号的人,也适合想弄清"仿真读数为什么和实物差一截"的熟手。整份材料的价值不在标准答案,而在每一步都留了算一遍、仿一遍、量一遍的三重校验位——三个数对不上,就是你理解出偏差的地方。

2. 电压分压器:两个二分压级联为什么不是四分压

这一章要解决的是 Lab7 前半段最容易被跳过、也最容易埋雷的部分。很多人看到Vo = Vin × R2/(R1+R2)就觉得懂了,然后在 Step 6 的探针读数上和仿真吵起来。真正的问题从来不是公式,而是公式成立的前提——输出端不能带载。

2.1 从 10V 到 5V:先让探针说话

CMax 里的mystery.cmax是个现成的例子:10V 电源轨、两只等值电阻、探针一头接地一头夹在节点 J42 上。手算很简单,上下臂各 1kΩ,中点就是输入的一半,5V。仿真跑完弹窗给出的也是 5V,两边对上,说明工具链没问题,可以往下走。

这里有个细节容易被忽略:探针本身不是理想器件。CMax 的探针在多数配置下按高阻处理,对 1kΩ 量级的分压网络影响可以忽略;但换成兆欧级电阻再测,读数就会开始飘,这是后面实物测量时要提前有心理准备的事。

启动方式上,Linux 和 macOS 下进目录跑一行就够:

cd ~/designLab07 python CMax.py

Windows 下直接在编辑器里打开CMax.py走 Run Module 也行。进去之后第一件事不是画图,是按Ctrl+A看版本弹窗,确认是 1.5.2。版本不对会出现元件库对不上、老文件打不开的情况,这类问题后面第 5 章还会专门讲。

提示:mystery.cmax是拿来对答案的,不是拿来抄的。先把窗口里的电路自己画一遍原理图,再打开文件比对,这样才知道自己漏了哪个节点。

2.2 面包板上复刻:把仿真布局当图纸用

实物的接线顺序建议固定成一套流程,不要每次凭感觉。第一步把电源箱标着 +15V 和 GND 的端子引到面包板两侧的电源轨,鳄鱼夹的一只"嘴"直接插进端子中心,不要拧螺丝——拧松了容易掉,拧紧了下次拆费劲。第二步用短于一英寸的跳线从电源轨引到实际要用的行,线越短,接触电阻和天线效应越小。第三步把万用表打到电压挡,表笔也通过鳄鱼夹和短线接到电源轨上,开机,把正电源调到 10V。

这套动作看着啰嗦,但它保证了后面所有测量的基准是一致的。我见过太多人直接拿 15V 往下做,然后抱怨光敏电阻分压出来的电压"超出预期"——其实是他自己把输入改了。

第四步才是插电阻。电阻引脚要剪短,让元件贴平面包板,不要架空。架空看着清爽,实际一碰就松,尤其是后面要接机器人线缆、整块板会移动的时候。布局尽量和 CMax 窗口里的样子一致,这不是强迫症,是为了让你在排查时能一眼看出"仿真是这样、实物是那样"的差异在哪。

2.3 级联的陷阱:输出阻抗在偷偷加载

Lab7 里最有价值的一问是:能不能把两个二分压电路串起来,得到一个四分压?直觉说能,电路理论说不能。原因不复杂——第一级的输出不是理想电压源,它带着一个串联的输出电阻。

第一级用两只 1kΩ,戴维南等效下来,开路电压 5V,输出电阻是两只并联,500Ω。你把第二级(同样是 1kΩ 串 1kΩ,输入电阻 2kΩ)接上去,等于给第一级的输出端并了一个 2kΩ 负载。分压比立刻变了:500Ω 串 2kΩ,输出只剩 4V,第二级再对半砍,最终 2.0V,而不是理想的 2.5V。

这段用脚本跑一遍最直观:

# cascade_divider.py # 验证两级二分压级联后的真实输出,对比理想值 def divider(vin, r_top, r_bottom): """基本分压器:输出取在下臂两端""" return vin * r_bottom / (r_top + r_bottom) def cascade(vin, r1=1e3, r2=1e3): # 第一级空载输出 v_open = divider(vin, r1, r2) # 第一级的戴维南输出电阻:r1 与 r2 并联 r_out = r1 * r2 / (r1 + r2) # 第二级的输入电阻 = 它的上下臂之和 r_load = r1 + r2 # 带载后第一级中点的真实电压 v_mid = v_open * r_load / (r_out + r_load) # 第二级再分一次 return v_mid, divider(v_mid, r1, r2), r_out vin = 10.0 vmid, vout, rout = cascade(vin) print(f"第一级空载输出 : {vin/2:.3f} V") print(f"第一级输出电阻 : {rout:.0f} Ω") print(f"带载后中点电压 : {vmid:.3f} V") print(f"第二级输出 : {vout:.3f} V") print(f"理想四分压 : {vin/4:.3f} V")

跑出来是 5.000V、500Ω、4.000V、2.000V、2.500V。第一级空载输出没错,但一旦挂上第二级,中点从 5V 掉到 4V,误差 20%,最终结果也从 2.5V 变成 2.0V。

参数上要抓住三个量:r_out决定这一级"带得动多少负载",r_load决定后级"吃多少电流",两者比值就是误差来源。经验规则是负载电阻至少是输出电阻的 10 倍,误差才能压到 10% 以内;要压到 1%,得差 100 倍。这条规则在后面电位器那一章会以更极端的形式再出现一次。

2.4 2.0V 那一问:凑一个 1:5 的分压比

Step 7 要求搭一个输出 2.0V 的分压器,输入还是 10V。反推分压比是 1:5,也就是下臂阻值是上臂的四分之一。手头只有四个 1kΩ 和一个 10kΩ,能凑出来的组合是:上臂直接用 10kΩ,下臂用1k + 1k + (1k ∥ 1k) = 2.5kΩ,四个 1kΩ 正好用完。

代入公式:10 × 2.5 / (10 + 2.5) = 2.0V。仿真给出 2.0V,手算也是 2.0V,实物万用表读到 2.00V,三个数对齐。

这里要注意别和上一节的 2.0V 搞混。级联那一节的 2.0V 是"想得到 2.5V 却因为加载掉到 2.0V",是失败的结果;这一节的 2.0V 是"设计目标就是 2.0V",是成功的结果。数值一样,机理完全相反,考试和报告里写反了是很扣分的事。

| 电路 | 上臂 | 下臂 | 理想输出 | 实际输出 | | 等值分压 | 1kΩ | 1kΩ | 5.00V | 5.00V | | 两级级联 | 1kΩ + 1kΩ | 1kΩ + 1kΩ | 2.50V | 2.00V | | 1:5 分压 | 10kΩ | 2.5kΩ | 2.00V | 2.00V |

表里第三行能成立,是因为万用表的输入阻抗在 10MΩ 量级,相对 2.5kΩ 的下臂是四千倍,加载误差不到 0.03%,看不出来。换成下臂只有几百欧、后级又是低阻输入,就未必了。

3. 电位器与负载效应:α=0.2 之后发生了什么

电位器是 Lab7 里第一个"三端器件",也是第一个让人产生"它能当可调电源用"错觉的元件。这一章把它的等效模型拆开,用 100Ω 和 10kΩ 两组负载把戴维南等效算穿。

3.1 三端器件的等效:α 切的是阻值,不是电压

蓝色 5kΩ 电位器有三个引脚,排成三角形:底边两个引脚接电源和地,顶点那个是中间抽头。转动轴的时候,抽头在电阻体上滑动,把总阻值 5kΩ 分成上下两段。设抽头位置对应的分压比为 α,则下段阻值是α × 5kΩ,上段是(1-α) × 5kΩ,空载时抽头电压就是α × Vin。

α=0.2 时,抽头对地 1kΩ,对电源 4kΩ,10V 供电下抽头读数 2.0V。实测最大值 9.99V、最小值 0.00V,说明这个电位器的两端接触做得不错,能吃到满量程。如果实测最高只到 9.5V 左右,通常是引脚接错——把抽头和某一端搞反了,等效于串了一个固定电阻进去。

注意:电位器的三个引脚不是按三角形顶点位置一一对应的,不同批次封装可能不同。上电前先用万用表电阻挡量一遍:两端之间应该是 5kΩ 固定值,抽头到任一端应该是随旋转连续变化的 0 到 5kΩ。量准了再接线。

3.2 空载 2.0V,带载 0.21V:戴维南把话说透了

保持 α=0.2 不动,在抽头和地之间并一个 100Ω 电阻。读数从 2.0V 掉到 0.21V,掉了将近十倍。报告里的理论值是 0.22V,实测 0.21V,差 0.01V,属于正常误差范围。

这个 0.01V 的差距值得掰开看。理论计算假设电位器总阻精确等于 5kΩ、抽头位置精确对应 α=0.2、100Ω 电阻精确等于 100Ω、万用表内阻无穷大。实际每个环节都有偏差:碳膜电位器标称 5kΩ 实测可能在 4.7kΩ 到 5.3kΩ 之间,α 靠手动旋转根本对不准,万用表 10MΩ 内阻并上去会再拉低一点点。这些误差叠加起来,0.01V 的偏差完全合理,不要去调电路"修"它。

用戴维南等效算更快。抽头空载电压 2.0V,输出电阻是上下两段并联:4k ∥ 1k = 800Ω。接 100Ω 负载,2.0 × 100/(800+100) = 0.222V。接 10kΩ 负载,2.0 × 10000/(800+10000) = 1.852V,报告实测 1.81V,同样对得上。

# pot_load.py # 用戴维南等效预测电位器带不同负载时的抽头电压 def thevenin(vin, alpha, r_pot): """返回 (空载电压, 输出电阻)""" v_open = vin * alpha r_lower = alpha * r_pot r_upper = (1 - alpha) * r_pot r_out = r_upper * r_lower / (r_upper + r_lower) return v_open, r_out def with_load(v_open, r_out, r_load): return v_open * r_load / (r_out + r_load) vin, alpha, r_pot = 10.0, 0.2, 5000.0 v_open, r_out = thevenin(vin, alpha, r_pot) print(f"空载电压 = {v_open:.3f} V, 输出电阻 = {r_out:.0f} Ω") for r_load in (100, 10000): print(f"接 {r_load:>6} Ω -> {with_load(v_open, r_out, r_load):.3f} V")

输出是 2.000V、800Ω、0.222V、1.852V。三行数把两个实验点全解释了。

3.3 输出阻抗随 α 变:最坏情况在正中间

电位器的输出电阻不是定值,它随 α 变化,公式是α(1-α) × R_pot。α=0 或 α=1 时输出电阻为 0,因为抽头直接贴在电源或地上;α=0.5 时最大,5kΩ 的四分之一,1.25kΩ。

这意味着同样一个电位器,拧在不同位置时"带载能力"完全不同。你在 α=0.1 附近调好一个电压,转轴一动,输出电阻变了,后级负载一分压,读数又跑了。这是用电位器做基准电压源时最头疼的地方。

| α | 下段阻值 | 上段阻值 | 输出电阻 | 空载电压 | 接 1kΩ 负载 | | 0.1 | 500Ω | 4.5kΩ | 450Ω | 1.00V | 0.69V | | 0.2 | 1.0kΩ | 4.0kΩ | 800Ω | 2.00V | 1.11V | | 0.5 | 2.5kΩ | 2.5kΩ | 1.25kΩ | 5.00V | 2.22V | | 0.9 | 4.5kΩ | 500Ω | 450Ω | 9.00V | 6.21V |

看最后一列,空载 5V 的位置接上 1kΩ 只剩 2.22V,掉了一半还多。所以电位器后面要么接高阻输入(运放的同相端、ADC 的缓冲输入),要么就得接受这个衰减,把它当成"带内阻的可调源"来设计,而不是当成理想电源。

3.4 什么时候可以放心用电位器直连

判断标准就一条:负载电阻和输出电阻的比值。比值大于 100,误差在 1% 以内,可以直接连;比值在 10 到 100 之间,误差 1% 到 10%,看你的容差要求;比值小于 10,基本不能直连,必须加缓冲。

Lab7 里电位器的用途是"让学生看见分压比可调",不是真的要驱动什么。真到后面的机器人电路,驱动对象换成了电机和 ADC 输入,这时候再拿电位器直连就会翻车。这个认知差是很多人做完 Lab7 还是糊里糊涂的地方。

4. 光敏电阻“眼睛”:把 3kΩ 到 1.2kΩ 变成电压摆幅

这一章是整个 Lab7 的核心交付物。目标很明确:用两只光敏电阻加若干固定电阻,在 10V 供电下,让灯在一英尺处开关时输出变化至少 3V。听起来不难,实际一做就会发现,纯电阻分压根本达不到。

4.1 先测再算:光敏电阻的极性不能猜

光敏电阻的阻值随光照增强而下降,这一点必须先用量出来,不能靠型号猜。报告给的三组数据是:环境光下左 3.0kΩ、右 3.3kΩ,一英尺处左 1.2kΩ、右 1.17kΩ,三英尺处左 1.97kΩ、右 2.03kΩ。

这组数有两个信息。第一,左右两只的阻值不完全一致,差 5% 到 10%,这是器件分散性,正常。第二,三英尺处的阻值反而比一英尺处大,因为距离远了光照弱——这符合平方反比的大致趋势,也提醒你:机器人追光时,距离变化会叠加到角度变化上,两条曲线不是纯粹的角度函数。

测阻值的操作要点:断电测量,万用表打电阻挡,表笔直接夹在光敏电阻两个引脚上。光敏电阻没有极性,正反接都一样。测的时候人别挡光,手也别贴在元件上,体温会让阻值缓慢漂移,读数一直往下走。

提示:环境光这一组一定要在实验台的实际照明下测,不要跑到窗边测完再回工位用。环境光变了,固定电阻的选型就全错了。

4.2 固定电阻怎么选:几何平均给出上限

把光敏电阻放在上臂、固定电阻放在下臂,输出取在下臂两端。光照增强,上臂阻值下降,下臂分到的电压上升——这正好满足"亮时电压大"的要求。

公式是Vout = Vcc × R_fixed / (R_pr + R_fixed)。要让明暗之间的差值最大,R_fixed 应该取两个状态下光敏电阻阻值的几何平均:R_fixed = sqrt(R_amb × R_bright)。

左眼代入:sqrt(3000 × 1200) = 1897Ω。右眼代入:sqrt(3300 × 1170) = 1965Ω。两者接近,取一个折中的 1.75kΩ 到 1.9kΩ 都行。报告里反推出来的固定电阻大约是 1.75kΩ,对应左眼环境光 3.68V、一英尺 5.93V,右眼 3.46V 和 5.99V,和实测一致。

1.75kΩ 可以用 1kΩ 串一个 750Ω 凑,750Ω 由 1kΩ 并 3kΩ 得到;嫌麻烦就直接用 1.8kΩ 标称值,读数会差零点几伏,不影响趋势判断。

4.3 扫一遍参数,看 3V 指标到底够不够

写个脚本把 R_fixed 从头扫到尾,看最大摆幅能到多少:

import numpy as np # 实测阻值,单位欧姆 R_amb_L, R_1ft_L = 3.00e3, 1.20e3 R_amb_R, R_1ft_R = 3.30e3, 1.17e3 VCC = 10.0 def vout(r_fixed, r_pr, vcc=VCC): """光敏电阻在上臂、固定电阻在下臂""" return vcc * r_fixed / (r_pr + r_fixed) def best_swing(r_amb, r_bright, lo=100, hi=20000, n=4000): rs = np.linspace(lo, hi, n) # 关灯电压 - 开灯电压:注意亮时电压更高,所以顺序要反过来 d = vout(rs, r_bright) - vout(rs, r_amb) i = int(d.argmax()) return rs[i], d[i] for name, (a, b) in {"左眼": (R_amb_L, R_1ft_L), "右眼": (R_amb_R, R_1ft_R)}.items(): r_opt, d_max = best_swing(a, b) r_geo = np.sqrt(a * b) print(f"{name}: 最优 R_fixed={r_opt:.0f}Ω " f"最大摆幅={d_max:.2f}V 几何平均={r_geo:.0f}Ω") # 用实际能凑出的 1.8kΩ 复核 for name, (a, b) in {"左眼": (R_amb_L, R_1ft_L), "右眼": (R_amb_R, R_1ft_R)}.items(): v_dark, v_bright = vout(1800, a), vout(1800, b) print(f"{name} @1.8kΩ: 暗={v_dark:.2f}V 亮={v_bright:.2f}V " f"摆幅={v_bright-v_dark:.2f}V")

跑出来左眼最优 1897Ω、摆幅 2.25V,右眼最优 1965Ω、摆幅 2.54V;换成 1.8kΩ 实测组合,左眼 3.75V 到 6.00V,摆幅 2.25V,右眼 3.52V 到 6.06V,摆幅 2.54V。

关键结论在这里:最大摆幅只有 2.25V 到 2.54V,达不到 3V 的设计指标。这不是元件坏了,也不是算错了,是纯电阻分压这个拓扑在给定阻值范围下的物理上限。想再往上抬,只能改条件——提高供电电压(被 10V 限制死了)、换阻值跨度更大的光敏电阻、或者引入有源器件。

报告结尾那句话说的就是这个:"只靠电阻很难让电压变化达到 3V,这体现了后面用运放的重要性。"这是整份材料里最诚实的一句,也是很多人做实验时不敢写进报告的一句。

4.4 达不到指标时的三条退路

第一条是改判据。3V 是单端摆幅指标,但机器人真正需要的是"判断光在哪边",用的是左右两路之差。两路各自摆幅 2.25V 和 2.54V,做差之后峰峰值可以到 4V 以上,方向信息完全够用。把指标从"单路摆幅"改成"差动摆幅",问题就不成立了。

第二条是加一级同相放大。用运放搭个增益 2 倍的跟随器,2.25V 变 4.5V,指标轻松满足。代价是要多一路电源、多几个元件、多一层失调和漂移要考虑。Lab7 没要求做,但报告里点出来了,说明课程设计者知道这是下一步。

第三条是提高光敏电阻的工作点。给光敏电阻串一个小的限流电阻再并到固定电阻上,改变有效阻值曲线,本质上是把几何平均点往更陡的区间挪。这招在小信号场合有用,大信号场合收效有限。

| 方案 | 单路摆幅 | 元件成本 | 是否引入有源器件 | 适用场景 | | 纯电阻分压 | 2.2~2.5V | 2 个电阻 | 否 | Lab7 本体,够用 | | 差动取信号 | 4V 以上 | 不变 | 否 | 方向判断 | | 同相放大 2 倍 | 4.5~5V | 运放 + 4 电阻 | 是 | 需要绝对幅度 | | 提高工作点 | 2.5~2.8V | 多 2 个电阻 | 否 | 边际改善 |

5. 常见问题与排查:8-pin 接口、探针读数和曲线对不上

这一章把 Lab7 里最容易卡住的几个点集中列出来。每条都按"看到什么现象、为什么会这样、怎么改"三段写,遇到问题直接对号入座。

5.1 连接器引脚定义搞混,一上电就冒烟

现象:接好线通电,机器人没反应,或者某个电阻迅速发烫变色。

原因:机器人连接器和头部连接器是两套不同的引脚定义,长得一样但功能不同。机器人连接器的 pin 2 和 pin 4 分别是电源和地(来自机器人的黄色线缆),而头部连接器的 pin 4、5、6 是接两只光敏电阻的。把两套定义混着用,等于把电源直接短到地,或者把 10V 灌进模拟输入。

解决:接线前先画一张引脚对照表贴在面包板边上,接线后、上电前,用万用表通断挡逐个确认。别信线缆颜色,黄线不一定全是电源。

| 连接器 | 引脚 | 用途 | | 机器人连接器 | 2 | 电源正,由机器人黄色线缆提供 | | 机器人连接器 | 4 | 地 | | 机器人连接器 | 3 | 模拟输入 #2,接 VL | | 机器人连接器 | 5 | 模拟输入 #3,接 VR | | 头部连接器 | 4 | 光敏电阻供电端 | | 头部连接器 | 5 | 左眼光敏电阻中点,VL | | 头部连接器 | 6 | 右眼光敏电阻中点,VR |

表里头部连接器的地通常和机器人连接器共地,但具体走哪根线要以实际板子的丝印为准,不同批次的板子可能改过。

5.2 CMax 版本不对,老文件打不开或元件错位

现象:File > Open打开mystery.cmax报错,或者打开后元件位置全乱、连线断开。

原因:CMax 的电路文件格式随版本变过。课程用的是 1.5.2,如果你机器上装的是别的版本,读旧文件时元件坐标和网表对不上。

解决:启动后第一件事按Ctrl+A看版本弹窗,不是 1.5.2 就换。换完再打开文件,如果还是乱,把文件删了重新从课程目录拷一份,别用自己改过的副本。

注意:版本弹窗是个独立窗口,看完记得关掉,不然它会一直挡在画布上面,让人以为软件卡死了。

5.3 光敏电阻上下臂放反,亮的时候电压反而变小

现象:用手电筒照,输出电压不升反降,和预期完全相反。

原因:把光敏电阻放在了下面。光照增强时光敏电阻阻值下降,如果它在下臂,分到的电压自然变小。

解决:确认拓扑——光敏电阻在上臂、固定电阻在下臂。快速验证方法是用手遮住光敏电阻,输出应该下降;松开手,输出应该回升。方向不对就调换两个元件的位置。

5.4 三条曲线对不上,或者差值为零

现象:跑完eyeDataBrain.py,三张图出来了,但左右两条曲线几乎重合,差值曲线是一条平线。

原因通常有三个。一是两路信号接到了同一个模拟输入,或者其中一路没接上,读数恒定。二是两只光敏电阻的间距不是 90 度,装的时候没对准,角度分辨力消失。三是机器人起始角度不对,光在正前方时两路本来就该相等,转 180 度全程都过不了零点。

解决:先用万用表量 VL 和 VR 的直流值,用手电筒从左扫到右,看两个数是不是一个升一个降。如果是同升同降,说明接错通道了。再检查头部安装角度,两只光敏电阻的轴线应该大致垂直。

5.5 仿真曲线漂亮,实物曲线毛刺多

现象:CMax 里lightTest.py跑出来的曲线干净得像教科书,实物采出来的全是毛刺和台阶。

原因:仿真是理想光源

本文还有配套的精品资源,点击获取

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进