王夢(mèng)迪, 張麗蕓, 華 金, 沈洪濱
(上海船舶運(yùn)輸科學(xué)研究所艦船自動(dòng)化系統(tǒng)事業(yè)部,上海200135)
隨著觸摸傳感器技術(shù)的迅速發(fā)展,感應(yīng)觸摸式人機(jī)操作板在工業(yè)控制領(lǐng)域得到越來越廣泛的應(yīng)用。感應(yīng)觸摸式人機(jī)操作板采用感應(yīng)觸摸式按鍵,與傳統(tǒng)的機(jī)械微動(dòng)開關(guān)按鍵和塑料薄膜按鍵相比,沒有任何機(jī)械部件,不會(huì)磨損,可靠性高,能降低后期維護(hù)成本。感應(yīng)觸摸式按鍵感應(yīng)部分可放置在感應(yīng)觸摸式人機(jī)操作板面板的后面,起到防水防潮的作用。感應(yīng)觸摸式人機(jī)操作板所有按鍵的大小和形狀可任意設(shè)計(jì),面板外形美觀時(shí)尚,可從根本上達(dá)到機(jī)械面板、薄膜面板和金屬面板無法達(dá)到的效果。在艦船自動(dòng)化領(lǐng)域:Konsberg公司的延伸報(bào)警模塊采用電容感應(yīng)觸摸式按鍵;常熟瑞特公司的某電機(jī)集中控制系統(tǒng)應(yīng)用觸摸鍵盤。當(dāng)前中國遠(yuǎn)洋海運(yùn)集團(tuán)有限公司的集裝箱船上配置的航行燈信號(hào)燈板和甲板照明控制板均采用感應(yīng)觸摸式按鍵,提高了外觀設(shè)計(jì)的靈活性和產(chǎn)品的品質(zhì)。當(dāng)前國內(nèi)的監(jiān)測(cè)報(bào)警人機(jī)操作板大多是由機(jī)械鍵盤、分立的應(yīng)答消聲按鈕和蜂鳴器組成的,風(fēng)格一致,整體不夠美觀,按鍵按鈕沒有背光調(diào)節(jié)功能。對(duì)此,本文結(jié)合實(shí)際應(yīng)用情況,設(shè)計(jì)一款基于感應(yīng)觸摸式按鍵技術(shù)的監(jiān)測(cè)報(bào)警人機(jī)操作板。
感應(yīng)觸摸式按鍵在本質(zhì)上是PCB板上一個(gè)面積稍大的覆銅焊盤,與四周結(jié)構(gòu)組成感應(yīng)電容,當(dāng)人的手指直接或通過導(dǎo)電材料觸摸該按鍵時(shí),感應(yīng)電容的值會(huì)發(fā)生變化,從而判斷有沒有按鍵操作。
感應(yīng)觸摸式按鍵被按下前后等效電容變化情況見圖1。當(dāng)人的手指沒有觸摸到焊盤時(shí),PCB板上的焊盤與地面形成的感應(yīng)電容值是一個(gè)固定不變的值CB,即總感應(yīng)電容CS=CB。當(dāng)人的手指觸摸到焊盤時(shí),手指會(huì)與該焊盤形成一個(gè)耦合電容CF,該耦合電容CF會(huì)疊加到焊盤與地面形成的感應(yīng)電容CB上,從而改變感應(yīng)電容值,即總感應(yīng)電容CS=CB+CS。當(dāng)人的手指脫離焊盤時(shí),手指與該焊盤形成的耦合電容消失,即總感應(yīng)電容CS=CB。當(dāng)檢測(cè)電路檢測(cè)到的感應(yīng)電容值達(dá)到設(shè)定的閾值CT時(shí),認(rèn)定操作觸摸感應(yīng)式按鍵有效,執(zhí)行相應(yīng)的指令,如點(diǎn)亮或關(guān)閉LED燈。

