数码之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 2972|回复: 29

[工仪] 内阻仪-N次重制版

[复制链接]
发表于 2024-3-29 11:37:13 | 显示全部楼层 |阅读模式
去年五月参考一乐“GandF”大神的电路做了一版三线方波版内阻仪,因为模电水平太菜,交流信号处理也是一知半解,测试结果相当不理想,后来做了方波四线版,效果依旧稀烂,一方面太忙一方面没信心,就有点放弃了,但是又没完全放弃,后来看了@yjmwxwx大神的内阻仪,又考虑要不要继续做下去,再然后又机缘巧合看到票总的内阻仪电路,研究了下实际上和yjmwxwx的差不多,或者说实际上1KHz的交流内阻仪电路都差不多,那就再继续玩吧,至于最近很火TS457内阻仪我为啥不买,而要自己搞,因为我没需求,就是单纯的想玩


之前的方波三线版:DIY个内阻测试仪-三线版V0.1 - 我爱单片机 数码之家 (mydigit.cn)

本次diy硬件电路参考票总的电路改的,软件因为没开源所以纯自己撸的,实际精度一般,还是个半成品,只做了个最基础的内阻测量功能,校准、测压、档位、UI统统没做,后续以年为单位慢慢调吧


测量范围:
测压:100v(未完成)
1档阻值:150mΩ
2档阻值:2.7Ω(未完成)


外观,立创eda生成的外壳,三维猴树脂打印,到手自喷漆,喷漆效果不忍直视


三按键,目前只用了一个开关机,后期功能完善了再规划按键作用

实际大小

背面,中间孔是uart下载按键,实际就是boot0,下载方式swd或者串口

10mΩ电阻测量9.58

20mΩ电阻测量19.22

50mΩ电阻测量48.16

短接

100mΩ电阻测量97.52

pdd的刮码亿纬18650,记得网友测得基本都是14左右,测试结果13.8,这里因为双手测量没法拍照,单手测量尾部接触有问题,14.9

山寨鼠标拆机的14500,直接100

按键帽用的6*6按键拆帽,高5应该正好,手里的不合适,用光固化树脂增高了一点

正面,屏幕用的0.96寸80*160的LCD,因为便宜,记得淘宝红包一块多买的,比单色oled都便宜

背面,电容因为手里没有,临时用了低压的应付事,调试好了再替换,调试不好就省钱了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x

打赏

参与人数 1家元 +30 收起 理由
jf201006 + 30 謝謝分享

查看全部打赏

 楼主| 发表于 2024-3-29 11:37:47 | 显示全部楼层
本帖最后由 飞向狙沙 于 2024-3-29 12:02 编辑


时钟实际用的内部RC,所以晶振不用贴

开关机电路

3.3V供电,U6用作数字电路,U7用作模拟电路,同时提供1.65V电压基准,目前都是贴的TPPT9013,并且没做基准采样调整,后边会换成REF3033测试,U13因为手里元件不够所以贴了一片LMV612,有点掉档次

电池电压采样,100倍缩放后ADC采样或者SC1237采样,正反接都能测量,就是ADC的话12位分辨率有点不够用

恒流源和交流放大电路,通过DAC产生正弦波,R35 R36并联50Ω电流采样电阻,由U10生成恒流,这里实际上有一个点不是太明白,对于这种恒流交流,大家说的10mA到底是指幅值呢还是有效值呢,万用表实测恒流值14.2mA,应该是有效值,那换算成幅值就是20mA?实际后续fft计算也使用的幅值

交流信号经过C22 C23隔直接入待测电阻,采样信号经过C24 C25隔直后进入仪表放大器,18倍一级放大,然后再通过U12.2进行18倍二级放大,总放大倍数324倍



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-29 11:38:10 | 显示全部楼层
本帖最后由 飞向狙沙 于 2024-3-29 12:18 编辑

