多功能数字万用表设计与制作.doc

上传人:本田雅阁 文档编号:2040719 上传时间:2019-02-07 格式:DOC 页数:103 大小:2.94MB
返回 下载 相关 举报
多功能数字万用表设计与制作.doc_第1页
第1页 / 共103页
多功能数字万用表设计与制作.doc_第2页
第2页 / 共103页
多功能数字万用表设计与制作.doc_第3页
第3页 / 共103页
亲,该文档总共103页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《多功能数字万用表设计与制作.doc》由会员分享,可在线阅读,更多相关《多功能数字万用表设计与制作.doc(103页珍藏版)》请在三一文库上搜索。

1、多功能数字万用表设计与制作 电信12-1BF第一组1、摘要 随着科技的日新月异,电子产品发展也非常之快,在电子电路测试、家用电气设备的维修、电子仪器检修、电子元器件测量中,万用表是最普及、最常用的的测量仪表。由于它操作简单、功能齐全、便于携带、一表多用等特点,深受电工、电子专业工作者及广大无线电爱好者的喜爱。事实证明,万用表不仅能检测电工、电子元器件的性能优劣,查找电子、电气线路的故障,估测某些电气参数,有时还能代替专业测试仪器,获得比较准确的结果,基本上可以满足电工、电子专业人员和业余无线电爱好者的需要。因此,推广万用表的应用技术,实现一表多用,既符合节约精神,又可以在一定程度上克服专用仪器

2、的困难。多功能数字万用表是在电子方面的学习、开发以及生产方面应用相当广发的一种仪器工具,整机电路设计以大规模的集成模拟和数字电路组合,采用STM32F103RBT6为核心,高精度的运算放大器,低功耗高效率的开端电源转换器,全电子调校技术赋予仪表高可靠性,高精度。仪表可用于测量交直流电压、交直流电流、电阻、电感、电容,RS232C接口技术的应用使其和计算机构成可靠多种的双向通讯。仪表采用独特的外观设计,采用OLED3.1液晶显示器,仪表采用220V交流供电使之成为性能更优越的高精度电工仪表。目录1摘要22 项目概述与功能需求53 项目论证63.1 总体方案论证63.1.1 设计目标63.1.2

3、总体设计方案43.2 小模块方案设计9 3.3 项目设计124 项目设计124.1 系统硬件设计124.1.1 测直流电流模块124.1.2 测直流电压模块144.3.3 侧交流电压模块164.1.4测电阻模块174.1.5 测电容模块184.1.6 测电感模块204.1.7 液晶显示模块224.1.8 电源设计模块254.2 接口设计244.2.1 外部接口244.2.2 内部接口244.3 运行设计264.4 系统软件设计264.4.1 主程序设计流程图264.4.2 详细设计与编码284.4.3 引脚说明294.4.4 软件系统与其他系统的关系304.4.5 各函数模块分析305产品调试

4、与包装475.1 调试475.2 系统数据测试495.3 测试结果分析526 项目小结527 致谢538 参考文献549 附录55 附录1 原理图55 附录2 PCB图56 附录3 器件清单57 附录4 整机实物图60 附录5 小组成员信息63 附录6 过程监控文档64 附录6.1 会议记录64 附录6.2 工作日志81 附录6.3 队员总结心得103 附录6.4 小组管理110 多功能数字万用表的设计与制作2 项目概述与功能需求1、项目设计具体内容:(1)测量分辨率高;(2)测量范围宽;(3)输入阻抗高;(4)集成度高,微功耗;(5)保护功能完善,抗干扰能力强;(6)具备全程保护功能;2、性

5、能指标测量项目量程分辨率准确度输入电阻过载保护DCVACVDCARC 表1 性能指标表3 项目论证3.1 总体方案论证3.1.1 设计目标题目要求制作多功能数字万用表,我们团队计划在性能高、精度高、功耗低、设计简洁明了以及环保的基础上,实现测量交直流电压、交直流电流、电阻、电感、电容,RS232C接口技术的应用使其和计算机构成可靠多种的双向通讯等功能。3.1.2 总体设计方案方案一:采用AT89C51单片机结合12864液晶作为本系统的主控MCU与LCD液晶显示部分,其优点是AT89C51软件调试容易,代码资源丰富,12864液晶显示字符多,能够显示必要的数据与字符。缺点是AT89C51内部没

6、有集成ADC外设,需要外扩ADC芯片,并且12864液晶功耗和体积都较大。方案二:采用STM32F103RCT6为主控,结合1602液晶作为本系统的主控MCU与LCD液晶显示部分,其优点是STM32F103RCT6内部外设丰富,集成了12位的ADC,OLED液晶体积小。缺点是软件开发较AT89C51要难,1602液晶显示的字符数有限。结合毕业设计的一些功能需求和学习的目的,我采用方案二作为毕业设计的系统总体方案,原因是 STM32F103RCT6资源丰富,能够很好的满足系统所需要的硬件资源,我希望通过努力学习掌握该MCU的使用方法以达到学习的目的,同时考虑到这次毕业设计的功耗、整机的体积不大和

