基于单片机的半导体激光器温控系统研究

摘 要

半导体激光器具有体积小、结构简单、功耗低、光/电转换效率高和易于调制等特点,这些特点使其逐渐成为当
今的光电子科学中的一大核心,在各个方面有较好的应用前景,受到了世界各国的高度重视。目前它在激光通信、
激光打印、测距以及雷达等方面得到了广泛的应用。
  然而,当半导体激光器长时间不间断工作时,半导体激光器的内部会堆积大量的热能,如不及时对其进行降
温,堆积的热能将会有损半导体激光器各方面的使用性能。为防止半导体激光器因温度过高而减少使用寿命,对半
导体激光器进行恒温控制显得十分重要。为此,本文研究设计了一种基于单片机的半导体激光器温度控制系统。该
系统在硬件上以半导体制冷器为降温器件、52单片机为核心、DS18B20为温度采集元件进行对半导体激光器工作温度
的检测与控制,软件上采用闭环控制系统,利用单片机定时器中断获取PWM波的方法实现对半导体制冷器冷却速度的
调节,从而有效地解决半导体激光器使用过程中因温度过高而导致使用性能损坏的问题。

第1章 绪论
  半导体激光器是以直接带隙半导体材料构成的PN结或PIN结为工作物质的一种小型化激光器[1],近十几年来半
导体激光器发展迅速,已成为世界上发展最快、最为重要的光纤通信的光源。半导体激光器具有体积小、效率高、
波长易调制等特点[2],这些特点使它已经成为当今光电子科学的核心技术,在民用和军用方面有较好的应用前景,
受到了世界各国的高度重视。目前已经广泛应用于通讯、测距、精密仪器加工,光集成的信息存储和信息处理等领
域。
  然而,半导体激光器是一种极其脆弱的结型器件,对电流和温度变化十分敏感,电流的微弱变化和温度变化会
对半导体激光器的输出波长、阈值电流及输出功率稳定性产生明显影响[3]。当半导体激光器持续不间断工作时,半
导体激光器的内部会堆积大量的热能,如不及时对其进行降温,堆积的热能将会大大地影响半导体激光器今后的实
际使用效果与性能。温度也直接影响半导体激光器的寿命,温度升高会使激光器的寿命缩短甚至终止[4]。因此,为
了保证半导体激光器始终能够保持正常稳定地工作,采取利用温度控制系统对半导体激光器进行恒温控制的方法就
显得十分重要。
1.2国内外研究现状
  国内发展现状:经过调查考证,国内用于研究或生产半导体激光器温控系统的公司或企业屈指可数,有参与该
方面研究的高校也是凤毛麟角。中国科学院研究生院(长春光学精密机械与物理研究所)在04年设计了以单片机为
核心、半导体制冷器为降温/升温器件、热敏电阻为外部测温部件的半导体激光器泵浦的固体激光器的温度数字控制
系统。2007年,天津大学的光电信息技术科学重点实验室为外腔半导体激光器(ECLD)设计了双重温度控制电路,
并研制了为智能光源系统提供支持电压的稳压电源。吉林大学集成光电子学国家重点联合实验室于2004年设计了一
种基于单片机的的数字PWM功率驱动电路,利用PWM波型调制的方法为TEC的工作提供灵活可变的电流,包括电流的大
小、方向等;2018年设计了针对一种型号的泵浦激光器进行恒流驱动和恒温控制的温度控制系统,使其在保持工作
温度在一定范围的条件下持续、稳定地输出稳定光源。
国外发展现状:经查证,目前国外许多用于研究和生产半导体激光器温控系统的公司和企业的技术较为先进和成
熟,依靠这些技术也生产出了许多实际使用效果不错的产品。其中,要属WAVELENGTH,McShane,IXLight,
THORLABS,Linear Technology 这些公司的产品更为突出和优秀。
  由此可见,国内研究和生产半导体激光器温控系统的公司和高校均屈指可数,且研究的程度和深度都还未达到
一定的水准。国外用于研发和生产半导体激光器温控产品的技术较为完善,生产出的产品也投入了大规模的使用。
可见,国内相比于国外在半导体激光器温度系统方面仍存在一定的差距。因此,研发一款控制精度高、稳定性好、
经济效益高的半导体激光器温度控制系统有着很大的实际意义。
1.3 研究目的及意义
  为解决半导体激光器因使用温度过高而影响使用寿命这一问题,本文设计了一种基于单片机的半导体激光器温
