矿石收音机论坛

 找回密码
 加入会员

QQ登录

只需一步,快速开始

搜索
楼主: 小鬼头

合作设计基于mcu的数字式电容ESR表

  [复制链接]
     
 楼主| 发表于 2023-4-19 17:48:29 来自手机 | 显示全部楼层
xjw01 发表于 2023-4-19 16:50
电路越来越复杂了
还是建议用方波的方案吧。正弦波的太麻烦了。
wash建议用TT的,还是最简单的。

这个电路,改成方波也省不了几个元件。

虽然电阻的测量范围有限,但现在的电路通过切换工作频率,LC的测量范围应该能比较好地满足维修需求。

电感大概能测到300mH,最小0.1uH以下。电容估计最小能测几百pF,最大可能是1000uF或10000uF(因为受接触电阻影响,这个不好具体说是多少)
回复 支持 反对

使用道具 举报

     
发表于 2023-4-19 19:13:32 | 显示全部楼层
小鬼头 发表于 2023-4-19 15:53
现在上更新后的设计草图(草图10,手持3.7V版和手持9V版)

C11为什么不改小?那里高阻。
如果能测1毫欧(或者分辨率)的话,不知道测量短路效果怎样?例如好几个并联的管子其中有一个/几个短路。
回复 支持 反对

使用道具 举报

     
发表于 2023-4-19 20:02:33 | 显示全部楼层
xjw01 发表于 2023-4-19 16:50
电路越来越复杂了
还是建议用方波的方案吧。正弦波的太麻烦了。
wash建议用TT的,还是最简单的。

这个3.8元的AIR32,
做SPWM可能比正弦波还要费事,
因为有DAC,并且开DMA的话,
CPU不用管了。

您的那个ESR我移植到STM32玩过,
可能是哪个地方时序配合不好,
有些不太稳定,回头再查。

TT的方案很巧妙,我也会尝试。
主要是玩儿,顺便学习点技术。
您的那个STM32版的电桥,
如果方便能把主要代码发我一份,
也会求之不得,研究学习的好范例。

回复 支持 反对

使用道具 举报

     
发表于 2023-4-19 22:34:41 | 显示全部楼层
本帖最后由 天天爱玛丽 于 2023-4-19 22:35 编辑

还是需要首先解决电源的问题,下面是我测试的DAC输出后,又用ADC读取的情况,
相邻跳变都是+4,+6,+8这样的,根据我的经验,这种情况说明电源不够纯净,含有太多杂波,
当电源比较纯净时,ADC读数跳变规律应该是+1,+2,最好不超过+3,也就是精度损失在2位以内,
如果不能解决电源问题,校正的意义不大,各位哥哥有推荐的好用又便宜的3.3V芯片吗
DAC = 4095
ADC Value = 4063 Volt = 3.274
ADC Value = 4071 Volt = 3.281
ADC Value = 4071 Volt = 3.281
ADC Value = 4071 Volt = 3.281
ADC Value = 4071 Volt = 3.281
ADC Value = 4071 Volt = 3.281
ADC Value = 4071 Volt = 3.281
ADC Value = 4071 Volt = 3.281
ADC Value = 4067 Volt = 3.277
ADC Value = 4071 Volt = 3.281
ADC Value = 4067 Volt = 3.277
ADC Value = 4071 Volt = 3.281
ADC Value = 4071 Volt = 3.281
ADC Value = 4067 Volt = 3.277
ADC Value = 4071 Volt = 3.281
ADC Value = 4071 Volt = 3.281
ADC Value = 4067 Volt = 3.277

DAC = 2048
ADC Value = 2048 Volt = 1.650
ADC Value = 2048 Volt = 1.650
ADC Value = 2054 Volt = 1.655
ADC Value = 2052 Volt = 1.654
ADC Value = 2056 Volt = 1.657
ADC Value = 2055 Volt = 1.656
ADC Value = 2048 Volt = 1.650
ADC Value = 2048 Volt = 1.650
ADC Value = 2052 Volt = 1.654
ADC Value = 2048 Volt = 1.650
ADC Value = 2055 Volt = 1.656
ADC Value = 2055 Volt = 1.656
ADC Value = 2055 Volt = 1.656
ADC Value = 2056 Volt = 1.657
ADC Value = 2055 Volt = 1.656
ADC Value = 2048 Volt = 1.650
ADC Value = 2048 Volt = 1.650
ADC Value = 2055 Volt = 1.656
ADC Value = 2052 Volt = 1.654