7、显示的字符不多,OLED3.1液晶正好能够满足系统需求,所以我认为采用方案二是比较合理的。STM32F103RCT6参数介绍:Controller Family/Series:STM32F存储器容量,RAM:20KB计时器数:4封装形式:LQFP工作温度范围:-40C to +105C针脚数:64SVHC(高度关注物质):No SVHC (18-Jun-2010)工作温度最低:-40C工作温度最高:105C串行通讯:2xSPI, 2xI2C, 3xUSART, USB, CAN位数:32器件标号:(ARM Cortex) STM32存储器类型:FLASH定时器位数:16封装类型:剥式接口类型:

8、CAN, I2C,SPI, UART, USB时钟频率:72MHz模数转换器输入数:16电源电压 最大:3.6V电源电压 最小:2V芯片标号:32F103RB表面安装器件:表面安装输入/输出线数:49闪存容量:128KB总流程图如图:待测信号表 笔选择选择档位选 择 功 能STM32液晶显示图1 总原理图 3.2小模块方案设计: 1.测直流电压部分: 方案一,采用芯片NE5532,一种双运放高性能低噪声运算放大器,通过放大信号输出所需信号。 方案二,采用芯片TLV2472,也是一种运算放大器,通过放大信号输出所需信号。 方案比较:芯片NE5532需要双电源供电,总设计中受9V电池供电限制,9V

9、变为正负5V,功耗会很大,芯片TLV2472是一种高性能低噪声运算放大器,所以采用方案二。原理流程如图:图2 测直流电压流程方框图 2.测直流电流部分: 测直流电流的原理跟测直流电压原理相似,都是通过运放,放大所需型号,再输出信号,所采用的芯片一样方案也是跟测直流电压的一样,所以也是采用芯片TLV2472为核心。原理流程如图: 图3 测直流电流流程方框图 3.测交流电压部分: 方案选择,所采用的芯片跟测直流电压和电流的一样,根据模块的统一所以也采用芯片TLV2472,输入信号经过分压整流再通过芯片,经单片机出去。原理流程如图: 图4 测交流电压流程方框图 4. 测电阻、电容部分: 方案选择,是

10、通过RC震荡电路测量电容,通过频率计算出电阻,通过示波器观察频率计算出电阻,所以采用555定时器,方便性能高,原理流程如图: 图5 测电阻、电容流程方框图 5.电源部分: 电源要求采用9V电池供电,所以只能通过开关电路或是稳压电路将9V转为相应需要的工作电压5V和3.3V。 方案一,采用LM2736芯片将9V电压稳压到5V,再将5V电压稳压到3.3V。 方案二,采用LM2576芯片通过开关电路将将9V电压转到5V,再通过 LM2576芯片通过开关电路将将9V电压转到3.3V。 方案比较,方案一功耗大,转化效率比方案二低,噪声也较方案二的要大,由于方案二LM2576有几种型号,其电路已经集合在其

11、内部,只要简单的外围滤噪声已经稳压的保护电路,并且不同型号的外围电路可以一样,LM2736T-5.0可以直接将9V转化为5V,LM2736T-3.3可以直接将9V转化为3.3V,所以采用方案二来设计制作电源部分。 3.3 系统组成本系统以MSP430G2553作为核心,分电源,测电阻,测电容,测直流电压,测交流电压,测直流电流,测二极管等几个小模块,主要工作是通过单片机的控制将各模块的输入信号按照预定的算法进行运算后从而在我们采用的LCD12864液晶上显示,显示内容为正在进行的测量模块提示字符以及测量的实时结果。功能方框图如图所示:图6 系统方框图 功能量程选择待测输入电容测量电阻测量直流电

12、压交流电压直流电流电感测量单片机系统独立按键电源管理 LED现实电路4 项目设计4.1 系统模块设计4.1.1 测直流电流模块1、 原理分析 2、原理图如图所示:图7 测直流电流原理图3、PCB如图所示:图8 测直流电流PCB图 4.1.2 测直流电压模块1、原理分析: 2、原理图如图所示: 图9 测直流电压原理图3、PCB如图所示:图10 测直流电压PCB图 4.1.3 测交流电压模块 1、原理分析: 2、原理图如图所示:图11 测交流电压原理图3、PCB如图所示: 图12 测交流电压PCB图4.1.4 测电阻模块1、 原理分析: 2、原理图如图所示:图13 测电阻原理图3、PCB如图所示:

