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

上传人:b****4 文档编号:24601242 上传时间:2023-05-29 格式:DOCX 页数:86 大小:441.64KB
下载 相关 举报
多功能数字万用表设计与制作.docx_第1页
第1页 / 共86页
多功能数字万用表设计与制作.docx_第2页
第2页 / 共86页
多功能数字万用表设计与制作.docx_第3页
第3页 / 共86页
多功能数字万用表设计与制作.docx_第4页
第4页 / 共86页
多功能数字万用表设计与制作.docx_第5页
第5页 / 共86页
点击查看更多>>
下载资源
资源描述

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

《多功能数字万用表设计与制作.docx》由会员分享,可在线阅读,更多相关《多功能数字万用表设计与制作.docx(86页珍藏版)》请在冰豆网上搜索。

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

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

1、摘要

随着科技的日新月异,电子产品发展也非常之快,在电子电路测试、家用电气设备的维修、电子仪器检修、电子元器件测量中,万用表是最普与、最常用的的测量仪表。

由于它操作简单、功能齐全、便于携带、一表多用等特点,深受电工、电子专业工作者与广大无线电爱好者的喜爱。

事实证明,万用表不仅能检测电工、电子元器件的性能优劣,查找电子、电气线路的故障,估测某些电气参数,有时还能代替专业测试仪器,获得比较准确的结果,基本上可以满足电工、电子专业人员和业余无线电爱好者的需要。

因此,推广万用表的应用技术,实现一表多用,既符合节约精神,又可以在一定程度上克服专用仪器的困难。

多功能数字万用表是在电子方面的学习、开发以与生产方面应用相当广发的一种仪器工具,整机电路设计以大规模的集成模拟和数字电路组合,采用STM32F103RBT6为核心,高精度的运算放大器,低功耗高效率的开端电源转换器,全电子调校技术赋予仪表高可靠性,高精度。

仪表可用于测量交直流电压、交直流电流、电阻、电感、电容,RS232C接口技术的应用使其和计算机构成可靠多种的双向通讯。

仪表采用独特的外观设计,采用OLED3.1液晶显示器,仪表采用220V交流供电使之成为性能更优越的高精度电工仪表。

 

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

2项目概述与功能需求

1、项目设计具体容:

(1)测量分辨率高; 

(2)测量围宽;

(3)输入阻抗高; 

(4)集成度高,微功耗; 

(5)保护功能完善,抗干扰能力强;

(6)具备全程保护功能;

2、性能指标

测量项目

量程

分辨率

准确度

输入电阻

过载保护

DCV

ACV

DCA

R

C

表1性能指标表

3项目论证

3.1总体方案论证

3.1.1设计目标

题目要求制作多功能数字万用表,我们团队计划在性能高、精度高、功耗低、设计简洁明了以与环保的基础上,实现测量交直流电压、交直流电流、电阻、电感、电容,RS232C接口技术的应用使其和计算机构成可靠多种的双向通讯等功能。

3.1.2总体设计方案

方案一:

采用AT89C51单片机结合12864液晶作为本系统的主控MCU与LCD液晶显示部分,其优点是AT89C51软件调试容易,代码资源丰富,12864液晶显示字符多,能够显示必要的数据与字符。

缺点是AT89C51部没有集成ADC外设,需要外扩ADC芯片,并且12864液晶功耗和体积都较大。

方案二:

采用STM32F103RCT6为主控,结合1602液晶作为本系统的主控MCU与LCD液晶显示部分,其优点是STM32F103RCT6部外设丰富,集成了12位的ADC,OLED液晶体积小。

缺点是软件开发较AT89C51要难,1602液晶显示的字符数有限。

结合毕业设计的一些功能需求和学习的目的,我采用方案二作为毕业设计的系统总体方案,原因是STM32F103RCT6资源丰富,能够很好的满足系统所需要的硬件资源,我希望通过努力学习掌握该MCU的使用方法以达到学习的目的,同时考虑到这次毕业设计的功耗、整机的体积不大和显示的字符不多,OLED3.1液晶正好能够满足系统需求,所以我认为采用方案二是比较合理的。

 

 

 

