電容觸摸按鍵 實驗

RC充放電電路原理:
在這里插入圖片描述
RC電路充放電公式:

Vt = V0+(V1-V0)* [1-exp(-t/RC)]V0 為電容上的初始電壓值;
V1 為電容最終可充到或放到的電壓值;
Vt 為t時刻電容上的電壓值。如果V0為0,也就是從0V開始充電。那么公式簡化為:
Vt=  V1* [1-exp(-t/RC)]
結論:同樣的條件下,電容值C跟時間值t成正比關系,電容越大,充電到達某個臨界值的時間越長。

電容充電時間與電容大小關系:
在這里插入圖片描述
電容觸摸按鍵原理:
在這里插入圖片描述
在這里插入圖片描述

  • R:外接電容充放電電阻。
  • Cs:TPAD和PCB間的雜散電容。
  • Cx:手指按下時,手指和TPAD之間的電容。
  • 開關:電容放電開關,由STM32 IO口代替。

檢測電容觸摸按鍵過程:

  • TPAD引腳設置為推挽輸出,輸出0,實現電容放電到0。
  • TPAD引腳設置為浮空輸入(IO復位后的狀態),電容開始充電。
  • 同時開啟TPAD引腳的輸入捕獲開始捕獲。
  • 等待充電完成(充電到底Vx,檢測到上升沿)。
  • 計算充電時間。

沒有按下的時候,充電時間為T1(default)。按下TPAD,電容變大,所以充電時間為T2。我們可以通過檢測充放電時間,來判斷是否按下。如果T2-T1大于某個值,就可以判斷有按鍵按下。

硬件連接:
在這里插入圖片描述在這里插入圖片描述

幾個重要的函數:
說明:對于不同的平臺,區別主要是定時器底層相關以及IO口初始化。

  • void TPAD_Reset(void)函數:復位TPAD
    設置IO口為推挽輸出輸出0,電容放電。等待放電完成之后,設置為浮空輸入,從而開始充電。同時把計數器的CNT設置為0。

  • PAD_Get_Val()函數:獲取一次捕獲值(得到充電時間)
    復位TPAD,等待捕獲上升沿,捕獲之后,得到定時器的值,計算充電時間。

  • TPAD_Get_MaxVal()函數:
    多次調用TPAD_Get_Val函數獲取充電時間。獲取最大的值。

  • TPAD_Init()函數:初始化TPAD
    在系統啟動后,初始化輸入捕獲。先10次調用TPAD_Get_Val()函數獲取10次充電時間,然后獲取中間N(N=8或者6)次的平均值,作為在沒有電容觸摸按鍵按下的時候的充電時間缺省值tpad_default_val。

  • TPAD_Scan()函數:掃描TPAD
    調用TPAD_Get_MaxVal函數獲取多次充電中最大的充電時間,跟 tpad_default_val比較,如果大于某個閾值tpad_default_val+TPAD_GATE_VAL,則認為有觸摸動作。

  • void TIM5_CH2_Cap_Init(u16 arr,u16 psc)//輸入捕獲通道初始化
    可以使用任何一個定時器。M3使用定時器5,M4使用的定時器2。

程序思路:

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/272303.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/272303.shtml
英文地址,請注明出處:http://en.pswp.cn/news/272303.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

tomcat調優方案Maximum number of threads (200) created for connector with address null and port 8091...

1.tomcat6大并發出現:INFO: Maximum number of threads (200) created for connector with address null and port 8091 說明:最大線程數錯誤 解決方案:使用線程池,用較少的線程處理較多的訪問,可以提高tomcat處理請…

SFTP是什么?與FTP之間有什么區別