度控制系统,以单片机为核心进行对半导体激光器工作温度的检测和控制,功能上能够有效地解决半导体激光器使
用过程中因温度过高而导致使用性能损坏的问题。

第2章 方案设计

本文设计的温控系统面向的是一款由新亮智能自主研发的激光模组,如图2.1所示,其型号为LM0850-B004-
0711DC,采用自主研发高品质的VCSEL激光二极管设计而成,外观采用铜材料设计,散热效果更好。相对于EEL光源
而言,具有更高的峰值功率和较低的功耗,且不会温度变换而波长漂移,性能更可靠。它的发射脉宽也较窄,本身
不需要温度和光学补偿,比传统的EEL光源具有更宽的工作环境温度。它可应用于油烟监测、医疗照明、智能家居、
定位、指定标记等领域,是理想的不可见光源。
在这里插入图片描述

图2.1 LM0850-B004-0711DC
2.1 系统结构
  设计的半导体激光器的温控系统采用了闭环控制系统,因此本系统具有了负反馈的特性,可以对半导体激光器
的工作温度做到更加精确的调控。
2.1.1 闭环控制
  开环控制和闭环控制是温控系统中常见的两种控制方式。开环控制这种单向的控制过程结构相对简单且方便实
现,但温度控制的精度常常偏低。由于半导体激光器对工作温度要求较高,这种单向控制的开环控制系统难以满足
这种精确的温度控制。因此,为了确保更好的控制效果,本文设计的温控系统采用了闭环控制系统。
  闭环控制系统最突出的特点就是控制器与控制对象之间不仅存在正向联系,而且存在某种反向的联系,一种反
馈关系。如图2.1的系统框图所示,控制器对温度进行调控,温度作为被控量反馈到偏差量中,再用此偏差量去减小
误差,从而对温度进行实时的控制。
图2.2 负反馈系统框图在这里插入图片描述

2.1.2 系统框图
  在基于闭环控制的条件下,本设计的整体思路是:利用温度传感器DS18B20来检测半导体激光器的工作温度,并
将采集到的温度输出为数字信号给单片机进行处理,按键电路设置半导体制冷器的工作温度上限,同时将实时温
度、设置温度显示在LCD屏上。软件上利用单片机定时器模拟PWM脉宽调制方式来改变半导体制冷器的制冷效率。系
统整体结构框如图2.3所示。
图2.3 整体系统结构图在这里插入图片描述

2.2 器件选择
  本文设计的温控系统要求实现半导体激光器的温度控制,使半导体激光器在超过设定的阈值温度时能够驱动半
导体制冷器对其进行降温,使其回到正常工作温度。此外,半导体制冷器的制冷功率应随半导体激光器的温度高低
进行调节。因此,器件的选择十分重要。
2.2.1 控制核心的选择
  在本设计中控制核心采用AT89C52单片机,单片机模块通过软件编程和控制仿真可实现对于温度参数的实时检测
以及对设定参数和输出信号的判断,并最终在单片机内部的I/O总线直接输出用于控制温度参数的信号。AT89C52单
片机对于工作环境的要求不高,硬件工作性能较好,经济实惠,可通过C语言程序进行编译,适合本设计系统。
2.2.2 温度传感器的选择
通常来说,有两种方法可以对需要测温的器件的实时温度进行采集。
  方案一:使用热敏电阻进行温度采集,将热敏电阻得到的温度信号通过运算放大器进行信号放大,由于热敏电
阻的特性是其阻值大小会随温度的高低而改变,进而产生输出电压也会发生一定程度的变化,之后将这种热敏电阻
采集的电信号经模数转换处理之后转化为数字信号输入进单片机。
  方案二:使用DS18B20温度传感器进行温度采集,DS18B20检测到温度后会直接在内部输出为数字信号,不需额
外的模数转换步骤。
  对于方案一,采用热敏电阻作为温度检测元件时存在一定的缺陷。首先,热敏电阻在面对微小的温度变化时,
它所能作出的反应并不灵敏,从而会导致其在温度检测时出现问题。此外,热敏电阻在工作的过程中还经常会产生
预期之外的信号失真和偏差,仅能通过更加复杂的电路来修补这些不必要的误差,大大增加了工作量,减小了经济
效益。因此该方案并不适合本系统。
  对于方案二,DS18B20温度传感器具有模数转换的内部结构,并且高度集成化性,可有效地防止温度信号输入到