13、 图14 测电阻PCB图。4.1.5 测电容模块图15 测电容原理图3、PCB如图所示: 图16 测电容PCB图 4.1.7 液晶显示模块1、 原理分析:2、原理图如图所示:图19 液晶显示原理图3、PCB如图所示: 图20 液晶显示PCB图 4.1.8 电源显示模块1、原理分析 2、 原理图如图所示:图21 电源原理图3、PCB如图所示: 图22 电源PCB图4. 2接口设计 4.2.1 外部接口四个外部接口和两个外部开关功能分别如下:外部接口1:测电容、交直流电压、直流电流;外部接口2:测电阻;外部接口3:测二极管(蜂鸣器);外部接口4:接地端。多功能数字万用表的外部接口是将不同的被测量(

14、如电容、电压、电阻等)不同的量程,切换到合适的接口。两个外部开关,一个是电源开关,控制多功能数字万用表的通断电,另一个是转换开关,多功能数字万用表中各种测量种类及量程的选择是靠转换开关的切换来实现的。转换开关里面有固定接触点和活动触点,当固定触点和活动触点闭合时接通电路。我们所采用的拨动 SS16F01 六档开关,通过拨动开关可以使得某些活动触点与固定触点闭合,从而相应的接通所需要的测量电路。4.2.2 内部接口: P1.0控制测直流小电压模块;P1.1控制测电阻模块;P1.2控制测电容模块;P1.3控制测高电压模块;P1.4控制测小直流电流模块;P1.5控制测大直流电流模块;P1.6控制测交

15、流电压模块;RST控制复位电路;P2.0 、P2.1控制继电器;P2.2控制蜂鸣器模块;P2.3、P2.4、P2.5三个接口液晶模块;P2.6接晶振;DVCC接电源;2DVSS接地。芯片引脚说明,关键硬件电路图如下 图23 关键硬件电路图图 74HC4060用256分频器,sn74hc573a为锁存器用作开关P1.2为被测信号进入端,P2.1连接MSP430G2553捕获测量端。P1.1通过IO控制。当原理图中的P1.1为高电平时,锁存器打开,相当于开关关闭,同时分频器处于复位状态,即信号不分频直接进入MSP430。当原理图中的P1.1为高电平时,锁存器关闭,相当于开关打开,同时分频器处于工作

16、状态,即信号经256分频进入MSP430。 4.3 运行设计 运行控制采用半自动,通过表笔的选择,还有档位开关的选择来切换,另外通过软件来自动换挡。各模块组合设计以MSP430G2553作为核心,采用了其内部的16位定时/计数器以及分频控制和液晶显示器共同实现对被测信号的频率进行测量及显示。 在单片机应用系统中,经常要对一个连续的脉冲波频率进行测量,使用单片机测量频率通常是利用它的定时/计数器来完成的。模块间通过表笔的选择,还有档位开关的选择来切换。 4.4 系统软件设计4.4.1 主程序设计流程图首先把各个模块初始化,进入到液晶显示,选择所需功能,通过公式计算相应的值,将结果传到液晶显示。流

17、程图如下:开始界面初始化P1.00.2VP1.00.2VAD采集P1.4AD采集P1.5通过公式计算出电流值送12864液晶显示P1.42.0V控制继电器1挡控制继电器2挡FFT计算出有效电压值送12864液晶显示P2.62.0VNoYesYesYesYesNoNoNoNoYes图24 软件流程图进入中断测量确定频率FF100R_C_flag=0F70控制继电器1挡通过公式计算R控制继电器2挡送12864液晶显示通过公式计算C送12864液晶显示F10000R_C_flag=0控制继电器2挡R_C_flag=0YesNoYesYesYesF0.1)/0.1为指定电压 当电压超过这个值的时候开始

18、启动电压挡 ADC10_Convert(INCH_3,BIT3); Display_Str(0,0, 电 压 值 ); Display_Str(1,0,当前电压值:); LCD_Display_FloatNum(2,1,V_value,8); Display_Str(2,6,V ); delay_ms(100); if(I_Channel()0.1)/0.1同电压 ADC10_Convert(INCH_5,BIT5); Display_Str(0,0, 电 流 值 ); Display_Str(1,0,当前电流值:); LCD_Display_FloatNum(2,1,I_value,8);

19、Display_Str(2,6,A ); if(VC_Channel()0.1)/0.1同电压 ADC10CLK_Convert(INCH_6,BIT6); FFT_Test(FFT_D); max=Return_max(FFT_D); Display_Str(0,0, 交流电压值 ); Display_Str(1,0,当前有效值:); LCD_Display_FloatNum(2,1,max,8); Display_Str(2,6,V ); /* ADC10_Convert(INCH_3,BIT3); delay_ms(10); Convert_End(); ADC10_Convert(IN

20、CH_4,BIT4); delay_ms(10); Convert_End(); ADC10_Convert(INCH_5,BIT5); delay_ms(10); Convert_End(); ADC10_Convert(INCH_5,BIT5); delay_ms(10); Convert_End(); ADC10_Convert(INCH_6,BIT6); delay_ms(10); Convert_End(); ADC10_Convert(INCH_7,BIT7); delay_ms(10); Convert_End();*/ /if() / 2、单片机初始化函数 单片机初始化函数包括