DAC = 0
ADC Value = 16 Volt = 0.013
ADC Value = 16 Volt = 0.013
ADC Value = 16 Volt = 0.013
ADC Value = 16 Volt = 0.013
ADC Value = 16 Volt = 0.013
ADC Value = 16 Volt = 0.013
ADC Value = 16 Volt = 0.013
ADC Value = 16 Volt = 0.013
ADC Value = 16 Volt = 0.013
ADC Value = 8 Volt = 0.006
ADC Value = 16 Volt = 0.013
ADC Value = 16 Volt = 0.013
ADC Value = 16 Volt = 0.013
ADC Value = 16 Volt = 0.013
ADC Value = 16 Volt = 0.013
ADC Value = 16 Volt = 0.013
ADC Value = 16 Volt = 0.013
ADC Value = 8 Volt = 0.006
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2023-4-20 00:30:54 来自手机 | 显示全部楼层
小鬼头 发表于 2023-4-19 15:53
现在上更新后的设计草图(草图10,手持3.7V版和手持9V版)



现在说说设计草图10的有关更改:

1、调整了输入电阻网络。按dac最大输出2900mV的正弦波来安排。

因为二级RC滤波器对100khz信号有较明显的衰减,故调高100khz时的信号电平,以免AD分辨能力利用率下降。第二级RC滤波器也稍作调整,令恒流电路获得的100khz信号幅度与其他频率基本相同。

2、精简了保护电路。

用2个桥堆BG1、BG2取代8只1n4004,用1只单向tvs代替2个器件(1只双向tvs和1只1n4004)。这3只元件均标上贴片和直插封装的型号。pptc改标为145mA 250v。

3、重新计算和安排最后2个运放的增益。

修正原来的2个错误。

一是正弦波的理论转换增益。之前只做了有效值与峰值之间的转换,漏算了平均值整流时方波与正弦波的差别(1与0.9的差别)。

二是早期误以为的、一直没做核对的10mVpp方式需要x10倍专用放大。

4、列出3种基本工作方式的阻抗测量上下限,标上了整流运放、pga运放的输入输出信号幅度。所标的FS电压,均是含有本电路方案所特有的固定偏移在内。

回复 支持 反对

使用道具 举报

     
发表于 2023-4-20 07:16:37 | 显示全部楼层
本帖最后由 abbey_tom 于 2023-4-20 07:21 编辑
天天爱玛丽 发表于 2023-4-19 22:34
还是需要首先解决电源的问题,下面是我测试的DAC输出后,又用ADC读取的情况,
相邻跳变都是+4,+6,+8这样的,根 ...

同样电源条件,
试读取ADC的17通道,
对照比较一下。
回复 支持 反对

使用道具 举报

     
发表于 2023-4-20 08:57:16 | 显示全部楼层
abbey_tom 发表于 2023-4-19 20:02
这个3.8元的AIR32,
做SPWM可能比正弦波还要费事,
因为有DAC,并且开DMA的话,

正弦波总是比较麻烦的,与DMA无关。当时为了提高频率,我直接用外置DDS,设置好频率后,也是不用管的。频率可以做到几兆Hz,但因为前端模拟电路不支持,只做到100kHz
因为 ,正弦波要考虑相位问题、谐波失真问题等等。在精密测量中,这些要考虑的,要在算法中进行处理。
即使是DAC正弦波,还是有谐波失真的。DAC在小范围内,谐波失真小,大动态时,失真大。主是要饱和失真。当波形失真肉眼可见时,失真已经很大了。

方波可以直接做到几个纳秒的精度。相位误差小到可以忽略。因此,方波也可以测量ESR。只是,物理意义略有不同。方波表示一个频段范围内的平均ESR,正弦波表示指定频率的ESR

此外,小鬼头老师,执意用二极管检波,我觉得,那是在测量被测元件的总阻抗。不能确保测量到ESR。如果这样,为何不采用原指针表的ESR的电路方案,电路还更简单。mcu读电压值,做个显示,并判断电容ESR是否合格就可以了。那么,算法将简化,也不需要乱七八糟的误差分析。


做ESR,本质上还是做电桥。要对模拟信号做相对严格的分析,而且大多数模拟参数不易仿真。做仿真,还不如直接写单片机程序直接调试,速度更快。
而且,数字处理部分也不太好仿真。

比如说,要测试ADC是否丢码,是这无法仿真的。即12bit的ADC,要分辨出0至4095个字数,每个字数都要有效。这时,建议用PWM输出直流电压,用ADC回读,看看是是否每个读数都是有效的。stm32F103c8t6测试过,存在丢码,ADC有效只用9bit,找到丢码位置后,做处理,才达到4096
回复 支持 反对

