历史上的今天
今天是:2024年12月28日(星期六)
2021年12月28日 | 创意小发明:单片机制作电容电阻测量仪
2021-12-28 来源:eefocus
课题
电路元件参数RC测量电路的设计
设计要求:
测量仪的工作原理为:利用振荡电路,将电阻、电容的测量转变为与之成一定函数关系频率的测量,再利用单片机对不同频率进行测量和处理,用数码管显示被测量的大小,可以利用按键对被测量类型进行选择。
测量电阻范围为:≤1MΩ。
测量电容范围为:≤10000pF。
测量精度〈±5%。
废话不多说,先上实物图
注意,做实物没找到开关,用的是跳线冒,当未接跳线时,显示上面最后一张截图待测状态,跳线接好后,将显示对应的测量值。

单片机电容电阻测量仪仿真原理图截图如下:

细节1截图
细节2截图

设计主旨:主要原理是利用555定时器的振荡频率受外围电阻电容的影响来测量的,
以下是部分单片机C语言参考代码:
void measure(void)
{
IE=0x8a;
EA=1;
ET1=1;
ET0=1;
TMOD=0x51;
TH0=H_0;
TL0=L_0;
TH1=0;
TL1=0;
TR0=1;
// while(fw1);//测得引脚P3^5为高电平
TR1=1; //timer1 开始计数
// while(fw0); //测得引脚P3^5为低电平
// TR1=0;
//timer1 停止计数
// DL=TL1; //读当前计数值
// DH=TH1;
/// freq=DPTR;
// TH1=100;
// TL1=100;
// uu=DH256+DPL+inte65536; //计算总计数值
// inte=0; //清累计溢出计数
// tt=uu/(12*1000000.0/12.0); //求振荡周期
// ff=(unsigned long int)(1.0/tt); //频率值 求震荡频率
}
void yunsuan (void)
{
float tt=0;
// DPH=11;
// DPL=12;
uu=DH256+DL+inte65536; //计算总计数值
inte=0; //清累计溢出计数
tt=uu/(12*1000000.0/12.0); //求振荡周期
ff=(unsigned long int)(1.0/tt); //频率值 求震荡频率
}
void judgekey1()
{
long int R=0;
// R=(dat1000)/(255-dat);
R=10dat-130;
display®;
LED=~LED;
}
void judgekey2()
{
long int C=0;
if(scd0)
{
// C=3193333.0/freq;
C=((9.4*ff)-200)*0.8;
display1©;
LED=~LED;
}
else if (scg0)
{
// C=3193333.0/ff;
C=(9.4*ff)-200;
display1©;
LED=~LED;
}
}
史海拾趣
|
根据测试测量世界tmworld与Frost & Sullivan的联合调查,全球通用仪器市场的大部分份额仍然由示波器、频谱分析仪、信号发生器、万用表四种仪器把持。如图(1)所示四种仪器所占份额依次为33.7%,17.3%,16.3%,13.1%。个人认为,频谱分析仪之所以会占 ...… 查看全部问答> |
|
Altium Designer 6.0 的所有电路设计工作都必须在 Design Explorer (设计管理器)中进行,同时设计管理器也是 Altium Designer 6.0 启动后的主工作接口。设计管理器具有友好的人机接口,而且设计功能强大,使用方便,易于上手。因此本章将对设计管 ...… 查看全部问答> |
|
TFTP: Desktop losing ACK, block number =3(无法传输nk) pb通过以太网无法传输nk,串口调试信息 TFTP: Desktop losing ACK, block number = 3 ...… 查看全部问答> |
|
我的开发平台是DM365DVR,通过USB方式将TD模块(LC6311)连接到DM365DVR上,正确配置后,能够成功拨号,也能够通过TD网络传输视频,但是传输效果极差。CIF(352*288)格式的视频每秒只能传输一到两帧,而且画面质量也不好。更可气的是传不几秒就断 ...… 查看全部问答> |
|
具体事情如下: 传感器测一个力,送到“TR700数字式重量变送器”上显示。现在从“TR700数字式重量变送器”上接出的一个RS232接到电脑上,需要做的是在电脑上采集传感器测得的数据并存储下来。 从来没做过这方面的工作,在网上查了一下还是毫无头 ...… 查看全部问答> |
|
#define TOUCH_MAX_X 1000 // 950 #define TOUCH_MIN_X 30 // 90 #define TOUCH_MAX_Y 980 // 960 // 910 #define TOUCH_MIN_Y 30 // 70 //50 #define TOUCH_X 800 #define TOUCH_Y 480 VOID Touch_CoordinateConversion(INT *px, INT ...… 查看全部问答> |
|
开发的硬件是mips架构的CPU~ 郁闷了~在dos下编bootrom.bin,烧进flash后通过点灯观察运行状况 在romStart函数中复制rom代码到ram已经没问题,之后可以成功调用rom中的点灯程序或者已经复制到ram中的点灯程序拷贝。 但是解压缩就是过不去~ 想问 ...… 查看全部问答> |
|
我在VC下写 char szDrive[256]={0}; char szDir[256]={0}; char szPath[256]={0}; _splitpath(szFileName,szDrive,szDir,NUL ...… 查看全部问答> |




