TTP229 16路 电容式 触摸开关 数字触摸传感器 模块

– 文章前部引导关注

大家好,我是程序员小哈。

我们之前分享过一款基于TTP223芯片的点动触摸传感器模块,利用它可以实现单点按键的触摸。

最近调试的板子上画了一个TTP229芯片,这个芯片可以实现16路触摸按键,今天我们就分享一下这个。

TTP229-BSF芯片简介

TTP229-BSF芯片,封装为SSOP-28,是一款电容式16键触摸感应IC,专为触摸板控制而设计。主要应用是替换机械开关或按钮,芯片一次性可以读取出16个按键的状态数据。

工作电压:2.4V-5.5V。

应用电路

官方手册上的推荐电路为:

16 键模式参考应用电路图

上面参考电路中有6个灵敏度调节电容,每个电容对应功能如下表所示:

CJ0~CJ3 和 CJWA-CJWB 的电容值可用于调节对应键的灵敏度。

电容值越小,灵敏度越高。灵敏度的调节必须是根据实际应用的 PCB 来做决定。电容值的取值范围是 1pF ≦ CJ0~CJ3 ≦ 50pF ,1pF ≦ CJWA~CJWB ≦ 50pF。

原理图

实际打样原理图
实际加工之后的PCB板,建议先通过调节 C21~C24 的容值来调节 TP0~TP15 的灵敏度,再调节 C25 和 C26 的容值来调节唤醒灵敏度。

板子上画了五个按键,分别为TP0、TP1、TP2、TP3、TP8,我的PCB板上使用的电容值都为10pF。

模式选择

由上面的原理图,我们知道:TP1=0,TP2=0 。

当 TP1=0,TP2=0 ,我们查询手册知道,设置为16按键全使用,SDA高电平触发模式。

TP3=0,TP4=0,对应多键模式,即可以同时按下多个按键。如果TP3和TP4悬空,即不焊接1M电阻,那么即为全部单键有效。


这五个选项端口具体定义如下:

时序分析

由于本实例实际情况, TP1=0,TP2=0 ,所以具体时序图如下:

16键输入,高电平有效时序

注意:虽然这个芯片使用了两个引脚来驱动,命名也像I2C总线的命名,但是这个驱动真的跟I2C一点关系没有。

读取16个按键状态的函数实现如下所示:

uint16_t Touch_Read(void)
{
	uint8_t i = 0; 
	uint16_t real_Value = 0;
	
	//发送一个高电平
	SDA_OUT();
	TTP_SDO = 1;
	delay_us(100);
	TTP_SDO = 0;
	delay_us(20);
	
	SDA_IN();

	//循环获取16个触摸按键的状态
	for (i = 0; i < 16; i ++)
	{
		TTP_SCL = 1;
		delay_us(100);
		TTP_SCL = 0;
		delay_us(1);
		
		if (TTP_SDI == 1)
		{
			real_Value |= (1 << i);
		}        
	}
	
	delay_ms(2);
	
	return real_Value;
}

利用上面函数的返回值,可以与上一次调用的返回值相比,如果一致,可认为是同一次触摸操作,这样可以避免误认为多次动作。

源码获取/素材获取

公众号后台回复关键字:TTP229,获取测试本文Demo。

结果展示

通过上面视频的展示,我们可以看出来,焊盘盖不盖油都是不影响识别的,整体来看,识别的准确度还是很高的,把触摸按键应用到一些需要防水的使用场景还是挺不错的。

参考阅读

基于STM32使用TTP223点动触摸传感器模块

欢迎关注

如果想了解小哈哥的知识星球,可以点击下方链接,查看球友的福利,我们可以一起交流、一起玩耍。

知识星球简介链接:
https://mp.weixin.qq.com/s/LIZlGiqExmSVohLgkUbkoA

猜你喜欢

转载自blog.csdn.net/rsd102/article/details/121670895