使用道具 举报

     
发表于 2023-4-20 09:32:57 | 显示全部楼层
这是读取内部Verfint通道的ADC数据,
ADC Value = 1472 Volt = 1.186
ADC Value = 1470 Volt = 1.185
ADC Value = 1471 Volt = 1.185
ADC Value = 1470 Volt = 1.185
ADC Value = 1470 Volt = 1.185
ADC Value = 1470 Volt = 1.185
ADC Value = 1470 Volt = 1.185
ADC Value = 1472 Volt = 1.186
ADC Value = 1471 Volt = 1.185
ADC Value = 1471 Volt = 1.185
ADC Value = 1471 Volt = 1.185
ADC Value = 1470 Volt = 1.185
ADC Value = 1471 Volt = 1.185
ADC Value = 1468 Volt = 1.183
ADC Value = 1470 Volt = 1.185
ADC Value = 1471 Volt = 1.185
ADC Value = 1471 Volt = 1.185
ADC Value = 1470 Volt = 1.185
ADC Value = 1472 Volt = 1.186
ADC Value = 1471 Volt = 1.185
ADC Value = 1470 Volt = 1.185
锂电池接在5V脚,板上依然通过1933获得3.3V,纹波太大,基准电压都不稳定了.
回复 支持 反对

使用道具 举报

     
发表于 2023-4-20 09:45:36 | 显示全部楼层
本帖最后由 abbey_tom 于 2023-4-20 09:48 编辑
xjw01 发表于 2023-4-20 08:57
正弦波总是比较麻烦的,与DMA无关。当时为了提高频率,我直接用外置DDS,设置好频率后,也是不用管的。频 ...


谢谢许老师指教。
如果直接方波,
确实MCU很方便,
既控制精准,频率又可以做到很高。

现在DAC,感觉采样点做到120甚至更高,
应该谐波就很小了,
这也是一种尝试。
本来小鬼头老师做ESR也并非真正的ESR,
虚实不分开,反映的是综合阻抗,
但通过结合经验值可辅助维修。

关于ADC采样,
有个问题顺便请教一下。
就是过采样的事儿,
我的理解:12位的ADC假如高速采样512次累加,
相当于得到了21位,值也放大了2^9倍。
将结果除以512再换算成模拟值,
这种算法与算术平均好像没有什么区别。
当然精度肯定是得到了提高,
只是不知我理解的算法对不对。
回复 支持 反对

使用道具 举报

     
发表于 2023-4-20 10:01:05 | 显示全部楼层
abbey_tom 发表于 2023-4-20 09:45
谢谢许老师指教。
如果直接方波,
确实MCU很方便,

过采样的分辨率提升,采样次数取对数后才可以。
大约提升2bit的样子。需要加入三角波或噪声,才能实现过采样。
回复 支持 反对

使用道具 举报

     
发表于 2023-4-20 10:10:11 | 显示全部楼层
abbey_tom 发表于 2023-4-20 09:45
谢谢许老师指教。
如果直接方波,
确实MCU很方便,

首先保证ADC读数都是12位的,才能这么算,
按照现在的测试结果,读数跳变很多都是+4,+8的,就相当于读数是9位,10位的,
8次求平均就可以恢复一个12位的读数,
之后才能按照你的算法继续提升精度.
回复 支持 反对

使用道具 举报

     
发表于 2023-4-20 10:11:11 | 显示全部楼层
xjw01 发表于 2023-4-20 10:01
过采样的分辨率提升,采样次数取对数后才可以。
大约提升2bit的样子。需要加入三角波或噪声,才能实现过 ...

在您的  S T C 版 的ESR代码中,
通过采样500次累加,
然后除以50得到10倍的模拟量,
我好像也没有看到其它的措施呀。
回复 支持 反对

使用道具 举报

     
发表于 2023-4-20 10:11:21 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

     
发表于 2023-4-20 10:12:55 | 显示全部楼层
天天爱玛丽 发表于 2023-4-20 10:10
首先保证ADC读数都是12位的,才能这么算,
按照现在的测试结果,读数跳变很多都是+4,+8的,就相当于读数是9 ...

我讨论是理想情况,
主要是想搞清概念问题。
回复 支持 反对

使用道具 举报

     
发表于 2023-4-20 10:15:46 | 显示全部楼层
本帖最后由 abbey_tom 于 2023-4-20 10:17 编辑
闻太师 发表于 2023-4-20 10:11
采样512次累加,ADC的分辨率理论上增加4.5位,而不是9位。

我之前写的笔记,仅供参考:


我并不是说实际分辨率增加了9位(如果这样的话,就不需要高位ADC了),
说的是算法,
采样512次累加再除以512,
也就是算术平均,是不是过采样算法?
至于结果,分辨率增加多少位,
那是实际效果。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入会员

本版积分规则

小黑屋|手机版|矿石收音机 ( 蒙ICP备05000029号-1 )

蒙公网安备 15040402000005号

GMT+8, 2025-4-29 02:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表