模数转换电路中引起的不必要的误差,从而使测得温度更加精确以及系统的结构及软件程序得以简化。另外,
DS18B20温度传感器具有极高的测温精度,在配线正确时工作,其测得的温度数据几乎没有误差。同时,由于其采用
了先进的单总线技术,使其接口更加简洁,具有很好的抗干扰性,与传统的热敏电阻相比,两者在测量原理和测量
方式上是大相径庭的,对比可知方案二更适合本文设计的温控系统。
2.2.3 显示器件的选择
方案一:LED共阴极数码显示管。
方案二:LCD1602液晶显示屏。
  对于方案一,LED显示管能耗低,亮度好,电路易于实现,因此在许多领域被应用。不过,它是一种动态的扫
描,在温度实时变化的环境中可能会出现闪烁过快的情况,导致数据不能很好的展示出来。
对于方案二,LCD显示文字清楚,有背光、符号显示,而且不会连续闪烁,显示效果很好。因此,从获得更好的的设
计效果来看,选择此方案更有优势。
2.2.4 降温器件的选择
  半导体热电制冷器(Thermo electric cooler,TEC)是利用半导体材料的珀尔帖效应制成的。珀尔帖效应是指
当电流流过由两种不同半导体材料组成的电偶对时,电偶对的一端放热、另一端吸热,如果改变电流流入的方向,
放热和吸热的端也会随之交换[5]。TEC的主体结构为N型半导体与P型半导体构成的温差电偶。在将直流电源与温差
电偶连接时,由直流电源供给电子流能量,从而形成了一种能量转换的现象。电流把N型物质的热吸收到P型物质中
的工作端称为冷端,P型物质把热能从P型物质中放出到N型物质中的工作端称为热端。半导体制冷装置具有结构简
单、使用寿命长、工作可靠等优点。利用工作电流,实现了对制冷机的温度、功率的控制,具有更大的灵活性。控
制温度范围大、制冷速度快[1]。结合这些优点可知,半导体制冷器是用于给半导体激光器降温的合适器件