通过ADC+DMA 160KHz频率采样1280个点,然后5个点一组滤波,去掉最大值去掉最小值剩下3个值求平均得到256个点,然后使用stm32的fft库进行傅里叶变换
滤波算法,实际上这里设想的是通过判断最大值来区分使用一级放大还是二级放大,但是进行ADC+DMA顺序采样时发现有问题,按照通道1-通道2的顺序配置,但是实际采样结果有时候1在前,有时候2在前,感觉自己的ADC配置有问题,临时只处理2级采样
  1. void rawDataProcessing(){
  2.         
  3.         uint16_t max,min;
  4.         uint32_t sum;
  5.         //¼ì²éÊý¾Ý,È·¶¨·Å´ó¼¶±ð
  6.         ZOOM_LEVEL=2;
  7.         for(uint8_t i=0;i<160;i++){
  8.                 if(ADC_Value[i]>ADC_OVERFLOW_MAX){
  9.                         ZOOM_LEVEL=1;
  10.                         break;
  11.                 }
  12.         }
  13.         //printf("level:%d",ZOOM_LEVEL);
  14.         //Â˲¨ È¥³ý×î´óÖµ ×îСֵ Ç󯽾ù
  15.         for(uint16_t i = 0; i < ADC_POINTS; i+=5)
  16.         {
  17.                 uint16_t pos = i;
  18.                
  19.                 sum=ADC_Value[pos];
  20.                 max=sum;
  21.                 min=sum;
  22.                 for(uint16_t j=1;j<5;j++){
  23.                         uint16_t temp=ADC_Value[pos+j];
  24.                         sum+=temp;
  25.                         if(max<temp){
  26.                                 max=temp;
  27.                         }
  28.                         else if(min>temp){
  29.                                 min=temp;
  30.                         }
  31.                 }
  32.                 FFT_DataIn[i/5]=(sum-max-min)/3;
  33.                 //printf("ADCF:%u\r\n",FFT_DataIn[i/5]);
  34.         }
  35. }
复制代码
256点的fft,函数没啥好说的,官方提供的库,汇编写的
  1. cr4_fft_256_stm32(FFT_DataOut,FFT_DataIn,FFT_POINTS);
复制代码
160kHz频率采样滤波,1kHz分量正好落在第8个点上,然后按照理想值硬算
  1. int16_t X,Y;
  2.                         X=FFT_DataOut[8]&0xffff;
  3.                         Y=FFT_DataOut[8]>>16;
  4.                         float val=sqrt((float)(X*X+Y*Y))*2;
  5.                         sumVal+=val;
  6.                         sumCount++;
  7.                         if(sumCount==10){
  8.                                 
  9.                                 sumCount=0;
  10.                                 sumVal/=10;
  11.                                 LCD_ShowFloatNum1(0,0,sumVal,8,RED,WHITE,16);
  12.                                 printf("val:%f",sumVal);
  13.                                 sumVal=sumVal*3.3/4096/18/18/0.02/2;
  14.                                 LCD_ShowFloatNum1(16 ,30,sumVal*1000,5,RED,WHITE,16);
  15.                                 printf(",R:%.3f\r\n",sumVal);        
  16.                                 sumVal=0;
  17.                         }
  18.                         

  19.                         HAL_ADC_Stop_DMA(&hadc1);
  20.                         HAL_ADC_Start_DMA(&hadc1,(uint32_t *)ADC_Value,ADC_POINTS);
复制代码

整体硬件和软件工程太烂,调试的还不咋地,先不开源了,如果有大佬过来技术扶贫或者调试的差不多了再开源

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x
回复 支持 反对

使用道具 举报

发表于 2024-3-29 11:45:27 | 显示全部楼层
大神能否帮忙分析一下这个电路的原理:
https://www.mydigit.cn/thread-443933-1-1.html
完整的电路见这个帖子:
https://www.mydigit.cn/thread-441377-1-1.html


回复 支持 反对

使用道具 举报

发表于 2024-3-29 12:31:01 | 显示全部楼层
只有流口水的份
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-29 13:15:19 | 显示全部楼层
猪小呆 发表于 2024-3-29 11:45
大神能否帮忙分析一下这个电路的原理:
https://www.mydigit.cn/thread-443933-1-1.html
完整的电路见这个 ...

猜测U1 18脚提供基准电压,3脚提供DAC正弦波,R2作为采样电阻,U1.1作为恒流源,采样信号经过C3C4直接进入U1,U1内部应该有个可编程运放,软件是核心,这个无解
回复 支持 反对

使用道具 举报

发表于 2024-3-29 13:30:01 | 显示全部楼层
飞向狙沙 发表于 2024-3-29 13:15
猜测U1 18脚提供基准电压,3脚提供DAC正弦波,R2作为采样电阻,U1.1作为恒流源,采样信号经过C3C4直接进 ...

哈哈,小心绿猪偷家
回复 支持 反对

使用道具 举报

