新聞中心

        EEPW首頁 > 模擬技術 > 設計應用 > 基于嵌入式技術的感應按鍵設計 (2)

        基于嵌入式技術的感應按鍵設計 (2)

        作者: 時間:2012-10-10 來源:網絡 收藏

        3 硬件設計

        本文引用地址:http://www.104case.com/article/185685.htm

        基于ATmega48的,在硬件設計上非常簡單,每路按鍵只需要一個電阻和一個電容即可實現。通常情況下,感應電極一般以銅箔形式分布在印刷電路板上,可以根據具體的應用需要將感應電極設計成不同的尺寸和形狀。同時,采用金屬彈簧或者導電海綿等具有導電功能的介質,能夠將按鍵延伸到合適的長度或高度,如圖2所示。

        1.jpg
        圖2 采用金屬彈簧延伸的感應電極

        2.jpg
        圖3 硬件原理圖

        典型應用情況下,采樣電容C1或C2采用22 nF,限流電阻R1或R2采用1 kΩ。但是實際應用系統中需要根據的靈敏度,對采樣電容的容值和限流電阻的阻值進行調整,以達到最佳效果。硬件原理圖如圖3所示。

        4 函數庫安裝與軟件配置

        要把ATmega48單片機的I/O口作為輸入口來使用,首先需要安裝QTouch函數庫Atmel_QTouch_Libraries,目前比較新的函數庫版本是4.3。安裝完畢后,需要將與單片機對應的庫文件加載到工程中。Atmel公司的集成開發環境AVR Studio提供了便捷的設置,新建一個工程后,可在Project→Configuration Options→Libraries界面中添加函數庫鏈接文件。

        其次,需要對I/O口進行配置。在工程配置(Project→Configuration Options→Custom Options)界面設置相應的宏定義參數即可,如圖4所示。

        3.jpg
        圖4 AVR Studio工程配置界面

        D_QTOUCH_:需要使用QTouch函數庫。

        DSNSK=C和DSNS=C:表示將ATmega48 PC口設置為感應按鍵口。

        DQT_NUM_CHANNELS=4:表示最大可用通道數量。

        DQT_DELAY_CYCLES=1:表示采樣電容充放電周期時間。

        另外,在應用系統源程序中需要加入庫函數的頭文件。代碼如下:

        #include touch_api.h

        5 系統應用

        應用流程如圖5所示。在系統初始化之后,首先調用config_sensors()函數將需要的I/O口配置成感應按鍵的采樣口,并對各個感應按鍵的各個狀態進行初始化。然后是設置感應參數,這些參數包括按鍵校準閾值、正向漂移值、負向漂移值、最大連續感應時間等。最后,在應用系統的主程序中,需要周期地調用庫函數qt_measuer_channels()對感應信號進行測量,并檢測按鍵的狀態。

        4.jpg
        圖5 QTouch應用流程

        需要注意的是,感應按鍵采集使用了系統的一個定時器中斷,因此,應用系統中的中斷程序會對其造成一定的影響。這就要求在按鍵感應的過程中,應用系統的中斷服務程序的處理時間越短越好。在電容感應工作的時候,中斷服務程序處理時間不應該超過1 ms,否則將嚴重影響感應按鍵的靈敏度,甚至會導致感應按鍵失靈。

        應用系統程序如下:

        int main( void ){

        init_system();/*系統初始化*/

        config_sensors();/*將I/O口配置成感應按鍵*/

        qt_init_sensing();/*初始化感應傳感器*/

        qt_set_parameters();/*感應參數設置*/

        init_timer_isr();/*用于感應按鍵的定時器設置*/

        qt_filter_callback = 0;/*濾波參數選擇*/

        __enable_interrupt();/*使能定時器中斷*//*應用程序主循環 */

        while (1) {

        if( time_to_measure_touch ) {

        time_to_measure_touch = 0u; /*繼續下一個采集周期*/

        qt_measure_sensors( current_time_ms_touch );/*感應檢測 */

        }

        KeyBuff = (qt_measure_data.qt_touch_status.sensor_states[0]);/*獲取感應按鍵狀態*/

        ……/*系統應用程序*/

        }

        }

        6 結語

        基于Atmel QTouch技術的嵌入式感應按鍵設計,簡化了設計難度,降低了系統的應用成本,節省了印刷電路板的尺寸空間,系統應用穩定,可靈活應用于各類電子產品中。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 九台市| 郧西县| 农安县| 称多县| 湖北省| 龙江县| 禄丰县| 大石桥市| 钟山县| 镇巴县| 东乡族自治县| 横峰县| 龙泉市| 县级市| 行唐县| 麻江县| 蓬溪县| 石景山区| 岳普湖县| 平果县| 西宁市| 万年县| 江油市| 长治市| 巫溪县| 榕江县| 贵州省| 六枝特区| 石家庄市| 寿宁县| 筠连县| 蒲江县| 海口市| 海丰县| 巴塘县| 五华县| 虹口区| 贺兰县| 石泉县| 漯河市| 大宁县|