矿石收音机论坛

 找回密码
 加入会员

QQ登录

只需一步,快速开始

搜索
楼主: 小鬼头

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

  [复制链接]
     
 楼主| 发表于 2023-12-6 21:16:23 来自手机 | 显示全部楼层
本帖最后由 小鬼头 于 2023-12-6 21:21 编辑
abbey_tom 发表于 2023-12-5 21:02
解释一下RAMP V的原理,
还有PULSE SIG与您说的V0的关系。



ramp v部分,在上面最后一个分析里已给出解析。sig与Vo的关系,上面也给出大部分的“答案”,明天再分析一下他各个关键参数为什么这样设置。这些参数包括恒流激励电流I、ac放大器的放大倍数、激励充电脉冲宽度及周期、锯齿波发生器的rc取值。

不一定要使用内置比较器的mcu。从成本及制作难度考虑,我认为比较可取的代替方案可能是:1、内置dac功能的mcu。这样可省去锯齿波发生器电路(我前面说能省去这电路的3只bjt,并不准确,因为此处要求高,不能只靠IO的新特性来实现,需要有dac功能才行)。2、再配上一块合适的廉价双运放。这样,可担负起ac放大器和比较器的功能,能让外围电路元件数量可得到明显减少。

也可以使用内置adc的mcu。能省去比较器和锯齿波电路,但ac放大器仍不能省。由于这种mcu价钱会贵一些,不一定比上面的方案好。



回复 支持 反对

使用道具 举报

     
发表于 2023-12-6 21:36:07 | 显示全部楼层
本帖最后由 abbey_tom 于 2023-12-6 21:39 编辑
小鬼头 发表于 2023-12-6 21:16
ramp v部分,在上面最后一个分析里已给出解析。sig与Vo的关系,上面也给出大部分的“答案”,明天再分 ...


这个正好是我想要提的方案,
上次准备好的3元钱的MCU,
本身就带有DAC的,
价钱不是问题,
但也无须这个RAMP V部分,
连DAC也不需要。
直接通过采样V0的值,
与内部虚拟锯齿波数据进行“比较”
只是不知响应速度的要求如何
回复 支持 反对

使用道具 举报

     
发表于 2023-12-6 21:53:48 | 显示全部楼层
小鬼头 发表于 2023-12-6 21:16
...不一定要使用内置比较器的mcu。从成本及制作难度考虑,我认为比较可取的代替方案可能是:1、内置dac功能的mcu。这样可省去锯齿波发生器电路(我前面说能省去这电路的3只bjt,并不准确,因为此处要求高,不能只靠IO的新特性来实现,需要有dac功能才行)。2、再配上一块合适的廉价双运放。这样,可担负起ac放大器和比较器的功能,能让外围电路元件数量可得到明显减少。


锯齿波是基于它那个没有 ADC 的单片机要实现 ADC,现代单片机都有 ADC,不需要

TT 用的 M328 内部就带 G=20 的 PGA,我还说了一句咋这个也是 G=20


所以 TT 不用任何外部器件就能实现 ESR 测量,我当初就建议你们直接抄袭 TT,不需要任何模拟电路 什么时代了测个 ESR 还搞一大堆模拟电路,你们烦不烦


回复 支持 反对

使用道具 举报

     
发表于 2023-12-6 21:55:13 | 显示全部楼层
abbey_tom 发表于 2023-12-6 21:36
这个正好是我想要提的方案,
上次准备好的3元钱的MCU,
本身就带有DAC的,

看最前面,我一开始就建议你们参考(抄袭)TT 的 ESR 测量方案

这是我见过的,基于 MCU,最简单的方案:任何模拟电路都不需要,完全靠 M328 的 IO 特性,片内 ADC 及其 G=20 的 PGA 实现


回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2023-12-6 23:31:08 | 显示全部楼层
washu 发表于 2023-12-6 21:53
锯齿波是基于它那个没有 ADC 的单片机要实现 ADC,现代单片机都有 ADC,不需要

TT 用的 M328 内部就 ...

我不玩mcu,所以对如何更高效地利用mcu的性能来简化电路不了解,所以,在abbey提出合作后,只能循模拟电路的方向来进行构思。


刚翻看14年前的帖子(即我开始设计指针式esr表之前发的主题帖),发现我在1楼贴的数字esr表电路,竟然就是现在我正进行分析的电路,完全一模一样:

http://www.crystalradio.cn/forum.php?mod=viewthread&tid=97163



回复 支持 反对

使用道具 举报

     
发表于 2023-12-7 08:45:11 | 显示全部楼层
20年前的东西,价值不大啰!

玩单片机,难以超越TT。作者研究深入,从atmega8到atmega644,都有实验数据,其他人连移植到别的芯片的也未见成功的。
不玩单片机,也有太多的方案,不在测试方法上创新,也难。
留给你们的空间本来就不多了
回复 支持 1 反对 0