发表于 2024-3-29 13:31:53 | 显示全部楼层
飞向狙沙 发表于 2024-3-29 13:15
猜测U1 18脚提供基准电压,3脚提供DAC正弦波,R2作为采样电阻,U1.1作为恒流源,采样信号经过C3C4直接进 ...

原理应该就是你说的,但是它这个也是1K方波的,单片机型号已经找到了是BH66F5242,关键是它这个电路真的是非常简单,精度却很高,大神可以研究一下能不能自己写程序,估计你写起来应该很容易:
https://www.mydigit.cn/thread-442660-1-1.html

回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-29 13:49:25 | 显示全部楼层
猪小呆 发表于 2024-3-29 13:31
原理应该就是你说的,但是它这个也是1K方波的,单片机型号已经找到了是BH66F5242,关键是它这个电路真的是 ...

是的,电路复杂主要是放大电路,直接使用带PGA的单片机可以省掉这部分电路,整体就会简单很多,我水平不够,精力也有限,就这个都是做一天放一周的慢慢折腾,暂时搞不了其他的了
回复 支持 反对

使用道具 举报

发表于 2024-3-29 13:49:54 | 显示全部楼层
人艰不拆了 发表于 2024-3-29 13:30
哈哈,小心绿猪偷家

不是偷家了。应是逆设计,毕竟@猪小呆 是认真花费了大量的时间心机去找到了对就有芯片型号出来了。
回复 支持 反对

使用道具 举报

发表于 2024-3-29 14:11:07 | 显示全部楼层
本帖最后由 xxh2003 于 2024-3-29 14:13 编辑
猪小呆 发表于 2024-3-29 11:45
大神能否帮忙分析一下这个电路的原理:
https://www.mydigit.cn/thread-443933-1-1.html
完整的电路见这个 ...

1、你将V+、V-的测量,分开两路画出来,就清楚很多了。一路是直接分压测量的,另一路是经电容隔直测量的。

2、单片机的18脚,输出一个1.25V的电压。

3、单片机的20脚,输出一个2.60V的电压。

4、单片机的  3脚,输出一个频率1K左右的方波。

5、单片机的  6脚,用来启动采样的。

以上,是我实测分析出来的,@猪小呆   、 @飞向狙沙 ,你们再结合@esp888ts457组装、使用中注意…来看看。
回复 支持 反对

使用道具 举报

发表于 2024-3-29 14:28:14 | 显示全部楼层
NB,我不会,只能买成品
回复 支持 反对

使用道具 举报

发表于 2024-3-29 14:41:19 | 显示全部楼层
技术不 错,内阻仪很漂 亮
回复 支持 反对

使用道具 举报

发表于 2024-3-29 14:50:16 | 显示全部楼层
xxh2003 发表于 2024-3-29 14:11
1、你将V+、V-的测量,分开两路画出来,就清楚很多了。一路是直接分压测量的,另一路是经电容隔直测量的。 ...

我做了仿真,估计就是如帖子里的大神所说一路测电池电压,一路隔直后测内阻相关的电压,但是我做交流仿真(叠加一个10mv的1KHZ波形)的时候16/17脚的电压又变的很低只有40几微伏了,不知道怎么回事:
https://www.mydigit.cn/thread-444697-1-1.html



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x
回复 支持 反对

使用道具 举报

发表于 2024-3-29 14:50:59 | 显示全部楼层
既然自制了,就把精度提高,这样实用性才强。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-29 14:56:59 | 显示全部楼层
猪小呆 发表于 2024-3-29 14:50
我做了仿真,估计就是如帖子里的大神所说一路测电池电压,一路隔直后测内阻相关的电压,但是我做交流仿真 ...

不能直接叠加,要通过电容隔直,不然交流源不就把直流源给短路了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-3-29 14:58:53 | 显示全部楼层
wqwq212 发表于 2024-3-29 14:50
既然自制了,就把精度提高,这样实用性才强。

理想很美满,现实很骨感,精度要考技术打磨,奈何技术不够用
回复 支持 反对

使用道具 举报

发表于 2024-3-29 15:04:25 | 显示全部楼层
飞向狙沙 发表于 2024-3-29 14:56
不能直接叠加,要通过电容隔直,不然交流源不就把直流源给短路了

原来如此,难怪I+/I-的电路上要用电容隔直

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 微信登录

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-7-18 13:48 , Processed in 0.234001 second(s), 13 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

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