蔡昌勇 朱靜
摘要:交互式液晶面板尺寸越來越大,傳統(tǒng)的觸摸屏如電阻式觸摸屏存在壽命較短、電容式觸摸屏價格高的缺點。針對以上問題,本文設(shè)計了一種基于STM32的紅外觸摸屏,通過逐一掃描安裝在液晶屏下面及右面的紅外發(fā)光二極管、安裝在液晶屏上面及左面的紅外接收二極管,將紅外接收二極管輸出電壓通過STM32內(nèi)部的ADC轉(zhuǎn)換為數(shù)字量,通過數(shù)據(jù)濾波處理,計算出觸摸操作點的坐標(biāo),并將坐標(biāo)值通過USB接口上傳至Windows操作系統(tǒng),實現(xiàn)觸摸操作響應(yīng)。
關(guān)鍵詞:STM32;紅外;觸摸屏
中圖分類號:TP391? ? ? 文獻(xiàn)標(biāo)識碼:A
文章編號:1009-3044(2022)14-0083-03
隨著液晶顯示面板制造工藝提升,液晶面板尺寸越來越大,對屏幕具備觸摸功能的應(yīng)用場景越來越多。電阻式觸摸屏雖然具有成本低、高分辨率等優(yōu)點,但存在容易被劃傷、使用壽命不長的缺點;電容式觸摸屏壽命長、分辨率高,但是其價格較貴,特別是當(dāng)屏幕尺寸越來越大時,采用電容式觸摸屏往往無法獲得較高性價比[1]。
采用多組紅外發(fā)光二極管、紅外接收二極管布設(shè)于屏幕的對邊,依次點亮單只紅外發(fā)光二極管,將對應(yīng)位置紅外接收二極管檢測到的光線變化信號濾波、放大后輸入STM32內(nèi)部ADC轉(zhuǎn)化為數(shù)字信號,通過數(shù)字濾波,計算出觸摸點的坐標(biāo),通過USB接口將該坐標(biāo)值上傳實現(xiàn)觸摸響應(yīng)。紅外式觸摸屏具有成本低廉、安裝簡單、透光性好等優(yōu)點,且不會造成顯示圖像質(zhì)量下降,在中大尺寸屏幕應(yīng)用中有較高的應(yīng)用價值[2]。
1 系統(tǒng)總體設(shè)計
為了簡化系統(tǒng)設(shè)計提高系統(tǒng)實用性,系統(tǒng)采用USB接口實現(xiàn)觸摸坐標(biāo)上傳及系統(tǒng)供電。通過STM32控制掃描驅(qū)動電路實現(xiàn)紅外二極管逐一點亮,待二極管發(fā)光穩(wěn)定后,將其對應(yīng)位置的接收二極管輸出電壓進(jìn)行放大并完成ADC轉(zhuǎn)換,如果某個二極管被遮擋,ADC值會遠(yuǎn)小于正常閾值,通過軟件處理可以計算出遮擋物體的坐標(biāo)。將坐標(biāo)值通過USB上傳至Windows操作系統(tǒng),實現(xiàn)觸摸操作響應(yīng)。
為了滿足紅外式觸摸屏對識別精度的要求,紅外觸摸屏尺寸越大所需的二極管數(shù)量越多[3],一般為幾十只至幾百只,因此紅外二極管采用矩陣方式驅(qū)動,以簡化電路設(shè)計。為了兼容不同尺寸觸摸屏設(shè)計,方便電路級聯(lián)擴(kuò)展,系統(tǒng)中行驅(qū)動控制信號通過串并轉(zhuǎn)換實現(xiàn),列驅(qū)動控制信號通過譯碼器驅(qū)動,以提高電路掃描速度。紅外接收二極管輸出信號經(jīng)多路選擇開關(guān)放大濾波后,輸出至STM32內(nèi)部ADC采樣,行列驅(qū)動電路配合實現(xiàn)每只二極管掃描,實現(xiàn)觸摸監(jiān)測。
2 硬件電路設(shè)計
2.1 系統(tǒng)主控電路
STM32F103是一款基于ARM Cortex?-M3內(nèi)核設(shè)計的高性能、低功耗單片機(jī)[4]。內(nèi)核最高時鐘可達(dá)72M,配置有USB接口、12位逐次逼近ADC,只需要少數(shù)外圍電路即可實現(xiàn)紅外收/發(fā)二極管的驅(qū)動及掃描電壓轉(zhuǎn)換與運算。系統(tǒng)主控電路如圖3所示。
本系統(tǒng)采用STM32F103C8T6單片機(jī)作為微控制器,主要用于控制掃描紅外發(fā)射管、紅外發(fā)光二極管的接收、A/D轉(zhuǎn)換、觸點定位識別的運算以及控制USB通信等操作。USB2.0最多可以提供500 mA的電流,完全能夠滿足系統(tǒng)的供電要求,為簡化設(shè)計,系統(tǒng)采用USB接口實現(xiàn)通信及供電。AMS1117-3.3將5V穩(wěn)壓至3.3V為主控器供電。
2.2 紅外發(fā)射二極管驅(qū)動電路
紅外發(fā)光二極管采用行列形式連接,一個完整單元為8行8列,最多64只二極管,也可級聯(lián)及任意剪裁,方便適應(yīng)不同尺寸觸摸屏需求。74HC164及三極管8550實現(xiàn)行驅(qū)動控制,74HC238與三極管8050實現(xiàn)列驅(qū)動控制。
在單片機(jī)I/O的驅(qū)動下,當(dāng)I_CP上升沿時74HC164將輸入數(shù)據(jù)引腳電平移位輸出至Q0~Q7,實現(xiàn)行選控制,配合74HC238可實現(xiàn)任意二極管控制。
2.3 紅外接收二極管驅(qū)動及信號處理電路
紅外接收部分的行驅(qū)動與發(fā)射相同,采用74HC164配合三極管8550實現(xiàn)列選控制。接收部分列選采用8通道模擬選擇開關(guān)74HC4051實現(xiàn),在輸入信號A、B、C的控制下實現(xiàn)列選控制,完成任意二極管的掃描。LM833實現(xiàn)接收信號放大及濾波,放大后的信號輸出至單片機(jī)內(nèi)部ADC轉(zhuǎn)換。
3 軟件設(shè)計
軟件部分主要包括單片機(jī)初始化、紅外管掃描、坐標(biāo)計算、USB枚舉設(shè)計等模塊。MCU初始化部分包括USB模塊初始化、按鍵接口初始化、中斷初始化、Systick初始化、掃描初始化與紅外發(fā)射功率控制燈。
紅外觸摸屏的工作可以采用一邊掃描一邊處理數(shù)據(jù)的方式,也可以采用掃描完后再進(jìn)行數(shù)據(jù)處理的方式。本系統(tǒng)先進(jìn)行掃描,然后再進(jìn)行坐標(biāo)計算,根據(jù)紅外對管傳遞的數(shù)據(jù),可以判斷是否被遮擋以及遮擋的序號,如果有觸摸,則根據(jù)序號進(jìn)行坐標(biāo)計算,然后再通過USB將坐標(biāo)數(shù)據(jù)上傳給PC電腦端,否則就進(jìn)行新一輪的掃描。
3.1 紅外管掃描程序設(shè)計
由硬件原理圖可知,紅外發(fā)射管與紅外接收管采用不同的控制方式。發(fā)射管由PB15產(chǎn)生串行信號CPUT_AB信號進(jìn)入74HC164芯片生成8位并行信號后控制紅外發(fā)射管高端;定時器Timer4定時產(chǎn)生紅外調(diào)制信號,該信號作用于HC238的OE引腳(低電平有效),PB10、PB11、PB12引腳輸出邏輯信號經(jīng)38譯碼器輸出8位并行信號控制紅外發(fā)射管低端。而接收管高端控制邏輯類似發(fā)射部分,但低端則為STM32輸出3位邏輯信號控制八選一模擬多路復(fù)用器輸出接收管AD采樣電壓,經(jīng)信號處理電路后送入STM32 ADC引腳進(jìn)行采樣。
在紅外發(fā)射功能期間開啟ADC采樣與DMA,自動保存ADC(紅外接收)數(shù)據(jù)。ADC工作在獨立模式,單詞轉(zhuǎn)換,定時器T4_CC4上升沿觸發(fā)ADC采樣,采樣數(shù)據(jù)右對齊,順序進(jìn)行規(guī)則轉(zhuǎn)換,開啟ADC連續(xù)采樣DMA功能,然后開啟ADC校準(zhǔn)。一次最多掃描8只二極管(由于多板拼接等可能最后不足8只),掃描完成后處理數(shù)據(jù),再掃描下一行。
3.2 坐標(biāo)計算
觸摸位置定位是通過檢測紅外接收信號的強(qiáng)度變化情況進(jìn)行定位的。首先判斷觸摸點的物理位置,即紅外管序號;其次將在紅外管區(qū)域內(nèi)進(jìn)行位置細(xì)化,提高分辨率;最后將細(xì)化后的位置坐標(biāo)通過映射成計算機(jī)屏幕上的坐標(biāo)。
程序在上電初始化后,首先進(jìn)行閾值計算,具體方法為:分別打開和關(guān)閉所有的發(fā)射管,采集接收管的ADC值,根據(jù)每組對管的最大值[ADCmax]和最小值[ADCmin]計算出是否進(jìn)行觸摸的閾值[ADCthreshold],通常計算方法為:
[ADCthreshold=12ADCmax+ADCmin]
為了提高分辨率,紅外管的區(qū)域分為邊緣1.5mm和中間2mm三部分,兩邊緣部分1.5mm各對應(yīng)5個像素,中間2mm部分對應(yīng)7個像素。通過紅外接收管的不同采樣值即可判斷具體觸摸位置。但在實際編程的過程中還需要對算法進(jìn)行濾波,觸摸屏在按下與抬手過程中會有抖動,另外還有各種原因?qū)е掠|摸點的跳躍。通常采用限幅濾波與滑動平均濾波相結(jié)合的方式實現(xiàn)。
對于紅外觸摸屏,在兩點觸摸的情況下存在真實點和偽點,如圖7所示。偽點在硬件上無法區(qū)分出來,只能通過軟件實現(xiàn)。圖中的狀況會輸出兩組橫坐標(biāo)與兩組縱坐標(biāo),根據(jù)組合共有四個觸摸點,其中兩點為偽點,如何剔除偽點也是坐標(biāo)計算的難點之一,并且當(dāng)超過兩點觸摸時,偽點會呈指數(shù)增長[5]。本系統(tǒng)采用了斜掃描的方式剔除偽點,無須對硬件進(jìn)行改造,只要在程序上進(jìn)行額外的設(shè)置即可。
3.3 USB程序設(shè)計
USB程序設(shè)計關(guān)鍵在于USB設(shè)備的枚舉,本系統(tǒng)使用USB HID類進(jìn)行STM32和PC機(jī)的通信。對本系統(tǒng)來說,USB設(shè)備的枚舉就是從紅外觸摸屏讀取描述符信息,PC機(jī)根據(jù)這些信息加載對應(yīng)的驅(qū)動,確定是觸摸屏,方可進(jìn)行通信??傮wUSB部分程序包括USB連接控制、USB終端配置、USB時鐘配置、USB模塊初始化等。
對本系統(tǒng)來說,需要進(jìn)行自定義USB,USB的標(biāo)準(zhǔn)描述符有設(shè)備描述符、配置描述符、接口描述符、端點描述符以及字符串描述符[6]。設(shè)備描述符是設(shè)備成功枚舉的關(guān)鍵,包括設(shè)備所使用的USB協(xié)議版本號、設(shè)備類型、廠商ID和產(chǎn)品ID等。其中USB設(shè)備描述符部分定義如圖8所示。
4 總結(jié)
本系統(tǒng)基于STM32與紅外對管設(shè)計了紅外觸摸屏硬件,同時基于硬件設(shè)備進(jìn)行了軟件設(shè)計,完成了紅外管掃描、坐標(biāo)計算、USB枚舉設(shè)計等功能,經(jīng)過軟硬件聯(lián)合測試,成功實現(xiàn)了USB觸摸屏設(shè)備識別以及坐標(biāo)識別,具有較高的工程價值。
參考文獻(xiàn):
[1] 李博.電容式觸摸信息傳感技術(shù)研究與實現(xiàn)[D].西安:西北工業(yè)大學(xué),2017.
[2] 王允.基于HID類的紅外觸摸屏的研究與實現(xiàn)[D].合肥:安徽大學(xué),2014.
[3] 胡哲.基于交互式紅外電子白板的定位算法及實現(xiàn)技術(shù)[D].重慶:重慶大學(xué),2018.
[4] 史籍.基于ARM的數(shù)據(jù)采集系統(tǒng)的設(shè)計[D].上海:上海交通大學(xué),2016.
[5] 曾一雄.基于STM32的抗強(qiáng)光多點紅外觸摸屏的設(shè)計與實現(xiàn)[D].成都:電子科技大學(xué),2013.
[6] 唐貽發(fā).基于STM32和FPGA的光學(xué)多點觸摸屏的設(shè)計與實現(xiàn)[D].廣州:華南理工大學(xué),2013.
收稿日期:2021-12-30
基金項目:本文得到了四川省教育廳科研項目(編號:17ZB0038)資助
作者簡介:蔡昌勇(1980—),通信作者,男,研究方向為嵌入式技術(shù);朱靜(1987—),男,主要研究方向為電子技術(shù)、機(jī)器學(xué)習(xí)。