圖1 感應(yīng)觸摸式按鍵被按下前后等效電容變化情況
周立功公司推出的電容感應(yīng)觸摸式按鍵方案采用外圍RC電路加軟件檢測(cè)技術(shù),集成FIR濾波算法,利用MCU的GPIO口和內(nèi)部定時(shí)器測(cè)量按鍵外部電容的變化。該方案雖然具有良好的抗干擾能力,但占用MCU的資源過多,浪費(fèi)機(jī)器時(shí)間,對(duì)于低成本、運(yùn)算能力較弱的MCU單元而言更為明顯。ST公司推出的基于STM8系列8位通用微控制器平臺(tái)的電容式觸摸感應(yīng)方案無需增加專用觸摸芯片,也利用RC電路的充放電時(shí)間檢測(cè)人體觸摸帶來的電容變化,實(shí)現(xiàn)電容式觸摸感應(yīng)功能,但該方案的靈活性不夠,不適于多點(diǎn)觸摸。
本文選用臺(tái)灣通泰公司的感應(yīng)觸摸式按鍵解決方案。觸摸鍵盤芯片選用TTP223Ton TouchTM(一款小封裝單點(diǎn)電容觸摸式按鍵檢測(cè)芯片,以下簡(jiǎn)稱“TTP223”);觸摸鼠標(biāo)芯片選用TTP229Ton TouchTM(一款多點(diǎn)電容觸摸式按鍵檢測(cè)芯片,以下簡(jiǎn)稱“TTP229”)。這2款芯片無需外接其他電路,可達(dá)到穩(wěn)定的觸摸檢測(cè)效果,觸摸檢測(cè)PAD的大小可依據(jù)不同的靈敏度設(shè)計(jì)在合理的范圍內(nèi),并提供低功耗模式,具有自動(dòng)校準(zhǔn)功能[1]。
感應(yīng)觸摸式監(jiān)測(cè)報(bào)警人機(jī)操作板由觸摸鍵盤、觸摸鼠標(biāo)、監(jiān)測(cè)報(bào)警、USBHUB和背光調(diào)節(jié)電路組成(見圖2),能外接其他USB設(shè)備。監(jiān)測(cè)報(bào)警能實(shí)現(xiàn)系統(tǒng)故障的報(bào)警,通過判斷開關(guān)量輸入值控制單元的狀態(tài)控制蜂鳴器輸出,系統(tǒng)報(bào)警時(shí)蜂鳴器響,消警時(shí)蜂鳴器關(guān)閉。此外,感應(yīng)觸摸式監(jiān)測(cè)報(bào)警人機(jī)操作板還具有應(yīng)答消聲功能,并提供故障消息列表按鍵接口。

圖2 感應(yīng)觸摸式監(jiān)測(cè)報(bào)警人機(jī)操作板組成
MCU核心芯片選用NXP公司的LPC1768微控制器,具有功耗低、功能強(qiáng)、效率高和成本低等優(yōu)點(diǎn)。LPC1768基于Cortex-M3內(nèi)核,最高頻率100 MHz,片內(nèi)集成64 KB RAM、512 KB Flash、CAN控制器、SPI控制器、I2C控制器、USB控制器和以太網(wǎng)控制器等外設(shè)資源,無需外接其他專用芯片即可滿足系統(tǒng)的各項(xiàng)功能和性能指標(biāo)要求。
圖3為感應(yīng)觸模式按鍵及背光調(diào)節(jié)電路原理圖,TTP223僅支持單鍵有效,感應(yīng)觸摸式按鍵K1可直接與TTP223連接,無需增加其他外圍器件。TTP223的輸出模式見表1,TTP223的輸出通過AHLB引腳選擇高電平或低電平有效,通過TOG引腳選擇直接模式或觸發(fā)模式。圖3中TTP223的輸出配置為直接模式,低電平有效。OUT1直接連接到LPC1768微控制器,在沒有按鍵操作時(shí)OUT1為高電平,當(dāng)人的手指觸摸到K1時(shí)OUT1為低電平,因此LPC1768微控制器直接讀取GPIO值即可判斷按鍵是否被操作。

圖3 感應(yīng)觸摸式按鍵及背光調(diào)節(jié)電路原理圖