什么是SFTP? SFTP是一種安全的文件傳輸協議,一種通過網絡傳輸文件的安全方法;它確保使用私有和安全的數據流來安全地傳輸數據。 SFTP要求客戶端用戶必須由服務器進行身份驗證,并且數據傳輸必須通過安全通道(SSH&#x…

C++基礎( C++初識、數據類型、運算符、程序流程結構、)

前言&#xff1a; C專欄筆記來源于觀看視頻筆記 配套視頻&#xff1a; https://www.bilibili.com/video/BV1et411b73Z?p16 基本代碼框架&#xff1a; #include <iostream> using namespace std; int main() {system("pause");//等待程序return 0; }輸出Hell…

C#判斷某天是否是周末或者節假日示例

/// <summary> /// 判斷是不是周末/節假日 /// </summary> /// <param name"date">日期</param> /// <returns>周末和節假日返回true&#xff0c;工作日返回false</returns> public static async Task<bool> IsHolidayByD…

查看docker版本命令docker version

查看docker版本 docker version

spring security原理

spring security通過一系列過濾器實現其功能&#xff0c;入口過濾器如下&#xff08;web.xml&#xff09;&#xff1a; <filter> <filter-name>springSecurityFilterChain</filter-name> <filter-class>org.springframework.web.filter.DelegatingFilt…

程序員太牛了 公司年會整成代碼討論會

作者丨前端小喬 https://blog.csdn.net/weixin_44330260/article/details/86478512 公司年底年會&#xff0c;被程序員開成代碼討論大會&#xff0c;是一種什么樣的體驗&#xff01;最近某公司舉行了一場年會&#xff0c;本來熱熱鬧鬧&#xff0c;結果被程序員給攪煳了&#xf…

嵌入式C語言基礎(一)

嵌入式C語言基礎&#xff1a; system函數&#xff1a;功能是運行windows命令 #include <stdio.h> #include <stdlib.h> int main() {//main是程序的入口&#xff0c;操作系統運行程序先找mainsystem("ipconfig");//在windows下ipconfig查看本地的網絡狀…

docker info 顯示 Docker 系統信息

docker info : 顯示 Docker 系統信息&#xff0c;包括鏡像和容器數

如何通過session控制單點登錄

web服務器為每一個瀏覽器實例對應一個session。這個session有自己的一個獨立id,這個id保存在瀏覽器的cookie中&#xff08;這個cookie貌似隨著這個瀏覽器實例的關閉而清除&#xff09;&#xff0c;訪問web服務器的時候&#xff0c;web服務會根據你cookie中的sessionId來決定重新…

Syncd - 開源自動化部署工具

官網地址&#xff1a;https://gitee.com/dreamans/syncd/issues syncd是一款開源的代碼部署工具&#xff0c;它具有簡單、高效、易用等特點&#xff0c;可以提高團隊的工作效率. 目前只支持類Linux系統. 特性 Go語言開發&#xff0c;編譯簡單、運行高效 Web界面訪問&#xff0…

嵌入式C語言基礎(二)

指針是分類型的&#xff1a; 指針根據類型不同&#xff0c;偏移值也不同。指針和數組&#xff0c;如何讓指針指向數組&#xff1f; ①用數組名 &#xff1a;int array[10],int* p,parray ②用第一個元素的地址&#xff1a;int array[10],int* p,p&array[0] 注意&#xff1a…

Linus中幫助命令man

使用方法&#xff1a;man 可以查看想要使用命令的詳細使用方法 man 命令

大牛是怎么思考設計SQL優化方案的?

作者&#xff1a;慘綠少年https://www.cnblogs.com/clsn/p/8214048.html在進行MySQL的優化之前&#xff0c;必須要了解的就是MySQL的查詢過程&#xff0c;很多查詢優化工作實際上就是遵循一些原則&#xff0c;讓MySQL的優化器能夠按照預想的合理方式運行而已。圖-MySQL查詢過程…

嵌入式C語言基礎(三)

字符串的定義方式及輸出&#xff1a; #include <stdio.h> #include <stdlib.h> void strPrint(char* data,int size) {int i;for(i0;i<size;i){printf("函數打印數組&#xff1a;%c\n",*data);}putchar(\n); } int main() {int i0;int a[3]{1,2,3};c…

web.config配置數據庫連接

第一種&#xff1a;獲取連接字符串 首先要定義命名空間 system.configuration 1. string connstr string constr ConfigurationManager.AppSettings["connstring"]; web.config文件:加在<appsettings>和</appsettings> 之間 <appsettings> <a…

用 Git 和 Github 提高效率的 10 個技巧!

Git 和 GitHub 都是非常強大的工具。即使你已經使用他們很長時間&#xff0c;你也很有可能不知道每個細節。我整理了 Git 和 GitHub 可能提高日常效率的10個常用技巧。GitHub1、快捷鍵: t 和 w在你的源碼瀏覽頁面&#xff0c;按 t 可以快速進入模糊文件名搜索模式&#xff1a;在…

docker顯示鏡像的摘要信息

顯示鏡像的摘要信息 docker images --digests