|
【TI首届低功耗设计大赛】微型LCR测试仪-软件与算法篇
[复制链接]
好久不见了,在最后的这几天里,我把关于这个设计剩下的内容补充完整。本篇的内容是软件与算法简述,详细的代码就不贴在这里了,我把用到的外设和部分关键算法写一下。
先说一下用到的430的外设部分。
1、通用IO端口,这部分实际没什么好说的,用于控制电路的模拟开关和检测按键之类,一般就是配置好寄存器之后,再从端口寄存器读取或者写入0、1即可。
2、定时器的比较匹配功能,用于产生方波信号,后续通过滤波电路后生成正弦波,程序就是参考的TI的官方例程,改改数值就好。
3、ADC,共开了3个通道,分别是主测量通道,电池电压检测和虚拟地电平检测。其中主测量通道的测试由TA3进行精确时基触发,配合外部由过零比较器组成的信号同步电路对信号进行采样。
4、硬件乘法器,进行复阻抗计算时的数据量很大,大部分为乘除操作,这部分工作直接由硬件乘法器进行,可以有效提升速度。
5、USART,通过一片CP2102转为USB接口,进行通信(这部分没来得及写)
6、FRAM,用于存储校准数据(这部分也没来得及写)
再补充说一点,方便大家对下面算法的理解,这台表最终定下的频点是100Hz,125Hz,1kHz和10kHz,对应主测量通道的采样率分别为6.4kSPS,8kSPS,16kSPS和80kSPS,即每个周期分别采样64、64、16和8点,MSP430运行主时钟8MHz
下面说算法,大家看之前可以先复习下三角函数和微积分,程序代码因为某些原因无法贴出,但就是通过软件实现的下面的功能。
(不好意思各位,我发现在帖子里打公式几乎是不可能的,我还是贴Word的截图吧,这样大家都可以好受些........)
这部分运算应该说是非常重要的,至少就我目前了解的东西,包括大部分LCR,当然目前LCR中大部分是用的模拟方式完成上述计算,新型的是用数字方式完成的。嗯.....实际上,就算法这一块,这个微型LCR和最新的精密LCR是基本一样的,只不过,那个采样率可高的多,信号处理也麻烦的多。另外,在网络分析仪、阻抗分析仪中,这个算法也会用到,只不过,信号在进行这一步运算之前,已经变换过了,最麻烦的在变换这一步上。如果大家有兴趣,可以好好算一下。
网上有“自由轴”和“固定轴”这类说法,实际上是那个参考信号相对测量信号是固定的还是同步变化的而已。最麻烦的鉴相器,就是通过上述算法,把角度分离出来,之前看网上做的LCR使用的那个参考信号并没有用正弦,而是用的差90度的方波,实际和这里用的sin、cos(sin和cos同频差90度)是一个道理,原理在于方波进行傅里叶分解后得到1、3、5......这样的基波和谐波,只有基波是有用的,按照上面的计算,剩下的高次谐波都在整周期乘加运算中变成0了,用sin和cos信号当然会更好,我看到隔壁论坛为这个问题讨论了好多页,其实算一下就是这么一句话的问题。而且,我们很早期的LCR也是用方波做鉴相同步信号的,因为方便啊,直接用个模拟开关切换就好了,另外还有从噪音环境中提取微弱信号的锁相放大器,这个原理有点相通的,可以先看看锁相放大器。
|
|