程序代码:
//System:
#ifndef __SYS_H_
#define __SYS_H_
#include <reg52.h>
#include <intrins.h>
#include <math.h>
#include "lcd.h"
#include "key.h"
#include "timer.h"
#include "ds18b20.h"
#define FOSC 11059200L
#define T1MS (65536 - FOSC / 12 / 1000)
#define uchar unsigned char
#define uint unsigned int
#endif
//DS18B20:
#ifndef __ds18b20_H_
#define __ds18b20_H_
#include "sys.h"
#define max_18b20_temp (70.0)
#define min_18b20_temp (-20.0)
sbit ds = P2 ^ 0; // ds18b20
void delayMs(unsigned int a); 
int getTmpValue(void); 
void display_ds18b20(int v);
#endif
#include "ds18b20.h"
void dsInit(void)
{
unsigned int i;
ds = 0;
i = 100;
while (i > 0)
i--;
ds = 1;
i = 4;
17
while (i > 0)
i--;
}
void dsWait(void)
{
unsigned int i;
while (ds)
;
while (~ds)
;
i = 4;
while (i > 0)
i--;
}
bit readBit(void)
{
unsigned int i;
bit b;
ds = 0;
i++;
ds = 1;
i++;
i++;
b = ds;
i = 8;
while (i > 0)
i--;
return b;
}
unsigned char readByte(void)
{
unsigned int i;
unsigned char j, dat;
dat = 0;
for (i = 0; i < 8; i++)
{
j = readBit();
dat = (j << 7) | (dat >> 1);
}
return dat;
}
void writeByte(unsigned char dat)
{
unsigned int i;
unsigned char j;
18
bit b;
for (j = 0; j < 8; j++)
{
b = dat & 0x01;
dat >>= 1;
if (b)
{
ds = 0;
i++;
i++;
ds = 1;
i = 8;
while (i > 0)
i--;
}
else
{
ds = 0;
i = 8;
while (i > 0)
i--;
ds = 1;
i++;
i++;
}
}
}
void sendChangeCmd(void)
{
dsInit();
dsWait();
delayMs(1);
writeByte(0xcc);
writeByte(0x44); 
}
void sendReadCmd(void)
{
dsInit();
dsWait();
delayMs(1);
writeByte(0xcc);
writeByte(0xbe);
}
int getTmpValue(void)
{
19
unsigned int tmpvalue;
int value;
float t;
unsigned char low, high;
sendReadCmd();
low = readByte();
high = readByte();
tmpvalue = high;
tmpvalue <<= 8;
tmpvalue |= low;
value = tmpvalue;
t = value * 0.0625;
value = t * 100 + (value > 0 ? 0.5 : -0.5);
return value;
}
//KEY:
#ifndef __KEY_H_
#define __KEY_H_
#include "sys.h"
sbit K1 = P3 ^ 3; 
sbit K2 = P3 ^ 4;
void Scankey(unsigned int a);
#endif
#include "key.h"
unsigned char set = 0; 
void Scankey(unsigned int a)
{
if (a >= 100)
{
a = 100;
}
if (a <= 0)
{
a = 100;
}
if (K1 == 0)
{
delayMs(10);
if (K1 == 0)
{
while (K1 == 0)
20
;
a += 1;
if (a >= 0 && a <= 100)
{
writeComm(0x80 + 10);
writeData('0' + a / 100);
writeData('0' + a / 10 % 10);
writeData('0' + a % 10);
}
}
}
if (K2 == 0)
{
delayMs(10);
if (K2 == 0)
{
while (K2 == 0)
;
a -= 1;
if (a >= 0 && a <= 100)
{
writeComm(0x80 + 10);
writeData('0' + a / 100);
writeData('0' + a / 10 % 10);
writeData('0' + a % 10);
}
}
}
}
//LCD:
#ifndef __LCD_H_
#define __LCD_H_
#include "sys.h"
#define uchar unsigned char
#define uint unsigned int
sbit rw = P2 ^ 6; 
sbit RS = P2 ^ 5;
sbit LCDEN = P2 ^ 7;
void lcd_init(void); 
void writeComm(uchar comm); 
void writeData(uchar dat); 
void LcdGotoXY(uchar line, uchar column);
void writeString(uchar *str, uchar length); 
void LcdPrintStr(uchar *str);
21
#endif
//Timer
#ifndef __TIMER_H_
#define __TIMER_H_
#include "sys.h"
sbit PWM_Out = P1 ^ 0; 
sbit sys_led = P1 ^ 5;
extern unsigned int pwm_duty_cycle; 
extern unsigned int set_pwm; 
extern unsigned int count; 
extern unsigned int temp_target;
void delayUs(void); 
void sendChangeCmd(void); 
void time0_init(void);
void set_pwm_duty_cycle(void);
void time1_init(void);
void sys_led_display(void);
  void judging_temp_action(unsigned int value_18b20);
#endif
#include "timer.h"
#define max_temp_speed (69.0)
#define middle_temp_speed (35.0)
#define middle_speed (500)
#define min_temp_speed (10.0)
#define min_speed (200)
#define enable (1)
#define disable (0)
unsigned int pwm_duty_cycle = 0; 
unsigned int set_pwm = 0; 
unsigned int count = 0;
unsigned int temp_target = 0;
void delayUs(void)
{
_nop_();
}
void delayMs(uint a)
{
uint i, j;
for (i = a; i > 0; i--)
for (j = 100; j > 0; j--)
;
22
}
void time0_init(void)
{
TMOD = 0x01;
TL0 = T1MS;
TH0 = T1MS >> 8;
TR0 = 1;
ET0 = 1;
EA = 1;
pwm_duty_cycle = 0; 
}
void tm0_isr() interrupt 1
{
TL0 = T1MS;
TH0 = T1MS >> 8;
pwm_duty_cycle++;
}
void set_pwm_duty_cycle(void)
{
if (pwm_duty_cycle > set_pwm * 10)
{
pwm_duty_cycle = 0;
PWM_Out = !PWM_Out;
}
}
void tm1_isr() interrupt 3
{
TL1 = T1MS;
TH1 = T1MS >> 8;
count++;
}
void time1_init(void)
{
TMOD = 0x10;
TL1 = T1MS;
TH1 = T1MS >> 8;
TR1 = 1;
ET1 = 1;
EA = 1;
count = 0; 
}
void sys_led_display(void)
23
{
if (count > 100)
{
count = 0;
sys_led = !sys_led;
}
}
void judging_temp_action(unsigned int value_18b20)
{
if (temp_target - value_18b20 > 15)
{
PWM_Out = 100;
}
if (temp_target - value_18b20 > 10)
{
PWM_Out = 75;
}
if (temp_target - value_18b20 > 5)
{
PWM_Out = 50;
}
if (temp_target - value_18b20 > )
{
PWM_Out = 25;
}
if (temp_target - value_18b20 > 1)
{
PWM_Out = 0;
}
}

