温度测量与控制电路.docx
《温度测量与控制电路.docx》由会员分享,可在线阅读,更多相关《温度测量与控制电路.docx(18页珍藏版)》请在冰豆网上搜索。
温度测量与控制电路
《电子技术》课程设计报告
题目温度测量与控制电路
学院(部)电子与控制工程学院
专业电子科学与技术
班级32050701
学生姓名郭鹏
学号3205070113
指导教师(签字)
前言
随着数字时代的到来,人们对于温度的测量与控制的要求越来越高,用传统的水银或酒精温度计来测量温度,不仅测量时间长、读数不方便、精度不够高而且功能单一,已经不能满足人们在数字化时代的要求。
于是我们提出,测温电路利用温度传感器监测外界温度的变化,通过放大器将温度传感器接收到的信号进行放大,放大到比较有利于我们测量的温度范围,然后利用A/D转换器实现模拟信号到数字信号的转换,最后通过编程让FPGA实现8位二进制数与BCD码之间的转化,实现温度的显示;并利用比较器来实现对放大电压信号的控制,从而实现对温度的控制;再者还加载了报警装置,使它的功能更加完善,使用更加方便。
本设计是采用了温度的测量、信号放大、A/D转换、温度的显示、温度的控制、报警装置六部分来具体实现上述目的。
目录
摘要与设计要求………………………………………..4
第一章:
系统概述……………………………………..5
第二章:
单元电路设计与分析………………………………5
1)方案选择………………………………………5
2)设计原理与参考电路…………………………..6
1放大电路……………………………….6
2低通滤波电路………………………….7
3温度控制电路………………………….8
4报警电路……………………………….9
5A/D转换器……………………………..10
6译码电路……………………………….11
第三章:
系统综述、总体电路图…………………….....14
第四章:
结束语……………………………………….15
参考文献……………………………………………….15
元器件明细表………………………………………….15
收获与体会,存在的问题等……………………………...16
温度测量与控制电路
摘要:
利用传感器对于外界的温度信号进行收集,收集到的信号通过集成运算放大器进行信号放大,放大后的信号经过A/D转换器实现模拟信号与数字信号间的转换,再通过FPGA编程所实现的功能将转换后的数字信号在数码管上显示出来,实现温度测量过程。
放大的信号可以与所预定的温度范围进行比较,如果超出预定范围,则自动实现声光报警功能,实现温度控制过程。
关键字:
温度测量温度控制信号放大A/D转换声光报警
设计要求:
1.测量温度范围为200C~1650C,精度
0.50C;
2.被测量温度与控制温度均可数字显示;
3.控制温度连续可调;
4.温度超过设定值时,产生声光报警。
第一章系统概述
传感器两端的电压信号变化不大,经过放大电路和滤波电路之后就会形成一个比较大的模拟量。
这个模拟量有两个电路使用,一个是AD转换器,另一个就是控制温度电路。
当被测温度超过控制温度时控制温度电路就会产生报警信号,驱动报警电路达到报警要求。
当然,控制电压分别要接另外两个AD转换器和译码显示电路,达到数码显示的要求。
整个系统的设计思路是从A/D转换器出发的,由于A/D转换器的模拟电压输入量需要一个比较大的值,所以传感器的信号要经过放大电路,由于放大电路本身以及传感器外界的干扰因素,在放大电路之后要加一级低通滤波器。
经过滤波之后的信号就是我们需要的模拟信号。
这个模拟信号分别接两个输入端,一个是A/D转换器的输入端,另一个是控制温度输入端。
A/D转换器的数字输出接译码显示电路。
系统的硬件流程图如下图所示:
第二章单元电路设计与分析
1)、方案选择
放大电路,低通滤波电路,报警电路以及控制电路相对比较容易实现,在数据采集的过程中,采集到得八位二进制数如何转换成十二位的BCD码,实现起来有些问题,有两种方案可供选择:
1采用组合逻辑电路,用74系列的加法器283先形成BCD的一位加法器,再通过级联的方式译码。
2用FPGA芯片进行编程,输入为二进制数(并不一定是二进制自然码),输出为12位BCD码。
经过比较,第二种方案可行,并且简单,方便易懂。
第一种方案很难实现,并且某一个温度所对应的AD转换器的输出量,并不一定是这个温度对应的二进制数自然码。
所以想要实现第一种方案,还要另外在AD转换器的输出端加一个八位的加法器,这样会使电路更加复杂。
而第二种方案用VHDL编写程序,简单易懂,并且器件的执行速度快,还略去了组合逻辑电路的复杂性。
数据转换器的位数也有两种方案可供选择:
1采用八位数据转换器。
因为测量电路的要求是:
量程为20到165;精确到0.5,这样算下来需要至少产生290个二进制数来表示温度,也就是说AD转换器至少要9位才可以。
持这种意见的同学认为,八位AD转换器虽然少了一位,但是可以用比较器额外增加一位。
2采用16位的AD转换器。
采用16位AD转换器,可以省去数模混合电路的设计,这样电路就会更加简单。
所以决定用16位AD转换器,但是只取9位。
并且只有八位译码,另外一位控制小数点后面的0.5.这样即达到了设计要求,而且还简化了译码的程序。
2):
设计原理与参考电路
1、放大电路:
采用三级集成运算放大电路,集成运算放大器型号为LM324,
LM324系列器件为差动输入的四运算放大器。
与单电源应用场合的标准运算放大器相比,它们有一些显著优点。
该四放大器可以工作在低到3.0伏或者高到32伏的电源下,静态电流为MC1741的静态电流的五分之一。
共模输入范围包括负电源,因而消除了在许多应用场合中采用外部偏置元件的必要性。
在该放大电路中,我们将传感器收集到的信号定义为VEE,因为该信号过于微弱,所以需要经过集成运算放大器进行信号放大,放大到便于我们测量的电压值,该电路采用三级集成运算放大器,放大倍数约为1248倍,经过实际测量得到了放大后的电压值如下图所示:
单位mV
单位V
0.5
3.375
1
4.001
1.5
4.624
2
5.248
2.5
5.872
3
6.395
3.4
6.995
放大电路图如上图所示:
在该电路图中,放大电路的2号引线为接收传感器信号的输入端(我们将VEE定义为传感器的输入信号),第三级放大器的9号引线为放大信号的输出端,它接的是滤波电路。
2、
低通滤波器如图所示:
因为传感器的输入和放大器本身不可避免的会带有一些高次谐波或高频干扰信号,这会对A/D转换器的数据采集造成干扰,为了削弱高次谐波或高频干扰的场合,提高测量的精度,所以要加一级或者多级低通滤波器(仿真中为一级)。
具体电路如上图所示。
由于同向比例放大电路的电压增益为Auf=A0+R2/R1,只要将R1的电阻值设置为远大于R2的电阻值,则电压增益可忽略不计,例如:
当VCC=10V时,通过放大器后的输出电压为10.002,电压增益对于整体电路的电压输出并无决定性影响,在该电路中,电源VCC实际上是从上一级放大器接收到得放大信号,而放大器接电阻R3另一端接的是译码电路。
3、温度控制电路:
控制温度电路主要由两个电压比较器组成,第一个电压比较器(上方)控制的是温度下限,第二个控制的是温度上限,当温度所对应的电压超过量程时,两个电压比较器会有一个输出高电平,比较器的电源电压控制的适当,这个高电平就可以和门电路(或门)连接。
仿真时,电源电压为5V,比较器输出电压为4V。
控制温度电路的输入端接电压跟随器,这个电压跟随器再和滤波电路的输出端连接。
控制温度电路的输出端(或门输出端)直接连接报警电路。
温度控制电路图如下图所示:
4、控制报警电路:
在设计报警电路时,我们采用了555多谐振荡器来实现报警功能,利用一个发光二极管来实现光报警,蜂鸣器来实现声音报警,具体电路图如下图所示:
在该电路图中18接的是控制电路两个比较器出来的信号,当信号大于VDD2的电压预定值,或者小于VDD1的电压预定值时,该555报警电路会自动报警,发光二极管产生光报警信号,蜂鸣器产生声音报警信号。
5、A/D转换器:
采用十六位的A/D转换器,但是由于课程设计中要求的精度为0.5V,量程为20到165,也就是说小数点后面的数字不是0就是5,所以在译码时只需要将高8位译成BCD码,用第7位来控制小数0.5,当第7位为高电平时,小数部分为0.5,当第7位为低电平时,小数部分为0.而高位的8位二进制数并不一定是二进制自然码,这个问题会在译码电路中得到解决。
AD转换器的其他管脚悬空即可。
AD转换器的模拟量输入端在与放大电路连接之前要加电压跟随器,这样可以防止压降的变化,减小误差。
假设当温度为20摄氏度时,传感器的电压为0.5mV,当温度为165摄氏度时,假设温度为3.4mV(如果温度和电压值不能对应,可以改进桥式电路,或者加一个上拉电阻,使传感器的电压值增大)
AD转换器如图所示:
在该电路中,Vin接的是低通滤波器传过来的放大信号,D7到D15接的是译码电路,即PLD芯片,Vref+和Vref-接的是一个电压范围,即在该范围内工作,SOC为输入的脉冲信号。
。
6、译码电路:
由于经过A/D转换器输出的为二进制数,这些二进制数在数码管上并不能完全显示,为了能很好的再数码管上显示温度,本次的课程设计采用的译码电路为FPGA芯片,利用VHDL编程来实现译码功能。
VHDL源程序如下:
ibraryieee;
useieee.std_logic_1164.all;
entityBCDis
port(reset:
instd_logic;
OE:
instd_logic;
Vin:
instd_logic_vector(7downto0);
Vout1:
outstd_logic_vector(3downto0);
Vout2:
outstd_logic_vector(3downto0);
Vout3:
outstd_logic_vector(3downto0));
endentity;
architecturebehaveofBCDis
signaltemp_q:
integerrange0to199;
signaltemp_q0,temp_q1,temp_q2,temp_q3:
integerrange0to99;
FUNCTIONvector_to_int
(input:
instd_logic_vector(7downto0))returnintegeris
VARIABLEq,p:
integer:
=0;
begin
foriin7downto0loop
p:
=0;
if(input(i)='1')then
p:
=2**(i-0);
else
null;
endif;
q:
=q+p;
endloop;
return(q);
endvector_to_int;
begin
process(reset,OE)
begin
if(OE='0')then
Vout1<="0000";
Vout2<="0000";
Vout3<="0000";
elsif(OE='1'andreset='1')then
Vout1<="0000";
Vout2<="0000";
Vout3<="0000";
else
temp_q<=vector_to_int(Vin);
if(temp_q>=100)then
temp_q3<=1;
temp_q0<=temp_q-100;
temp_q1<=temp_q0REM10;
temp_q2<=temp_q0-temp_q1;
elseif(temp_q<100andtemp_q>0)then
temp_q3<=0;
temp_q0<=temp_q;
temp_q1<=temp_q0REM10;
temp_q2<=temp_q0-temp_q1;
endif;
endif;
endif;
casetemp_q1is
when0=>Vout1<="0000";
when1=>Vout1<="0001";
when2=>Vout1<="0010";
when3=>Vout1<="0011";
when4=>Vout1<="0100";
when5=>Vout1<="0101";
when6=>Vout1<="0110";
when7=>Vout1<="0111";
when8=>Vout1<="1000";
when9=>Vout1<="1001";
whenothers=>Vout1<="0000";
endcase;
casetemp_q2is
when0=>Vout2<="0000";
when10=>Vout2<="0001";
when20=>Vout2<="0010";
when30=>Vout2<="0011";
when40=>Vout2<="0100";
when50=>Vout2<="0101";
when60=>Vout2<="0110";
when70=>Vout2<="0111";
when80=>Vout2<="1000";
when90=>Vout2<="1001";
whenothers=>Vout2<="0000";
endcase;
casetemp_q3is
when0=>Vout3<="0000";
when1=>Vout3<="0001";
whenothers=>Vout3<="0000";
endcase;
endprocess;
endbehave;
分别定义FPGA的清零端reset,使能端OE,八个输入Vin0到Vin7和三个输出Vout3(3downto0)Vout2(3downto0)Vout1(3downto0)。
设计中之所以译码电路只连接AD转换器的D15到D8,是因为这八位二进制数已经足够表示20到165的十进制数,AD转换器的D7管脚直接接小数部分的数码管,因为设计要求是显示精度为0.5,所以小数部分不是0就是5,这样用一位二进制数控制即可。
电路图如图所示:
第三章系统综述、总体电路图
为了实现对于温度的测量与控制,我们采用放大电路、低通滤波电路、A/D转换器、译码电路、控制电路和报警电路六部分来实现这个功能,利用温度传感器接收到得信号非常的微小,所以要经过一个放大电路对接受的信号进行放大,放大到方便于我们测量的范围内即可,放大后的电压信号经过一级低通滤波电路进行滤波,将信号中的高次谐波或高频干扰进行消除,得到一个不参杂志的信号,再经过一级电压跟随器,输入到电压比较电路中。
电压比较电路有两个电压比较器,一个电压比较器控制温度下限,放大之后的电压低于这个比较器的电压时,就会产生报警信号。
另一个电压比较器控制上限电压,放大之后的电压高于这个比较器的电压时,也会产生一个报警信号。
由于每一个报警信号产生,都应该声光报警,所以,两个比较器的输出经过或门,在连接报警电路。
报警电路中的光报警时直接由或门的输出来驱动的。
而声音报警则是通过一个555多谐振荡器。
或门的输出接发光二极管和555定时器的4号管脚(高电平),当或门的输出为低电平时,发光二极管不亮。
555定时器由于不工作,所以输出为0;当或门输出为高电平时,发光二极管亮。
555多谐振荡电路开始工作,输出的为一个方波,这个方波会驱动蜂鸣器,蜂鸣器就会发生时有时无得“滴滴”声音,产生声音报警。
放大后的信号还要经过A/D转换器进行模拟信号到数字信号的转换,放大后的电压得电压经过低通滤波,通过一级电压跟随器和模数转换器连接,完成信号的采集功能。
由于题目的要求为:
量程20到165摄氏度,精度为0.5,所以模数转换器的输出端只需要高位的9个管脚,其他管脚悬空即可。
这9个管脚中,最低位可以直接驱动一个数码管,这个数码管显示的是小数部分,因为由于参考电压的值适当,所以D7位,也就是这9个管脚中的最低位所代表的温度变化就是0.5摄氏度。
其他的八个管脚可以看成是一个二进制数,当然,这个二进制数不一定是自然码,但是可以进行加操作,使其对应的二进制数正好就是对应的温度值,这样,在经过PLD的译码,就会形成3个四位的BCD码。
PLD的程序是先将二进制数转换成10进制数,然后在将10进制数转换成对应的BCD码。
完成译码功能。
PLD的12端输出分别对应连接三个数码管,这三个数码管表示的是温度的整数部分。
总体电路图见附图。
第四章结束语
在这次课程设计中,我们遇到了很多问题,比如说放大电路部分,经过一级放大并没有得到我们想要得到的倍数,于是采用了多级放大。
还有在进行译码的过程中,可供选择的方法很多,但是都出现了问题,不是出现错误就是没办法实现,类似的问题还很多,不过经过小组讨论以及同学的帮助,也都解决了,总体来说,本次课设虽然没有得到自己想要的完美结果,但是还算成功,总之两周的时间还算没白费,学会了很多的新知识。
参考文献
1·林涛·模拟电子技术基础·重庆大学出版社·2004年;
2·林涛·数字电子技术基础·清华大学出版社·2006年6月;
3·姜立东·VHDL语言程序设计及应用·北京邮电大学出版社·2004年6月;
4·李群芳,肖看·单片机原理、接口及应用·清华大学出版社·2005年3月;
元器件明细表:
序号
名称
型号参数
数量
备注
1
电阻
若干
2
电容
3
3
集成放大器
LM324AD
8
放大滤波比较
4
AD转换器
ADC16
3
模数转换
5
PLD
EPM7032-PLCC(44)
3
FPGA
6
数码管1
DCD_HEX
9
整数显示
7
数码管2
DCD_HEX_DIG_RED
3
小数显示
8
555定时器
LM555CN
1
多谐振荡器
9
发光二极管
5mA
1.66V
1
10
蜂鸣器
5kHZ
4V
1
11
滑动变阻器
增量5%
2
12
导线
若干
13
电源
若干
附图:
见最后的附加电路图。
鸣谢:
感谢樊小红老师在本次课程设计中对于各部分电路的讲解与帮助,感谢各位同学对于我在课设上的支持与帮助。
收获与体会,存在的问题等
在课程设计的初期,我们都还信誓旦旦的以为这些都很简单,并没有放太多的心思,但是当做起来的时候,所有的麻烦都来了,导致时间也不够充裕了,在课程设计中,我们遇到了很多的问题,比如说我所负责的放大电路部分,刚开始只是采用一级放大,但是放大的效果并不明显,而且出现的问题也很多,经过讨论,我们又选择了采用多级放大电路,用三个放大器来实现信号的放大,终于得到了想要的结果,不过信号放大后又有问题了,当我们定义最初的输入电压时,当最初的输入电压为0,经过三级放大后,输出电压还是有信号,正常情况下输出应该为0,或者得到很微小的电压,这个问题到最后也没有解决,好在并无太大的影响。
还有在译码电路的选择过程中,利用组合逻辑电路设计出的电路图如下图所示,其中八位二进制数,D7位表示的是10进制数的128;
D6位表示的是10进制数的64;
D5位表示的是10进制数的32;
D4位表示的是10进制数的16;
剩余的四位可以直接通过283加法器译成最多两位的BCD码(每一位BCD码为四位),这个BCD码记为BCD3.
这样可以设计出多个两位的BCD码的加法器。
首先实现的是D7位和D6位相加:
当D7为为高电平时,进行加128操作;
当D6为高电平时,进行加64操作;
因为28+64是不会像百位进位的,所以这次相加操作只需要两位BCD码的加法器;其百位
最大为1。
这个1可以在下一级和BCD4相加时再考虑。
相加的结果为三位BCD码,记为BCD1
同理,在实现D5位(32)和D4位(16)相加,相加结果最多为两位BCD吗,记为BCD2;
这样,在用一个两位BCD码的加法器来实现BCD3和BCD2的相加,相加结果最大为
32+16+15=63,所以,其结果最多为两位的BCD码,记为BCD4;
这样,最后再用一个三位的来实现BCD1和BCD4的相加,这里就需要一个三位的BCD全加器。
在组合电路的设计中除了麻烦一点,设计方面并没有出现什么问题,但是输出结果就出现了问题,进位没有显示,和其他的同学一起查找也没有查出错误在哪,因此只能排除这种方法,该电路共有9个输入端。
分别接AD转换器的高8位和D7位。
输出直接连接数码管,来显示整数部分。
D7位不需要译码,当D7=0时候,小数数码管显示0,当D7=1的时候,小数部分显示5。
由此完成了译码电路,但是实际中就会很麻烦。
因为要有三个温度的显示。
选择用FPGA进行编程来实现译码功能,既简单还容易实现。
经过这次课程设计,我们学习了很多知识,电子方面的知识是不分家的,在设计过程中,我们用到了模电知识、数电知识和VHDL编程,在使用A/D转换器进行模数转换时,我们也翻阅了单片机的书籍,做一次课程设计,成绩好不一定就能做出东西,还得会利用所学的知识做出我们想要的东西,这一点是很重要,因此,只要提高我们的动手能力,认真的对待每一门课的实验,将来才能在社会上有立足之地,否则得话只能被这个社会所遗弃。
评语
(评语教师写)