表1 TTP223的輸出模式
圖3中,背光調(diào)節(jié)電路利用MOS管的導(dǎo)通原理,通過電位器接口輸出可變化調(diào)光電壓Vadj,當(dāng)按鍵沒有被觸摸時(shí),OUT1為高電平,1T1截止,1T2導(dǎo)通,GREEN燈點(diǎn)亮;當(dāng)按鍵被觸摸時(shí),OUT1為低電平,1T1導(dǎo)通,1T2截止,RED燈點(diǎn)亮。
TTP229支持8鍵或16鍵,同時(shí)支持單鍵或多鍵有效,其中:8鍵為固定IO輸出模式;16鍵需采用IIC通信。為方便PCB布線和簡(jiǎn)化應(yīng)用程序,觸摸鼠標(biāo)電路(見圖4)配置為固定IO輸出模式,引腳TP8-TP15直接與LPC1768微控制器連接,S1-S4和S6-S9為感應(yīng)觸摸式按鍵。觸摸鼠標(biāo)由6×6感應(yīng)觸摸式按鍵矩陣構(gòu)成,至少需5塊TTP229芯片。LPC1768微控制器可直接讀取GPIO值,判斷感應(yīng)觸摸式按鍵是否被觸摸。操作觸摸鼠標(biāo)是一個(gè)連續(xù)的過程,LPC1768微控制器讀取到的GPIO值是連續(xù)變化的,在軟件中需對(duì)觸摸鼠標(biāo)進(jìn)行觸摸路徑分析。

圖4 觸摸鼠標(biāo)電路
USBHUB選擇SMSC公司專用的USB2.0高速HUB控制器USB2517芯片,實(shí)現(xiàn)USB2.0通信,向下兼容USB1.1通信,對(duì)外提供1路USB上行接口和多路USB下行接口,并對(duì)內(nèi)提供1路下行接口控制I/O輸出。采用EEPROM實(shí)現(xiàn)USBHUB的信息配置,采用專用電源控制芯片輸出USB電源,通過USBHUB實(shí)現(xiàn)其他外接USB設(shè)備與主控計(jì)算機(jī)的USB接口的信息中轉(zhuǎn)。
感應(yīng)觸摸式監(jiān)測(cè)報(bào)警人機(jī)操作板軟件由基于時(shí)間觸發(fā)設(shè)計(jì)模式的軟件架構(gòu)編寫的調(diào)度器構(gòu)成,通過調(diào)度器實(shí)現(xiàn)最簡(jiǎn)單的協(xié)作式多任務(wù)操作系統(tǒng)。調(diào)度器由不同任務(wù)之間共享的定時(shí)器中斷服務(wù)程序,在執(zhí)行多個(gè)任務(wù)時(shí),可使用同一個(gè)調(diào)度器來完成。調(diào)度器中斷響應(yīng)函數(shù)是時(shí)間間隔為10 ms的“事件”,在調(diào)度器被任務(wù)中的“事件”觸發(fā)之后,遍歷任務(wù)塊鏈表,根據(jù)任務(wù)的優(yōu)先級(jí)執(zhí)行需被調(diào)度執(zhí)行的任務(wù)[2]。
根據(jù)“1.3”節(jié)中的硬件架構(gòu)設(shè)計(jì)框圖,感應(yīng)觸摸式監(jiān)測(cè)報(bào)警人機(jī)操作板的軟件主要由觸摸按鍵和觸摸鼠標(biāo)組成,觸摸鼠標(biāo)的實(shí)現(xiàn)過程與觸摸鍵盤基本一致,軟件設(shè)計(jì)主要參考觸摸鍵盤的實(shí)現(xiàn)過程。
由“1.4”節(jié)中的分析所知,LPC1768微控制器通過直接讀取感應(yīng)觸摸式按鍵的GPIO值來判斷按鍵是否被按下。感應(yīng)觸摸式監(jiān)測(cè)報(bào)警人機(jī)操作板的部分按鍵會(huì)受到多擊操作,即同一個(gè)按鍵在設(shè)定的時(shí)間內(nèi)被連續(xù)2次或多次按下。本文在多擊操作按鍵時(shí),連續(xù)按下按鍵的有效時(shí)間間隔≤30 ms,該時(shí)間可根據(jù)用戶的需求進(jìn)行更改。單個(gè)感應(yīng)觸摸式按鍵單擊或多擊的操作過程見圖5,這里多擊設(shè)定最大為四擊操作,當(dāng)超過四擊時(shí)重新從單擊開始判定,主要分為以下10個(gè)過程:
1)定時(shí)讀感應(yīng)觸摸式按鍵的GPIO值,判斷按鍵是否被按下,若被按下,則執(zhí)行過程“2)”,否則執(zhí)行過程“10)”。
2)按鍵消抖處理,判斷感應(yīng)觸摸式按鍵操作是否有效,若有效,則執(zhí)行過程“3)”,否則執(zhí)行過程“10)”。
3)判斷感應(yīng)觸摸式按鍵操作是否是長(zhǎng)按,若是長(zhǎng)按,則為單擊操作,執(zhí)行過程“8)”,否則執(zhí)行過程“4)”。
4)判斷在設(shè)定的時(shí)間內(nèi)感應(yīng)觸摸式按鍵是否還有被按下的操作,若沒有,則為單擊操作,執(zhí)行過程“8)”;若有,判斷按鍵被按下操作是否有效,若無效,則為單擊操作,執(zhí)行過程“8)”,否則執(zhí)行過程“5)”。
5)在設(shè)定的時(shí)間內(nèi)判斷感應(yīng)觸摸式按鍵是否還有被按下操作,若沒有,則為雙擊操作,執(zhí)行過程“8)”;若有,判斷按鍵被按下操作是否有效,若無效,則為雙擊操作,執(zhí)行過程“8)”,否則執(zhí)行過程“6)”。
6)在設(shè)定的時(shí)間內(nèi)判斷感應(yīng)觸摸式按鍵是否還有被按下操作,若沒有,則為三擊操作,執(zhí)行過程“8)”;若有,判斷按鍵被按下操作是否有效,若無效,則為三擊操作,執(zhí)行過程“8)”,否則執(zhí)行過程“7)”。

