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