STM32F103RCT6参数介绍:

ControllerFamily/Series:

STM32F

存储器容量,RAM:

20KB

计时器数:

4

封装形式:

LQFP

工作温度围:

-40°Cto+105°C

针脚数:

64

SVHC(高度关注物质):

NoSVHC(18-Jun-2010)

工作温度最低:

-40°C

工作温度最高:

105°C

串行通讯:

2xSPI,2xI2C,3xUSART,USB,CAN

位数:

32

器件标号:

(ARMCortex)STM32

存储器类型:

FLASH

定时器位数:

16

封装类型:

剥式

接口类型:

CAN,I2C, SPI,UART,USB

时钟频率:

72MHz

模数转换器输入数:

16

电源电压最大:

3.6V

电源电压最小:

2V

芯片标号:

32F103RB

表面安装器件:

表面安装

输入/输出线数:

49

闪存容量:

128KB

 

总流程图如图:

 

图1总原理图

3.2小模块方案设计:

1.测直流电压部分:

方案一,采用芯片NE5532,一种双运放高性能低噪声运算放大器,通过放大信号输出所需信号。

方案二,采用芯片TLV2472,也是一种运算放大器,通过放大信号输出所需信号。

方案比较:

芯片NE5532需要双电源供电,总设计中受9V电池供电限制,9V变为正负5V,功耗会很大,芯片TLV2472是一种高性能低噪声运算放大器,所以采用方案二。

原理流程如图:

图2测直流电压流程方框图

2.测直流电流部分:

测直流电流的原理跟测直流电压原理相似,都是通过运放,放大所需型号,再输出信号,所采用的芯片一样方案也是跟测直流电压的一样,所以也是采用芯片TLV2472为核心。

原理流程如图:

图3测直流电流流程方框图

3.测交流电压部分:

方案选择,所采用的芯片跟测直流电压和电流的一样,根据模块的统一所以也采用芯片TLV2472,输入信号经过分压整流再通过芯片,经单片机出去。

原理流程如图:

图4测交流电压流程方框图

4.测电阻、电容部分:

方案选择,是通过RC震荡电路测量电容,通过频率计算出电阻,通过示波器观察频率计算出电阻,所以采用555定时器,方便性能高,原理流程如图:

图5测电阻、电容流程方框图

5.电源部分:

电源要求采用9V电池供电,所以只能通过开关电路或是稳压电路将9V转为相应需要的工作电压5V和3.3V。

方案一,采用LM2736芯片将9V电压稳压到5V,再将5V电压稳压到3.3V。

方案二,采用LM2576芯片通过开关电路将将9V电压转到5V,再通过LM2576芯片通过开关电路将将9V电压转到3.3V。

方案比较,方案一功耗大,转化效率比方案二低,噪声也较方案二的要大,由于方案二LM2576有几种型号,其电路已经集合在其部,只要简单的外围滤噪声已经稳压的保护电路,并且不同型号的外围电路可以一样,LM2736T-5.0可以直接将9V转化为5V,LM2736T-3.3可以直接将9V转化为3.3V,所以采用方案二来设计制作电源部分。

3.3系统组成

本系统以MSP430G2553作为核心,分电源,测电阻,测电容,测直流电压,测交流电压,测直流电流,测二极管等几个小模块,主要工作是通过单片机的控制将各模块的输入信号按照预定的算法进行运算后从而在我们采用的LCD12864液晶上显示,显示容为正在进行的测量模块提示字符以与测量的实时结果。

功能方框图如图所示:

 

图6系统方框图

 

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如图所示:

 

图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:

接地端。

多功能数字万用表的外部接口是将不同的被测量(如电容、电压、电阻等)不同的量程,切换到合适的接口。