第3章 硬件设计

3.1 主要器件简介
3.1.1 AT89C52单片机简介
  AT89C52是52系列单片机的一个型号,它是由ATMEL公司生产的一个低电压、高性能的8位单片机,片内器件采用
ATMEL公司的非易失性、高密度存储技术生产,与标准的MCS-51指令系统兼容,同时片内置有通用8位中央处理器和
8k 字节的可反复擦写的只读程序存储器ROM以及256字节的数据存储器RAM[6],在许多较为复杂的控制系统中
AT89C52单片机都得到了广泛的应用。在这里插入图片描述

图3.1:AT89C52引脚图
3.1.2 DS18B20温度传感器简介
DS18B20 是美国 DALLAS公司生产的可直接将温度转换为数字量并可通过一条单总线进行读取的高性能、低功耗、高
精度的数字温度传感器[7]。DS18B20具有在±0.5℃范围内编程实现9-12比特的分辨率。DS18B20的测温范围为-
55~125℃[8],最大分辨率可达0.0625℃。DS18B20减少了外部的硬件电路,直接输出数字信号。
DS18B20的性能特点如下:
(1)独特的单线接口使其仅需要一个端口引脚进行通信;(2)不需要借助任何外部设备即可正常工作;(3)可由3.0至
5.5 V的数据线供电;(4)不工作时几乎不会产生功耗;(5)用9-12比特的数值来表示温度;(6)负电压特性,不会因
供电电源的极性相反对器件造成损坏。。
3.1.3 LCD1602液晶显示屏简介
  LCD1602液晶又称1602字型 LCD,是一种用于显示字母、数字、符号等点阵 LCD中的一种。LCD液晶显示模块具
有体积小、功耗低、显示内容丰富、超薄轻巧等优点,在袖珍式仪表和低功耗应用系统中得到广泛的应用[9]。其引
脚如图3.2所示。
LCD1602的技术指标:
显示容量:16x2个字符
工作电压:4.5-5.5 V
工作电流:2.0mA
模组工作电压:5.0 V
3.1.4 半导体制冷器(TEC1-04901)简介
  TEC1-04901是一种作用为热泵的小型半导体电子器件,利用半导体材料的珀尔贴效应进行工作,以下为TEC1-
04901的产品参数。
外观尺寸:20204.9mm
额定电压:5V
最大电流:1A
输入功率:5W
制冷功率:3.5W
最大耐温:200℃
导体内阻:5Ω
3.2 主要电路模块设计
  本设计主要使用到了晶振、复位电路、独立按键控制电路、LCD1602液晶显示电路、DS18B20温度采集电路以及
半导体制冷器驱动电路。
3.2.1 晶振、复位电路
  单片机系统中通常会有两个基础的电路:晶振电路以及复位电路。单片机的XTAL1、XTAL2接口用于连接外部晶
振电路,RST接口用于连接外部复位电路。复位电路实现的功能是在按下S4按键后,该系统会重置一次,同时晶振电
路为单片机提供谐振,使其正常工作。
3.2.2 独立按键控制电路
  本文设计的温控系统设有一个独立按键电路,分别连接单片机的P3.2、P3.3和P3.4接口。其中S1按键在程序中
设定为“按下开始设定阈值温度”,S2和S3在程序中分别用作增加、减小阈值温度。
3.2.3 LCD1602液晶显示电路
  本文设计的温控系统采用LCD1602A作为显示模块,它与单片机的连接如图3.5所示。其中LCD屏的第一行显示事
先设定好的半导体激光器的工作温度阈值,数值为整数型。第二行显示半导体激光器工作的实时温度,数值精确到
小数点后两位。
3.2.4 DS18B20温度采集电路
  本文选择DS18B20温度传感器作为温度检测模块,将DS18B20温度传感器接在单片机的P2.0口实现温度的采集,
并最终显示在LCD屏上。
3.2.5 半导体制冷器驱动电路
  PWM驱动是半导体制冷片常见的驱动方式,它是一种按照一定的规律改变脉冲序列的脉冲宽度,以调节输出量和
