使用温度传感器为 PT100,这是一种稳定性和线性都比较好的铂丝热电阻传感器,可以工作在 -200 ℃ 至 650 ℃ 的范围.本电路选择其工作在 -19 ℃ 至 500 ℃ 范围.
整个电路分为两部分,一是传感器前置放大电路,一是单片机 A/D 转换和显示,控制,软件非线性校正等部分.
前置放大部分原理图如下:
工作原理:
传感器的接入非常简单,从系统的 5V 供电端仅仅通过一支 3K92 的电阻就连接到 PT100 了.这种接法通常会引起严重的非线性问题,但是.由于有了单片机的软件校正作为后盾,因此就简化了传感器的接入方式.
按照 PT100 的参数,其在 0 ℃ 到 500 ℃ 的区间内,电阻值为 100 至 280.9Ω,我们按照其串联分压的揭发,使用公式:Vcc/(PT100+3K92)* PT100 = 输出电压(mV),可以计算出其在整百℃时的输出电压,见下面的表格:
温度 ℃ |
PT100 阻值 Ω |
传感两端电压 mV |
0 |
100.00 |
124.38 |
1 |
100.39 |
124.8 |
50 |
119.40 |
147.79 |
100 |
138.51 |
170.64 |
150 |
157.33 |
192.93 |
200 |
175.86 |
214.68 |
250 |
194.10 |
235.90 |
300 |
212.05 |
256.59 |
350 |
229.72 |
276.79 |
400 |
247.09 |
296.48 |
450 |
264.18 |
315.69 |
500 |
280.98 |
334.42 |
单片机的 10 位 A/D 在满度量程下,最大显示为 1023 字,为了得到 PT100 传感器输出电压在显示 500 字时的单片机 A/D 转换输入电压,必须对传感器的原始输出电压进行放大,计算公式为:(500/1023 * Vcc)/传感器两端电压( mV/℃ ) ,(Vcc=系统供电=5V),可以得到放大倍数为 10.466 。
关于放大倍数的说明:有热心的用户朋友询问,按照 (500/1023 * Vcc)/传感器两端电压不能得到 10.466 的结果,而是得到 11.635的结果。实际上,500 个字的理想值是无法靠电路本身自然得到的,自然得到的数字仅仅为 450 个字,因此,公式中的 500 ℃ 在实际计算时的取值是 450 而不是 500 。450/1023*5/(0.33442-0.12438)≈10.47 。其实,计算的方法有多种,关键是要按照传感器的 mV/℃ 为依据而不是以被测温度值为依据,我们看看加上非线性校正系数:10.47*1.1117=11.639499 ,这样,热心朋友的计算结果就吻合了。
运算放大器分为两级,后级固定放大 5 倍(原理图中 12K/3K+1=5),前级放大为:10.465922/5=2.0931844 倍,为了防止调整时的元器件及其他偏差,使用了一只精密微调电位器对放大倍数进行细调,可以保证比较准确地调整到所需要的放大倍数(原理图中 10K/(8K2+Rw)+1)。
通常,在温度测量电路里,都会有一个“调零”和另一个“调满度”电位器,以方便调整传感器在“零度”及“满度”时的正确显示问题。本电路没有采用两只电位器是因为只要“零度”调整准确了,就可以保证整个工作范围的正确显示,当然也包括满度时的最大显示问题了。
那么,电路中对“零度”是如何处理的呢?它是由单片机程序中把这个“零度”数字直接减掉就是了,在整个工作范围内,程序都会自动减掉“零度”值之后再作为有效数值来使用。
当供电电压发生偏差后,是否会引起传感器输入的变化进而影响准确度呢?供电变化后,必然引起流过传感器的电流发生变化,也就会使传感器输出电压发生变化。可是,以此同时,单片机的供电也是在同步地接受到这种供电变化的,当单片机的 A/D 基准使用供电电压时,就意味着测量基准也在同步同方向发生变化,因此,只要参数选择得当,系统供电的变化在 20% 之内时,就不会影响测量的准确度。(通常单片机系统并不允许供电有过大的变化,这不仅仅是在温度测量电路中的要求。)
后级单片机电路的原理图如下:
从传感器前置放大电路输出的信号,就送入到 HT46R23 的 A/D 转换输入端口(PB0/AN0),由单片机去进行各种必需的处理。首先是进行软件非线性校正,把输入信号按照不同的温度值划分为不同段,再根据其所在的段分别乘以不同的补偿系数,令其与理论值尽量接近,经过非线性校正的数字,才被送去进行显示,比较用户设定的控制值等等。
各段的非线性补偿系数见下列表格(仅仅列出主要段的数据,非全部表格内容):
传感电压 |
mV/℃ |
内部AD读数 |
校正系数 |
124.3781 |
供电电阻=3K92±1%,供电电压=5.000V±1% |
||
124.8450 |
0.4670 |
1.00 |
1.0000 |
147.7942 |
0.4683 |
50.14 |
0.9972 |
170.6414 |
0.4626 |
99.06 |
1.0095 |
192.9326 |
0.4570 |
146.80 |
1.0218 |
214.6802 |
0.4515 |
193.36 |
1.0343 |
235.8961 |
0.4461 |
238.79 |
1.0469 |
256.5918 |
0.4407 |
283.11 |
1.0597 |
276.7898 |
0.4355 |
326.36 |
1.0724 |
296.4779 |
0.4302 |
368.52 |
1.0854 |
315.6891 |
0.4251 |
409.65 |
1.0985 |
334.4220 |
0.4201 |
449.76 |
1.1117 |
本电路还有一个特点,就是用户可以在工作范围内,任意设定 3 个超限控制值。当测量显示值大于设定值的时候,对应的控制端口就会输出高电平。利用这个高电平信号,再外接一级三极管驱动继电器的电路,就可以实现自动控制。在某一个控制端口输出高电平的同时,与之串联的 LED 发光管会同时点亮,以便提示使用者是哪一个设定值在输出控制信号。
电路中的 24C 02 是电存储器,可以把使用者设定的控制值可靠地保存起来,即使掉电也不会丢失数据。
电路图中还有 3 只按键,它们分别是“设定”、“加置数”和“减置数”操作按键,用于使用者进行超限值的设置。使用方法如下:
按动一下设定键,屏幕显示“1--”,表示现在进入第一个超限值的设置,三秒后屏幕自动跳转到显示“***”并闪烁(*** 代表原来电存储器里储存的超限数值),然后,按压加数键(或减数键),屏幕上的最低位的数字就会加一(或减一),如果按住按键三秒以上不放开,屏幕上的前两位数字就会快速进行加数(或减数)。把屏幕上的数字调整到所需要的数字后,这个超限值就设置完成了。
接着,再按动一下设定键屏幕显示“2--”,表示现在进入第二个超限值的设置,三秒后屏幕自动跳转到显示“***”并闪烁....,接下来的操作与第一个超限值的操作完全一样。
第三个超限值的设置与上面两个完全一样。
当设置好 3 个超限值之后,还必须最后按动一下设定键,退出设定状态而返回正常工作状态。如果忘记了这最后一次按动退出的操作,程序就会等待 10 秒之后,自动返回正常工作状态。
简易调试方法:
可以使用 100Ω 的电阻来模拟 PT100 在 0 ℃ 的阻值,接入传感器输入端,看看显示是否 =000,如果不对,可以调整微调电位器来达到;然后用一只 281Ω 的电阻来模拟 PT100 在 500 ℃ 时传感器的电阻值,显示应该在 500 字±1字;最后,使用一只 194Ω 的电阻来代替 250 ℃ 传感器电阻输入,应该显示 250±1 字.如果经过上面调试没有问题,就可以接入真正的 PT100 传感器投入使用了.(真正的传感器也有误差,可以微调一下前置放大的电位器来校正它。)
在实际工作中,要求电路的供电电压为 5V±5%.如果测量显示值大于某一个超限值,对应的控制端口就会立即输出高电平。
如果传感器发生开路故障,显示就会出现"HHH",如果传感器及其引线发生了短路,显示就会立即出现"LLL".为了防止传感器出现开路或者短路之后可能会引起的不良后果,这时候,3 个控制输出端口都会优先关闭。
二 HT46R23单片机制作的0~ 99.9 ℃ 的调功温控表头
单片机 HT46R23 简介:
这是我国台湾省盛群公司产的一款 8 位高性能精简指令集单片机,专门为需要 A/D 转换的产品而设计。例如:传感器信号输入。低功耗,I/O 使用灵活,可编程分频器、计数器,振荡类型选择,多通道A/D 转换,脉冲测量功能 I 2C 通信,暂停和唤醒功能。使这款单片机可以广泛应用于传感器的 A/D 转换、马达控制、工业控制、消费类产品等系统中.
主要特性: ●工作电压:fSYS=4MHz 2.2V~5.5V,fSYS=8MHz 3.3V~5.5V。 ●最多可有 23 个双向输入/输出口。 ●1 个与输入/输出口共用引脚的外部中断输入。 ●16 位可编程定时/计数器具有溢出中断和7级预分频器。 ●内置晶体和RC 振荡电路。 ●看门狗定时器。 ●4096 15 程序存储器ROM。 ●192 8 数据存储器RAM。 ●具有PFD 功能可用于发声。 ●HALT 和唤醒功能可降低功耗。 |
●在VDD=5V 系统频率为8MHz 时指令周期为0.5μs。 ●8 层硬件堆栈。 ●8 通道10 位解析度(9 位精度)的A/D 转换器。 ●2 通道(6+2) / (7+1) 位的PWM 输出与输入/输出口共用引脚。 ●位操作指令。 ●查表指令表格内容字长15 位。 ●63 条指令。 ●指令执行时间为 1 或 2 个指令周期。 ●低电压复位功能。 ●I 2C 总线slave 模式。 ●24/28-pinSKDIP/SOP 封装。 |
使用 HT46R23 制作 PN 结 0 ~ 99.9 ℃ 的调功输出温控表头:
本文介绍的单片机制作项目所使用的温度传感器为温敏二极管,这是一种稳定性和线性都比较好的半导体温度传感器,可以工作在 -50 ℃ 至 150 ℃ 的范围.本电路选择其工作在 0 ~ 99.9 ℃ 范围.(10 位 A/D 的范围)。
整个电路分为两部分,一是传感器前置放大电路,一是单片机 A/D 转换和显示,控制,软件非线性校正等部分.
原理图如下:
工作原理:
传感器的接入属于“恒流馈电”方式,为保证传感器的“恒流馈电”能够稳定可靠,从系统专门利用 TL431 组成的 2.5V 供电,通过一支 1K 电阻连接到 PN 结的“+”端, PN 结的“-”端就接在运放的输出端上。根据运算放大器的工作原理,只要其同相端的电压稳定不变,那么,其反相端就会始终自动跟随同相端的电压,我们可以微调同相端的电压,使得其在 PN 结处于“0”℃ 时,同相端电压与 PN 结的压降相等,这样,运算放大器就会输出 0.00V!这种接法会很好地改善传感器因为其℃-压降变化而引起的电流变化,使得传感器在整个工作范围内始终保持流过它的电流不变,从而具有较好好的线性度。
当测量温度在 0 ℃ 以下时,由于单片机的 A/D 转换输入不能接受负的信号,因此,本电路是在测量温度为 - 2.4℃ 时,恒流馈电运放的输出等于 0.00V ,而当测量温度为 0 ℃ 时,恒流馈电运放的输出为 ≈4.8mV。(PN 结传感器的温度系数为-2.0mV/℃ 左右,经过运放的反相输出而成为 2mV/℃)。
第二级运放的作用仅仅是把传感器经过恒流馈电运放来的信号进行放大,所需要的放大倍数为:KV=(5000/1024)/(2/10).经过计算,KV=24.414 倍。(式中:5000 为单片机供电即 A/D 基准电压,1024 为 10 位 AD 值,2/10 是把传感器的温度分辨力升到 0.1 ℃ ,电压单位全部为 mV )。
电路图的第二级运放中,各电阻配置计算就是从这个 KV 值出发的。当然,构成 24.414 倍放大的配置方案是可以有很多种组合的,本电路基本上采用的是中低阻值的方案,这样有利于提高电路工作的稳定性。
通常,在温度测量电路里,都会有一个“调零”和另一个“调满度”电位器,以方便调整传感器在“零度”及“满度”时的正确显示问题。本电路采用恒流馈电运放所属的微调电位器来调整“0℃”,而采用第二级运放的放大倍数调整微调电位器来调整满度,这样,就可以保证整个工作范围的正确显示,当然也包括满度时的最大显示问题了。
电路中的 24C 02 是电存储器,可以把使用者设定的控制值可靠地保存起来,即使掉电也不会丢失数据。
本表头使用 3 位 0.5" 或者 3 位 0.56" 高亮数码管进行显示.
要求供电稳定:
当供电电压发生偏差后,是否会引起传感器输入的变化进而影响准确度呢?供电变化后,虽然不会引起流过传感器的电流发生变化,可是,以此同时,单片机的供电也是在同步地接受到这种供电变化的,当单片机的 A/D 基准使用供电电压时,就意味着测量基准也在同步同方向发生变化,它会严重影响正确测量与读数,例如:
当供电=5.000V 时, 25℃ 测量显示的值为:(24.4140625*50)/(5000/1024)=250,把小数点定在十位则= 25.0℃ 。
当供电=4.800V 时, 25℃ 测量显示的值为:(24.4140625*50)/(4800/1024)=260.42,把小数点定在十位则= 26.4℃ 。
计算结果表明,当供电下降了 0.2V,测量显示就高到了 26.4/25=1.056 倍,因此,必须保证单片机的工作电压相当稳定,而供电不稳定又往往容易被使用者所忽略。(通常单片机系统并不允许供电有过大的变化,这不仅仅是在温度测量电路中的要求。)
从传感器前置放大电路输出的信号,就送入到 HT46R23 的 A/D 转换输入端口(PB0/AN0),由单片机去进行各种必需的处理。首先是把测量温度值转换成为十进制数字送到数码管进行显示,然后是处理用户的两个设定超限值,以及调功输出部分。用户可以在工作范围内,任意设定 2 个超限控制值。当测量显示值大于设定值的时候,对应的控制端口就会输出高电平。利用这个高电平信号,再外接一级三极管驱动继电器的电路,就可以实现超限报警、超限保护或者自动控制。而在调功控制输出端口则输出仿照 PID 控制的调节控制输出。在某一个控制端口输出高电平的同时,与之串联的 LED 发光管会同时点亮,以便提示使用者是哪一个控制输出端口在输出控制信号。
采用调功方式控制温度:
调功控制输出是本温控表头的主要输出方式,它所控制的温度精度比普通继电器的位式控制有了非常大的提高。它可以在温控过程中,根据被控对象反馈回来的数据进行调整,温度偏高了,就减少输出时间,温度下降了,就增加输出时间。而且,它可以根据最近的几组数据的趋势,自动提前进行输出调整,因此,它没有普通位式温控的严重“温度过冲”现象,也不会有被控温度大起大落的弊病。当初始送电时,电路会以全功率进行快速升温,在升温的过程中,程序会自动捕捉有关升温速率,升温时间,以及用户需要控制的温度值,然后,按照有关数据,进行调整输出功率(通过调整输出时间与无输出的时间长短来实现),通常,恒温精度可以达到 ±0.2~0 .3 ℃ 之内。
采用调功方式的温控电路,其输出控制执行元件可以是继电器,也可以是半导体可控硅。由于继电器的动作频率和触点寿命等影响,往往没有采用可控硅那种快速动作,无触点,无火花等良好效果,因此,推荐尽量使用可控硅作为执行元件。(可控硅容易受到雷电过电压和电网高反峰电压而损坏,因此,选择可控硅时,要充分注意其耐压参数及增加辅助过压保护元件)。
参考电路如下:
超限设置方法:
电路图中还有 3 只按键,它们分别是“设定”、“加置数”和“减置数”操作按键,用于使用者进行超限值的设置。使用方法如下:
按动一下设定键,屏幕显示“1--”,表示现在进入第一个超限值的设置,三秒后屏幕自动跳转到显示“***”并闪烁(*** 代表原来电存储器里储存的超限数值),然后,按压加数键(或减数键),屏幕上的最低位的数字就会加一(或减一),如果按住按键三秒以上不放开,屏幕上的前两位数字就会快速进行加数(或减数)。把屏幕上的数字调整到所需要的数字后,这个超限值就设置完成了。
接着,再按动一下设定键屏幕显示“2--”,表示现在进入第二个超限值的设置,三秒后屏幕自动跳转到显示“***”并闪烁....,接下来的操作与第一个超限值的操作完全一样。
第三个超限值的设置与上面两个完全一样。
千万注意:第二次设置的超限值就是调功控制的温度值,只需要把您希望的温度输入就行了。例如:希望把温度控制在 38.5 ℃ 。那么,就设置第二超限为 38.5 ℃ 。
而第一个超限值和第三个超限值,就作为保护“调功控制”的辅助控制,特殊情况下,仅仅使用这两个控制输出,就是普通的继电器位式控制方式。
当设置好 3 个超限值之后,还必须最后按动一下设定键,退出设定状态而返回正常工作状态。如果忘记了这最后一次按动退出的操作,程序就会等待 10 秒之后,自动返回正常工作状态。
简易调试方法:
可以使用标准温度计,把标准温度计与本电路的传感器一同放置在 0 ℃ 的冰水混合环境中,看看是否显示相同,如果不对,可以调整恒流馈电运放的“0”℃ 调整微调电位器来达到与标准温度计显示相同;然后用它们放置到 80 ℃ 左右的热水中,通过调整放大级的运放所属微调电位器来让本表头显示与标准温度计相同。由于“0”点与满度会相互影响,请反复进行调整数次,使高、低两点的误差均最小为止。
在实际工作中,要求电路的供电电压为 5V±2%.如果测量显示值大于某一个超限值,对应上下限控制的控制端口就会立即输出高电平。(调功输出只能按照测量值与设定的第二个超限值进行比较输出,没有固定的高或低电平输出)。
如果传感器发生开路故障,显示就会出现"HHH",如果传感器及其引线发生了短路,显示就会立即出现"LLL".为了防止传感器出现开路或者短路之后可能会引起的不良后果,这时候,3 个控制输出端口都会优先关闭。