老默 发表于 2026-7-10 16:56:34

屠龙刀-老刘示波器选择P1.7通道后电压问题

屠龙刀-老刘爱捣鼓示波器,官方例程为示波器信号采样脚设置为 ADC4(P1.4),通过 P1.0 输出 PWM 波形转成 DAC 信号后给示波器
采样并显示,测量范围有限,且屠龙刀板子有分压输入电路,切换到P1.7通道后所测电压明显偏小,这块儿要调整哪些参数,才能正确显示被测电压?


神农鼎 发表于 2026-7-10 20:51:22


神农鼎 发表于 2026-7-10 20:51:48

<p>好的,信息已经收集完毕。现在我来结合图片中的电路和帖子内容,给出完整的分析。</p>
<hr />
<h2>电路分析与问题解答</h2>
<h3>一、电路结构分析</h3>
<p>从您提供的图片OCR来看,这是一个<strong>模拟信号前端调理电路</strong>,其拓扑结构如下:</p>
<table>
<thead>
<tr>
<th align="center">元件</th>
<th align="center">参数</th>
<th align="left">作用</th>
</tr>
</thead>
<tbody>
<tr>
<td align="center">J5</td>
<td align="center">输入接口(Pin1/2)</td>
<td align="left">外部信号接入</td>
</tr>
<tr>
<td align="center">J6 + C31(10μF)</td>
<td align="center">跳线 + 耦合电容</td>
<td align="left"><strong>交流/直流耦合选择</strong></td>
</tr>
<tr>
<td align="center">R130(18kΩ)</td>
<td align="center">串联电阻</td>
<td align="left">限流/输入保护</td>
</tr>
<tr>
<td align="center">R132(3.9kΩ)→ VREF</td>
<td align="center">上拉分压电阻</td>
<td align="left">将信号偏置到 VREF/2 电平</td>
</tr>
<tr>
<td align="center">R131(3.9kΩ)→ GND</td>
<td align="center">下拉分压电阻</td>
<td align="left">与 R132 构成分压网络</td>
</tr>
<tr>
<td align="center">C32(1nF)</td>
<td align="center">滤波电容</td>
<td align="left">高频滤波/抗混叠</td>
</tr>
<tr>
<td align="center">R133(0Ω)</td>
<td align="center">0Ω电阻</td>
<td align="left">调试/隔离用跳线</td>
</tr>
<tr>
<td align="center">→ P1.6 / P1.7</td>
<td align="center">ADC输入通道</td>
<td align="left">送单片机ADC采样</td>
</tr>
</tbody>
</table>
<h3>二、分压网络定量分析</h3>
<p>核心分压网络是 <strong>R132(3.9kΩ)上拉到 VREF</strong> 与 <strong>R131(3.9kΩ)下拉到 GND</strong> 构成的分压器,信号从中间节点输入。</p>
<p><strong>直流传输特性:</strong></p>
<p>当输入电压为 <span class="language-math">​V_{in}</span> 时,ADC引脚处的电压 <span class="language-math">​V_{ADC}</span> 为:</p>
<div class="language-math">V_{ADC} = \frac{V_{in} \times R_{131} + V_{REF} \times R_{130}}{R_{130} + R_{131}} \quad\text{(简化近似,考虑R130影响)}</div>
<p>更精确地,考虑 R130(18kΩ)串联在信号路径中,实际分压关系为:</p>
<ul>
<li>从 <span class="language-math">​V_{in}</span> 看进去,R130 与 (R132//R131) 分压</li>
<li>R132 与 R131 相等(均为3.9kΩ),中间节点电压为 <span class="language-math">​(V_{in} + V_{REF})/2</span> 的加权结果</li>
</ul>
<p><strong>关键结论:</strong> 当 <span class="language-math">​V_{REF}=2.5V</span> 时,该电路将 <strong>双极性信号(±12.5V)</strong> 偏置并衰减到 <strong>0~2.5V</strong> 的单极性ADC输入范围内。</p>
<h3>三、帖子问题的根因分析</h3>
<p>帖子中提到:<strong>&quot;切换到P1.7通道后所测电压明显偏小&quot;</strong></p>
<p>原因如下:</p>
<ol>
<li>
<p><strong>屠龙刀开发板的P1.4(ADC4)和P1.7(ADC7)对应的前端电路不同:</strong></p>
<ul>
<li>P1.4 通道(官方例程默认)—— 可能直接连接或经简单分压到 DAC输出(P1.0的PWM滤波),<strong>没有经过上述的±12.5V分压网络</strong>。</li>
<li>P1.7 通道 —— 连接的是上述 <strong>±12.5V分压输入电路</strong>,信号经过了 <strong>R130(18kΩ)+ R132/R131(3.9kΩ/3.9kΩ)分压网络</strong>。</li>
</ul>
</li>
<li>
<p><strong>分压比计算:</strong></p>
<ul>
<li>信号从 J5 输入,经过 R130(18kΩ)后,到 R132(3.9kΩ)|| R131(3.9kΩ)= <strong>1.95kΩ</strong> 的对地等效阻抗。</li>
<li>分压比 ≈ $1.95 / (18 + 1.95) \approx 0.098$,即 <strong>约 1/10.2</strong>。</li>
<li>再加上 VREF=2.5V 提供的直流偏置,ADC读到的电压远小于输入信号的实际电压。</li>
</ul>
</li>
<li>
<p><strong>软件未适配:</strong> 官方例程中 ADC 的转换结果直接按 P1.4 通道的电路参数(无分压或不同分压比)换算为电压值显示。切换到 P1.7 后,<strong>软件中的电压换算系数没有同步修改</strong>,导致显示值偏小。</p>
</li>
</ol>
<h3>四、解决方案</h3>
<p>要正确显示 P1.7 通道的电压,需要修改软件中的 <strong>ADC值→电压值换算系数</strong>:</p>
<h4>步骤1:确认ADC参考电压</h4>
<p>屠龙刀板载 VREF 通常为 <strong>2.5V</strong>(由基准源提供),ADC为12位,则:</p>
<div class="language-math">ADC\_分辨率 = \frac{2.5V}{4096} \approx 0.61\text{mV/LSB}</div>
<h4>步骤2:计算反向分压系数</h4>
<p>从 ADC 读数反推实际输入电压:</p>
<div class="language-math">V_{实际输入} = (V_{ADC读数} - V_{偏置}) \times 分压比倒数</div>
<p>其中:</p>
<ul>
<li><span class="language-math">​V_{ADC读数} = ADC\_值 \times \frac{2.5}{4096}</span></li>
<li><span class="language-math">​V_{偏置}</span> = 当输入为0V时ADC引脚处的电压 ≈ <strong>1.25V</strong>(R132与R131相等,VREF=2.5V,中间点理论为1.25V)</li>
<li>分压比倒数 ≈ <strong>10.2</strong>(由 R130/R131/R132 网络决定)</li>
</ul>
<h4>步骤3:修改代码中的换算参数</h4>
<p>在示波器例程中,找到 ADC 值转电压的代码段,将:</p>
<pre><code class="language-c">// 原 P1.4 通道的换算(假设无分压)
voltage = (unsigned long)ADC_result * 2500 / 4096;// 单位 mV
</code></pre>
<p>修改为(P1.7 通道):</p>
<pre><code class="language-c">// P1.7 通道:考虑分压网络和直流偏置
// Vref = 2500 mV, 12位ADC
// 分压比约 1/10.2,直流偏置约 1250 mV
#define P17_SCALE10.2f       // 分压比倒数
#define P17_OFFSET 1250      // 直流偏置(mV)

unsigned long adc_mv = (unsigned long)ADC_result * 2500 / 4096;
long actual_mv;
if (adc_mv &gt; P17_OFFSET)
    actual_mv = (long)((adc_mv - P17_OFFSET) * P17_SCALE);
else
    actual_mv = (long)((P17_OFFSET - adc_mv) * P17_SCALE) * (-1);
</code></pre>
<blockquote>
<p><strong>注意:</strong> 实际分压比和偏置电压可能因电阻精度略有偏差,建议用万用表实测后微调系数。</p>
</blockquote>
<h3>五、关于图片中的文字说明</h3>
<blockquote>
<p><strong>&quot;如果测量直流电压则将 C31 短路&quot;</strong></p>
</blockquote>
<ul>
<li>C31(10μF)是<strong>交流耦合电容</strong>。测量交流信号时,C31 串在信号路径中,隔直流通交流。</li>
<li>测量直流信号时,将 J6 跳线短接(或并联0Ω电阻),<strong>旁路 C31</strong>,使直流信号直接通过。</li>
</ul>
<blockquote>
<p><strong>&quot;Vref=2.5V 时,最高输入电压为正负 12.5V&quot;</strong></p>
</blockquote>
<ul>
<li>这是由分压网络决定的:±12.5V 经过约 1/10 分压后,变为 ±1.25V,再叠加 1.25V 直流偏置,得到 0<del>2.5V,正好匹配 ADC 的输入范围(0</del>VREF)。</li>
</ul>
<h3>六、总结</h3>
<table>
<thead>
<tr>
<th align="left">问题</th>
<th align="left">原因</th>
<th align="left">解决</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">P1.7 测电压偏小</td>
<td align="left">前端有 1/10 分压网络,软件未做反向换算</td>
<td align="left">修改 ADC 换算系数,乘以分压比倒数并减去直流偏置</td>
</tr>
<tr>
<td align="left">测量直流不准</td>
<td align="left">C31 交流耦合隔断了直流</td>
<td align="left">短接 J6 跳线旁路 C31</td>
</tr>
<tr>
<td align="left">测量范围受限</td>
<td align="left">分压网络决定了最大 ±12.5V</td>
<td align="left">如需扩大量程,需修改 R130/R132/R131 的分压比</td>
</tr>
</tbody>
</table>
<p>如果您需要我提供具体的代码修改示例,请告知您使用的具体芯片型号(如 STC32G12K128 等)和当前的例程版本,我可以帮您写出适配的代码段。</p>
<hr />
<p><a href="https://www.stcaimcu.com/plugin.php?id=twpx_xunsearch&amp;mod=forum&amp;q=STC%20%E5%8D%95%E7%89%87%E6%9C%BA%20%E6%8A%80%E6%9C%AF%20%E5%88%86%E6%9E%90&amp;f=_all&amp;m=yes&amp;syn=yes&amp;s=relevance&amp;fid=0">🔍 搜索 &quot;STC 单片机 技术 分析&quot;</a></p>
<p><strong>📌 相关论坛讨论</strong></p>
<ol>
<li><a href="https://www.stcaimcu.com/forum.php?mod=viewthread&amp;tid=24814&amp;highlight=https%3A%2F%2Fwww.stcaimcu.com%2Fthread-24826-1-1.html%20%E5%B8%AE%E5%88%86%E6%9E%90&amp;page=1&amp;extra=#pid223119">帮分析截图,编译错误</a></li>
<li><a href="https://www.stcaimcu.com/forum.php?mod=viewthread&amp;tid=20466&amp;highlight=https%3A%2F%2Fwww.stcaimcu.com%2Fthread-24826-1-1.html%20%E5%B8%AE%E5%88%86%E6%9E%90&amp;page=1&amp;extra=#pid189472">请大家帮我分析烙铁运放电路</a></li>
<li><a href="https://www.stcaimcu.com/forum.php?mod=viewthread&amp;tid=20341&amp;highlight=https%3A%2F%2Fwww.stcaimcu.com%2Fthread-24826-1-1.html%20%E5%B8%AE%E5%88%86%E6%9E%90&amp;page=1&amp;extra=#pid188465">大伙帮我分析我对 Ai8051 实验箱温度获取的原理理解存在的问题。</a></li>
</ol>
<p>⏱️ 查找用时 13.7s | 总回答用时 34.8s</p>

神农鼎 发表于 2026-7-10 20:52:40

不知 STC【AI助手】 在讲啥

梁工 发表于 2026-7-10 21:39:28

请告知你要求的最高输入电压(量程),以及参考电压。

老默 发表于 2026-7-10 22:54:58

神农鼎 发表于 2026-7-10 20:52
不知 STC【AI助手】 在讲啥

这个AI助手分析的已经很到位了{:4_250:}算法大概了解了,完了我再研究研究代码看怎么修正!{:4_196:}

老默 发表于 2026-7-10 22:59:51

梁工 发表于 2026-7-10 21:39
请告知你要求的最高输入电压(量程),以及参考电压。

你好,想实现按照屠龙刀的分压电路从1.7口输入信号,2.5V参考电压,实现±12.5量程测量,能准确显示电压到oled屏

神农鼎 发表于 2026-7-11 08:27:00

老默 发表于 2026-7-10 22:54
这个AI助手分析的已经很到位了算法大概了解了,完了我再研究研究代码看怎么修正! ...

感谢及时反馈,
我们可以大胆的部分依赖 STC的这个 【AI助手】的图片分析功能了

梁工 发表于 2026-7-11 11:03:01

老默 发表于 2026-7-10 22:59
你好,想实现按照屠龙刀的分压电路从1.7口输入信号,2.5V参考电压,实现±12.5量程测量,能准确显示电压 ...

我的例程就是+-12.5V的,交直流均可,只不过是传回STC-ISP界面显示的。
你可以自行增加OLED程序,显示出来即可。
页: [1]
查看完整版本: 屠龙刀-老刘示波器选择P1.7通道后电压问题