吴逸飞
摘要:DFB 激光器波形发生调制系统和温度控制系统中软件设计在激光器的发射光波长调制实验中是极其关键的部分,软件框架的构成以及相关逻辑的使用与运行对控制硬件实现相应功能起到了至关重要的作用。本文中软件框架的编写仍用Keil5,并基于STM32F1O3实现一定程度的仿真。下面将介绍下该设计整体所应用的原理、相应的硬件设施以及软件系统的主要模块、流程以及相应的程序框架。
关键词:红外;硬件系统;软件系统;波长;温度
1 引 言
随着工业生产效率的爆炸式提升,工业废气的排放量也随之大幅度增长。而应人们对于生活环境质量的需求提升,控制废气中有害成分、对于工业排放气体的检测势在必行,气体成分检测技术已成为一项极为重要的研究课题。于是基于朗伯—比尔定律、红外光吸收原理进行了DFB激光器调制波长的设计实验。本文是以DFB激光器的驱动硬件电路方案为依据,设计了软件驱动系统,并进行了一定程度的仿真与测试。
2 基本原理
2.1 朗伯—比尔定律
又称比尔定律。比尔-朗伯定律是吸光光度法、比色分析法和光电比色法的定量基础。其定义为:在理想状态下,对于特定波长的红外光照射吸收介质,在通过一定厚度的介质后,其吸收了一部分的能量,此时红外光的光强会减弱。结论是吸收介质的浓度越大,介质越厚,则光束衰减的就更厉害。光被吸收的量正比于光程中产生光吸收的分子数目。
2.2 红外吸收式原理
光谱吸收法表明许多气体分子在红外波段存在特征吸收。根据朗伯-比尔定律,特征吸收强度与气体浓度成正比例关系。
不同的气体分子吸收红外光后,所得的吸收光谱不同。DFB激光器就是就是利用发射不同中心波长的红外光来检测多组分气体分子成分。
3 硬件基础
系统以 STM32F103VET 单片机为核心控制器。硬件系统主要分为两个模块:波形调制模块和温度控制模块,并增加了简单的控制器芯片保护程序。温度控制模块:采用STM32设定所需温度值,采用DS18B20温度传感器进行对温度的高精度检测并将发送给STM32控制器,与设定值送入查问放大器后得到偏差信号。温度控制器接收到这个信号后,通过内部PID控制进行处理,改变通过TEC电流的方向来控制TEC对激光器加热或者降温。
波形调制模块:STM32控制器通过程序命令控制信号发生器芯片产生可调的低频三角波形和高频正弦波形,再将两个波形送入加法器形成调制波形信号。将调制信号送入压控恒流源电路以驱动激光器。
4 软件系统设计
4.1 软件系统总体结构
基于硬件基础,软件系统整体框架结构如图 4-1 所示。分为五个模块:波形发生调制程序、温度控制程序、显示程序、中断程序以及芯片保护程序。
4.2 波形发生调制程序
AD9833具有的数据引脚SDATA、时钟引脚SCLK和帧同步引脚FSY三线结构与单片机相连。单片机传送数据到AD9833的过程如下:在传输串行数据的时候,FSY引脚必须置于低,它是使能引脚,由电平触发,内部逻辑就表示一个新的数据被载入,即低平有效。这时,在时钟信号SCLK的下降沿节拍下通过数据引脚SDATA进行16位串行数据的传输。单片机写数据到AD9833时,高位在前,低位在后。
当控制寄存器中的D15D14=00时,代表可以写入数据到控制寄存器。將D13(B28)=1,代表可以连续写入28位数据进频率控制器(频率寄存器28位),默认为先写入低14位频率控制字,再写入高14位数据到频率寄存器。若D13(B28)=0,则表示28位数据将分为两次写入频率寄存器。
根据时序图编写写入数据函数,再根据AD9833的工作状态进行操作。主要程序如下:
void AD9833_GPIO_Config(); //初始化AD9833端口
void AD9833_Init(); //AD9833初始化
void AD9837_ConfigAll(unsigned long nFreq1f,unsigned long nPhase1f,unsigned long nFreq2f,unsigned long nPhase2f,unsigned long nFreqlddrv,unsigned long nPhaseldrv);//设置波形频率和相位
void AD9837_STARTAll(unsigned short nState); //设置显示的波形
另外,在STM32F103中通过软件程序也可做到通过软件编程DA通道直接产生三角以及正弦波形。而后通过加法电路仍可以实现产生目标信号,以正弦波为例,主要程序如下:
void DAC_Mode_Init(); //初始化DAC,开始DAC转换
4.3 温度控制程序
温度控制的软件流程如图 4-3 所示。开始进行系统初始化,接着设定所需要的温度值。同样地,为了获得较高精度的测量温度值,使用温度传感器DS18B20进行激光器的温度采集。而后在主控制器中获取温度传感器的采集数据。将采集样数据进行均值滤波。
4.3.1 温度传感器DS18B20
DS18B20是常用的数字温度传感器,其输出的是数字信号。DS18B20的读写时序和测温原理与DS1820相同,只是得到的温度值的位数因分辨率不同而不同,且温度转换时的延时时间由2s 减为750ms。
使用DS18B20温度传感器能够提高系统的温度检测精度,而且能够无需通过A/D通道计算转化为相应的电压值,适当减小硬件系统以及软件系统构建难度。
4.3.2 温度传感器DS18B20的温度获取
主机控制DS18B20完成温度转换必须经过三个步骤:初始化、ROM操作指令、存储器操作指令。通过DS18B20进行A/D转化,获取相应温度数据通过串口传输给STM总控制器,主要C语言程序如下:
void SysTick_Init(); //配置系统滴答计时器
void LED_GPIO_Config(void); // LED 端口初始化
void USART_Config(void); //初始化串口1
void DS18B20_Init(void) //初始化DS18B20
void DS18B20_ReadId(u8 ucDs18b20Id); // 读取 DS18B20 的序列号
void DS18B20_GetTemp_MatchRom(u8 ucDs18b20Id)
//打印通过 DS18B20 序列号获取的温度值
实验现象:1、串口打印出序列号和温度;2、在打印的同时,D3闪烁。
4.3.3 D/A 温度电压设定
采用STM32单片机内置的12位DAC通道进行设定温度值,
直接输送到 LTC2053 芯片的 Pin-2 引脚。同时,可通过程序编写,温度值显示在 OLED 液晶屏上。D/A 温度设定部分主要的 C 语言程序如下:
void DAc1_Init(void); //DAC 通道 1 输出初始化
void DAc1_Set_Vol(u16 tem)//设置通道 1 输出与温度对应的电压值,tem:0—4096,代表 0—3.3V
4.4 中断按键程序
按由于需要控制三角波、正弦波频率以及温度的设定,所以在外部加上按键,通过中断控制来控制其设定值。因为STM32F106指南者开发板上自带电容式按键,无需通过矩阵键盘键入即可实现外部中断。其中本文进行了LED灯翻转外部中断实验。
外部中斷按键响应的主要C语言程序如下:
void LED_GPIO_Config(void)//LED 端口初始化;
void EXTI_Key_Config(void)//初始化EXTI中断,扫描中断和触发中断;
4.5 芯片保护程序
由于该系统涉及较多温度传感器件,温度变化较大,且STM32F103芯片对较敏感。于是采用DMA方式,通过查询手册得到增设芯片温度检测程序,用来实时监测温度保护芯片。其主要C语言程序如下:
void USART_Config(void) //串口GPIO配置,工作参数配置;
void Temp_ADC1_Init(void) //获取芯片温度;
5 结论
本文通过对于前人的成果以及相关文献的学习与研究,对于基于 DFB 激光器阵列多频调制驱动技术的研究更深入一步,实现了软件系统的多模块化。基于此,列软件部分为五个模块:波形发生调制程序、温度控制程序、显示程序、中断程序以及芯片保护程序。通过对软件框架的编写与相关逻辑的思考,对课题实验有了一定的自我解读,较好的完成了DFB激光器的驱动软件系统的设计。
参考文献
[1] 赵海兰,赵祥伟. 智能温度传感器DS18B20的原理与应用 [J]. 现代电子技术. 2003(14).
[2] 曾羽西. 基于 DFB 激光器阵列多频调制驱动技术的研究 [D]. 青岛:中国石油大学,2018:6-14.
[3] 张萍.基于DDS数字信号发生器的设计[J].信息化研究,2016,42(05):66-69.