yjmwxwx 发表于 2019-11-26 21:17:53

【参赛】简易电容表

本帖最后由 yjmwxwx 于 2019-11-26 21:24 编辑

前段时间自制了一个电容表,虽然我能力有限但是非常喜欢DIY,所以也想展示下自己做的这个小制作,自己一个人搞也没人交流,做出来也没人愿意看实在没意思,在专业人员看来我做的东西都是垃圾,我也实在没办法,我初中都没毕业,用到的技术全都是靠着爱好自学的,由于水平有限也没电容表或者电桥对比,只有几个电容也不知道标准不标准,我不懂模拟电路,这个电容表电路量程切换和放大部分采用许老师的设计,去掉后面的带通滤波和模拟监相部分,直接采用两个ADC口同步采集,程序是我自己写的,我做了下面这些更改,单片机采用2元的STM32F030F4P6,10K正弦波采用软件生成100点正弦表,定时器输出SPWM,每个点触发一次ADC采样,采集100点,因为ADC只能采集正电压所以打开反相再采集100点,上臂下臂分别采集两次,一共采集四次合成两个完整正负电压的表,再用软件生成一个100点正弦和余弦表,把前面生成的电压表的100个数据分别和正弦余弦表里面的数据相乘,再把200个和正弦余弦表相乘的结果相加,100个和正弦表相乘累加的是虚部,100个和余弦表相乘累加的是实部,上面其实就是DFT算法,全部采用定点计算,得到上臂实部虚部,下臂实部虚部四个数据,下面公式计算:
100×((−1287−458i)÷(277−813i))

100是下臂电阻阻值,-1287是上臂实部,-458是上臂虚部,227是下臂实部,-813是下臂虚部分

等于:
2.149253489−159.034862505i 单位欧姆
前面的是电阻后面带i的是电抗
3.14×2×10000= 62800
10000是正弦波频率10K,这个电容表只有10K的频率,这个频率通过定时器计算的,可能也有误差我没有表能测。
最后用1÷(62800×159)=电容,单位F,159是电抗
程序计算的是串联阻抗,全部用的定点数比较麻烦还容易溢出,因为水平有限没写过浮点数的各种运算的
函数。

放大部分虽然设置了4个档但是只用了29K的,量程也只设置了3.4欧、100欧、1K欧、10K欧、100K欧档位,依次用液晶显示的1-5代表,量程00是100欧档。



按键2切换电感和电容测量,采用手动量程,按下按键1慢慢自增加。

没有校准程序,由于我只有一个20M示波器和万用表,也没有标准件,再加上水平差所以这个表测量误差很大,究竟多大我也没有别的测量设备对比,由于没办法对比,也不能确定我写的程序用DFT计算实部虚部有没有问题,电容测量范围只测量过最大330uF,最小22pF,测量电容的时候要使电抗比下臂电阻大才准确,不然正弦波就变形了,我做的东西基本没有实用的,这个制作算是能简单测量几个电容了,LCD显示的电抗、电阻、Q值、都可能有问题,只有电容显示的大体差不多,我能力有限,程序全部开源,请懂模拟电路和程序的师傅帮忙改进。

正弦余弦表生成程序

#include <stdio.h>
#include <math.h>
#include <stdlib.h>
void main() {
float m,pi,sr,si;

int rr,ii, n,i;
n=100;
m=2;
pi=3.141592;   
        for(i=0;i<n;i++){
           sr=cos(2*pi*i*m/n);
           si=-sin(2*pi*i*m/n);
           rr=sr*0x8000;
           ii=si*0x8000;
           printf("0x%04X,0x%04X,",rr,ii);
}
        printf("\n");
}
       






单片机固件和源代码下载








编译器安装,下载GNU binutils或者安装ARM-NONE-EABI
GNU binutils编译命令
    ../configure --target=arm-none-eabi --prefix=/home/yjmwxwx/220g/ruanjian/chengxu/arm/bianyiqi/bintuils/

    make

    make install

三个窗口从上到下分别是JLINK调试窗口、编译窗口、EMACS编辑器窗口,要编译程序很容易只要再编译器窗口输入make就行了,没有按钮非常简单。