两个外部开关,一个是电源开关,控制多功能数字万用表的通断电,另一个是转换开关,多功能数字万用表中各种测量种类与量程的选择是靠转换开关的切换来实现的。

转换开关里面有固定接触点和活动触点,当固定触点和活动触点闭合时接通电路。

我们所采用的拨动SS16F01六档开关,通过拨动开关可以使得某些活动触点与固定触点闭合,从而相应的接通所需要的测量电路。

4.2.2部接口:

P1.0控制测直流小电压模块;

P1.1控制测电阻模块;

P1.2控制测电容模块;

P1.3控制测高电压模块;

P1.4控制测小直流电流模块;

P1.5控制测大直流电流模块;

P1.6控制测交流电压模块;

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为高电平时,锁存器关闭,相当于开关打开,同时分频器处于工作状态,即信号经256分频进入MSP430。

4.3运行设计

运行控制采用半自动,通过表笔的选择,还有档位开关的选择来切换,另外通过软件来自动换挡。

各模块组合设计以MSP430G2553作为核心,采用了其部的16位定时/计数器以与分频控制和液晶显示器共同实现对被测信号的频率进行测量与显示。

在单片机应用系统中,经常要对一个连续的脉冲波频率进行测量,使用单片机测量频率通常是利用它的定时/计数器来完成的。

模块间通过表笔的选择,还有档位开关的选择来切换。

4.4系统软件设计

4.4.1主程序设计流程图

首先把各个模块初始化,进入到液晶显示,选择所需功能,通过公式计算相应的值,将结果传到液晶显示。

流程图如下:

 

图24软件流程图

 

图25中断流程图

4.4.2详细设计与编码

在电子技术中,频率是最基本的参数之一,数字频率计具有精度高、使用方便、测量迅速、以与便于实现测量过程自动化等优点,是近代电子技术领域的重要工具之一,在许多领域得到广泛应用。

本系统以超低功耗MSP430G2553单片机为核心处理芯片来测量信号的频率,通过定时器A采用计数法完成信号频率测量,并将被测频率值通过LCD12864液晶串行显示。

频率可测量围在1Hz到999MHz之间。

如需要,围可继续扩宽,频率计的误差在1%以。

基于MSP430G2553的频率计设计原理图如图所示,通过串口方式液晶显示,只需配置单片机三个口线便可以实现对频率的测量。

其中待测频率信号从P1.0口输入,然后可以直接在液晶屏上显示。

 

4.4.3引脚说明

1、MSP430G2553引脚功能说明

由原理图可以看出,430单片机的最小系统用到1脚电源、16脚复位端、20脚接地端、配置P1.0口为待测信号输入端,P1.4为串行数据输出口,P1.5为串行时钟输出口,如表1所示。

表1MSP430G2553引脚功能说明

引脚序号

引脚名称

功能说明

备注

1

VCC

电源正

2

P1.0

频率信号输入端

6

P1.4

串行数据输出端

7

P1.6

串行时钟输出端

16

RST

复位脚

20

GND

电源地

表3MSP430G2553引脚功能说明

2、LCD12864引脚功能说明

LCD12864液晶显示屏用到1、2脚,电源接口线,19、20脚背光电源接口线,15脚并行/串行接口选择,5脚串行数据口,6脚串行的同步时钟。

LCD12864引脚功能如表2所示。

 

表2LCD12864接口说明

引脚序号

引脚名称

功能说明

备注

1

VSS

模块的电源地

2

VDD

模块的电源正端

4

RS(CS)

并行指令/数据选择信号;串行片选信号

5

R/W(SID)

并行读写选择信号;串行的数据口

6

E(CLK)

并行使能信号;串行的同步时钟

15

PSB

PSB并/串行接口选择:

H-并行,L-串行

19

LED_A

背光源正极

20

LED_K

背光源负极(0V)

表4LCD12864接口说明

4.4.4软件系统与其他系统的关系

