前段时间自制了一个电容表,虽然我能力有限但是非常喜欢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是电抗
程序计算的是串联阻抗,全部用的定点数比较麻烦还容易溢出,因为水平有限没写过浮点数的各种运算的...

Read more »