电路图







视频

https://v.youku.com/v_show/id_XNDQ0ODk3MzUzMg==.html?spm=a2h3j.8428770.3416059.1


实物图,由于不会设计PCB,家里只有白铁皮,所以电子元件都直接焊在外壳上,今年我买了1千米细电线,所以不用用纸卷了。









































补充内容 (2021-4-30 11:26):
第二版做的也不怎么好
http://www.crystalradio.cn/forum.php?mod=viewthread&tid=1895653&extra=

补充内容 (2022-2-19 15:55):
277误打成227
应该是

octave:16> a
a = -1287
octave:17> b
b = -458
octave:18> c
c =277
octave:19> d
d = -813
octave:20> (a*c+b*d)/(c^2 + d^2) *100
ans =2.1493
octave:21> (b*c-a*d)/(c^2 + d^2) *100
ans = -159.03

road 发表于 2019-11-26 21:48:05

我要向你学习,程序玩得那么溜,电脑水平也不会太差,试试立创EDA,画板子上手很容易,现在打板也免费

ssffzz1 发表于 2019-11-26 21:34:05

佩服,那么多线。

服了。

scu319hy 发表于 2019-11-27 11:55:34

厉害啦!楼主风格依旧;P
别说初中生,就是大分部本科生都做不出来您这东西。

分立元件 发表于 2019-11-27 14:46:12

不错,要是硬件电路懂的更多的话,可以弄很多东西了

yjmwxwx 发表于 2019-11-27 19:09:46

road 发表于 2019-11-26 21:48
我要向你学习,程序玩得那么溜,电脑水平也不会太差,试试立创EDA,画板子上手很容易,现在打板也免费

我写单片机程序也是入门级,也没老师教,完全瞎摸索,从来没画过PCB,现在做电路板价格便宜了,真应该学学了。

yjmwxwx 发表于 2019-11-27 19:10:09

scu319hy 发表于 2019-11-27 11:55
厉害啦!楼主风格依旧
别说初中生,就是大分部本科生都做不出来您这东西。

谢谢鼓励了,您才是真的厉害,软硬件连机械都能自己做,我做的这个就是ADC测个电压,而且做的还不实用,电容也测不准,也不知道怎么改。

yjmwxwx 发表于 2019-11-27 19:14:06

分立元件 发表于 2019-11-27 14:46
不错,要是硬件电路懂的更多的话,可以弄很多东西了

感觉硬件比软件难多了,需要各种仪器测量还要买电子元器件,还要会物理和数学,我这两样非常差,也不知道从哪里学。

分立元件 发表于 2019-11-27 19:45:04

yjmwxwx 发表于 2019-11-27 19:14
感觉硬件比软件难多了,需要各种仪器测量还要买电子元器件,还要会物理和数学,我这两样非常差,也不知道 ...

建议你使用仿真器学习,能学到很多东西,不用买元件和仪器!
比如:Multisim14,我用这个学到不少知识,发现了以前很多没有想明白的事,在里面都搞清楚了,

yjmwxwx 发表于 2019-11-27 23:48:07

分立元件 发表于 2019-11-27 19:45
建议你使用仿真器学习,能学到很多东西,不用买元件和仪器!
比如:Multisim14,我用这个学到不少知识, ...

这个我也安装了,但是不怎么会用,等用到的时候你教教我怎么用。

分立元件 发表于 2019-11-28 00:01:48

yjmwxwx 发表于 2019-11-27 23:48
这个我也安装了,但是不怎么会用,等用到的时候你教教我怎么用。

你要学那些基本的元件后在弄这个比较好

书到用时 发表于 2019-11-28 09:52:35

yjmwxwx 发表于 2019-11-28 16:15:37

分立元件 发表于 2019-11-28 00:01
你要学那些基本的元件后在弄这个比较好

我也不知道从哪里学起

yjmwxwx 发表于 2019-11-28 16:15:56

书到用时 发表于 2019-11-28 09:52
楼主是我矿坛最佩服的人之一。

谢谢您的鼓励

182525708 发表于 2019-11-28 16:42:54

页: [1] 2 3 4 5 6
查看完整版本: 【参赛】简易电容表