HID燈電子鎮(zhèn)流器控制電路和數(shù)字可尋址照明接口(DALI)的通信接口規(guī)范的FPGA實(shí)現(xiàn)
項(xiàng)目背景及可行性分析
- 項(xiàng)目名稱、項(xiàng)目的主要內(nèi)容及目前的進(jìn)展情況
答:項(xiàng)目名稱為:HID燈電子鎮(zhèn)流器控制電路和數(shù)字可尋址照明接口(DALI)的通信接口規(guī)范的FPGA實(shí)現(xiàn)。
主要內(nèi)容:
(1)、通過A/D采樣電子鎮(zhèn)流器的Buck電路得到電壓和電流的數(shù)字值。運(yùn)用數(shù)字電路構(gòu)成PID算法,對(duì)采樣數(shù)據(jù)進(jìn)行處理,產(chǎn)生PWM脈沖信號(hào),實(shí)現(xiàn)對(duì)HID燈的恒流和恒功率控制,以達(dá)到精確調(diào)光和穩(wěn)定工作。
(2)、將DALI通訊協(xié)議融合到FPGA中去,達(dá)到主計(jì)算機(jī)對(duì)HID燈電子鎮(zhèn)流器組群的控制和通信,以實(shí)現(xiàn)根據(jù)實(shí)際環(huán)境和需要對(duì)HID燈的精確調(diào)光和狀態(tài)查詢。
目前進(jìn)展情況:DALI部分主程序已經(jīng)完成,編譯通過,并正在仿真調(diào)試。PID部分正準(zhǔn)備開始。
- 項(xiàng)目關(guān)鍵技術(shù)及創(chuàng)新點(diǎn)的論述;
答:(1)、用FPGA代替MCU來實(shí)現(xiàn)對(duì)HID電子鎮(zhèn)流器的控制及調(diào)光。
(2)、將DALI通訊協(xié)議融入控制芯片,方便外界對(duì)電子鎮(zhèn)流器的監(jiān)測和控制。
(3)、用脈寬調(diào)制(PWM)技術(shù)實(shí)現(xiàn)對(duì)HID燈的精確調(diào)光。
- 技術(shù)成熟性和可靠性論述:
答:現(xiàn)有HID電子鎮(zhèn)流器的控制一般是用MCU加專用控制芯片來實(shí)現(xiàn),然而,現(xiàn)階段絕大多數(shù)比較成熟的電子鎮(zhèn)流器的控制芯片都是針對(duì)熒光燈的,針對(duì)HID燈的電子鎮(zhèn)流器的控制芯片幾乎呈現(xiàn)空白狀態(tài)。但我們對(duì)HID燈電子鎮(zhèn)流器比較熟悉,因此我們認(rèn)為我們的設(shè)計(jì)具有可實(shí)現(xiàn)性。
經(jīng)過系內(nèi)專家及相關(guān)資料論證,我們的設(shè)計(jì)具有可靠性,具體可靠性我們會(huì)在整個(gè)設(shè)計(jì)完成后,配合已設(shè)計(jì)好的外圍電路加以確認(rèn)。
項(xiàng)目實(shí)施方案
1.方案基本功能框圖及描述
用框圖的方式并加以簡單的描述簡述實(shí)施本項(xiàng)目的技術(shù)方案。
以下第一幅圖是我們的DALI的系統(tǒng)功能框圖,所謂DALI(Digital Addressable Lighting Interface),是一種數(shù)字式可尋址照明通訊協(xié)議。
由圖可知,我們的系統(tǒng)采用放電型上電式復(fù)位的結(jié)構(gòu)。上電后正常情況是rst=1,從而對(duì)各信號(hào)進(jìn)行賦初值。為了防止正常工作期間,再次發(fā)生rst=1的誤復(fù)位操作,我們進(jìn)而采用了先對(duì)rst采樣并檢測的措施:如果rst=1,執(zhí)行200ms的延時(shí),而后再次檢測rst,如還為1,則非誤觸發(fā);否則就有可能是干擾等產(chǎn)生的誤觸發(fā),對(duì)此我們不做響應(yīng)。
基于主機(jī)在每次發(fā)送address 和command之前,會(huì)在IRQ引腳對(duì)我們的系統(tǒng)進(jìn)行下降沿觸發(fā),因此我們?cè)趶?fù)位后就等待IRQ下降沿觸發(fā)信號(hào)。如果被觸發(fā),我們就開始接收數(shù)據(jù),進(jìn)入接收環(huán)節(jié)。
在進(jìn)行對(duì)接收環(huán)節(jié)的描述之前,我們先來簡要地說明一下Dali控制器命令的數(shù)據(jù)幀結(jié)構(gòu)。Dali控制器命令的數(shù)據(jù)幀結(jié)構(gòu)包括一個(gè)起始位,八個(gè)地址位 (第一字節(jié)),八個(gè)數(shù)據(jù)/指令位 (第二字節(jié)),和兩個(gè)停止位。第一字節(jié)為address字節(jié),第二字節(jié)為command字節(jié)??梢钥闯鯠ali的控制命令異常簡單,那么是否能保證不出現(xiàn)錯(cuò)誤,并實(shí)現(xiàn)精確調(diào)光呢?
答案是令人放心的。因?yàn)镈ali數(shù)據(jù)傳送采用以8bit為載體,若前4位為0,后4位為1,則中間的上升沿來表示1;若前4位為1,后4位為0,則中間的下降沿來表示0的傳遞信號(hào)方式。因此,對(duì)數(shù)據(jù)0和1的傳送非常穩(wěn)定,不容易受到干擾。此外,每幀數(shù)據(jù)還包含了:一個(gè)上升沿作為起始位,兩個(gè)字節(jié)作為address和command,兩位連續(xù)的高電平作為結(jié)束位(在實(shí)際中應(yīng)為2*8bit的高電平)??偣布悠饋韺?shí)際上是發(fā)送了152bit的數(shù)據(jù)。
進(jìn)入接收環(huán)節(jié),我們才算是開始了真正意義上的Dali程序環(huán)節(jié)。我們采用rec_bit代表我們已經(jīng)接收的實(shí)際bit數(shù)目(也即接收到的addresss和command命令中的位數(shù)),采用rec_position作為每一個(gè)bit代表的8bit中所接收的數(shù)據(jù)位。在這個(gè)環(huán)節(jié)中我們逐位接收數(shù)據(jù),當(dāng)接收過程中發(fā)生錯(cuò)誤,則停止接收,并返回判斷IRQ是否觸發(fā)狀態(tài). 如果整個(gè)接收過程(起始位,中間位,終止位)全無錯(cuò)誤,則向RAM中相應(yīng)字節(jié)寫入”00000001”,標(biāo)志可以進(jìn)入數(shù)據(jù)處理階段(handle_data)。.
數(shù)據(jù)處理可根據(jù)address 和command的不同分為: 燈調(diào)光專用指令, 普通指令, 特殊指令三種 :
由于我們接收的是一個(gè)十六位數(shù)據(jù),并且其中前八位表示地址(8bit地址結(jié)構(gòu)為YAAAAAAS),后八位表示command 和調(diào)光值,當(dāng)接收到的十六位數(shù)據(jù)的最高位,即Y=0時(shí)表示為短地址,Y=1時(shí)表示為組地址,S為選擇標(biāo)志位,當(dāng)S=0時(shí)表示后面的是調(diào)光等級(jí)值,S=1時(shí)表示后面的是指令
燈調(diào)光專用指令(lamp_setlevel),我們是做成元件例化(component)的形式,因此它并行于其他process。它包含了所要達(dá)到的調(diào)光值,最大調(diào)光值,最小調(diào)光值等輸入值以及越限錯(cuò)誤,現(xiàn)在的調(diào)光值(也即前次所達(dá)到的調(diào)光值),極值調(diào)光值判斷和tch0,tch1等輸出值。當(dāng)所要達(dá)到的調(diào)光值為FF時(shí),表示的是demo模式;當(dāng)為00時(shí),表示的是OFF模式,即關(guān)燈;當(dāng)FE時(shí),表示極值調(diào)光值,此時(shí)極值調(diào)光值判斷置1。其他值時(shí),根據(jù)所要達(dá)到的調(diào)光值的不同,tch0或tch1的值也置不同的值,這兩個(gè)輸出將是PWM的輸入信號(hào)。這里具體的就不說了,請(qǐng)?jiān)斠姵绦騦amp_setlevel。
普通指令,(normal command) 則分為間接功率控制命令(indirect arc power control commands),整體配置命令(general configuration),功率參數(shù)設(shè)置(arc power parameters settings),系統(tǒng)參數(shù)設(shè)置(system parameters settings),詢問相關(guān)狀態(tài)信息(queries related to status information),詢問相關(guān)功率參數(shù)設(shè)置(queries related to arc power parameters settings),詢問相關(guān)系統(tǒng)參數(shù)設(shè)置(queries related to system parameters settings) 等。
以下我們簡單介紹程序中一些二進(jìn)制代碼所對(duì)應(yīng)的命令,列表如下:
Indirect arc power control commands | |
0000 0000 | OFF |
0000 0001 | UP |
0000 0010 | DOWN |
0000 0011 | STEP_UP |
0000 0100 | STEP_DOWN |
0000 0101 | RECALL_MAX_LEVEL |
0000 0110 | RECALL_MIN_LEVEL |
0000 0111 | STEP_DOWN_AND_OFF |
0000 1000 | ON_AND_STEP_UP |
0001 0000 | GO_TO_SCENE |
General configuration commands | |
0010 0000 | RESET |
0010 0001 | STORE_ACTUAL_LEVEL_IN_THE_DTR |
Arc power parameters settings | |
0010 1010 | STORE_THE_DTR_AS_MAX_LEVEL |
0010 1011 | STORE_THE_DTR_AS_MIN_LEVEL |
0010 1100 | STORE_THE_DTR_AS_SYSTEM_FALLURE_LEVEL |
0010 1101 | STORE_THE_DTR_AS_POWER_ON_LEVEL |
0010 1110 | STORE_THE_DTR_AS_FADE_TIME |
0010 1111 | STORE_THE_DTR_AS_FADE_RATE |
0100 0000 | STORE_THE_DTR_AS_SCENE |
System parameters settings | |
0101 0000 | REMOVE_FROM_SCENE |
1000 0000 | STORE_DTR_AS_SHORT_ADDRESS |
Queries related to status information | |
1001 0000 | QUERY_STATUS |
1001 0001 | QUERY_BALLAST |
1001 0010 | QUERY_LAMP_FALLURE |
1001 0011 | QUERY_POWER_ON |
1001 0100 | QUERY_LIMIT_ERROR |
1001 0101 | QUERY_RESET_STATE |
1001 0110 | QUERY_MISSING_SHORT_ADDRESS |
1001 0111 | QUERY_VERSION_NUMBER |
1001 1000 | QUERY_CONTENT_DTR |
1001 1001 | QUERY_DEVICE_TYPE |
1001 1010 | QUERY_PHYSICAL_MINIMUM_LEVEL |
1001 1011 | QUERY_POWER_FALLURE |
Queries related to arc power parameters settings | |
1010 0000 | QUERY_ACTUAL_LEVEL |
1010 0001 | QUERY_MAX_LEVEL |
1010 0010 | QUERY_MIN_LEVEL |
1010 0011 | QUERY_POWER_ON_LEVEL |
1010 0100 | QUERY_SYSTEM_FALLURE_LEVEL |
1010 0101 | QUERY_FADE |
Queries related to system parameters settings | |
1011 0000 | QUERY_SCENE_LEVEL |
1100 0010 | QUERY_RANDOM_ADDRESS_H |
1100 0011 | QUERY_RANDOM_ADDRESS_M |
1100 0100 | QUERY_RANDOM_ADDRESS_L |
特殊指令是廣播發(fā)送的,所有的鎮(zhèn)流器都能收到,其形式為address的八位內(nèi)容為”101XXXX1”或”110XXXX1”.而且每條后邊跟隨著的八位command中存儲(chǔ)的是對(duì)應(yīng)的value(格式為:A1 00; A3 XX;A5 XX;A7 00; A9 00; AB 00;B1 HH;B3 MM;B5 LL;B7 XX;B9 XX; BB 00;BD 00 .共有十三條) 具體說來: A1 00 是終止特殊進(jìn)程的指令,執(zhí)行后所有特殊模式的處理進(jìn)程都會(huì)被終止(以address_time=00000000的方式實(shí)現(xiàn)); A3 XX 將會(huì)向DTR中存儲(chǔ)command的八位數(shù)值”XXXXXXXX “; A5 XX是初始化指令,這一指令在接下來的100毫秒內(nèi)將被再次接收到; A7 00 是產(chǎn)生隨機(jī)序列指令,鎮(zhèn)流器將根據(jù)它產(chǎn)生一個(gè)新的隨機(jī)地址,共有24位,分為高,中,低三個(gè)字節(jié)存放在三個(gè)存儲(chǔ)器中.我們采用三個(gè)時(shí)鐘(clk_main, clk_dali, clk_20)驅(qū)動(dòng)的三個(gè)循環(huán)計(jì)數(shù)器計(jì)數(shù),當(dāng)需要產(chǎn)生隨機(jī)地址時(shí),把當(dāng)時(shí)的計(jì)數(shù)值賦給三個(gè)存儲(chǔ)器即可; A9 00是比較指令,鎮(zhèn)流器會(huì)將已存儲(chǔ)在search_address_h, search_address_m, search_address_l中的組合尋址地址(由主機(jī)發(fā)來的)與它的隨機(jī)地址比較,如果隨機(jī)地址小于或等于組合尋址地址,則鎮(zhèn)流器不被撤銷,回答YES(answer=11111111); AB 00 是撤銷指令,也即隨機(jī)地址和組合尋址地址相等的鎮(zhèn)流器將被撤銷(因?yàn)槎痰刂芬呀?jīng)確定)而不再響應(yīng)比較指令; B1 HH,B3 MM,B5 LL 分別是將command中的數(shù)值存入search_address_h, search_address_m, search_address_l; B7 XX實(shí)際為1011 0111 0AAAAAA1,執(zhí)行時(shí)如果鎮(zhèn)流器被選中,則會(huì)將收到的6位地址保存為它的短地址(被選中的條件是:1.鎮(zhèn)流器的隨機(jī)地址和組合尋址地址相等 或者2.燈具和鎮(zhèn)流器之間沒有連接,則在接收到指令BD 00后,鎮(zhèn)流器就會(huì)被物理選擇探測到) [注意:當(dāng)B7 XX為1011 0111 01111111 時(shí),短地址將被刪除.]; B9 XX 是確認(rèn)短地址,當(dāng)接收到的短地址和鎮(zhèn)流器自身的短地址相同則回答YES; BB 00 如果鎮(zhèn)流器被選中,則會(huì)向主機(jī)回發(fā)短地址(0AAAAAA1); BD 00 執(zhí)行此指令時(shí),鎮(zhèn)流器被置為物理選擇模式(selection=00000001),這一模式下不能進(jìn)行組合尋址地址和隨機(jī)地址的比較.
接著就是發(fā)送這一塊了。前面對(duì)flag(也即dataout1信號(hào))的02的置位,使得發(fā)送得以進(jìn)行。于是,在clk_dali時(shí)鐘上升沿的觸發(fā)下,發(fā)送環(huán)節(jié)開始串行輸出。在這里,Dali數(shù)據(jù)傳送仍采用以8bit為載體,若前4位為0,后4位為1,則中間的上升沿來表示1;若前4位為1,后4位為0,則中間的下降沿來表示0的傳遞信號(hào)方式(這些在程序中有詳細(xì)的發(fā)送步驟描述,恕不多敘)。值得注意的是:
- answer是8bit的輸出,它的串行輸出必須一步步的執(zhí)行,因此用temp_value來記錄每一位的值,并按照Dali數(shù)據(jù)傳送規(guī)則傳出。
send_position與rec_position有些不同,send_position是一直加上去的,沒有清零。這樣,在send_position=24時(shí),開始起始位上升沿的輸出,到27bit結(jié)束,在從28到31bit是下降沿的輸出。然后從32bit起,開始數(shù)據(jù)傳遞。當(dāng)?shù)竭_(dá)96bit時(shí)開始結(jié)束位的16bit高電平,然后再在112bit對(duì)flag(dataout1)和send_position清零。
上圖是我們聯(lián)合主控計(jì)算機(jī),運(yùn)用DALI通訊協(xié)議,進(jìn)行HID燈恒功率工作調(diào)節(jié)的PID算法框圖。
BUCK電路是電子鎮(zhèn)流器的逆變電路,通過對(duì)它采樣可得燈的工作電壓與電流瞬時(shí)值,我們先經(jīng)過濾波網(wǎng)絡(luò),LEM隔離和二階濾波電路,而后進(jìn)行采樣并A/D轉(zhuǎn)換,得到十位的數(shù)字值,然后用預(yù)存儲(chǔ)的pref 與所得的電壓值作除法,得到電流參考值,并與所采樣的電流值比較作差,得到誤差e(k),然后通過圖示的pi算法分別進(jìn)行乘法(*KP)和累加()后乘法(*KI),然后將兩者所得結(jié)果再作加法,所得U(k)經(jīng)圖示步驟轉(zhuǎn)化為PWM脈寬變化,進(jìn)而控制功率管的開關(guān)時(shí)間,減小誤差,實(shí)現(xiàn)負(fù)反饋,最終達(dá)到恒功率控制。
2.需要的開發(fā)平臺(tái)
實(shí)現(xiàn)本方案所需要的基本功能、功能、接口;
所需要的目標(biāo)FPGA開發(fā)平臺(tái),簡述為什么需要此平臺(tái);
是否需要其它配套的開發(fā)工具;
答:開發(fā)平臺(tái):Spartan-3E,50萬門。原因:有足夠的門,并且自帶A/D,D/A,有較高的運(yùn)行速度,能夠?qū)?shù)據(jù)進(jìn)行及時(shí)的處理。
實(shí)現(xiàn)本方案所需要的基本功能、功能、接口:Flash,DRAM,SRAM,USB2.0,AD,DA,LED顯示,RS-232。
其它配套的開發(fā)工具:ISE8.2i 配套的modelsim
3.方案實(shí)施過程中需要開發(fā)的模塊
在本方案中需要研制、開發(fā)的功能主要模塊,以及開發(fā)的方式
答:DALI模塊,PID模塊。
先用VHDL在ISE8.2i對(duì)DALI和PID模塊進(jìn)行編程描述,并在時(shí)序仿真及布局布線后,生成電路網(wǎng)表,最終燒寫進(jìn)FPGA實(shí)驗(yàn)板中,實(shí)現(xiàn)電路。
4.系統(tǒng)最終要達(dá)到的性能指標(biāo),論述本項(xiàng)目最終完成時(shí)所設(shè)想達(dá)到的目標(biāo)。
答:按照DALI的通訊協(xié)議進(jìn)行正確的數(shù)據(jù)接受,發(fā)送和處理。對(duì)HID進(jìn)行有效而精確的功率調(diào)制,并使其能夠穩(wěn)定工作。
需要的其它資源
1.設(shè)計(jì)輸入輸出功能子板
答:子板功能描述:具有十位以上的A/D,D/A轉(zhuǎn)換功能,多個(gè)LED,支持JTAG數(shù)據(jù)傳送,20M以上的晶振時(shí)鐘若干,USB2.0接口。
接口說明:USB2.0接口,具有十位以上的A/D,D/A轉(zhuǎn)換接口各兩個(gè)以上。
2.測試設(shè)備:萬用表、示波器、邏輯分析儀等;250W的HID燈及其電子整流器、mosfet等電路元件
3.仿真,開發(fā)工具:ISE8.2i 和配套的modelsim。
評(píng)論