矿石收音机论坛

 找回密码
 加入会员

QQ登录

只需一步,快速开始

搜索
楼主: 小鬼头

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

  [复制链接]
     
 楼主| 发表于 2023-4-17 10:28:51 | 显示全部楼层
天天爱玛丽 发表于 2023-4-17 09:00
Air32f10x的Vref脚在内部接VDDA了,如果想改变Vref,只能改变外部的VDDA了,这个没有办法,
这是中文芯片手 ...

我原来是假定这个MCU的DAC,可能具备Vref可变的能力。若确实如此的话,利用一个DAC产生Vref,再将其用于另一个DAC中,以控制后者的FS(满幅)输出电平,就可以获得多种所需的信号。用1个MCU输出引脚连接模拟电路就行。

现在我明白了,这芯片的DAC部分,也是使用固定的Vref。所以,我这个ESR表要想获得平滑的(台阶数量足够多)的信号,还是以采用外接衰减电阻网络的方法为佳。

这个电阻网络,可能要使用至少5只电阻、4个MCU输出引脚。因为我想在这里获得4种电平:

1、100mVpp。100Hz/1Khz/10kHZ时均使用

2、10mVpp。100Hz/1Khz/10kHZ时均使用

3、约120mVpp。仅限100kHz使用

4、约12mVpp。仅限100khz使用

后两个的120mVpp、12mVpp,电平有所提升,是用于补偿二级RC滤波器给100kHz信号带来的额外衰减,这样,就可以避免因为这个衰减而带来AD分辨能力利用率的下降。
回复 支持 反对

使用道具 举报

     
发表于 2023-4-17 10:31:00 | 显示全部楼层
天天爱玛丽 发表于 2023-4-17 10:04
测试了一下开启和关闭DAC缓冲器的波形,
用的定时器触发DMA方式,定时器自动重载值8,VDDA=3.3V,12bit,采样点 ...


因为VDDA作为供电电源,
并且受你上面所说因素影响,
精度并不高,
我想ADC环回时仍以其为基准,
波动是同步等比例的,所以应无意义。
而内部基准应是相对稳定,
可以作为参照源进行补偿修正。
回复 支持 反对

使用道具 举报

     
发表于 2023-4-17 10:36:58 | 显示全部楼层
小鬼头 发表于 2023-4-17 10:28
我原来是假定这个MCU的DAC,可能具备Vref可变的能力。若确实如此的话,利用一个DAC产生Vref,再将其用于 ...

如果要求的输出电平都是这么小的话,
确实直接用DAC的输出就不合适了
需要电阻分压衰减。
回复 支持 反对

使用道具 举报

     
发表于 2023-4-17 10:44:38 | 显示全部楼层
天天爱玛丽 发表于 2023-4-17 10:04
air32f10x的DAC连续输出时存在一个+-10mV的波动,频率大概在7.94Hz,这是什么鬼?
...


是不是与VDDA的波动相关,
同时监测一下VDDA试试。
回复 支持 反对

使用道具 举报

     
发表于 2023-4-17 10:44:58 | 显示全部楼层
小鬼头 发表于 2023-4-17 10:28
我原来是假定这个MCU的DAC,可能具备Vref可变的能力。若确实如此的话,利用一个DAC产生Vref,再将其用于 ...

因为检测到内置DAC存在一个低频波动7.94Hz~7.98Hz,导致任何时刻DAC的峰峰值都是不确定的,这个没有办法补偿了,应该不符合您的需求.
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2023-4-17 10:48:21 | 显示全部楼层
本帖最后由 小鬼头 于 2023-4-17 10:50 编辑
abbey_tom 发表于 2023-4-17 10:36
如果要求的输出电平都是这么小的话,
确实直接用DAC的输出就不合适了
需要电阻分压衰减。


或许可以这样折中一下:

电路中使用3只电阻、2个MCU引脚,而这2个引脚是复用的

1、引脚1为100mVpp与120mVpp复用。即是,MCU在输出100Hz、1khz和10kHz时,输出100mVpp对应的电平;MCU在输出100kHz时,则输出120mVpp对应的电平

2、引脚2为10mVpp与12mVpp复用。即是,MCU在输出100Hz、1khz和10kHz时,输出10mVpp对应的电平;MCU在输出100kHz时,则输出12mVpp对应的电平。

这样,接口电路可明显简化,波形平滑度也只有少量损失(而且只是低频段才有损失)。
回复 支持 反对

