前置条件
有一款新型电容式压力传感器,传感器受到外界压力会产生微小的形变,进而改变传感器的电容。测量目标就是快速精确的捕获到传感器电容变化后的值,并且误差要尽可能的小。传感器的细节信息可以参考这篇文章 “Huang J, Chen A, Han S, et al. Tough and Robust Mechanically Interlocked Gel-Elastomer Hybrid Electrode for Soft Strain Gauge. Adv Sci (Weinh). 2023;10(21):e2301116. doi:10.1002/advs.202301116”。
涉及的工具
Keil,Vscode,立创EDA,HUAWEI DevEco Device Tool,海思Hi33861,STM32F103,PCap01,以及一些稳压芯片和CH340串口芯片等等。
原理图设计
通过对PCap01芯片进行分析可知,PCap01和主控芯片之间主要是依靠SPI协议进行通信,那么要实现对传感器电路的测量,就只需要完成芯片外围电路的设计,保证PCap01和主控芯片之间能有效的传输信息即可,在这里要注意的是,因为最终的测量误差要达到pf级别,所以电路的寄生电容也是一个需要关注的点,不可以直接忽视,最后我的原理图如下
STM32做主控那张原理图没找见,这张是Hi3861做主控的原理图,原理一样,只需要设计好主控芯片的外围电路就行。下面是完成焊接之后的样子。
Hi3861的SPI通信可以看我另一篇帖子,这里设计两款的原因主要是之前只是准备用32来做一个样本,后面换成Hi33861是因为这个芯片在IOT领域比32更有优势。
减小测量误差
焊接好之后便是数据采集,并将采集的结果和LRC电桥采集的结果进行对比,然后发现误差不是一般的大,下面展示了几组实际测量的结果。
真值(LRC数字电桥测量值,pf) | 方法一(板卡测得结果,pf) |
0.516 | 1.100 |
4.334 | 5.222 |
9.637 | 10.185 |
17.686 | 18.546 |
15.006 | 15.726 |
7.788 | 8.413 |
19.436 | 20.328 |
21.099 | 21.982 |
29.042 | 30.098 |
32.982 | 33.936 |
47.836 | 48.875 |
69.412 | 70.540 |
可以看出测量误差还是挺大的,然后我们又对PCap01这个芯片分析了一通,最后发现,当我们完成焊接之后,寄生电容,参考电容以及其他七七八八的东西都成了一个固定值,待测的电容只与放电时间的比值有函数关系,然后我使用LRC电桥测量了一堆电容的真实值,然后再用板卡测量对应电容的放电时间比值,用真实值和放电时间的比值重新拟合了一个函数,用来作为板卡的测量算法,最后把误差(MSE)从0.753降低到了0.023。
评价指标 | 校准前误差 | 校准后误差 |
均方误差(MSE) | 0.75258658 | 0.02272283 |
均方根误差(RMSE) | 0.86751748 | 0.15074095 |
平均绝对误差(MAE) | 0.84808333 | 0.09933333 |
最后的结果便是误差范围控制在0.2pf上下。如果有需要代码的可以留言或者私信,其实代码并不复杂,主要是减小误差的这个思路。