01 触摸按键原理 触摸使用rc充放电原理:
rc电路是指由电阻r和电容c组成的电路,它是脉冲产生和整形电路中常用的电路。
充电过程:
电源通过电阻给电容充电,由于一开始电容两端的电压为0,所以电压的电压都在电阻上,这时电流大,充电速度快。随着电容两端电压的上升,电阻两端的电压下降,电流也随之减小,充电速度小。充电的速度与电阻和电容的大小有关。电阻r越大,充电越慢,电容c越大,充电越慢。衡量充电速度的常数t(tao)=rc。
放电过程:
电容c通过电阻r放电,由于电容刚开始放电时电压为e,放电电流i=e/r,该电流很大,所以放电速度很快。随着电容不断的放电,电容的电压也随着下降。电流也很快减小。电容的放电速度与rc有关,r的阻值越大,放电速度越慢。电容越大,放电速度越慢。
rc电路充放电公式: vt = v0+(v1-v0)*[1-exp(-t/rc)]
v0 为电容上的初始电压值;
v1 为电容最终可充到或放到的电压值;
vt 为t时刻电容上的电压值。
如果v0为0,也就是从0v开始充电。那么公式简化为:
vt= v1* [1-exp(-t/rc)]
结论:同样的条件下,电容值c跟时间值t成正比关系,电容越大,充电到达某个临界值的时间越长。
02 电路设计 电路设计时其实就是个上拉电阻
pcb设计,直接一个圆形,和底层接地覆铜形成杂散电容。
电容触摸按键原理
r:外接电容充放电电阻。
cs:tpad和pcb间的杂散电容。
cx:手指按下时,手指和tpad之间的电容。
开关:电容放电开关,由stm32io口代替。
03 代码设计 检测电容触摸按键过程
①tpad引脚设置为推挽输出,输出0,实现电容放电到0。
②tpad引脚设置为浮空输入(io复位后的状态),电容开始充电。
③同时开启tpad引脚的输入捕获开始捕获。
④等待充电完成(充电到底vx,检测到上升沿)。
⑤计算充电时间。
触摸按键初始化
uint8_t touchpad_init(void){ uint16_t buf[10]; uint16_t temp; uint8_t j,i; tim_icinittypedef tim_icinitstructure; /* tim12configuration */ tim_config(); tim_icinitstructure.tim_channel = tim_channel_1; tim_icinitstructure.tim_icpolarity = tim_icpolarity_rising; tim_icinitstructure.tim_icselection = tim_icselection_directti; tim_icinitstructure.tim_icprescaler = tim_icpsc_div1; tim_icinitstructure.tim_icfilter = 0x0; tim_icinit(tim12, &tim_icinitstructure); /* enablethe cc1 interrupt request */ tim_itconfig(tim12,tim_it_cc1|tim_it_update, enable); /* tim enablecounter */ tim_cmd(tim12, enable); for(i=0;i<10;i++)//连续读取10次 { buf[i]=touchpad_get_val(); sysctldelay(10*(systemcoreclock/3000)); } for(i=0;i<9;i++)//排序 { for(j=i+1;jbuf[j])//升序排列 { temp=buf[i]; buf[i]=buf[j]; buf[j]=temp; } } } temp=0; for(i=2;i0xffff/2) return1;//初始化遇到超过touchpad_arr_max_val/2的数值,不正常! return 0; } 按键复位代码
void touchpad_reset(){ gpio_inittypedefgpio_initstructure; gpio_initstructure.gpio_pin = gpio_pin_14; gpio_initstructure.gpio_mode = gpio_mode_out; gpio_initstructure.gpio_speed = gpio_speed_100mhz; gpio_initstructure.gpio_otype = gpio_otype_pp; gpio_initstructure.gpio_pupd = gpio_pupd_nopull; gpio_init(gpiob, &gpio_initstructure); gpio_resetbits(gpiob,gpio_pin_14); sysctldelay(5*(systemcoreclock/3000)); tim_clearitpendingbit(tim12, tim_it_update|tim_it_cc1); tim_setcounter(tim12,0); /* connect tim pinsto af9 */ gpio_pinafconfig(gpiob, gpio_pinsource14,gpio_af_tim12); /* tim12 channel 1 pin (pb14)configuration */ gpio_initstructure.gpio_pin = gpio_pin_14; gpio_initstructure.gpio_mode = gpio_mode_af; gpio_initstructure.gpio_speed = gpio_speed_100mhz; gpio_initstructure.gpio_otype = gpio_otype_pp; gpio_initstructure.gpio_pupd = gpio_pupd_nopull; gpio_init(gpiob, &gpio_initstructure);} 下载代码测试验证:
硬件和软件开源地址:
https://github.com/strongercjd/stm32f207vct6
无标记阻抗免疫传感器,用于新冠病毒抗体即时检测
关于无铅工艺的分析和应用
抑制偏磁的简单电路拓扑及其工作原理
小米电视3拆解 内部电路布局合理细节做工精细
DSP和FPGA在汽车电子中的应用
触摸按键原理
可靠性测试的类别及重要性
电缆起火爆炸的原因_电缆爆炸怎么办
CAN协议的错帧漏检率推导及改进过程简介
区块链初创公司DIRT正在计划为结构化数据开发一个值得信赖的平台
vivo折叠屏智能手机新专利公开:主要涉及手写笔方面
嵌入式USB主机设计(硬件设计和软件设计)
芯片工作原理是什么
广汽新推出新能源汽车AIon LX,具有3.9秒破百的超跑性能
第三代宽禁带半导体材料,是我国弯道超车的机会
红米2A拆解 内部结构如何
【最后一周】只是和myLists对了一个眼神 超豪大礼到手了!
自动抽水控制器电路图大全(继电器/喷灌控制器/抽水机自动控制器)
光伏扶贫直接带动脱贫作用明显
美国在高容量锂离子电池研发方面取得了新进展