使用道具 举报

     
发表于 2023-4-17 10:51:44 | 显示全部楼层
abbey_tom 发表于 2023-4-17 10:44
是不是与VDDA的波动相关,
同时监测一下VDDA试试。

测试了VDDA脚,不存在低频波动,
用的是官方小蓝板,没有接任何外部元器件,也就不存在被外部干扰的可能,
猜测是DAC的内部电路问题
回复 支持 反对

使用道具 举报

     
发表于 2023-4-17 11:05:32 | 显示全部楼层
小鬼头 发表于 2023-4-17 10:48
或许可以这样折中一下:

电路中使用3只电阻、2个MCU引脚,而这2个引脚是复用的

使用电阻分压可以降低误差影响,将3.1Vpp的波形压缩到100mVpp,峰峰值误差低于0.1mV,处于背景噪声的级别,这个误差对重复测量的精度影响不大了.
回复 支持 反对

使用道具 举报

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

使用道具 举报

     
发表于 2023-4-17 12:14:44 | 显示全部楼层
小鬼头 发表于 2023-4-17 10:09
1、你这个电路测不了电池内阻。因为电池接入时,因为没有100V电解的隔直作用,PPTC一直呈高阻状态,导致 ...

看帖不仔细,现在想起你要测电池了。瞬态二极管有单向的,可以用一个单向的,省去一个普通二极管。
100K可以改小,电阻功率需要斟酌一下,因为瞬间大功率,碳膜胜于金属膜。不行就稳压管或ESD二极管钳位。或者不要改。
2.jpg
回复 支持 反对

使用道具 举报

     
发表于 2023-4-17 13:44:35 | 显示全部楼层
本帖最后由 天天爱玛丽 于 2023-4-17 13:51 编辑

To "abbey_tom":
讲一下如何计算取样点数,这里需要的输出频率为100KHz,
我用的板子,可能是为了兼容STM的芯片,系统时钟是72MHz的,不是芯片最高的216MHz,
定时器的时钟是系统时钟的2分频,为36MHz
我设置的定时器自动重载值为8,则9个定时脉冲(自动重载需要1个)触发一次给DMA喂数,
则取样点数=36000000/(8+1)/100000=40,
那么设置取样点为40点时,正好输出100KHz
测试代码 main.rar (1.97 KB, 下载次数: 43)
假如主频提高到216MHz,代码不变的情况下,可以将采样点提高的120点,波形会更光滑.

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2023-4-17 16:19:11 | 显示全部楼层
本帖最后由 小鬼头 于 2023-4-17 16:21 编辑
小鬼头 发表于 2023-4-16 22:43
这里的保护电路是如何工作的,明天找时间解释一下。

我今天收到了1块多钱买回来的10只250v 120mA的自 ...


现在说一说ESR表的保护电路工作原理。如下图,图2、图3、图4中的RL,代表被接受保护的、免遭受高压冲击的其他电路

数字式ESR表的保护电路分析(画图用).jpg

一、图1是全局的保护电路

该图取自草图8,他提供了对左右两侧其他电路的保护。在误测外来高压时,令到左侧其他电路仅受到3个二极管压降电压的冲击、右侧其他电路仅受到1个二极管压降电压的冲击。


二、图2是对右侧其他电路提供保护的基本原理图

这也是指针式ESR表所采用的保护电路方式,即是依靠400V薄膜电容的隔直作用,使得图2中的二极管仅受到短暂时间的大电流冲击。

由合上开关开始、到大电流冲击完成,这个时间由电容充电时间决定,由于电容容量甚小,这个时间也因此很短暂。只要二极管能生存下来、起到箝位作用,那么,右侧其他电路就受到了很好的保护。大电流冲击过去后,由这只小电容来承担高压,不会对右侧其他电路产生威胁。

整流用的二极管,因为其使用用途的缘故,从设计制造开始,生产厂家就有意令他具有能耐受强浪涌电流冲击的特性。以1N400X系列为例,虽然标称是1A规格,但能耐受的浪涌电流是35A(下一个草图准备改用的0.5A桥堆MB6S/MB6M,耐受浪涌电流能力也是这个规格)。

又由于串有容量小的隔直薄膜电容(指针式ESR表为1u,这里是0.1u),二极管所能提供的保护能力大幅提升。假如没有串这个薄膜电容,即是采用ESR2501电路和eevblog电路那样的简单并联二极管保护方式,那么,当误测储存有高压电的100u电解时,二极管要承受冲击的时间/能量,将是图2中电路的1000倍、指针表ESR表电路的100倍。换个说法就是,串有隔直电容后,与简单保护电路相比,此情形下的保护能力提升了100倍(指针式ESR表电路)。


