智能数字万用表的设计文档格式.docx
- 文档编号:22216111
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:19
- 大小:145.27KB
智能数字万用表的设计文档格式.docx
《智能数字万用表的设计文档格式.docx》由会员分享,可在线阅读,更多相关《智能数字万用表的设计文档格式.docx(19页珍藏版)》请在冰豆网上搜索。
、2V、20V,精度为%1个字;
输入阻抗≥10MΩ。
(3)交流电压量程:
、2V、20V,精度为%2个字(以50Hz为
基准);
输入阻抗≥10MΩ;
频率响应范围为40~1000Hz。
(4)电阻量程:
2Ω、200Ω、2MΩ,精度%2个字。
2、发挥部分
(1)直流电压测量具有自动量程转换功能。
(2)具有“自动关机”功能,即在测量过程中,若1分钟内无任何键按下,仪器会自动关闭显示并处于低功耗状态;
再按任意键,仪器能返回“自动关机”前的工作状态。
(3)具有相对误差(△%)测量功能,即在进行某项测量时,首先通过示屏提示用户从键盘输入标称值,一旦输入确认后,仪器能显示相对误差中的△值。
(4)其它。
三总体设计方案
1、系统模块图
根据题目要求和本系统的设计思想,系统主要包括图2所示的模块:
图2系统模块框
2、总体方案分析
若被测量为电阻,则须经过电阻测量电路将电阻量转化为直流电压量后才可以进入量程自动转换电路;
若被测量为直流电压,则可以直接进入量程自动转换电路;
若被测量为交流电压,则需要先经过交直流转换电路将交流电压转换为直流电压后再进入量程自动转换电路。
单片机系统通过对CD4052芯片A、B端的控制实现量程自动转换。
A/D转换电路将测得的模拟量转化为数字量之后通过单片机系统在液晶显示屏上显示出来。
四单元电路设计与计算
1、电阻测量电路
利用运算放大器采用反相比例运算的方法,将测电阻转化为测电压,
电路图如下:
图3电阻测量电路
由反相比例电路可知:
Uo=(Rx/500)×
5V,可推出Rx=Uo×
100,测量电阻时若输出电压Uo=2V,则被测电阻Rx=200Ω如上图所示。
2、交直流转换电路
测量交流电压时须先将交流转化为直流,这里采用全波精密整流电路,利用二极管的单向导电性,运放A1构成反相器,运放A2构成反相加法器,电路图如下所示:
图4交直流转换电路
当UI>
0时D1导通、D2截止UO1=-2UIUO=-UO1-UI=UI
当UI<
0时D1截止、D2导通UO1=0UO=-UO1-UI=-UI
输入与输出信号波形如下:
图5交直流转换电路输入与输出波形
3、量程自动转换电路
自动量程转换电路的作用是按输入信号条件(过量程、欠量程信号)和时钟信号(EOC、DS1~DS4)发生相应的量程信号控制。
通过单片机读取MC14433的数字信号,通过数字信号的大小来控制模拟开关,从而改变反馈电阻的大小来实现档位的不同选择。
模拟开关的导通由Q3和Q0决定,当被测电压过量程时(Q3=0且Q0=1),向高量程变化;
欠量程时(Q3=1且Q0=1),向低量程变化;
当量程适当时,保持原来状态不变。
其中,Au=-Rf/R,R=10K,如果要实现3个档位,可以将Rf设为1k、10k、100k,然后通过控制开关来接通电阻,从而实现换档。
CD4052是一个双4选一的多路模拟选择开关,其使用真值表如表1所示:
图6CD4052芯片真值表
应用时可以通过单片机对A/B的控制来选择输入哪一路,这里选择Y通道,电路图如下:
图7量程自动转换电路
4、A/D转换电路
采用MC14433,集成芯片MC14433是是一个31/2位A/D转换器,其中集成了双积分式A/D转换器所有的CMOS模拟电路和数字电路。
具有外接元件少,输入阻抗高,功耗低,电源电压范围宽,精度高等特点,并且具有自动校零和自动极性转换功能。
MC1403提供输出可调基准电压
,当输入一个直流电压时,将进行A/D转换,用单片机来处理MC14433的控制信号。
当A/D转换结束时,MC14433的EOC引脚输出一个高电平脉冲给单片机,单片机进入中断处理程序。
单片机对MC14433的DS1~DS4进行动态扫描,然后将Q0~Q3进行转换之后由LCD显示。
相关理论推导:
双积分过程可以由下面的式子表示:
因为
,故有
,式中
=4000
,
是定时时间,
是变时间,由
确定斜率,若用时钟脉冲数N来表示时间
,则被测电压就转换成了相应的脉冲数,实现了A/D转换。
的参数计算:
式中
为积分电容上充电电压幅度,
=
=,
。
假定
=5V,
=66kHz。
当
=2V时,代入式1,可得
=480
,取标称值470
电路图如下图所示:
图8A/D转换电路
五软件设计
1、软件设计流程图:
图9软件设计流程
2、程序代码:
程序清单
#include"
"
unsignedlongTheSysClock=UL;
=1Busy
}
;
WriteNum(bai);
WriteNum(shi);
WriteNum(ge);
WriteData('
v'
);
}
WriteNum(n);
WriteNum(c);
WriteNum(d);
//定义电阻显示
voiddianzu_judge_display()
{
unsignedcharqian=0,bai=0,shi=0,ge=0;
unsignedcharm,n,c,d,dianzu;
if((a[3]&
0x08)==0x08)
qian=0;
else
qian=1;
bai=a[2];
shi=a[1];
ge=a[0];
dianzu=(qian*1000+bai*100+shi*10+ge)/10;
m=dianzu/1000;
n=(dianzu-m*1000)/100;
c=(dianzu-m*1000-n*100)/10;
d=dianzu%10;
WriteCommand(0x85);
WriteNum(m);
//WriteData('
'
);
voidGPIO_Port_B_ISR(void)
unsignedlongulStatus;
ulStatus=GPIOPinIntStatus(READDATA_PORT,true);
GPIOPinIntClear(READDATA_PORT,ulStatus);
if(ulStatus&
INT)
{
while(!
((flag0==1)&
&
(flag1==1)&
(flag2==1)&
(flag3==1)))
{
scan();
}
GPIOPinWrite(READDATA_PORT,LED,0xff);
}
flag0=0;
flag1=0;
flag2=0;
flag3=0;
#defineSysCtlPeriClkGatingSysCtlPeripheralClockGating
#defineSysCtlPeriSlpEnableSysCtlPeripheralSleepEnable
#defineLED_PERIPHSYSCTL_PERIPH_GPIOA
#defineLED_PORTGPIO_PORTA_BASE
#defineLED_PINGPIO_PIN_0
//定义KEY
#defineKEY_PERIPHSYSCTL_PERIPH_GPIOD
#defineKEY_PORTGPIO_PORTD_BASE
#defineKEY_PINGPIO_PIN_7
voidkeyInit(void)
SysCtlPeriEnable(KEY_PERIPH);
GPIOPinTypeIn(KEY_PORT,KEY_PIN);
GPIOIntTypeSet(KEY_PORT,KEY_PIN,GPIO_LOW_LEVEL);
GPIOPinIntEnable(KEY_PORT,KEY_PIN);
IntEnable(INT_GPIOD);
IntMasterEnable();
//定义睡眠程序
voidsleep(void)
jtagWait();
clockInit();
keyInit();
SysCtlPeriEnable(LED_PERIPH);
GPIOPinTypeOut(LED_PORT,LED_PIN);
GPIOPinWrite(LED_PORT,LED_PIN,0x00);
SysCtlDelay(2500*(TheSysClock/3000));
SysCtlPeriClkGating(true);
SysCtlPeriSlpEnable(KEY_PERIPH);
for(;
)
GPIOPinWrite(LED_PORT,LED_PIN,0xff);
SysCtlSleep();
voidGPIO_Port_D_ISR(void)
unsignedlongulStatus;
ulStatus=GPIOPinIntStatus(KEY_PORT,true);
GPIOPinIntClear(KEY_PORT,ulStatus);
if(ulStatus&
KEY_PIN)
SysCtlDelay(10*(TheSysClock/3000));
while(GPIOPinRead(KEY_PORT,KEY_PIN)==0);
#defineSCK_LGPIOPinWrite(CTL_PORT,SCK,0x00);
//定义信号输出低电平
#defineSID_LGPIOPinWrite(CTL_PORT,SID,0x00);
#defineCS_LGPIOPinWrite(CTL_PORT,CS,0x00);
#definePSB_LGPIOPinWrite(CTL_PORT,PSB,0x00);
#defineSCK_HGPIOPinWrite(CTL_PORT,SCK,0xFF);
//定义信号输出高电平
#defineSID_HGPIOPinWrite(CTL_PORT,SID,0xFF);
#defineCS_HGPIOPinWrite(CTL_PORT,CS,0xFF);
#definePSB_HGPIOPinWrite(CTL_PORT,PSB,0xFF);
#defineSID_READGPIOPinRead(CTL_PORT,SID);
//定义读回的数据
#defineSID_INGPIOPinTypeGPIOInput(CTL_PORT,SID);
//定义SID信号为输入
#defineSID_OUTGPIOPinTypeGPIOOutput(CTL_PORT,SID);
voidLCD_init(void);
voidSendByte(unsignedcharDbyte);
unsignedcharReceiveByte(void);
voidCheckBusy(void);
voidWriteCommand(unsignedcharCbyte);
voidWriteData(unsignedcharDbyte);
unsignedcharReadData(void);
voidDelay(unsignedintMS);
voidDelayKey(unsignedintSecond,unsignedintMS100);
voidLcmInit(void);
voidLcmClearTXT(void);
voidPutStr(unsignedcharrow,unsignedcharcol,unsignedchar*puts);
voidWriteNum(unsignedcharnum);
#endif
#ifndef__TEST_H_
#define__TEST_H_
#defineREADDATA_PERIPHSYSCTL_PERIPH_GPIOB
#defineREADDATA_PORTGPIO_PORTB_BASE
#defineREADDATAGPIO_PIN_3|GPIO_PIN_2|GPIO_PIN_1|GPIO_PIN_0
#defineINTGPIO_PIN_4
#defineLEDGPIO_PIN_5
#defineSCAN_PERIPHSYSCTL_PERIPH_GPIOA
#defineSCAN_PORTGPIO_PORTA_BASE
#defineSCANGPIO_PIN_3|GPIO_PIN_2|GPIO_PIN_1|GPIO_PIN_0
#defineOUTPUT_PERIPHSYSCTL_PERIPH_GPIOE
#defineOUTPUT_PORTGPIO_PORTE_BASE
#defineOUTPUTGPIO_PIN_1|GPIO_PIN_0
voidscan(void);
voidzhiliu_judge_display(void);
voidjiaoliu_judge_display(void);
voiddianzu_judge_display(void);
voiddisplay_wucha_val(void);
六系统联调、测试与分析
1、测试使用的仪器
(1)函数信号发生器
(2)直流电源
(3)示波器
(4)数字万用表
2、系统联调测试结果
(1)直流电压的测试
测试方法:
通过单片机系统选择直流电压档,将直流电源作为整机系统的输入端,在LCD上显示出所测直流电压值。
测试结果:
档位
测得电压
实际电压
误差(%)
200mV
78mV
74mV
5
134mV
126mv
174mV
167mV
2V
506mV
483mV
992mV
6
20V
(2)交流电压的测试
通过单片机系统选择交流电压档,由函数信号发生器提供一
个正弦交流电压,作为整机系统的输入端,最后在LCD上显示出所测交流电压值。
测试结果:
92mV
87mV
123mV
119mV
178mV
169mV
224mV
217mV
548mV
533mV
339mV
346mV
1
(3)电阻的测试
通过单片机系统选择电阻档,将被测电阻接入图3所示的电阻测量电路,并提供+5V的直流电压,最后在LCD上显示出所测电阻值。
所测电阻值
实际电阻值
2Ω
Ω
4
200Ω
83Ω
82Ω
103Ω
104Ω
167Ω
165Ω
2MΩ
996Ω
486KΩ
471KΩ
七体会与感受
本次设计从在面包板上初步安装测试、焊接电路、程序设计到撰写设计报告共持续两天半的时间。
在整个过程中,我们组的三个成员分工明确,安装调试、焊接电路、程序设计和撰写报告同步进行。
我们始终遵循分块安装,分块调试的原则,在所有的模块都安装完毕并且基本上能得到正确的调试结果之后,才将整个电路联合起来并且导入程序进行测试。
本次设计总体来说还算进行的比较顺利,但是期间我们也遇到了不少困难,例如:
由于电路比较复杂,各芯片的引脚也比较多,焊接电路就显得很繁琐,很容易出错,也不容易检查出错误。
另外,由于这次设计必须基于M3进行编程,而我们组三个成员以前都没有接触过M3,对于单片机也不是很擅长,所以程序设计比较困难。
但是经过我们的共同努力这些困难都被克服了。
我们始终坚信:
态度决定高度,一切皆有可能,只要我们团结合作,不轻易放弃,没有什么事情做不到。
通过这次智能数字万用表的设计,我们设计,安装和调试电路的能力得到了提高,并且初步掌握了如何基于M3进行软件编程。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 智能 数字 万用表 设计