简易电阻、电容和电感测量仪
最终方案系统框图:
正弦信号 档位选择 半桥放大电路 真有效值转换 真有效值转换 12位AD转换 12位AD转换 稳压电源3.3V 控制和计算系统STM32F103VE 键盘控制模块 12864液晶显示模块
3理论分析及单元电路设计
3.1信号产生电路设计
我们是利用MAX038电路作为信号的产生部分。MAX038是一个高频、高精度的能够通过控制两个数字门产生三角波、正弦波、方波的信号发生器,输出频率可以调节,范围是0.1Hz到20MHz,占空比可调,输出的峰峰值为2Vpp。电路如下:
5
简易电阻、电容和电感测量仪
3.2半桥电路设计
半桥电路形式为经典的反向比例运算电路,电路如下:
电路中Zx为被测量器件,Rs为标准电阻,这里给出了7个档位,保证了测量精度,两个放大器隔离了后级测量电路和半桥的路的阻抗系统,又一次保证了精度。半桥电路的输出Us和Ux的关系如下:
对于电阻R:R=Zx=Rs*Ux/Us
因此,只要通过有效值检测芯片测出有效值Us和Ux,通过以上公式就能计简便的算出电阻阻值,供电电源为+15V时,信号源输出电压有1V的Vpp时,输出Vpp最多达到10V,因此设计7个档位便能达到1?~10M?(如1k?档能有效的测量100?~1k?电阻)的测量范围。
对于电感L:Zx=Rs*Ux/Us L=Zx/ω (ω=2πf) 因此,方法只在电阻的测量基础上除个频率相关量便可。
对于电容C;Zx=Rs*Ux/Us C=1/(Zx*ω) 因此,用此公式便可计算出容值。
3.3参数测量电路设计
真有效值检测电路:
6
简易电阻、电容和电感测量仪
AD637是真有效值检测集成电路,而且具有较高的测量精度,且能够对精度进行调节,调精后,对于1V的直流输入,则输出1V的直流量;若输入幅值为1V的正弦信号,则输出0.707V的直流量,其电路图如下:
电压跟随器缓冲隔离了后级测量电路,进一步保证了测量精度,其输出直接连接到STM32控制器片内的A/D输入口即可方便的测量出输出电压。
3.4相位测量电路设计
由于半桥电路的输出是正弦波,所以我们需要将正弦信号变换为方波信号,供系统测量,给系统提供Us和Ux的相位信息的两路方波,系统就可以利用内部16位精确定时器将信号相位关系测量出来,判断处理出来的Us信号是超前还是滞后于处理后的基准信号Ux,从而判断所测的元件是电阻(无移相)、电感(超前)、电容(滞后)。
将正弦信号转换成方波信号的比较电路如下:
3.5相位差的的测量方案
将基准信号Ux(没有经过半桥电路)和半桥电路的输出信号Us都经过相
位检测电路,分别有通道一和通道二输出。
(1)如果所测元件为电阻,则通道一和通道二的输出波形图如下:
7
简易电阻、电容和电感测量仪
此时通道二的输出波形相对于通道一的输出波形既没有超前也没有滞后。
(2)如果所测元件为电感,则通道一和通道二的输出波形图如下:
此时通道二的输出波形超前于通道一的输出波形
(3)如果所测元件为电容,则通道一和通道二的输出波形图如下:
8
简易电阻、电容和电感测量仪
此时通道二的输出波形滞后于通道一的输出波形。
具体方法及部分代码:
1、将通道一的输出波形接到PE.0(E端口0管脚)
将通道二的输出波形接到PE.1(E端口1管脚)
2、在主函数中将PE.0、PE.1都配置成外部中断引脚,PE.0有效检测边沿为上升沿,PE.1的有效检测边沿为下降沿有效。代码如下: void EXTI_Configuration(void) {
EXTI_InitTypeDef EXTI_InitStructure;
/* Connect EXTI Line and 0 to PE.0 and PE.1 */
/* Configure EXTI Line0 to generate an interrupt on rising edge */
GPIO_EXTILineConfig(GPIO_PortSourceGPIOE, GPIO_PinSource0);
EXTI_InitStructure.EXTI_Line = EXTI_Line0;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising ; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure);
/* Configure EXTI Line1 to generate an interrupt on falling edge */ GPIO_EXTILineConfig(GPIO_PortSourceGPIOE, GPIO_PinSource1);
EXTI_InitStructure.EXTI_Line =EXTI_Line1;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling ; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); }
3、当PE.0的有效边沿到来时(上升沿),在中断函数EXTI0_IRQHandler中将
9