1. 內容簡介 在2015年,蘋果新一代的MacBook和Apple Watch皆搭載壓力觸控感應技術,它被Apple稱為Force Touch,用戶每次按下觸摸板之后除了可以在屏幕看見視覺回饋,它同時能夠分辨出用戶點按的力度強弱來做出一系列的相關操控與應用。而本文將介紹以HY16F184內建高精密Sigma-delta 24 Bit ADC搭配HDK Force Sensor來實現一個類似Force Touch應用電路。 在本文中的Force Touch應用電路上,主要的組件有:壓力傳感器(Force Sensor)、ADC和MCU控制芯片。 纮康HY16F184控制芯片內建高精密Sigma-delta 24 Bit ADC、可程序放大PGA和多段式穩壓輸出等功能,可以很大幅簡化PCB周邊線路,精準完成由模擬到數字的訊號轉換。 在一個完整Force Touch實際應用上,除了需要考慮到X, Y軸坐標與Z軸強度計算,同時也需要考慮到電流消耗功率與掃瞄速度和校正的應用設計。而在本文內,只先探討與介紹如何使用HY16F184內建高精密Sigma-delta 24 Bit ADC來掃描四個Force Sensor并透過I2C通訊來輸出基本的ADC Raw Data。使用I2C轉USB網橋與計算機連接,由計算機端GUI做實時四個信道的ADC Raw Data數據變化量顯示。 2. 原理說明 2.1. 量測原理 壓力傳感器(Force Sensor)是將物理壓力量轉換為電壓訊號,也可視為一個常見的Loadcell電路,即惠斯登電橋,如圖1所示。因為電橋上的4個電阻(阻值相同),所以當有電壓施加在VIN+與VIN-兩端時V+ = V-,即電橋達到了平衡。 圖1 惠斯登電橋電路 此ΔR的變化量產生在訊號兩端的電壓變化為 本文Force Tocuh的基本架構如下圖2所示,包含四個壓力傳感器(Force Sensor)、ADC和MCU單芯片。當有重力施壓在壓力傳感器上時, 壓力傳感器會將所得到的電壓訊號變化量,透過模擬數字轉換(ADC)給單芯片(MCU)做后端的訊號處理計算,最后再透過I2C通訊輸出數據。在本文中,使用到的壓力傳感器為HDK Force Sensor,詳細關于HDK Force Sensor規格如下圖3,MCU單芯片與ADC規格部份可以章節2.2介紹。 圖2 HY16F184 Force Touch基本架構應用圖 圖3 HDK Force Sesnor基本規格 1.1. 控制芯片 單片機簡介:HY16F系列32位高性能Flash單片機(HY16F184) 圖4 纮康HY16F系列32位高性能Flash單片機(HY16F184) (1)采用最新Andes 32位CPU核心N801處理器。 (2)電壓操作范圍2.4~3.6V,以及-40℃~85℃工作溫度范圍。 (3)支持外部16MHz石英震蕩器或內部20MHz高精度RC震蕩器, 擁有多種CPU工作頻率切換選擇,可讓使用者達到最佳省電規劃。 (3.1)運行模式 350uA@2MHz/2(3.2)待機模式 10uA@32KHz/2(3.3)休眠模式 2.5uA (4)程序內存64KBytes Flash ROM (5)數據存儲器8KBytes SRAM。 (6)擁有BOR and WDT功能,可防止CPU死機。 (7)24-bit高精準度ΣΔADC模擬數字轉換器 (7.1)內置PGA (Programmable Gain Amplifier)最高可達128倍放大。 (7.2)內置溫度傳感器TPS。 (8)超低輸入噪聲運算放大器OPAMP。 (9)16-bit Timer A (10)16-bit Timer B模塊具PWM波形產生功能 (11)16-bit Timer C 模塊具數字Capture/Compare 功能 (12)硬件串行通訊SPI模塊 (13)硬件串行通訊I2C模塊 (14)硬件串行通訊UART模塊 (15)硬件RTC時鐘功能模塊 (16)硬件Touch KEY功能模塊 1. 系統設計 1.1. 硬件說明 使用HY16F184內建ADC搭配HDK Force Sensor做Force Touch應用電路。 HY16F184的ADC通道模擬腳位分別與四個Force Sensor的S+與S-做連接,通道1為AIO0和AIO1與S+和S-連接,通道2為AIO2與AIO3,通道3為AIO5與PT3.6,通道4為AIO4與PT3.7,參考電壓設置為VDDA對VSSA。在此例子中,設置VDDA=2.4V, VDDA電壓可由HY16F184直接輸出提供。詳細ADC設置圖可以參考以下圖5設定,詳細完整線路設計圖可以參考以下圖6。 圖5 HY16F184 Force Sensor Network與ADC組態設定 圖6 HY16F184 Force Tocuh硬件線路連接圖 主要組件介紹 (1) HY16F184 : 數據處理與運算核心,主要負責執行運算四個Force sensor的掃描數據,并且透過I2C通訊做ADC Raw Data數據輸出。 (2) ADC:HY16F184內建之模擬數字轉換器,將Force sensor所測得的電壓訊號,做模擬數字電壓訊號轉換。 (3) HDK Force Sensor :壓力傳感器,負責偵測壓力大小,并且將壓力轉換為電壓訊號。 3.2. 軟件說明 程序流程圖 : 4. 數據規格與總結 4.1. ADC Output Rate測量 在本文中,信道掃描的方式為每一個信道都掃描四次再取平均值,所以四個信道總共會需要掃描16次,在CPU頻率設定為2MHz與ADC OSR設定為128的情況下(即ADC的數據輸出率為2560sps),每次從CH1到CH4的掃描時間總共需要花費10ms,換算頻率約為100Hz。在此條件下,如果要提升ADC的掃瞄速度,可選擇提升ADC OSR設置,但是這可能會損失了分辨率,如果選擇提升了CPU的工作頻率,也可能會造成整體消耗功率過大,在此情況下,本文建議可使用移動平均法來做數據的平均與計算,使用此方式做掃描,可以在不提升CPU功耗與ADC頻率的情況下,滿足每個通道也為取四筆值取平均的條件,把ADC Output Rate速度從100Hz提升到192Hz。移動平均法的方法為,只有第一次掃描四信道的ADC Raw Data需要完整的掃描16次,之后各個信道的掃描只需要做一次掃描,再與前面三筆舊的數據做平均值計算,不斷的遞歸更新數據。 4.2. 耗電流測量 在CPU頻率設定為2MHz與ADC OSR設定為128的情況下,使用移動平均法可以得到的ADC Output Rate為192Hz,當CPU工作電壓VDD=3V, VDDA=2.4V時候,在此情況下所測得到的耗電流約1.142mA,此為VDDA不接上HDK Force Sensor負載電路時候耗電流,如果在VDDA接上HDK Force Sensor負載時候的耗電流約為1.568mA。 4.3. 最大承受力 在ADC Gain=8,PGA=1的情況下,可以滿足最大5kg秤重,使用者可以自行修改ADC的Gain值,以滿足不同的應用。 4.4. ADC Raw Data與I2C通訊格式說明 I2C Slave Address:0x20 I2C Command:0x80 ADC Raw Data Format: S+Addr+0x80+rS+(Addr+1)+CH1Data_L+CH1Data_M+CH1Data_H+CH2Data_L+CH2Data_M+CH2Data_H+CH3Data_L+CH3Data_M+CH3Data_H+CH4Data_L+CH4Data_M+CH4Data_H+P S: Star; Addr: Slave address; rS: repeat start; P: stop. CH1,CH2,CH3,CH4: Force Sensor ADC Raw Data; L: ADC Low byte; M: ADC Middle byte; H: ADC High byte; 每個信道數據(Chx)共8*3=24bit Bit0,統一為旗標,Bit0=0b,代表為舊資料; Bit0=1b,代表為新資料; 使用者應該在Bit0=1b時,取得數據才有效. Bit23,統一為Sign bit, Bit23=0b,代表正數; Bit23=1b, 代表負數 4.5. ADC Raw Data數據顯示界面介紹 掃描Force Sensor所輸出的ADC Raw Data可透過I2C接口來做數據的傳輸與讀取,搭配纮康設計的I2C轉USB的網橋配合PC端的GUI,可以做為實時的ADC Raw Data數據顯示。詳細數據畫面顯示GUI操作說明,可以參考如下 : 1. Connect : USB連接狀態,如果有正常連接會顯示 Connect,如果連接不正常,會顯示control board connect fail 2. I2C Slave addr: 預設為0x20. 3. Chart: 顯示四個信道的Force sensor掃描數據 4. Scan: 開始讀取四個信道的Force sensor掃描數據 5. Save: 存取四個信道的Forec sensor掃描數據 圖8 ADC Raw Data數據顯示界面 4.6. ADC Raw Data分辨率測試 在本文測試中,如果在HDK Force Sensor沒有放置任何重力物的情況下,可以得到穩定度約+/-2~ +/-3 counts誤差內(ADC output code: +/-15bits),詳細可以由下圖觀察之。 圖9 HDK Force Sensor無放置任何重力物情況下的ADC Raw Data變化量 嘗試在四個Force Sensor上建置一平面,CH1定義為左上角,CH2定義為右上角,CH3定義為左下角,CH4定義為右下角,并且在平面CH3位置上放置100g的砝碼,觀察CH3的ADC Raw Data之變化量。CH3在尚未放置100g砝碼前的ADC Raw Data約6350,放置之后ADC Raw Data約8300,所以100g的砝碼大約會有1950的ADC Count分辨率,此為ADC Gain=8, PGA=1時候的測試情況。測試結果可以由下圖畫面顯示清楚看到ADC Raw Data的變化量。從下圖可以觀察到,如果在建置一個機構完整良好的平面之下放置一個帶有重量的物體,所有信道的ADC Raw Data都應該會是呈現正數的變化量。當在左下角CH3放置100g砝碼的時候,距離最遠的右上角的CH2則只會呈現微幅的ADC Raw Data正數變化量。 圖10 在CH3放置100g砝碼時候的ADC Raw Data變化量 5. 總結 在本文中,提供了完整的Force Sensor相關應用與開發工具供使用者參考,用戶可以依據四個通道的ADC Raw Data變化量,來做后續的X, Y軸坐標與Z軸強度計算,等功能的設計與開發。 6. 參考文獻 [1] http://www.hycontek.com/attachments/MSP/DS-HY16F198_TC.pdf, 纮康科技HY16F198 Datasheet. [2] http://www.hycontek.com/attachments/MSP/UG-HY16F198_TC.pdf, 纮康科技HY16F198 User Guide. [3] https://www.hdk.co.jp/pdf/eng/e138102_4.pdf, HDK Force Sensor datasheet |