圖5 感應(yīng)觸摸式按鍵單擊或多擊的操作過程
7)在設(shè)定的時(shí)間內(nèi)判斷感應(yīng)觸摸式按鍵是否還有被按下操作,若沒有,則為四擊操作,執(zhí)行過程“8)”;若有,判斷按鍵被按下操作是否有效,若無效,則為四擊操作,執(zhí)行過程“8)”,否則執(zhí)行過程“4)”。
8)將讀取到的被按下感應(yīng)觸摸式按鍵的GPIO值和判定的操作狀態(tài)(單擊、雙擊、三擊和四擊)轉(zhuǎn)換為USB鍵盤相應(yīng)的鍵值,執(zhí)行過程“9)”。
9)在程序中定義USB鍵盤事件數(shù)組,將過程“8)”中轉(zhuǎn)換的鍵值與鍵盤事件數(shù)組對(duì)比,結(jié)果一致完成相應(yīng)的USB鍵盤事件,然后LPC1768微控制器向USB端點(diǎn)寫按鍵操作事件,執(zhí)行過程“10)”。
10)單個(gè)感應(yīng)觸摸式按鍵操作流程結(jié)束。
觸摸鍵盤和觸摸鼠標(biāo)都屬于USB HID類設(shè)備,USB HID是用于管理和控制大多數(shù)計(jì)算機(jī)的人工輸入設(shè)備。USB主機(jī)檢測(cè)到USB設(shè)備插入之后,需對(duì)USB設(shè)備進(jìn)行枚舉,從設(shè)備中讀取各種描述符信息,主機(jī)根據(jù)這些信息加載合適的驅(qū)動(dòng)程序,從而知道設(shè)備的類別及如何進(jìn)行通信等[3]。調(diào)試USB設(shè)備最重要的是USB設(shè)備的枚舉過程,枚舉也是USB設(shè)備通信的第一步,觸摸鍵盤的枚舉過程見圖6。
1)USB主機(jī)檢測(cè)到觸摸鍵盤插入之后,先對(duì)觸摸鍵盤進(jìn)行復(fù)位,觸摸鍵盤在總線復(fù)位之后的地址為0。USB主機(jī)可向地址為0的觸摸鍵盤的端點(diǎn)0發(fā)送獲取設(shè)備描述符的請(qǐng)求,觸摸鍵盤收到該請(qǐng)求之后將設(shè)備描述符返回給USB主機(jī)。
2)USB主機(jī)再次對(duì)觸摸鍵盤進(jìn)行復(fù)位,進(jìn)入設(shè)置地址階段。USB主機(jī)向地址為0的觸摸鍵盤的端點(diǎn)0發(fā)送設(shè)置地址的請(qǐng)求,USB主機(jī)會(huì)發(fā)配唯一的地址給觸摸鍵盤。
3)USB主機(jī)從剛分配給觸摸鍵盤的新地址中再次獲取設(shè)備描述符。
4)USB主機(jī)獲取配置描述符集合。配置描述符集合包括配置描述符、接口描述符和端點(diǎn)描述符等。接口描述符和端點(diǎn)描述符都不能單獨(dú)獲取,必須與配置描述符一起以集合的方式返回。
5)枚舉過程結(jié)束,觸摸鍵盤正常工作。
在USB規(guī)范中,除了規(guī)定必要的設(shè)備、配置、接口、端口和字符串描述符之外,USB HID還定義有報(bào)告描述符。報(bào)告描述符用來描述報(bào)告的結(jié)構(gòu)及報(bào)告中數(shù)據(jù)的作用。USB主機(jī)可通過報(bào)告描述符分析出報(bào)告中數(shù)據(jù)的意義。USB HID設(shè)備是通過報(bào)告?zhèn)魉蛿?shù)據(jù)的,報(bào)告有輸入報(bào)告和輸出報(bào)告。輸入報(bào)告是USB設(shè)備發(fā)送給主機(jī)的,如:USB鼠標(biāo)將鼠標(biāo)移動(dòng)和鼠標(biāo)點(diǎn)擊等信息返回給計(jì)算機(jī);鍵盤將按鍵數(shù)據(jù)返回給計(jì)算機(jī)等。輸出報(bào)告是主機(jī)發(fā)送給USB設(shè)備的,如鍵盤上的數(shù)字鍵盤鎖定燈和大寫字母鎖定燈的控制等。以觸摸鍵盤的報(bào)告描述符為例,利用HID Descriptor Tool工具幫助建立和編寫觸摸鍵盤的報(bào)告描述符。
const uint8_t HID_ReportDescriptor[]={
HID_UsagePage(HID_USAGE_PAGE_GENERIC),//用途頁選擇為普通桌面頁
HID_Usage(HID_USAGE_GENERIC_KEYBOARD),//集合用途用于鍵盤
HID_Collection(HID_Application),//應(yīng)用集合
HID_UsagePage(HID_USAGE_PAGE_KEYBOARD),//選擇用途頁為鍵盤
HID_Usage Min(HID_USAGE_KEYBOARD_LCTRL),//最小的用途值,實(shí)際是鍵盤左CTRL鍵
HID_Usage Max(HID_USAGE_KEYBOARD_RGUI),//最大的用途值,實(shí)際是鍵盤右GUI鍵
HID_Logical Min(0),//數(shù)據(jù)的邏輯值,最小為0
HID_Logical Max(1),//數(shù)據(jù)的邏輯值,最大為1
HID_ReportSize(1),//數(shù)據(jù)域的長(zhǎng)度為1個(gè)位
HID_ReportCount(8), //數(shù)據(jù)域的數(shù)量為8個(gè)
HID_Input(HID_Data|HID_Variable|HID_Absolute),//作為輸入,屬性為:Data,Var,Abs
HID_ReportCount(1),//數(shù)據(jù)域數(shù)量為1個(gè)
HID_ReportSize(8),//數(shù)據(jù)域的長(zhǎng)度為8位

圖6 觸摸鍵盤的枚舉過程
HID_Input(HID_Constant),//作為輸入,屬性為:Constant
HID_ReportCount(3), //數(shù)據(jù)域的長(zhǎng)度為3位
HID_ReportSize(1),//數(shù)據(jù)域數(shù)量為1個(gè)
HID_UsagePage(HID_USAGE_PAGE_LED),//用途頁為指示燈
HID_Usage Min(1),//用途最小值為數(shù)字鍵盤燈
HID_Usage Max(3),//用途最大值為滾動(dòng)鎖定鍵燈
HID_Output(HID_Data|HID_Variable|HID_Absolute),//作為輸出,屬性為:Data,Var,Abs HID_ReportCount(1),//數(shù)據(jù)域數(shù)量為1個(gè)
HID_ReportSize(5),//數(shù)據(jù)域的數(shù)量為5個(gè)
HID_Output(HID_Constant),//作為輸出,屬性為:Constant
HID_EndCollection,//關(guān)閉集合
};
在觸摸鍵盤的固件程序中,數(shù)據(jù)的輸入和輸出只有滿足上述報(bào)告描述符的格式要求才能完成。利用USB監(jiān)控軟件BUS Hound得到觸摸鍵盤的枚舉過程和數(shù)據(jù)傳輸過程見圖7。

