吳逸飛
摘要:DFB 激光器波形發(fā)生調(diào)制系統(tǒng)和溫度控制系統(tǒng)中軟件設(shè)計(jì)在激光器的發(fā)射光波長(zhǎng)調(diào)制實(shí)驗(yàn)中是極其關(guān)鍵的部分,軟件框架的構(gòu)成以及相關(guān)邏輯的使用與運(yùn)行對(duì)控制硬件實(shí)現(xiàn)相應(yīng)功能起到了至關(guān)重要的作用。本文中軟件框架的編寫仍用Keil5,并基于STM32F1O3實(shí)現(xiàn)一定程度的仿真。下面將介紹下該設(shè)計(jì)整體所應(yīng)用的原理、相應(yīng)的硬件設(shè)施以及軟件系統(tǒng)的主要模塊、流程以及相應(yīng)的程序框架。
關(guān)鍵詞:紅外;硬件系統(tǒng);軟件系統(tǒng);波長(zhǎng);溫度
1 引 ?言
隨著工業(yè)生產(chǎn)效率的爆炸式提升,工業(yè)廢氣的排放量也隨之大幅度增長(zhǎng)。而應(yīng)人們對(duì)于生活環(huán)境質(zhì)量的需求提升,控制廢氣中有害成分、對(duì)于工業(yè)排放氣體的檢測(cè)勢(shì)在必行,氣體成分檢測(cè)技術(shù)已成為一項(xiàng)極為重要的研究課題。于是基于朗伯—比爾定律、紅外光吸收原理進(jìn)行了DFB激光器調(diào)制波長(zhǎng)的設(shè)計(jì)實(shí)驗(yàn)。本文是以DFB激光器的驅(qū)動(dòng)硬件電路方案為依據(jù),設(shè)計(jì)了軟件驅(qū)動(dòng)系統(tǒng),并進(jìn)行了一定程度的仿真與測(cè)試。
2 基本原理
2.1 ?朗伯—比爾定律
又稱比爾定律。比爾-朗伯定律是吸光光度法、比色分析法和光電比色法的定量基礎(chǔ)。其定義為:在理想狀態(tài)下,對(duì)于特定波長(zhǎng)的紅外光照射吸收介質(zhì),在通過(guò)一定厚度的介質(zhì)后,其吸收了一部分的能量,此時(shí)紅外光的光強(qiáng)會(huì)減弱。結(jié)論是吸收介質(zhì)的濃度越大,介質(zhì)越厚,則光束衰減的就更厲害。光被吸收的量正比于光程中產(chǎn)生光吸收的分子數(shù)目。
2.2 ? 紅外吸收式原理
光譜吸收法表明許多氣體分子在紅外波段存在特征吸收。根據(jù)朗伯-比爾定律,特征吸收強(qiáng)度與氣體濃度成正比例關(guān)系。
不同的氣體分子吸收紅外光后,所得的吸收光譜不同。DFB激光器就是就是利用發(fā)射不同中心波長(zhǎng)的紅外光來(lái)檢測(cè)多組分氣體分子成分。
3 硬件基礎(chǔ)
系統(tǒng)以 STM32F103VET 單片機(jī)為核心控制器。硬件系統(tǒng)主要分為兩個(gè)模塊:波形調(diào)制模塊和溫度控制模塊,并增加了簡(jiǎn)單的控制器芯片保護(hù)程序。溫度控制模塊:采用STM32設(shè)定所需溫度值,采用DS18B20溫度傳感器進(jìn)行對(duì)溫度的高精度檢測(cè)并將發(fā)送給STM32控制器,與設(shè)定值送入查問(wèn)放大器后得到偏差信號(hào)。溫度控制器接收到這個(gè)信號(hào)后,通過(guò)內(nèi)部PID控制進(jìn)行處理,改變通過(guò)TEC電流的方向來(lái)控制TEC對(duì)激光器加熱或者降溫。
波形調(diào)制模塊:STM32控制器通過(guò)程序命令控制信號(hào)發(fā)生器芯片產(chǎn)生可調(diào)的低頻三角波形和高頻正弦波形,再將兩個(gè)波形送入加法器形成調(diào)制波形信號(hào)。將調(diào)制信號(hào)送入壓控恒流源電路以驅(qū)動(dòng)激光器。
4 軟件系統(tǒng)設(shè)計(jì)
4.1 ?軟件系統(tǒng)總體結(jié)構(gòu)
基于硬件基礎(chǔ),軟件系統(tǒng)整體框架結(jié)構(gòu)如圖 4-1 所示。分為五個(gè)模塊:波形發(fā)生調(diào)制程序、溫度控制程序、顯示程序、中斷程序以及芯片保護(hù)程序。
4.2 ?波形發(fā)生調(diào)制程序
AD9833具有的數(shù)據(jù)引腳SDATA、時(shí)鐘引腳SCLK和幀同步引腳FSY三線結(jié)構(gòu)與單片機(jī)相連。單片機(jī)傳送數(shù)據(jù)到AD9833的過(guò)程如下:在傳輸串行數(shù)據(jù)的時(shí)候,F(xiàn)SY引腳必須置于低,它是使能引腳,由電平觸發(fā),內(nèi)部邏輯就表示一個(gè)新的數(shù)據(jù)被載入,即低平有效。這時(shí),在時(shí)鐘信號(hào)SCLK的下降沿節(jié)拍下通過(guò)數(shù)據(jù)引腳SDATA進(jìn)行16位串行數(shù)據(jù)的傳輸。單片機(jī)寫數(shù)據(jù)到AD9833時(shí),高位在前,低位在后。
當(dāng)控制寄存器中的D15D14=00時(shí),代表可以寫入數(shù)據(jù)到控制寄存器。將D13(B28)=1,代表可以連續(xù)寫入28位數(shù)據(jù)進(jìn)頻率控制器(頻率寄存器28位),默認(rèn)為先寫入低14位頻率控制字,再寫入高14位數(shù)據(jù)到頻率寄存器。若D13(B28)=0,則表示28位數(shù)據(jù)將分為兩次寫入頻率寄存器。
根據(jù)時(shí)序圖編寫寫入數(shù)據(jù)函數(shù),再根據(jù)AD9833的工作狀態(tài)進(jìn)行操作。主要程序如下:
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);//設(shè)置波形頻率和相位
void AD9837_STARTAll(unsigned short nState); ??//設(shè)置顯示的波形
另外,在STM32F103中通過(guò)軟件程序也可做到通過(guò)軟件編程DA通道直接產(chǎn)生三角以及正弦波形。而后通過(guò)加法電路仍可以實(shí)現(xiàn)產(chǎn)生目標(biāo)信號(hào),以正弦波為例,主要程序如下:
void DAC_Mode_Init(); ?//初始化DAC,開始DAC轉(zhuǎn)換
4.3 ?溫度控制程序
溫度控制的軟件流程如圖 4-3 所示。開始進(jìn)行系統(tǒng)初始化,接著設(shè)定所需要的溫度值。同樣地,為了獲得較高精度的測(cè)量溫度值,使用溫度傳感器DS18B20進(jìn)行激光器的溫度采集。而后在主控制器中獲取溫度傳感器的采集數(shù)據(jù)。將采集樣數(shù)據(jù)進(jìn)行均值濾波。
4.3.1 溫度傳感器DS18B20
DS18B20是常用的數(shù)字溫度傳感器,其輸出的是數(shù)字信號(hào)。DS18B20的讀寫時(shí)序和測(cè)溫原理與DS1820相同,只是得到的溫度值的位數(shù)因分辨率不同而不同,且溫度轉(zhuǎn)換時(shí)的延時(shí)時(shí)間由2s 減為750ms。
使用DS18B20溫度傳感器能夠提高系統(tǒng)的溫度檢測(cè)精度,而且能夠無(wú)需通過(guò)A/D通道計(jì)算轉(zhuǎn)化為相應(yīng)的電壓值,適當(dāng)減小硬件系統(tǒng)以及軟件系統(tǒng)構(gòu)建難度。
4.3.2 溫度傳感器DS18B20的溫度獲取
主機(jī)控制DS18B20完成溫度轉(zhuǎn)換必須經(jīng)過(guò)三個(gè)步驟:初始化、ROM操作指令、存儲(chǔ)器操作指令。通過(guò)DS18B20進(jìn)行A/D轉(zhuǎn)化,獲取相應(yīng)溫度數(shù)據(jù)通過(guò)串口傳輸給STM總控制器,主要C語(yǔ)言程序如下:
void SysTick_Init(); ????????//配置系統(tǒng)滴答計(jì)時(shí)器
void LED_GPIO_Config(void); ????????// LED 端口初始化
void USART_Config(void); ????????//初始化串口1
void DS18B20_Init(void) ????????//初始化DS18B20
void DS18B20_ReadId(u8 ucDs18b20Id); ?// 讀取 DS18B20 的序列號(hào)
void DS18B20_GetTemp_MatchRom(u8 ucDs18b20Id)
//打印通過(guò) DS18B20 序列號(hào)獲取的溫度值
實(shí)驗(yàn)現(xiàn)象:1、串口打印出序列號(hào)和溫度;2、在打印的同時(shí),D3閃爍。
4.3.3 ?D/A 溫度電壓設(shè)定
采用STM32單片機(jī)內(nèi)置的12位DAC通道進(jìn)行設(shè)定溫度值,
直接輸送到 LTC2053 芯片的 Pin-2 引腳。同時(shí),可通過(guò)程序編寫,溫度值顯示在 OLED 液晶屏上。D/A 溫度設(shè)定部分主要的 C 語(yǔ)言程序如下:
void DAc1_Init(void); ????//DAC 通道 1 輸出初始化
void DAc1_Set_Vol(u16 tem)//設(shè)置通道 1 輸出與溫度對(duì)應(yīng)的電壓值,tem:0—4096,代表 0—3.3V
4.4 ?中斷按鍵程序
按由于需要控制三角波、正弦波頻率以及溫度的設(shè)定,所以在外部加上按鍵,通過(guò)中斷控制來(lái)控制其設(shè)定值。因?yàn)镾TM32F106指南者開發(fā)板上自帶電容式按鍵,無(wú)需通過(guò)矩陣鍵盤鍵入即可實(shí)現(xiàn)外部中斷。其中本文進(jìn)行了LED燈翻轉(zhuǎn)外部中斷實(shí)驗(yàn)。
外部中斷按鍵響應(yīng)的主要C語(yǔ)言程序如下:
void LED_GPIO_Config(void)//LED 端口初始化;
void EXTI_Key_Config(void)//初始化EXTI中斷,掃描中斷和觸發(fā)中斷;
4.5 ?芯片保護(hù)程序
由于該系統(tǒng)涉及較多溫度傳感器件,溫度變化較大,且STM32F103芯片對(duì)較敏感。于是采用DMA方式,通過(guò)查詢手冊(cè)得到增設(shè)芯片溫度檢測(cè)程序,用來(lái)實(shí)時(shí)監(jiān)測(cè)溫度保護(hù)芯片。其主要C語(yǔ)言程序如下:
void USART_Config(void) ????//串口GPIO配置,工作參數(shù)配置;
void Temp_ADC1_Init(void) ???//獲取芯片溫度;
5 結(jié)論
本文通過(guò)對(duì)于前人的成果以及相關(guān)文獻(xiàn)的學(xué)習(xí)與研究,對(duì)于基于 DFB 激光器陣列多頻調(diào)制驅(qū)動(dòng)技術(shù)的研究更深入一步,實(shí)現(xiàn)了軟件系統(tǒng)的多模塊化?;诖耍熊浖糠譃槲鍌€(gè)模塊:波形發(fā)生調(diào)制程序、溫度控制程序、顯示程序、中斷程序以及芯片保護(hù)程序。通過(guò)對(duì)軟件框架的編寫與相關(guān)邏輯的思考,對(duì)課題實(shí)驗(yàn)有了一定的自我解讀,較好的完成了DFB激光器的驅(qū)動(dòng)軟件系統(tǒng)的設(shè)計(jì)。
參考文獻(xiàn)
[1] 趙海蘭,趙祥偉. 智能溫度傳感器DS18B20的原理與應(yīng)用 [J]. 現(xiàn)代電子技術(shù). 2003(14).
[2] 曾羽西. 基于 DFB 激光器陣列多頻調(diào)制驅(qū)動(dòng)技術(shù)的研究 [D]. 青島:中國(guó)石油大學(xué),2018:6-14.
[3] 張萍.基于DDS數(shù)字信號(hào)發(fā)生器的設(shè)計(jì)[J].信息化研究,2016,42(05):66-69.