21、对看门狗定时器模式的设置、I/O口输入/输出功能的配置。定时器A所需时钟源、分频系数的选择,并将总中断打开。函数流程图开始图28 初始化函数流程图结束开中断定时器A配置ANGI/O口配置关闭看门狗部分函数代码如下/* * 描述 : 系统初始化 * 参数 : 无 * 返回 : 无 * 注意 : 无 */static void Sys_Init(void) WDTCTL = WDTPW + WDTHOLD; / 停止看门狗 DCOCLK_Set(_16MHZ);/DCO频率为8MHz ACLK_Set(LF,DIVA_0);/ACLK频率为32.768KHz SMCLK_Set(SM_DCO_CL

22、K,DIVS_0);/SMCLK=DCOCLK MCLK_Set(M_DCO_CLK,DIVM_0);/MCLK=DCOCLK /* 3、中断函数 中断函数流程图如图4所示。当定时器A溢出后就进入中断,count就加上65535。进入中断 count = count +65535开始 结束图29 中断流程图部分函数代码如下:/* * 描述 : 定时器中断服务函数 * 参数 : 无 * 返回 : 无 * 注意 : Timer A0 interrupt service routine */#pragma vector=TIMER0_A0_VECTOR/测量电阻_interrupt void Tim

23、er_A0(void) CaptureCap_Offset+=TA0CCR0; if(Cap_Offset=2) R_C_flag=0; CCTL0&=0X3FFF; TA0CTL&=0XFFCF;/Stop Cap_Offset=0; F_Measure(); F_M_Start(); TA0CCR0=0; 部分重要代码如下:/*包含-*/#include Timer.h#include ADC10.h/* 私有定义结构体 -*/* 私有宏-*/#define Shift_H_Min 64.00/捕获数的换高挡下线门限#define Shift_L_Min 12.00/捕获数的换中挡下线门限

24、#define SMCLK 8000000/进行了优化处理/* 全局变量-*/uint16_t Capture2;uint16_t Capture_C2;uint8_t R_C_flag=0xff;/R/C显示标志位uint8_t Cap_Offset=0;/捕获偏量uint16_t F_Mset2;/0 时钟源选择,1,分频系数uint32_t F_MCap;uint8_t Gears; /档位 0为低档,1为中档,2为高档,默认为中档/* 私有函数模型 -*/void F_M_Set(void);/* * 描述 : 时基配置 * 参数 : 无 * 返回 : 无 * 注意 : */void

25、Timer_Base_Conf(void) P1DIR&=BIT1; P1SEL |=BIT1; /*设置P1.1端口为功能模块使用,即:做捕获源*/ P1DIR&=BIT2; P1SEL |=BIT2; /*设置P1.2端口为功能模块使用,即:做捕获源*/ /Time_IO_Ctrl; /配置中与高档的换挡的控制IO配置 Gears=1;/中档 F_M_Set(); F_M_Start();/* * 描述 : 时基配置 * 参数 : F_Mset:全局变量,随测量档位的不同时基配置跟着改变 * 返回 : 无 * 注意 : */void F_M_Start(void) TA0CTL=F_Mse

26、t0+TACLR+F_Mset1+TAIE; CCTL0=0x4910u;/ CM_1+SCS+CAP+CCIE; CCTL1 = 0x4910u;/ CM_1+SCS+CAP+CCIE; TA0CTL |= MC_2; /contmode/* * 描述 : 频率测量 * 参数 : 无 * 返回 : 无 * 注意 : 无 */void F_Measure(void) float F; F=(Capture1-Capture0)+1; /捕获脉宽小于一定值,则换高挡 switch(Gears) case 0x00:/判断是否需要换中档 if(FShift_L_Min) Gears+; F_M_S

27、et(); return; break; /* case 0x01:/判断是否需要换高档 if(FShift_H_Min) Gears+; F_M_Set(); return; break; */ default: break; F=F_MCap/F; if(F5000) LCD_LineClear(2); if(R_C_flag=0)/以下写关于测电阻的显示程序 LCD_Display_FloatNum(2,1,F,8); Display_Str(2,6,Hz); else/以下写关于测电容的显示程序 LCD_Display_FloatNum(2,1,F,8); Display_Str(2,6,Hz); else if(F10000000) F=F/1000; LCD_LineClear(2);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1