Fft测交流,先采用测数法测试频率再根据频率通过fft测幅度。

ADC该函数文件用来驱动液晶显示。

BCSC MSP430基础时钟的配置注意:

DCOCLK最大频率与工作电压成线性关系,设置注意工作电压是否满足时钟配置该函数应先调用,否则会影响其他时钟设置函数的调用。

Delay延时函数延时函数与MCLK有关,不同频率下的Dealy_Base下头文件有定义。

LCD_12864液晶显示函数。

Mian主函数。

Timer频率计。

UARTMSP430串口驱动函数。

4.4.5各函数模块分析

1、主函数

主函数流程图如图2所示。

在主程序中,主要对单片机配置进行初始化和屏幕初始化,以与频率信号数据的处理并实时显示。

 

部分主函数代码如下:

#include"main.h"

#include"ADC10.h"

#include"FFT.h"

floatmax;

/*私有函数模型----------------------------------------------------------------------------------*/

staticvoidSys_Init(void);

voidmain(void)

{

Sys_Init();

LCD_Init();

//ADC10_Config();

//ADC10_TA0_Config(1000);

/*ADC10CLK_Convert(INCH_0,BIT0);

FFT_Test(FFT_D);

max=Return_max(FFT_D);

//while(ADC10IFG==0);

//ADC10_Config();

//V_Channel();

LCD_Display_FloatNum(2,1,max,8);

delay_ms(10);

while

(1);

Test_Frequance();

while

(1)

{

while(Ta1_OV_flag!

=1);

LCD_Display_FloatNum(2,1,Input_Frequance,8);

Test_Frequance();

delay_ms(1000);

}*/

//Display_Str(0,0,"频率计");

//Display_Str(1,0,"当前频率值:

");

//Display_Str(2,6,"Hz");

Timer_Base_Conf();//捕获配置

ADC10_Config();

__bis_SR_register(GIE);

while

(1)

{

if(V_Channel()>0.1)//0.1为指定电压当电压超过这个值的时候开始启动电压挡

{

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);

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(INCH_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、单片机初始化函数

单片机初始化函数包括对看门狗定时器模式的设置、I/O口输入/输出功能的配置。

定时器A所需时钟源、分频系数的选择,并将总中断打开。

函数流程图

 

部分函数代码如下

 

/***************************************************************************************************

*描述:

系统初始化

*参数:

*返回:

*注意:

*************************************************************************************************/

staticvoidSys_Init(void)

{

WDTCTL=WDTPW+WDTHOLD;//停止看门狗

DCOCLK_Set(_16MHZ);//DCO频率为8MHz

ACLK_Set(LF,DIVA_0);//ACLK频率为32.768KHz

SMCLK_Set(SM_DCO_CLK,DIVS_0);//SMCLK=DCOCLK

MCLK_Set(M_DCO_CLK,DIVM_0);//MCLK=DCOCLK

}

/*******************

3、中断函数

中断函数流程图如图4所示。

当定时器A溢出后就进入中断,count就加上65535。

 

部分函数代码如下:

/***************************************************************************************************

*描述:

定时器中断服务函数

*参数:

*返回:

*注意:

TimerA0interruptserviceroutine

*************************************************************************************************/

#pragmavector=TIMER0_A0_VECTOR//测量电阻

__interruptvoidTimer_A0(void)

{

Capture[Cap_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"

/*私有定义结构体--------------------------------------------------------------------------------*/

/*私有宏-----------------------------------------------------------------------------------------*/

#defineShift_H_Min64.00//捕获数的换高挡下线门限

#defineShift_L_Min12.00//捕获数的换中挡下线门限

#defineSMCLK8000000//进行了优化处理

/*全局变量---------------------------------------------------------------------------------------*/

uint16_tCapture[2];

uint16_tCapture_C[2];

uint8_tR_C_flag=0xff;//R/C显示标志位

uint8_tCap_Offset=0;//捕获偏量

uint16_tF_Mset[

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

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1