一种大功率TEC温控系统的设计

2020-12-08 03:15敬奕艳
计算机测量与控制 2020年11期
关键词:温控单片机精度

敬奕艳

(深圳技术大学 新材料与新能源学院,广东 深圳 518118)

0 引言

半导体热电致冷器(thermo electric cooler,TEC)是利用半导体材料的珀尔帖效应制成的。珀尔帖效应是指当电流流过由两种不同半导体材料组成的电偶对时,电偶对的一端放热、另一端吸热,如果改变电流流入的方向,放热和吸热的端也会随之交换,这一点很适合既需升温又需降温的温控应用[1]。TEC温控设备体积小、无噪音、无污染,广泛应用于光电、机电、医疗、汽车和通讯等领域[2]。比如TEC温控系统已大量应用于中、小功率的半导体激光器,使激光器温度恒定,从而输出的激光波长稳定[3-4]。

目前,低电压、小功率的TEC温控系统已经有了成熟的芯片方案,比如ADN8830,MAX1978,LTC1923等[5-7],它们使用方便,温控精度高,但只能用于额定电压不超过5 V,电流不超过4 A的小功率TEC片。对于电压更高,功率更大的应用,目前没有现成的芯片方案,需要自行设计控制系统。

1 系统总体设计

TEC温控系统的基本功能包括:设定被控温对象的目标温度,采集并显示当前实际温度,根据PID(比例、积分、微分)控制算法的计算结果,控制TEC片制冷或制热的能力强弱,使系统温度达到并维持在目标温度。为实现这些功能,TEC温控系统一般是以单片机或FPGA为核心的小型控制系统。本设计采用的AVR单片机ATmega128被广泛应用于工业控制和仪器仪表等领域,是一款性能优良、片上资源丰富、稳定性高的芯片。

图1 系统组成框图

考虑将此温控系统设计成既可以独立工作,又能方便地加入到别的系统中作为一个板卡部件的产品,该系统的设定温度,可通过按键输入,或通过串口从上位机或其它系统接收指令。设置有液晶模块插座,液晶屏可显示当前实时温度信息,或不使用液晶屏,通过串口输出信息。

选择温度传感器,很重要的因素是精度要高,是温度采集准确的必要条件。常用的温度传感器有NTC(负温度系数热敏电阻),PTC(正温度系数热敏电阻),数字温度传感器DS18B20等,其中,NTC和PTC的测温精度较高。如果对温度精度的要求不高,可选用DS18B20,温度的采集最容易实现,可以省去温度到电压的转换,模数转换,查表等硬件、软件操作,系统的复杂度大大降低。目前TEC温控系统常应用于半导体激光器类的产品,很多激光模组内部集成了NTC,同时还考虑实现较高的测温精度,因此本设计采用精度为0.5%,B值为3435的NTC采集温度。需要设计温度采集电路,将由温度变化引起的阻值变化,转化为电压的变化,再经过模数转换电路,转化为数字量才能送入单片机进行下一步处理。

TEC片有正负两极,工作时需在两极间接入直流电压。用TEC片制冷或制热,关键在于控制TEC片中电流的方向和大小。一些小功率的TEC温控采用线性方式控制,优点是符合TEC片对电压纹波小的要求,缺点是控制用的三极管效率低,发热多,温度很高。为满足本系统的大功率要求,即高电压或大电流,提升效率,减少电路元器件发热量,必须采用场效应管的H桥电路来控制电流流向,用PWM(脉冲宽度调制)信号的占空比来控制电流大小,这是一种开关控制方式,可能出现输出电压纹波较大的问题,需增加滤波电路来尽可能削弱纹波。本系统的主要设计指标是:TEC工作电压范围6~24 V,峰值电流≤20 A,控温范围:0~70 ℃,控温精度±0.05 ℃。

2 电路设计

2.1 NTC温度采集电路

设某时刻NTC的阻值为RNTC,则采样电压VADC1的计算式为:

(1)

