直流电压的测量.
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
直流电压的测量
1.实习内容、要求及指标
1.1设计一个可变量程的数字式直流电压表,要求及设计指标如下:
(1)测量范围:20mV-1000V 设置4个量程:
200mV-2V,2V-20V,20V-200V,200V-2000V.
(2)测量精度:200mV
(3)测量误差允许范围:<=1%。
(4)显示:用四位七段数码管显示电压读数。
1.2设计方案中能用软件完成功能的尽量用软件实现,这样可以减少产片的成本,也减少精简的一些干扰。
1.3本实验采用的是STC12C5A32AD单片机。
2.测量原理及电路设计
2.1数字式直流电压测量原理
数字式直流电压表的组成结构图如下图所示:
图1数字直流电压表结构图
直流电压经过输入电路变换为合适的电压后,用A/D转换器将模拟电压变换成数字量,再由电子计数器对数字计数得到测量结果,逻辑控制电路控制电路的协调工作,在时钟的作用下顺序完成整个测量过程。
这次设计采用多的是STC12C5A32AD系列带A/D转换的单片机,电压输入型A/D,可做温度检测,电池电压检测,按键扫描,频谱检测等。10位A/D转换结果计算公式如下:
(ADC_DATA[7:0],ADC_LOW[1:0]=1024*Vin/Vcc.
2.2直流电压测量原理框图如下:
图4,多量程分压器原理
采用这种分压电路虽然可以扩展电压表的量程,但在小量程档明显降低了电压表的输入阻抗,着在实际使用中是所部希望的,所以,实际数字万用表的直流电压档为下图所示:他能在不降低输入阻抗的情况下达到相同的分压效果。
2.4直流小电压信号
图5,直流小信号放大电路
对于直流小信号( 20Mv-200Mv )的测量,需要设计信号放大电路将信号适当的放大再进行AD采样,放大电路原理如下图所示:
3.硬件电路原理图及调试过程:
图6.外接硬件电路原理图
这次课程设计我们花在焊接和程序的编写上的时间并不是太多,电路设计和系统调试才占用了大部分的时间。调试试过程是按照先局部后整体的思路进行的。详细叙述如下:
3.1.分局部调试:
3.1.1模拟部分的调试
模拟部分的设计主要是根据我们的检查模拟开关是否工作、调节各量程放大倍数是否到设计指定值等。
①检查模拟开关是否工作:
模拟开关集成了四个开关。共有四个控制端。如果某一控制端为高电平则对应的开关将接通。为测量其是否工作,我们将它的四个控制端用导线引出分别接高低电平,发现测量结果与理论分析结果一致,工作正常。
○2各量程放大倍数的调节:
这一步调试是建立在上述两步调试的基础上的。针对不同的档位,我们通过接入不同的待测的模拟输入电压来调节放大电路的放大倍数。调试测量20到200V档的放大倍数时,我们选择的输入电压为80V,按照设计,该电压在经过衰减电路后不放大。前面已经说过,我们设定的衰减比例为1/4,因此LM358输出端(7腿)的电压应该为20V,经过万用表测量,电压为20V,调试成功。在调节20到200V档的放大倍数时,我们选择的电压为30V,该电压应该先衰减到原来值的1/4再经过4倍放大电路后大小不变。我们通过调节控制放大倍数的电位器使LM358的7腿的电压为30V达到放大倍数调节的目的。同理,在调节其他档位的放大倍数时也是通过上述方法调节相应的电位器实现的。
3.1.2译码部分的调试
图7,74HC595结构图
译码部分主要是检验74HC595片选和译码是否正常。我们选用了检测数码管以及74HC595是否完好的程序进行下载并检测,这样不仅可以检测这两部分是否完好,而且还可以检测电路板及单片机是否完好。我们通过给单片机下载检测程序,结果在数码管上显示的数字与我们预期的结果又很大的出入,经过我们一番检查也没找出原因之所在,最后我们问王老师才知道原来是我们的74HC595芯片给焊接错了,由于我焊接时出心大导致把74HC595的两根管脚短焊了,这才没有达到预期的效果,经过后来的一番改进,终于实现了检测功能。
3.1.3单片机与译码部分整体调试
上面是对译码部分单独进行了调试,而74HC595和数码管的工作是要在单片机的控制下工作的,所以我们做了这样一步测试。我为单片机编写了在数码管上动态点亮数码管并让四个数码管依次显示“0,1,2,3,到9”的程序,烧录并将单片机接入电路后发现数码管上显示的为“0000,1111,….9999.说明一切工作正常。
3.2整机调试:
在进行电路的分局部调试之后,我们又进行了系统整机调试。首先为LM358接上5V的电压,为其他芯片接上2V的工作电压。另外还要输入待测的模拟电压,该电压从200mV以下的电压开始输起,依次增大。直到达到供端电压的上限5V 为止,在这过程中,记录测量数据如下表所示。由于前面的分局部调试进行得还比较顺利,因此整机调试较为顺利。
4.数据测量及分析
sfr P1ASF = 0x9D; //P1 secondary function control register
/*Define ADC operation const for ADC_CONTR*/
#define ADC_POWER 0x80 //ADC power control bit
#define ADC_FLAG 0x10 //ADC complete flag
#define ADC_START 0x08 //ADC start control bit
#define ADC_SPEEDLL 0x00 //420 clocks
#define ADC_SPEEDL 0x20 //280 clocks
#define ADC_SPEEDH 0x40 //140 clocks
#define ADC_SPEEDHH 0x60 //70 clocks
/*************************************************
定义位变量
*************************************************/
sbit SCL=P0^3; //移位;
sbit RCL1=P0^1; //RCL1,RCL2位码锁存时钟;
sbit RCL2=P0^2;
sbit SDATA=P0^0; //数据位;
/************************************************
定义数组
*************************************************/
unsigned char code led1[ ]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x38,0x39,0x00 }; //0~9,r,l,c不带小数点;
unsigned char code led2[ ]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,0xf7,0xb8,0xb9}; //带小数点;
/************************************************
段位代码宏定义
*************************************************/
#define k00 0x8000
#define k01 0x4000