使用道具 举报

     
 楼主| 发表于 2023-12-7 09:31:55 来自手机 | 显示全部楼层
jimtien 发表于 2023-12-7 08:45
20年前的东西,价值不大啰!

玩单片机,难以超越TT。作者研究深入,从atmega8到atmega644,都有实验数据 ...

搞这个数字esr表的合作设计,本来也就玩一玩,并没有多高的期望——只是想设计出我们目前所需求、TT却不能满足的东西:能在路测试、面对带电的电解时坚固度远超TT的数字式esr表。

说到设计问题,我在本帖子初期曾就TT简单讲过自己的看法:要设计出TT,不是只靠mcu的设计技巧,还需要有足够的模拟电路知识功底作支撑。

那些想把TT移植到其他mcu芯片却不能成功的,依我看,主要原因很可能就是模拟电路知识不过关、不能完全吃透他的工作原理。

也因此,我们改变合作设计路线,改为参考676楼来做,首要的任务是把的原理完全搞清楚,而这是我们当前正在做的。待把原理搞清楚后,才有机会发展出新功能来(比如增加薄膜电容的容量测量功能)。
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2023-12-7 09:52:32 来自手机 | 显示全部楼层
abbey_tom 发表于 2023-12-6 21:36
这个正好是我想要提的方案,
上次准备好的3元钱的MCU,
本身就带有DAC的,

不知道你说的“内部虚拟锯齿波”是怎么实现的。

对于没有dac的单片机,我倒是想到有这样一种省去原锯齿波发生器电路的办法:使用pwm方法来生成锯齿波电压。这样,可能仅需外接rc元件各1只。
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2023-12-7 10:25:52 | 显示全部楼层
washu 发表于 2023-12-6 21:53
锯齿波是基于它那个没有 ADC 的单片机要实现 ADC,现代单片机都有 ADC,不需要

TT 用的 M328 内部就 ...

回头看了一下,你是在17楼里推荐TT方案的。那时候我就说我不懂单片机,让abbey考虑循着TT这条路线自己去做。

而TT的设计,除了要依靠MCU自身的一些独特特性外,他的工作原理部分也不容易理解(这是我简单看过17楼所贴内容后的印象)。可能是abbey吃不透他的原理,所以没进入此路线。而我对MCU的应用本来就提不起兴趣,加上TT所用单片机不具普遍性,觉得对他作深入研究,得益不会很多,所以,也没有对TT作过认真研究。

现在676楼的电路比较简明易懂,循着他来做,则容易实现合作设计的目的。
回复 支持 反对

使用道具 举报

     
发表于 2023-12-7 11:18:59 | 显示全部楼层
小鬼头 发表于 2023-12-7 10:25
回头看了一下,你是在17楼里推荐TT方案的。那时候我就说我不懂单片机,让abbey考虑循着TT这条路线自己去 ...

AVR 曾经就是主流单片机,当年不止 TT,包括矿坛一度流行的 M8 电源、M8 电子负载等都是基于 AVR 的 我的 Voltgen 也是 AVR 的(M32),可惜 Atmel 决策层书包,放着好好的电子元件市场不做跑去和水果混,事实证明和水果厮混的大多数没有好下场

TT 最初没有 ESR 功能,用 STM32 可实现 TT 除了 ESR 之外的其它部分。ESR 功能我前面提到,它和 AVR 的 IO 特性有关,理论上讲 STM32 可以实现,但我用的也是 AVR,所以也不关心如何用其它单片机去实现 ESR 功能了,其他人暂未看到能用第三方单片机实现,可能一个方面是不容易理解这个测试原理,另一方面是需要从模电角度理解单片机 IO 特性,也许不太容易吧
171052kffbacfg2u2co627.jpg


我用另外的方法在 AVR 上 实现了一个 ESR 表,但还是不如 TT,人家的方案可能确实是最优的。

至于你提到那个用的是 Z80,包括经典巫妖在内,它们的 IO 特性和 AVR 不一样且没有片内 PGA,因此类似原理的实现会复杂得多。我的意思是,竟然还没有人能在 STM32 上实现这 TT 的(你也称之为脉冲法)测量 ESR 的,为何不试试

不过,姑且先这样吧,把 STM32 当经典的 Z80/巫妖单片机,用更复杂的模拟电路去做一个也未尝不可
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2023-12-8 10:58:34 | 显示全部楼层
washu 发表于 2023-12-7 11:18
AVR 曾经就是主流单片机,当年不止 TT,包括矿坛一度流行的 M8 电源、M8 电子负载等都是基于 AVR 的   ...

我们现在改换路线后,正朝着TT的设计方向前进。

虽然以前我就知道,改在时域处理信号后,很多模拟电路以前不能干的事都可以在MCU的帮助下简单地予以解决,但我不懂MCU,没有实际实践过,这次有合作伙伴作后盾,因此就尝试一把这样的设计。

