基于单片机的电容测量仪毕业论文设计内容摘要:

择。 为满足 10pF ~ 的测量范围 , 可通过设置不同按键来实现。 不同按键与对应的量 程范围如表 所示。 系统分为三个量程 , 可测量 1pF ~ 12020uF 的电容。 表 按键与量程范围的关系 按键是否按下 量程范围 无按键按下 F 按下Btn3 F600μ F 按下 Btn3 再按下 S3 200 μF12020μ F 原理图设计及设计结果 原理图设计 图 13 原理图设计 设计结果 图 14 设计结果实物图 注:各个按键功能如图中文字说明。 图 15 初始化界面 3 系统测试 测量小电容 图 16 中的 是未经校准的误差,一般这个值会比较大,必须校准后才能测小电容。 电解电容测量档不需要校准,校准仅仅针对小电容。 图 16 未校准界面 校准只需在小电容档(图中界面),不接入测量电容时,按一下校准(清零)按钮(原理图 Btn2)即可, 会自动清零(图 17 所示)。 图 17 校准后界面 在此以 200PF 电容测试为例,演示整个测试过程。 校准后,直接将小电容接在与 GND 之间即可,图 18 所示。 第一行显示测得的电容值,第二行显示的是当前 LC 振荡电路的频率。 图 18 200PF 测试 结果 测量电解电容 按一次功能切换按钮 原理图中 Btn3 都会切换到测电解电容的状态,然后根据 S3 弹起还是按下的状态自动识别测大电解还是测小电解电容。 再次按下功能切换按钮 原理图中 Btn3 会返回到测小电容的状态。 这就是功能切换按钮的作用。 除此之外,其它测量档位单片机能根据 S S S3 按下还是弹起自动识别,无需人为干预。 S3 弹起时为测小电解档,第一行显示测量范围,第二行显示测得的电容值。 图 19 F 测试结果 图 20 220μ F 测试结果 测量结果 将测量的一系列电容的电容值 与标准值比较。 比较结果如表。 表 测量值与标准值比较 标准值 测量值 误差 200PF % F F % 220μ F F % 由表 中数据可知,平均误差是 7%,测量范围是 1PF~12020μ F,满足设计要求的 10PF~ F。 测量结果由液晶直观显示。 综合以上分析,该设计满足整体设计要求。 误差分析 电容器 的容量的精确程度,基本上决定了整个测量过程的精度。 应该选用稳定性好精度高的电容器,一般推荐使 用云母电容器,买不到的话,独石或 CBB 的也都可以将就用。 非线性误差是由器件的非线性特性产生的 , 可通过硬件参数修正和软件算法补偿来减小。 4 结论与心得体会 总之,通过一系列仿真和设计,数字式电容测量仪还是比较成功的做出来了。 一路下来还是比较坎坷,从原理到实物,从调试到调试成功,遇到了很多问题,比如开关的选择、电源滤波、三极管驱动等等,其次,软件设计也遇到了很多问题,通过很长的时间才调试成功。 通过这次设计也收获了很多,知识层面上,学得了很多新知识,解决问题的新方法。 实践方面,提高了动手能力,提高了解决实 际问题的能力等等。 在思想上,更加明白的坚持不懈的重要性,学习探索的重要性,实践动手的重要性。 [参考文献 ] 康华光 .电子技术基础 数字部分 第四版 [M].北京 :高等教育出版社 . 康华光 .电子技术基础 模拟部分 第四版 [M].北京 :高等教育出版社 . 杨刚 . 电子系统设计与实践 [M].北京:电子工业出版社, 2020 赵文博 . 新型集成电路速查手册 [M].北京:人民邮电出版社, 2020 李群芳 .单片微型计算机与接口技术(第 3 版) [M]. 北京:电子工业出版社,2020 李阳 .高精度微小 电容测量电路的研制 [J].上海计量测试, 2020 刘军 ,李智 . 基于单片机的高精度电容电感测量仪 [J]. 研究与开发 , 2020 附 录 程序清单: , , a 程序清单: include include .\Head\ include .\Head\ include .\Head\ sbit correctbtn P3^7。 //按钮 Btn2,用于校准 sbit setbtn P3^6。 //按钮 Btn3,用于功能选择 sbit F_LC P1^3。 //选择测量频率还是 LC 标志 按下: 1(测频率) sbit L_C P1^4。 //选择测量 L 还是 C 标志 按下: 1(测电感) sbit Eb_Es P1^6。 //选择测量电解大电容还是小电容标志 按下: 1(测大电解) sbit dischg P1^5。 //电容放电端 放电 0,充电 1 //Measure_Flag 测小电容 1测电感 2测频率 3测小电解 4测大电解 5 unsigned char Measure_Flag。 unsigned int T0_times。 //T0计时 50ms的个数,测频率 20( 1s) ,测 LC 10( ) unsigned int Timer0_Num。 unsigned int Timer1_Num。 unsigned long Frequency0。 unsigned long Frequency1。 unsigned long Cx。 unsigned long Lx。 unsigned long EHx。 //大电解 unsigned long ELx。 bit M_E_FLC。 //功能切换按钮, M_E_FLC 0:测 FLC。 M_E_FLC 1:测电解电容 void Main void unsigned char loge。 unsigned char clear。 //清屏标志位,如果功能转换则需要清屏 Measure_Flag 0。 M_E_FLC 0。 //开机默认测 FLC T0_times 10。 Timer0_Num 0。 Timer1_Num 0。 Frequency0 169500。 //基准频率的一半 Frequency1 0。 LCD1602_Init。 LCD_Write_String 0,0, biyesheji。 LCD_Write_String 1,0, huangrenwei。 for loge 0。 loge 15。 loge++ Delay_ms 200。 MeasureFLC_init。 while 1 Get_btn。 //按键扫描 Delay_ms 70。 //该延时使按键切换稳定 clear Measure_Flag。 //读测量类型标志及清屏 Get_Measure_Flag。 if clear ! Measure_Flag LCD_Clear。 switch Measure_Flag //计算及显示 case 1: //测小电容 LC_Calculate。 LCD_Write_String 0,0,Cx。 LCD_Write_LongPoint 0,4,8,1,Cx。 LCD_Write_String 0,13, pF。 LCD_Write_String 1,0,freq。 LCD_Write_Long 1,6,6,Frequency1*2。 LCD_Write_String 1,13, Hz。 break。 case 2: //测小电感 LC_Calculate。 LCD_Write_String 0,0,Lx。 LCD_Write_LongPoint 0,4,8,2,Lx。 LCD_Write_String 0,13, uH。 LCD_Write_String 1,0,freq。 LCD_Write_Long 1,6,6,Frequency1*2。 LCD_Write_String 1,13, Hz。 break。 case 3: //测频率 LCD_Write_String 0,0, Meas_Freq。 LCD_Write_String 1,0,Freq。 if Frequency1 40 //频率测试 40Hz 以上 Frequency1 0。 LCD_Write_Long 1,6,6,Frequency1。 LCD_Write_String 1,13, Hz。 break。 case 4: //测小电解 LCD_Write_String 0,0, CEx 600uF。 LCD_Write_String 1,0,CEx。 LCD_Write_String 1,14,uF。 LCD_Write_LongPoint 1,6,5,2,ELx。 MeasureElec_init。 break。 case 5: //测大电解 LCD_Write_String 0,0,220uF CEx 12mF。 LCD_Write_String 1,0,CEx。 LCD_Write_String 1,14,uF。 LCD_Write_LongPoint 1,6,6,1,EHx。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。