波形的一种调节方式,PWM调速技术具有调速精度高、调速响应快、范围广和平滑调速以及节约电能的优点[11]。在
使用PWM驱动的控制系统中,系统工作时调节PWM波的占空比,做到对执行器件工作效率的调节,其中占空比是指高
电平持续时间在一个周期时间内的百分比[12]。在半导体制冷器进行工作时,其两端获得的PWM波的占空比越大,半
导体制冷器的制冷效率就越高。一般来说,利用单片机的I/O口输出PWM信号时,有如下两种方法:
  (1)利用单片机自带的定时器。利用单片机的定时器的中断功能可以实现波形高、低电平的转换,具体方法
为:利用定时器的中断以及中断的次数来控制1个PWM信号周期中高低电平的持续时间,以达到PWM信号所需的占空比
[13],如此就可通过定时器得到PWM信号。
  (2)利用单片机自带的PWM控制器。目前许多型号的单片机都自带了PWM模块,可直接通过单片机内部的PWM模
块生成PWM波。
  根据半导体激光器的工作特性,通常都会采用半导体制冷器对其进行降温,PWM驱动是半导体制冷器常见的驱动
方式,而本设计所采用的AT89C52单片机本身不带有PWM模块,因此无法直接产生PWM信号。因而只能利用AT89C52自
带的定时器来模拟PWM波的产生。本设计即采用AT89C52单片机的定时器模拟产生PWM波,通过软件向单片机输入相应
控制指令,达到调节PWM波占空比的目的。
  驱动电路如图3.7所示,该电路从单片机的P1.0口输出PWM波,光耦隔离用于与保护电路,通过控制MOS管的通断
进行对PWM波占空比的调节。在这里插入图片描述

图3.7 PWM驱动电路
3.3 硬件电路设计
硬件电路设计主要包括了PCB电路板的设计以及实物电路板的焊接。
3.3.1 PCB电路板设计
根据本设计所用到的元件及电路模块,结合Altium Designer软件设计出PCB板如图3.8所示:
在这里插入图片描述

图3.8 PCB电路板
3.3.2 实物电路设计
根据PCB板的设计,焊接对应的原件,得到实物电路如图3.9所示,相应电路模块在图中标明。
图3.9 实物电路在这里插入图片描述

第四章 系统调试

4.1 软件调试
  在根据主程序流程图设计好系统的程序后,为确保最终设计结果的准确性,需要对程序实现的功能在软件上进
行仿真调试。
4.1.1 主程序流程图
主程序流程图如图4.1所示:
在这里插入图片描述

图4.1主程序流程图
  如图4.1所示,本文研制的温控系统通过单片机模块检测温度采集模块采集到的温度并作出相应处理,在得到的
温度超过设定温度后,程序中开始调用PWM控制函数,由单片机定时器中断功能调节PWM波的占空比,利用不同占空
比的PWM波对TEC进行驱动。当采集温度低于设定温度时,半导体制冷器会停止工作,在进行上述过程的同时在LCD屏
上显示目前的温度以及设定的温度。程序中设定了目标温度与设定温度之间的差值,当温差大于15度时,PWM输出为
100%;当温差大于10度时,PWM输出为75%;当温差大于5度时,PWM输出为50%;当温差大于2度时,PWM输出为
25%;当温差大于1度时,PWM输出为0%。通过这种设定PWM波的占空比的方式达到半导体制冷器在面对不同温差时调
节制冷功率的目的。
4.1.2 Proteus仿真
  本设计是基于Proteus软件进行的仿真,由于Proteus仿真软件中元件的局限,本文的仿真将用一个三极管模拟
PWM驱动电路,风扇模拟半导体制冷器的工作。
在这里插入图片描述

(a)(b)
图4.2 不同温度情况下的制冷器工作仿真结果:(a)温度低于设定温度;(b) 温度高于设定温度。
  首先通过按键电路设定一个TEC工作的阈值温度,并通过调节DS18B20温度传感器上是“+”、“-”键分别将实
时温度调节至低于以及高于阈值温度的情况,观察风扇的工作状态,结果如图4.2所示,当DS18B20的温度低于设定
的阈值温度30℃时,风扇不工作,当DS18B20温度高于设定的阈值温度30℃时,风扇开始工作(示波器检测到PWM波
的波形)。
  接下来将DS18B20温度传感器的温度分别调整为32℃以及34℃,观察示波器波形的变化。仿真结果如图4.3所