根据当前的研究分析进展情况估计,采用合适的单片机(内置有ADC和运放,DAC则可有可无)后,我们最终设计出来的数字ESR表,也将会是一个外围元件很精简的设计:除了保护电路需用到半导体器件外,仅需若干只电阻、电容。

1、之所以必须要有运放。是因为要满足在路测试的要求,信号电平低。

2、保护电路难免要使用半导体器件。

扣除以上2项外,MCU外围就仅有电阻电容,没有“模拟电路”,基本做到向TT看齐。
回复 支持 反对

使用道具 举报

     
发表于 2023-12-8 13:01:42 | 显示全部楼层
本帖最后由 abbey_tom 于 2023-12-8 13:26 编辑
小鬼头 发表于 2023-12-7 09:52
不知道你说的“内部虚拟锯齿波”是怎么实现的。

对于没有dac的单片机,我倒是想到有这样一种省去原锯 ...


原电路中的锯齿波只是提供了一个比较器的基准,
某时刻的值是可以通过运算直接计算出来的,
我姑且称之为虚拟锯齿波
将这个虚拟锯齿波的值直接和ADC的值进行比较即可。

这样的话,
就既不需要DAC,也不需要内置硬件比较器。

回复 支持 反对

使用道具 举报

     
发表于 2023-12-8 13:06:14 | 显示全部楼层
小鬼头 发表于 2023-12-8 10:58
我们现在改换路线后,正朝着TT的设计方向前进。

虽然以前我就知道,改在时域处理信号后,很多模拟电路 ...

MCU是数字器件,
一般是不带运放的,
需要运放的话一般要外置,
有些ADC有内置的PGA,
对输入的模拟信号进行可编程的前置放大。
但这种内置PGA的ADC,
一般通用的带ADC的MCU也是没有的。
回复 支持 反对

使用道具 举报

     
发表于 2023-12-8 13:12:28 | 显示全部楼层
本帖最后由 abbey_tom 于 2023-12-8 13:14 编辑
washu 发表于 2023-12-7 11:18
AVR 曾经就是主流单片机,当年不止 TT,包括矿坛一度流行的 M8 电源、M8 电子负载等都是基于 AVR 的   ...


