庆祝一下, 我的AVR频率式电容表终于做出来了!
参考网上国内国外的电路做的, 频率是通过在T2 1/54秒内对 T1计数的值测出来的, 显示出的并不是真正的频率(要乘以54才是)http://cache.amobbs.com/bbs_upload782111/files_9/ourdev_197012.jpg
点击此处下载ourdev_197013.rar(文件大小:100K) (电路图与说明) 我也做过了,不过这东西在电容和电感都不动的时候频率会漂移,而且很大。 //以下是ICCAVR下的部分代码, 由于系工作成果, 不便贴出全部代码
void AddC2(void)
{
_ADD_C2;
}
void RemoveC2(void)
{
_REMOVE_C2;
}
unsigned char IsCountting = 1; //计数闸门
unsigned char T1OF_counter = 0; //计数溢出中断计数器
//Watchdog initialize
// prescale: 2048K
void watchdog_init(void)
{
WDR(); //this prevents a timout on enabling
//WDTCR = 0x1F; ////特别注意这一条不是ICC生成的,是后来加上的。
WDTCR = 0x0F; //WATCHDOG ENABLED - dont forget to issue WDRs
}
void CounterStart(void)
{
TCNT1 = 0;
TCNT2 = 0x27;
TCCR1B = 0x06; //外部引脚T1, 下降沿驱动
//TCCR1B = 0x07; //外部引脚T1, 上升沿驱动
TCCR2 = 0x07;
}
#pragma interrupt_handler timer1_ovf_isr:iv_TIM1_OVF
void timer1_ovf_isr(void)
{
//TIMER1 has overflowed
++T1OF_counter; //中断溢出计数器
}
//TIMER2 initialize - prescale:1024
// WGM: Normal
// desired value: 27Hz
// actual value: 27.002Hz (0.0%)
void timer2_init(void)
{
TCCR2 = 0x00; //stop
ASSR= 0x00; //set async mode
TCNT2 = 0x27; //setup
OCR2= 0xD9;
//TCCR2 = 0x07; //start
}
#define _GATE_FREQUENCY 54
#define _DEVIDER (1) //计数的闸门时间控制
#pragma interrupt_handler timer2_ovf_isr:iv_TIM2_OVF
void timer2_ovf_isr(void)
{
TCCR1B = 0x00; //timer1 stop
TCCR2 = 0x00; //timer2 stop
IsCountting = 0;
}
void GetFreq(unsigned long *pFreq)
{
IsCountting = 1; //
T1OF_counter = 0;
CounterStart();
while(IsCountting); //等待闸门关闭
*pFreq = TCNT1 + (T1OF_counter * (unsigned int)(-1));
T1OF_counter = 0;
} 飘移很大,不知道是不是我在洞洞板上焊接的LM311电路存在干扰~~
都扔在一边好久,有时间的时候一定要把他重新拾起来...
时间...时间...好象一直没时间 ... 温飘是个问题. 不过在测量之前进行一次校零就可以了, 几分钟之内的温飘应该不会很大. 有点儿像指针表测电阻前要调零一样. 呵呵, 致于说精度, 我手头也没有高精度的电容或者电容表, 无法得知了. 用充电+比较器可能精度好一点? 不知道LCR表是怎么测的.感觉还是用一个标准的正弦波发生器来测可能还好些. 看这里
http://www.embedded.com/columns/technicalinsights/192203166?_requestid=82941 很好,很强!果然不务正业~~ 谢谢楼主共享。COOL。
能否上传更清楚的电路图?以便我们将来的资料整理。谢谢。 高人,Up一下 最近有点忙, 过段时间把用运放做的另一版本也贴出来. 非常不错,祝贺一下!
其实就算是用上万的LCR数字电桥测电容也要经常校准的,尤其是高频测电容时还要5分钟校一次,否则误差太大 漂移是电感的温度漂移造成的,短时间间隔校准可以消除。如果要达到数字电桥的精度,就要用漂移小、线性好的电感。 数字电桥我做过,原理是DDS产生正弦波到被测元件,再检测元件的电压电流送鉴相器,得到XY轴上的参数,算出容量和损耗。 那个0.5%的电容哪里找的,长什么样啊? 标志一下。有时间再做一个 很好,很好,强! mark mark good。
测试不同的电容需要切换不同的频率,呵呵。 Mark! mark! 顶~~~ ./emotion/em063.gif 直接显示频率应该很简单吧。 mark mark 回复【10楼】stevenlu 老卢
-----------------------------------------------------------------------
俺等着学习学习。 挣分路过 mark mark mark 想做个,MARK
这种方案是网上流传最多的一种。
页:
[1]