簡(jiǎn)介
電容觸摸技術(shù)作為一種實(shí)用、時(shí)尚的人機交互方式,已經(jīng)被廣泛的應用到各種電子產(chǎn)品,小到電燈開(kāi)關(guān),大到平板電腦、觸摸桌等。隨之而來(lái)的是考驗產(chǎn)品設計者如何發(fā)揮智慧,在把產(chǎn)品用戶(hù)界面設計得方便簡(jiǎn)潔的同時(shí),又能呈現產(chǎn)品絢麗的外觀(guān),從而帶來(lái)良好的用戶(hù)體驗。
LED顯示由于界面友好,可以實(shí)時(shí)反映觸摸的位置信息,在電容觸摸產(chǎn)品設計中得到廣泛應用。本設計正是利用了大量的LED來(lái)實(shí)現呼吸燈、軌跡燈的特效,可以為例如燈光、音量、溫度等帶有調節功能的產(chǎn)品提供設計參考。
德州儀器的MSP430系列單片機以低功耗和外設模塊的豐富性而著(zhù)稱(chēng),而針對電容觸摸應用,MSP430的PIN RO電容觸摸檢測方式支持IO口直接連接檢測電極,不需要任何外圍器件,極大的簡(jiǎn)化了電路設計,而本設計文檔中使用的MSP430G2XX5更支持多達32個(gè)IO口,可驅動(dòng)24個(gè)以上的LED燈,達到理想的顯示效果。
1.電容觸摸轉輪實(shí)現方案
MSP430電容觸摸轉輪方案通過(guò)4個(gè)IO口完成4個(gè)通道的電容檢測,配合特殊的電極圖形,就可實(shí)現轉輪的設計。
1.1 電容觸摸實(shí)現原理
MSP430根據型號的不同支持多種電容觸摸檢測方式,有RC震蕩、比較器、PIN RO, 本設計使用的是PIN Relaxation Oscillator方式,原理如圖1,芯片管腳內部檢測電路由施密特觸發(fā)器、反向器,以及一個(gè)電阻組成,震蕩信號經(jīng)過(guò)施密特觸發(fā)器變成脈沖信號,再通過(guò)反向器反饋回RC電路,通過(guò)Timer_A對施密特觸發(fā)器的輸出進(jìn)行記數,再通過(guò)設置測量窗口Gate獲得記數的結果。當手指觸摸電極,電極上的C產(chǎn)生變化,導致震蕩頻率改變,這樣在定長(cháng)的測量窗口就能獲得不同的記數結果,一旦差值超過(guò)門(mén)限,結合一定的濾波算法判斷就可以觸發(fā)觸摸事件。

1.2 轉輪算法
將4個(gè)按鍵電極按照圖2鋸齒狀交叉就形成了一個(gè)轉輪的電極,轉輪的大小根據產(chǎn)品設計的需要可進(jìn)行適當的縮放,圖2的圖形設計適合30mm左右直徑的轉輪。

當用戶(hù)在轉輪上操作的時(shí)候,在手指對應位置的電極會(huì )獲得最高的信號值,手指臨近的通道會(huì )有相對高的信號值,離手指最遠的通道檢測到的信號值最小,如圖3所示:

這時(shí)可以利用不同通道上信號值的不同計算出手指在轉輪或滑條上的位置。位置計算步驟如下:
a.用排序方法找出4 個(gè)電極中信號最大的電極
index = Dominant_Element(groupOfElements, &measCnt[0]);
b.將找到的這個(gè)電極的信號加上相鄰電極的信號
position = measCnt[index] + measCnt[index+1] + measCnt[index-1];
相加后的結果如果大于門(mén)限,就認為有觸摸事件產(chǎn)生,繼續后續的位置計算。 把前后信號相加的原因是手指在操作的過(guò)程中有可能處于兩個(gè)電極中間,這樣兩個(gè)電極上得到的信號都不會(huì )很高,需要把信號相加才可以與門(mén)限做比較。
c.計算位置坐標時(shí)先根據篩選出的index 值得到一個(gè)大約的位置,再根據index 的相鄰電極信號強度進(jìn)行修正,得到最后的坐標值
position = index*(groupOfElements->points/groupOfElements->numElements);
position += (groupOfElements->points/groupOfElements->numElements)/2;
position += (measCnt[index+1]*(groupOfElements->points/groupOfElements->numElements))/100;
position -= (measCnt[index-1]*(groupOfElements->points/groupOfElements->numElements))/100;
d.針對index為0或者3的情況代碼需要另外處理,不過(guò)計算方法和上述是一致的。
這里轉輪的分辨率,即轉輪一圈分為多少個(gè)段是根據points設定的,假設用戶(hù)只需要區分24個(gè)位置,就可以設points為24,當然也可以設為64,128,甚至更高,這取決于轉輪的大小,電極圖形的設計以及電極的多少,例如需要類(lèi)似1024這種高精度,需要增加電極數從4個(gè)到8個(gè)或者更多。
2.LED PWM驅動(dòng)方案實(shí)現
要實(shí)現LED呼吸的效果,就要求LED進(jìn)行PWM調光,而要實(shí)現軌跡燈的效果,每一路LED必須是獨立的PWM控制。
本應用由于使用了24個(gè)LED燈,需要24路的PWM輸出控制,MSP430G2955有32個(gè)IO口,通過(guò)IO口配合TIMER定時(shí)器,足夠支持24路的軟件PWM輸出。
3.設計實(shí)例
本實(shí)例采用德州儀器MSP430G2955,通過(guò)6個(gè)IO完成電容觸摸檢測,24個(gè)IO驅動(dòng)24路LED,并預留了通訊口。 設計實(shí)例如圖4