/*TT所用的AVR单片机与STM32在端口控制上的差异
AVR每8个引脚为一组,通过两个寄存器控制其输出输入特性
其中DDRx为方向寄存器,PORTx为端口特性寄存器,即:
//DDRx定义数据方向,即输入或输出;对应位为 0:输入;1:输出
//PORTx为将内部上拉电阻的状态,对应位为   0:无拉;1:上拉
//通过另一个寄存器PINx可以读取外部引脚的状态.
//以下是三者对应关系:    (假设DDRx.n,PORTx.n如下,PINx.n悬空)
//DDRx.n        PORTx.n                        PINx.n(悬空时的读值)
//  0                 0                                         x : 输入, 高阻态, PINx.n的值不确定.          对应浮空输入或模拟输入
//  0                 1                                         1 : 输入, 上拉, 值为1.                                                                对应上拉输入(比如按键输入等)
//  1                 0                                         0 : 输出0, 非上拉                                                                                        对应开漏(或推挽?)输出,强接地  
//  1                 1                                         1 : 输出1, 上拉.                                                                                        对应推挽输出H,强接VCC
寄存器都是8位,可以同时对8个引脚进行操作。
三个寄存器的助记符分别为(以PORTA为例):DDRA、PORTA、PINA,再以PA3(实际PA3=3方便对具体位进行操作)
可见,端口的操作是比较快捷方便的,以输出为例,只须两步每步各设置一个BIT就可以完成配置和输出
1、完成配置,即设置DDRx.n为1,即配置为输出
2、完成端口输出,即设置PORTx.n,为0即强拉到地,为1则上拉到VCC

TT的软件设计在端口的操作上也是根据AVR的上述特性,控制得比较高效的。
ADC 选择PC0 PC1 PC2
低电阻端口选择PB0 PB2 PB4
高电阻端口选择PB1 PB3 PB5
以6个电阻端口来看,选择是B组6个连续的引脚
先通过以下宏定义为引脚名赋值
#define PIN_RL1                 PB0   //电阻端口的引脚读值
#define PIN_RL2                 PB2
#define PIN_RL3                 PB4

#define PIN_RH1                 PB1
#define PIN_RH2                 PB3
#define PIN_RH3                 PB5
然后定义一张引脚掩码表得到对应端口的掩码:
const u8 PinRLtab[] = {(1<< PIN_RL1),(1<< PIN_RL2),(1<< PIN_RL3)};
const u8 PinRHtab[] = {(1<< PIN_RH1),(1<< PIN_RH2),(1<< PIN_RH3)};       

PinRLtab[3] = {1,4,16}; PinRHtab[3] = {2,8,32};
探头定义为:
#define TP1                 PC0   //即探头号定义为0、1、2
#define TP2     PC1
#define TP3     PC2
这样,就可以很方便检索,不同探头所连的不同电阻的端口的掩码
如TP2所连的低阻端口为PinRLtab[TP2]即PinRLtab[1]=4=0B00000100
如果想将TP2、TP3所连的两个低阻同时接地,
则可以将两个掩码相或,即PinRLtab[1]|PinRLtab[2]=0B00010100
正好可用于对这个两个端口同时进行配置:
DDR_RL=PinRLtab[1]|PinRLtab[2]
PORT_RL=PinRLtab[1]|PinRLtab[2]
使得代码非常简洁优美。
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2023-12-8 13:15:48 | 显示全部楼层
小鬼头 发表于 2023-12-6 16:59
676楼的外国数字式电容ESR表电路原理分析之三
   

676楼的外国数字式电容ESR表电路原理分析之四


     在此,先对前面分析三的疏漏作出更正。

      分析三的第3张图(即下图),相关表述不准确。此图中画出的比较器输出波形,其实只是MCU“看到”的波形。



     比较器的实际输出波形,应为下图上方的样子。由于MCU是在充电脉冲结束、放电即将开始那一瞬间(即图上方的多个小箭头所指),对比较器的输出状态进行检测的,其他时间里MCU被遮住了眼睛,因此,MCU“看到”的波形是本图下方的样子。下方的波形,可视作为经MCU“处理”后的比较器输出等效波形。

2023_12_08_09_30_IMG_0142.JPG


     七、基本测量模型的误差分析

    1、电容容量(容抗)带来的误差影响

     由分析一可知,测量原理的Vo检出电压关系式是:Vo=Id*t/C+Id*ESR。此式两边除以Id,可得到检出的总阻抗是Rt=t/C+ESR。
     此式表明,本仪表实际检测出来的阻值,包含有电容的“容抗”t/C。电容容量越小,这个容抗就越大,由此带来的测量误差就越大。由于此表设定充电脉冲宽度为t=8uS,因此,对于容量为1u的电容来说,他的“容抗”为8Ω。也就是说,在理论上,本仪表测量1u电容时,他测出来的ESR值总是比真实值高出8Ω。类似地,测10u电容测得的ESR值总是比真实值高出0.8Ω,测100u电容测得的ESR值总是比真实值高出0.08Ω。
     以上是考虑电容容量(容抗)带来的误差影响。下面,再研究一下电容的等效串联电感ESL带来的误差影响
   
    2、电容的等效串联电感ESL带来的误差影响

    由电路知识可知,用一个脉冲驱动一个电感,他将在脉冲的上升沿和下降沿激发出一个串峰电压。如下图

    ESL的影响2.jpg

   再用仿真软件看一看加入了ESL后的测量模型检出电压Vo的情况。如下图

ESL的影响1.jpg

   可看到,在我们MCU检测比较器输出状态时的那一瞬间附近,出现了一个向下的电压尖峰。这个尖峰往往是呈阻尼衰减的,其尖峰幅度是由电感量、脉冲下降沿的陡峭度(下降沿时间tf)、电感的Q值等一系列因素决定的,计算起来可不容易。但幸运的是,MCU是在尖峰出现之前那一刻进行检测的,因此,这个尖峰不会给测量带来实际影响。退一步来说,纵使有影响,我们可以让MCU将检测时间稍稍提前一些,这样,就能让其影响变为零。

  综上所述,ESL带来的误差为零,不会给测量结果造成影响。

   八、充电脉宽参数的设定及其影响
   
   这块外国数字式ESR表,将充电脉宽设为tc=8us,是综合考虑的结果。

   1、现在充电脉宽为8uS,对AC放大器、比较器速度性能所提出的要求,大致上等同于周期为16uS、即频率为62.5kHz的方波信号。如果将tc时间缩短,就会对AC放大器、比较器的速度性能提出更高的要求。

   2、如果将tc时间延长,就会相应增加前面所述的“容抗”所带来的影响,令ESR表的适用范围变小。

    根据我常用的普通电解ESR值参考极限值表,1u电解的极限参考值是50Ω(50u是20Ω,100u是10Ω),现在tc=8us的设定下,实际测量结果所附带的8Ω误差值,已离这个极限值不远,但属于尚可使用。因此:
     (1)tc=8us的设定下,决定了此表仅适用于检测容量为1u以上的电解。
     (2)tc的时长不宜再增加,否则,在检测小容量电解(好坏)时,容易造成误判。

   
回复 支持 反对

使用道具 举报

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

本版积分规则

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

蒙公网安备 15040402000005号

GMT+8, 2025-4-29 00:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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