三、图3是对左侧其他电路提供保护的基本原理图

当合上开关(即误测高压电)后的短时间里,PPTC流过大电流,由于功耗大,其温度急升,超过居里点后,PPTC呈现高阻状态,将电流通路基本关断(实际上是此后将进入一个限制电流为数百mA以下的平衡状态,PPTC会持续发热)。与图2的电路类似,只要在关断前,二极管能承受住大电流的冲击,那么,他就能为左侧电路提供有效保护。

上一段是接DC外接高压的情形。如果接的是储存高压电的电解,那么,他储存的电能量被PPTC消耗完后,PPTC将会冷却下来,恢复到最初状态。我前些天做的消磁电阻实验,就是做了图3的这2种情形试验。


四、图4是测量电池内阻时保护电路的工作情形

若果被测电池没有反接,就是图4的样子,保护电路的保护机能不启动。如果电池反接,则是按图3那样,保护电路进入保护状态。

图4中,电池的高压由100V高压电解来承担,这样,左侧其他电路不会被高压所威胁。若被测电池(或被测电解的储电)高于100V,TVS将导通,导通后的工作情形就是图3电路的样子,即是由图3的工作原理来提供保底式的保护。

评分

2

查看全部评分

回复 支持 反对

使用道具 举报

     
发表于 2023-4-17 19:58:21 | 显示全部楼层
天天爱玛丽 发表于 2023-4-17 13:44
To "abbey_tom":
讲一下如何计算取样点数,这里需要的输出频率为100KHz,
我用的板子,可能是为了兼容STM的 ...

感谢分享测试代码。
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2023-4-18 13:17:34 来自手机 | 显示全部楼层
本帖最后由 小鬼头 于 2023-4-18 13:21 编辑
天天爱玛丽 发表于 2023-4-17 10:04
测试了一下开启和关闭DAC缓冲器的波形,
用的定时器触发DMA方式,定时器自动重载值8,VDDA=3.3V,12bit,采样点 ...


你第一个图里,波峰和波谷附近的失真应该是输出级的摆幅范围受限而造成。即是,出现了限幅失真。

开启缓冲器时,因为ic内部缓冲器的输出级电路是(本人猜测的)接成S极跟随器或mos管图腾柱的形式,他的摆幅会小于不开启缓冲器时。不开启缓冲器,ic内部的输出级是接成共S极放大的形式,而这种形式也正是RR运放所采用的输出级形式,因此,摆幅范围会更大(几乎用尽了电源电压所能提供的动态/摆幅范围)。

只要把正弦波的波峰和波谷电平控制好,让他落在缓冲器的摆幅范围之内,既不让他波峰过高、也不让波谷过低,应该就可以避免图里的失真。

也就是,编程时,需要针对这个摆幅限制来作出调整,可以/才能消除这个限幅失真。

至于波峰、波谷控制为多高才合适,air32f资料里并没有直接给出。只给出了他的dac输出最大摆幅能力的数据(且这个数据实际上往往达不到),而这个数据不能拿来作为这里设计的依据。还不如利用现在的测试波形来作合理的推断(推断出缓冲器实际可用的摆幅)和安排。

ps:能在示波器上看得到的正弦波波形失真,基本上说明,其失真度已达到x%的水平。

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

     
发表于 2023-4-18 14:00:58 | 显示全部楼层
小鬼头 发表于 2023-4-18 13:17
你第一个图里,波峰和波谷附近的失真应该是输出级的摆幅范围受限而造成。即是,出现了限幅失真。

开 ...

小鬼头老师,您的脑子真是大聪明,
我对模拟电路理解的不深刻,您这么一说,我就理解了.
按照您的思路,马上写了个幅度压缩函数函数跑了一下,
void compress_range(uint16_t *p, uint32_t num, double rate)
{
        uint32_t d;
        do {
                d = *p;
                if (d >= 2048)
                        *p = 2048 + (d-2048)*rate;
                else
                        *p = 2048 - (2048-d)*rate;
                p++;
        } while(--num);
}
调用幅度压缩函数对Sine12bit[]数据预处理一下,
compress_range(Sine12bit, 120, 0.95);
大约压缩至95%肉眼才能看不出峰值附近的明显失真.
回复 支持 反对

使用道具 举报

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

本版积分规则

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

蒙公网安备 15040402000005号

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

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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