将NTC电阻接于插座XS1。当温度为25 ℃时,阻值为10 kΩ。因为后接的ADC(模数转化)器件的输入电压范围在0 V以上,而本设计的控温范围在0 ℃到70 ℃之间,所以当温度为25 ℃,即NTC阻值为10 kΩ时,希望输出电压在相对中间的位置,于是给运算放大器U1A的同相输入端设置了半电压2.5 V。为了配合不同的ADC取样电压范围,比如0~5 V,0~2.5 V,0~4.096 V等,可适度调整R5和R6的阻值,使得整个设计控温范围对应的电压量都能处于ADC取样电压范围内。通过U1A放大得到电压量后,再经过一级电压跟随器,增大带负载能力,接入到后级ADC。为了提高取样精度,各电阻应采用1%或更高的精度。这里用到两个运放,可选用轨到轨的双运放封装的型号,本设计采用OPA2348A。

图2 NTC温度采集电路

2.2 ADC电路

选用了SPI接口的12bit串行ADC器件AD7888,将模拟电压值转化为数字量,以便送入单片机进行温度显示和温度控制处理。AD7888的SPI接口有四条信号线,分别与AVR单片机SPI接口的四个引脚相连。在图3中,是片选信号,当需要AD7888工作时,ADCLK是时钟线,在当前应用中,AD7888是从属器件,时钟由控制器件单片机输出。DIN是AD7888控制字输入,控制字决定其工作模式,模数转换参考电压的来源等。DOUT是模数转化的结果输出。VREF是参考电压,当前设计是采用AD7888外部的电压基准,是由一颗LM4040AIM3-4.096 V产生的,电压精度为±0.1%。NTC温度采集电路得到的电压量从AIN1脚输入。AD7888的供电脚5 V要做好滤波,图中接了10 μF,0.1 μF,0.01 μF 3个陶瓷电容到地。没有用到的输入脚AIN2-AIN8不能悬空,要接地,避免引入干扰。

图3 ADC电路

2.3 TEC驱动电路

在一般设计中,H桥电路由4个场效应管组成,通过4个栅极电压控制各个场效应管的导通和截止,从而控制流过TEC片的直流电流的方向。本设计采用集成电路BTN7971B,每片包含一个上管PMOS、一个下管NMOS构成半桥以及一个驱动IC,两片配合可构成H形全桥电路。

图4 TEC驱动电路

选用BTN7971B的原因主要是它的参数与本设计的指标较为匹配,能满足输入电压、电流范围,内部场效应管导通电阻很小,小于20 mΩ,在大电流情况下器件的发热量相对小,很适合用于较高电压、较大电流的TEC温控电路。配合外部电路,BTN7971B容易实现过温、过流、过压等保护以及电流上升斜率调整功能,在大功率应用条件下,比简单地用4个场效应管构成H桥的安全性有很大提升,也比额外增加各种保护电路更简单和经济。此外,用4个场效应管来做H桥电路,需要4个电压控制信号来分别控制4个场效应管,要做好信号之间的配合,避开“死区”时间。“死区”是指H桥电路同一侧的上管和下管在较短时间内同时导通,这会导致电源对地短路。而采用BTN7971B,可自动避免“死区”问题,只需2个控制信号就可驱动,简化了电路和软件设计。

2.4 PCB设计重点

PCB设计是该温控系统电路实现的一个重要方面。ADC的模拟量输入和参考电压基准的走线都要尽量短,避开干扰源,在走线两侧伴着走地线,做好防护;电路主要分为单片机小信号和TEC大电流驱动两部分,两者的地要分割,只在一点连接;大电流工作部分的走线都采用了较宽的铜箔,并均匀打上很多大过孔实现良好散热;两片BTN7971B是板上温度较高的器件,一方面利用板上铜箔辅助散热,另一方面预留了金属热沉的安装位置。

电路部分还包含ATmega128单片机最小系统、按键电路、串口电平转换和从系统供电到5 V的转化电路等,这里就不展开详述。

3 软件设计

主程序main()函数首先是对系统各组成模块,包括按键、液晶显示、SPI接口、串口、定时器和PID参数进行初始化,程序主体包含一个大循环,图5的流程图是此循环中的一次流程。通过2按键方式输入所需控制温度,获取AD7888转化后的数字量,通过查表方式找到当前的实际温度。调用液晶屏显示函数,显示当前温度。编写PID计算函数,采用了分段计算方式,当控制温度与实际温度的差值在-2到2 ℃范围内时才计算PID控制量。与PWM生成模块的占空比调整范围匹配,根据PID控制量输出占空比,根据温度差值是正或负,输出控制方向是加热或制冷。

图5 温控软件流程图

3.1 ADC芯片AD7888的写和读操作