示,当温度为34℃时,PWM波的占空比相较于温度为32℃明显要低,由于此仿真程序中的PWM波由低电平驱动,因此
当温度为34℃时,风扇的功率明显高于温度为32℃时的功率,在仿真程序中也明显观察到风扇转速的变化。
  通过以上仿真可以看出,半导体制冷器在DS18B20的实时温度高于阈值温度,且阈值温度不变的情况下,其制冷
速度随着实时温度的升高而增大,当实时温度低于阈值温度时,半导体制冷器停止工作,实现了系统所预期实现的
功能。在这里插入图片描述

(a)
(b)在这里插入图片描述

图4.3 不同温度情况下的制冷器工作仿真结果:(a)温度高于设定温度2℃;(b) 温度高于设定温度4℃。
4.2 硬件调试
4.2.1 按键电路调试
  本文温控系统中的按键电路的作用是:当按下按键后,可以对设置的温度进行相对应的调整。对按键电路进行
调试时,对加减设定温度的按键进行逐一按下调试,结果能够准确设定并更改阈值温度。
4.2.2 LCD1602液晶显示电路调试
  对LCD液晶显示电路进行调试时,通过不断地利用按键更改阈值温度,DS18B20温度传感器采集到的实时温度,
观察到温度能够正常且准确地显示。
4.2.3 DS18B20温度采集电路调试
  对DS18B20温度传感器进行调试时,用手指紧紧捏住DS18B20温度传感器,观察LCD显示屏上实时温度的变化,结
果发现实时温度随着用手捏的时间增加逐渐升高并最终趋于体温,松手后温度开始下降并逐渐趋于室温,整个过程
温度传感器的响应时间和测温的准确性均达到了预期
4.2.4 半导体制冷器驱动电路调试
  对PWM驱动电路进行调试时,不断的将设定温度降低,观察半导体制冷器制冷功率的变化。当采集温度低于设定
温度时,半导体制冷器不工作,当温度高于设定温度时,半导体制冷器开始工作,此时可以明显地感受到半导体制
冷器一面降温,另一面散热。并且在仿真软件上用示波器观测到半导体制冷器的制冷效果随实际温度差值的改变而
发生改变,达到了预期的设计效果。
  最终调试的结果如图4.4所示,LCD显示屏能够准确显示预期想要显示的信息,包括设定温度(Set temp)和温
度传感器实时采集到的温度(Temp),DS18B20温度传感器也对温度的变化作出迅速的反应,其采集到的温度与实际
温度基本一致,同时按键S1按下时可以调整设定温度,按键S2用于增大设定温度,S3用于减小设定温度,在调试中
按键的反应时间和结果都准确。
图4.4 调试结果在这里插入图片描述

第五章 总结与展望

5.1 总结
  半导体激光器作为目前最为重要的激光光纤通信的光源,解决其会因工作温度过高而导致性能的损坏,进而影
响到使用寿命的问题具有很强的实际意义。因此,找到一种合适的方法来解决这一问题至关重要。
  本文是在前人研究的基础上,以单片机为控制核心,利用温度传感器DS18B20检测半导体激光器实时工作温度,
再结合对定时器中断功能产生的模拟PWM波占空比的调节实现了根据半导体激光器工作温度的不同而调节半导体制冷
器的制冷功率的功能,LCD1602液晶显示屏能连续稳定的显示环境温度和设定温度,并能通过三个独立按键调节不同
的温度阈值,实现了基于单片机的半导体激光器温度控制系统的设计。
5.2 展望
由于本次设计的时间、成本限制以及全球疫情的影响,本系统依旧存在许多方面的不足,主要包括以下几个方面:
1.本系统仅能够对半导体激光器进行降温,无法对其进行升温操作。
2.由于设备限制,难以对半导体制冷器的制冷功率进行系统测量。
3.在定时器延时控制PWM波的方法下,PWM波占空比的变化是一个瞬时的过程,导致半导体激光器制冷功率变化不够
平滑。
希望在之后的学习过程中能够继续精进本文设计的温控系统,后续主要的改进工作为:
1.简化硬件设计,充分利用单片机资源,做到低功耗系统。
2.对软件程序进一步优化,做到对温度更智能的调节。
3.加设升温功能,保证半导体激光器在低温条件下也能正常使用。
4.采用使PWM波形变化更平滑的算法设计该系统,例如PID算法等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值