项目概述: MSP430G2452是TI公司的低功耗16位微处理器,这款芯片自带2路比较器,非常适合用来制作一款低成本的数字式电容表。
图1
设计方案:
由MSP430G2452片内自带的轨对轨比较器Comparator_A+与外部少量阻容元件组成的RC自激振荡电路,待测电容Cx与Rf决定了振荡器的输出频率,基本不受供电电压影响。当Rf固定不变时,比较器输出端P1.3输出的方波频率与待测电容Cx的容量成反比。通过简单数学运算,就能得到待测电容的容量值(图2)。
图2 二、项目概述 1、配置Comparator_A+中断,对脉冲个数进行累加。 2、配置 MSP430G2452的TIMER0_A1每0.5秒中断1次,读取Comparator_A+脉冲个数。 就能得到待测电容Cx的值。
这款低成本自动量程切换的数字电容表的测量范围: 1.0pf - 1999.9pf 2.0nf - 1999.9nf 0.2uf - 2.0uf
方案实施:
A、硬件资源:
整机原理图:见图3。 图3
MSP430G2452的P1.1~P1.3为比较器的+输入、-输入和输出引脚,P1.4~P1.5、P2.0~P2.3用来驱动OLED显示屏。大赛提供的MCP16331(U2)将9V层叠电池转换成3.3V VCC供电,这个供电方案省去了9V转5V再转-3.3V的过程,是一个不错的供电方案。P1是测试电容的接线端口,P2是DC9V供电端口。整个PCB板外形紧凑,见图1。 设置S1为清零按键,开机后按动该键清除残余数据后即可进行测量。
B、软件资源:
软件流程很简单,见图4. 图4 D、开发环境: 1、 使用IAR MSP430 7.12.1;
E、主要代码 Comparator_A中断函数 - #pragma vector=COMPARATORA_VECTOR
- __interrupt void ComparatorA()
- {
- Comp_Count++;
- _BIC_SR_IRQ(LPM0_bits);
- }
复制代码
Time0A 中断函数
- #pragma vector= TIMER0_A1_VECTOR
- __interrupt void Timer_A (void)
- {
- switch( TA0IV )
- {
- case 2:
- {
- Cap=Comp_Count;
- CCR1 += 35000;
- Flag=0x01;
- Comp_Count=0x00;
- P2OUT ^=BIT4;
- break;
- }
- case 4: break;
- case 10: break;
- }
-
- __bic_SR_register_on_exit(LPM0_bits);
- }
复制代码
min函数 - int main (void)
- {WDTCTL = WDTPW + WDTHOLD;
- OLED_Init();
- TACTL = TASSEL_1 + MC_2 ;
- CCTL1 = CCIE;
- CCR1 = 35000;
- CACTL1 = CAON + CAIE +CAIES;
- CACTL2 = P2CA4+CAOUT + P2CA2 +CAF;
- OLED_Clear();
- LCD_Print(16,8,"数字式电容表",TYPE16X16,TYPE8X16);
- __bis_SR_register(LPM0_bits + GIE);
- while (1)
- {Display();} }
复制代码
运行结果: 测试1uF
测试100nF 测试10nF
测试1000pF
测试15pF
[media=x,500,375][/media]
视频地址: https://v.youku.com/v_show/id_XNDQ2NTY3MzI3Ng==.html
【项目文档】76+基于MSP430G2452的数字电容表称.rar
(1.34 MB, 下载次数: 2)
|