圖7 觸摸鍵盤的枚舉過程和數(shù)據(jù)傳輸過程抓包
感應(yīng)觸摸式監(jiān)測(cè)報(bào)警人機(jī)操作板除了包含硬件電路以外,還包含操作面板、導(dǎo)光板和殼體。操作面板選用玻璃材料,面板表面噴涂油漆。導(dǎo)光板緊貼在感應(yīng)觸摸式按鍵焊盤上,由散光膜、光學(xué)級(jí)亞克力基板、圍邊遮光膜和反射膜組成。導(dǎo)光板利用光學(xué)級(jí)亞克力基板吸取從LED經(jīng)反射膜發(fā)出的光并在光學(xué)級(jí)亞克力基板表面停留的原理,使光線射到各導(dǎo)光點(diǎn)時(shí)反射光擴(kuò)散到圍邊遮光膜內(nèi)破壞反射條件,從正面射出。反射光可通過疏密程度不一、大小不一的導(dǎo)光點(diǎn),使導(dǎo)光板均勻發(fā)光。導(dǎo)光板必須緊貼在操作面板上,因此按鍵焊盤、導(dǎo)光板和操作面板之間不能有空隙,否則會(huì)降低按鍵的靈敏度。
感應(yīng)觸摸式監(jiān)測(cè)報(bào)警人機(jī)操作板實(shí)物圖見圖8。經(jīng)試驗(yàn),通過2 000次感應(yīng)觸摸式按鍵操作,觸摸鍵盤效果良好,觸摸信號(hào)輸出具有良好的重復(fù)性,能實(shí)現(xiàn)單擊、雙擊、三擊和四擊功能。觸摸鼠標(biāo)能實(shí)現(xiàn)鼠標(biāo)的基本功能,能判斷單擊、雙擊和平移等基本的觸摸手勢(shì)。感應(yīng)觸摸式監(jiān)測(cè)報(bào)警人機(jī)操作板具有USBHUB功能,正面可接U盤、打印機(jī)等USB設(shè)備。

圖8 感應(yīng)觸摸式監(jiān)測(cè)報(bào)警人機(jī)操作板實(shí)物圖
感應(yīng)觸摸式監(jiān)測(cè)報(bào)警人機(jī)操作板利用觸摸按鍵技術(shù)克服傳統(tǒng)操作板容易磨損、外形單一的缺陷,實(shí)現(xiàn)觸摸鍵盤、觸摸鼠標(biāo)、USBHUB、監(jiān)測(cè)報(bào)警和背光調(diào)節(jié)功能的有效集成。運(yùn)行結(jié)果表明,該感應(yīng)觸摸式監(jiān)測(cè)報(bào)警人機(jī)操作板性能穩(wěn)定可靠,產(chǎn)品外觀靈活、品質(zhì)較優(yōu),可成功應(yīng)用在相關(guān)監(jiān)測(cè)報(bào)警系統(tǒng)中。
上海船舶運(yùn)輸科學(xué)研究所學(xué)報(bào)2018年3期