在AD7888开启模数转换功能之前,需要单片机向其写入控制字,设置当前进行转换的模拟输入通道(8个通道中的某一个)、参考电压来源、AD7888工作模式。开启转换功能后,单片机需要定时从AD7888读取转换结果。因此,软件需要编写AD7888的写入和读取函数。由于ATmega128具备SPI接口,可与AD7888通过SPI通信,使得读、写都能够以一个字节为单位进行,避免了繁琐的按位操作,简化了软件设计。ATmega128的SPI接口需要根据AD7888的读、写时序要求进行初始化。

void WriteToAD7888(uchar CtrlWord) //AD7888控制字写入函数

{

uchar ControlValue = 0; //定义无符号字符型变量

ControlValue= CtrlWord; //将控制字赋给变量

PORTB&=0xFE; //拉低CS

SPDR=ControlValue; //将控制字送入SPI数据寄存器

while(!(SPSR&(1<

//否为1,为1说明数据已传完

PORTB|=0x01; //拉高CS,结束写操作

}

uint ReadFromAD7888(void) //AD7888读取函数

{

uint tem_h,tem_l,tem_1,tem_2; //定义无符号整型变量

PORTB&=0xFE; //拉低CS

SPDR=0x00; //写入任意一字节,启动数据移位

while(!(SPSR&(1<

//1,为1说明数据已传完

tem_h=SPDR; //读取高字节

SPDR=0x00; //写入任意一字节,启动数据移位

while(!(SPSR&(1<

//1,为1说明数据已传完

tem_l=SPDR; //读取低字节

Delay_us(10); //延时10us

PORTB|=0x01; //拉高CS,结束读操作

tem_1=tem_h*256;

tem_2=tem_1+tem_l;

TEMP=tem_2; //TEMP是采样到的ADC的数值

return TEMP; //函数返回ADC值

}

在主程序中,对AD7888写入的控制字是0x04,连续读取4次AD转换结果取平均值,得到比较精确的数字量,从而获得更高的转换精度。

3.2 PID控制算法的软件实现

PID控制算法一般有位置式和增量式两大类,相比而言,增量式的计算量小。本设计尝试了这两种算法,位置式在当前的应用中表现更好,因此选择了位置式PID算法,计算式如下:

(2)

(3)

因为OUT的计算中涉及浮点数,计算量非常大,所以采用了分段计算方法:当|EK|≥2时,即当前温度与控制温度还相差较大时,不计算PID控制量OUT,直接用最大的控制量,即全速的加热或制冷;当|EK|<2时,按公式(3)计算OUT。

pid.Pout=pid.Kp*pid.Ek; //比例输出

pid.SEk+=pid.Ek; //历史偏差总和

DelEk=pid.Ek-pid.Ek_1; //最近两次偏差之差

ti=pid.T/pid.Ti;

ki=ti*pid.Kp; //Ki积分系数

pid.Iout=ki*pid.SEk; //积分输出

td=pid.Td/pid.T;

kd=pid.Kp*td; //Kd微分系数

pid.Dout=kd*DelEk; //微分输出

out= pid.Pout+ pid.Iout+ pid.Dout; //PID控制量

3.3 TEC驱动电路的控制信号产生

前述的TEC驱动电路需要两个控制信号:PWM#和DIREC#,都是由ATmega128产生。本设计采用ATmega128的定时计数器T/C3来产生PWM信号,输出引脚是PE3,产生的PWM波形频率为15.625 KHz。DIREC#信号的输出引脚是PE4,是用作普通I/O,产生高或低电平。软件首先需要设置输出信号引脚状态,开启10位快速PWM功能,编写了PWM_init函数。

void PWM_init(void)

{

DDRE |=0x1A; //设置PE3和PE4为输出

PORTE &=0xF7; //设置PE3内部无上拉,PE4为内部上拉

TCCR3A=0x83; //T/C3的通道A设置为比较输出模式

TCCR3B=0x09; //采用10位快速PWM模式,top值为0x03FF(1023)

TCNT3=0X0000; //设置定时器3的初始值为0

OCR3A=512; //设置初始占空比为512/1024=0.5

ETIMSK=0X00; //T/C3的中断屏蔽寄存器设置

}

根据PID控制量OUT的计算结果,产生不同占空比的PWM信号的代码:

if(pid.Ek > 0)

{

PORTE &= ~(1<

if(fabs(out) > 1023)

{ OCR3A = 1023; } //OCR3A的最大值是1023

else

{ OCR3A = fround(fabs(out)); } //将OUT值取绝对值、取整,作为OCR3A

}

else if(pid.Ek <= 0)

{

PORTE |= (1<

if(fabs(out) > 1023)

{ OCR3A = 0; } //OCR3A的最小值是0

else

{ OCR3A = 1023-fround(fabs(out)); }

}

pid.Ek_1=pid.Ek; //将当前误差赋值给上一次误差

4 实验结果与分析

温控系统设计完成后,主要使用4 Ω/50 W的铝壳电阻进行试验。铝壳电阻两端接12 V直流电压,发热功率约为36 W,能模拟该TEC温控系统的一般应用条件。采用100×100×5(mm)的紫铜板作为导热金属板,可为2块TEC片同时导热。TEC片的制冷面均匀涂抹导热硅脂,与紫铜板的一面紧密接触,铝壳电阻固定在紫铜板的另一面中心部位,在紫铜板上铝壳电阻旁边位置钻有小孔,将NTC的感温部分完全埋置其中,并以AB胶封孔。TEC片的制热面均匀涂抹导热硅脂,与一个较大体积的金属热沉紧密接触,并安装有风扇顺着热沉的导热方向吹风,带走热量。设计一个良好的散热、导热和感温的实验装置对TEC温控应用是非常重要的,如果TEC片热面的热量不能及时带走,温度过高,冷面就不能输出低温。

该TEC温控系统支持的TEC片额定电压范围宽,为6~24 V,峰值电流可达20 A,可支持多种型号的TEC片单独使用,还可将TEC片串联或并联使用,以获得更大的制冷或制热功率。在试验中,将2块型号为12708(额定电压12 V,额定电流8 A)的TEC片串联使用,对多种不同温度的升温或降温控制进行了调试。

将此温控系统应用在一个出纤光功率最大为16 W的793 nm半导体激光器上,将激光器的温度控制在25 ℃,激光器内置NTC和TEC片。从激光器阈值电流0.5 A到最大电流2.5 A的范围内,选取不同的电流值来测试温控系统的控温能力。经过多次重复测试,温度波动能保持在±0.05 ℃以内,从起控到温度稳定的时间一般在10分钟以内。图6和图7是当环境温度为28 ℃,激光器工作电流为2 A,初始温度为40 ℃,控温到25 ℃的温度变化过程。每30秒记录一次温度,约5分钟后,温度到达25 ℃附近,此后存在小幅波动,在±0.05 ℃范围内。

图6 从初始温度40 ℃控温到25 ℃

图7 温度达到25 ℃后的变化情况

因为TEC温控系统是由多个部分组成的整体,受到多方面的影响,比如被控对象的形态,温度传感器的固定位置和方式,TEC片的选型和组合,散热条件等,都会影响控温效果。从实验过程发现,一组PID参数(Kp,Ki,Kd)可能无法满足整个控温范围内的要求,可在软件中根据条件设置几组PID参数,也可开放用户微调PID参数的功能。

5 结束语

基于ATmega128的TEC温控系统基本上满足了较大功率TEC片的应用需求,在控温精度方面的表现较好,在调试和测试的过程中,也表现出较好的可靠性和稳定性。后续还将继续改进设计,改用16bit的ADC器件,提高测温精度。PID算法改用变速积分增量方式,有望降低计算复杂度,加快控温响应速度,提高控温精度。现有的PWM频率较低,可提高PWM频率,就能够减小LC滤波的电感量,从而缩小电感的体积,减轻重量。可提高PWM占空比调整的精细程序,从而提高控温精度。电路板还可优化缩小,使其更便于嵌入到小体积产品中。目前,TEC温控系统在各种仪器设备和生活电器等领域有了越来越广泛的应用,本设计的TEC温控系统也可尝试与各种其它产品进行融合。

猜你喜欢
温控单片机精度
考虑用户满意度的温控负荷能效综合指标模型和调峰策略
基于不同快速星历的GAMIT解算精度分析
基于小型化的功放单元和温控箱结构及散热设计
热连轧机组粗轧机精度控制
基于单片机的层次渐变暖灯的研究
基于单片机的多功能智能插排
基于单片机的便捷式LCF测量仪
以工匠精神凸显“中国精度”
客车发动机舱温控电子百叶窗系统设计
温控旋转型MINI卷发器