3.1 電路設計
原理圖設計如圖4, MCU通過(guò)一個(gè)5V轉3.3V的LDO給VCC供電,使用LDO的目的是為了保證電源的穩定,讓觸摸電路在檢測信號時(shí)不會(huì )因為電源的噪聲產(chǎn)生過(guò)大的信號偏差。電極上串的電阻作為ESD保護器件,如果在產(chǎn)品結構設計合理的情況下可以省去。電路中預留了UART口與主控系統通訊。

LED驅動(dòng)部分電路如圖5,由于每一個(gè)LED的電流在10mA左右,24個(gè)LED如果同時(shí)亮就有240mA,無(wú)法通過(guò)MCU IO口直接驅動(dòng),在每個(gè)LED上加一個(gè)三極管以及限流電阻,實(shí)現24路LED的控制。

3.2 代碼設計
3.2.1 LED驅動(dòng)
在編寫(xiě)代碼控制LED點(diǎn)亮時(shí)序前,先定義好PWM輸出相關(guān)的規格:
PWM輸出占空比設置為50%。
頻率為5KHz, 亮度的等級分為24級,0級的時(shí)候關(guān)閉LED,23的時(shí)候最亮。
使用2個(gè)TIMER進(jìn)行PWM輸出的控制。
TIMERA0中斷頻率為24X5KHz=120KHz.
TIMERB中斷間隔設為10ms,在TIMERB中進(jìn)行LED亮度等級的改變。
通過(guò)兩個(gè)TIMER的中斷配合,就可以完成24路獨立PWM輸出的控制。當有觸摸事件產(chǎn)生時(shí),根據觸摸位置對對應的LED進(jìn)行亮度等級賦值,然后在TIMERB的中斷中讓亮度等級慢慢減少至零,這樣就可以實(shí)現手指離開(kāi)電極后,對應LED慢慢變暗的效果。
在兩個(gè)TIMER中斷里的程序流程圖如下圖7和圖8


3.2.2 轉輪
德州儀器的電容觸摸軟件庫支持電容按鍵的信號檢測以及轉輪坐標的計算,通過(guò)軟件庫相關(guān)參數的配置以及函數的調用就可以得到當前觸摸事件的位置值,可以參考德州儀器的觸摸按鍵軟件庫獲得詳細介紹。
當用戶(hù)在轉輪上做滑動(dòng)操作,LED的軌跡顯示應該是N個(gè)燈同時(shí)被點(diǎn)亮,手指所在位置的燈最亮,之前滑過(guò)的軌跡上的燈一個(gè)比一個(gè)暗,N的數值由操作者滑動(dòng)的速度決定,如果滑的速度夠快,24個(gè)LED燈會(huì )同時(shí)被點(diǎn)亮,只是亮度不同。
在滑動(dòng)很快的操作時(shí)會(huì )帶來(lái)一個(gè)問(wèn)題,電容按鍵掃描的周期跟不上滑動(dòng)的速度,導致坐標的變化不是連續的,結果就是LED的軌跡不連貫,在連續的N個(gè)LED中有部分沒(méi)有被點(diǎn)亮。為了解決這個(gè)問(wèn)題需要在轉輪坐標計算后加入一個(gè)插值算法,在用戶(hù)操作過(guò)快的時(shí)候對被漏掉的坐標進(jìn)行補值,使得LED的軌跡連續。
插值的方法可以通過(guò)當前位置和上一次位置的比較,決定是否要進(jìn)行插值,這里需要設置一個(gè)插值門(mén)限InterpolationThreshold,當位置跳動(dòng)距離超過(guò)門(mén)限就不進(jìn)行插值,反正誤操作產(chǎn)生。
if((WheelPosition-LastPosition)< InterpolationThreshold)
for (j=1;j<=(WheelPosition-LastPosition+1);j++)
SetLightLevel(LastPosition+j);
除此之外,還需要對兩個(gè)特殊情況做處理,及正向和反向滑動(dòng)操作經(jīng)過(guò)轉輪坐標0點(diǎn)。
4.總結
本文介紹了使用MSP430G系列單芯片實(shí)現電容觸摸轉輪和24路獨立PWM輸出LED控制方案,在一些需要低成本的產(chǎn)品設計,又要對多種LED特效控制的場(chǎng)合,有很大的使用價(jià)值。 |