英飞凌 PSoC6 评估板 CAPSENSE 触摸滑条应用示例

PSoC™ 62 with CAPSENSE™ evaluation kit 开发板(以下简称 PSoC 6 RTT 开发板)是英飞凌(Infineon)联合 RT-Thread 发布一款面向物联网开发者的 32 位双核 MCU 开发套件,其默认内置 RT-Thread 物联网操作系统。本文主要介绍 CAPSENSE™ 技术原理,并通过 RT-Thread Studio 快速开发触摸滑条应用程序。

CAPSENSE 基本原理

在物联网时代,无论是家庭电器还是可穿戴式设备等众多消费类产品,触摸控制已经司空见惯了。由于不再需要传统机械按钮和开关中的活动零件,触摸传感器系统实现了高度可靠性,不太可能因磨损而发生故障。同时,触摸传感器系统可完全封装在保护材料中,因此能够在严苛环境中工作。当然,除了可靠性之外,触摸传感器可轻松满足不同的形状要求,满足客户对产品的美观精巧设计需求。

英飞凌的 CAPSENSE™ 技术就是业界领先的具有防水性能和接近感应功能的触摸感应解决方案。该方案提供完整的器件(PSoC 有专有 CapSense 功能,其中包括一个用于处理电容触摸传感器的完整信号链)、中间件和设计参考,帮助用户设计外观优雅、可靠且易于使用的电容触摸感应功能。同时,CAPSENSE 还带来了行业领先的低功耗运行,平均电流消耗为22 μA,并带来了业内最宽的电压范围(1.71-5.5 V)。并且集成了包括 Capacitive Sigma Delta(CSD)感应算法和自动调谐算法等核心算法,确保在嘈杂的环境下也可以精准触控,适应复杂的外部环境。

从技术原理来看,电容触摸传感器就是充分利用了手指或手接近专门构建的触摸表面时电容将发生变化的特征。触摸传感器使用自电容和互电容两种不同的方法来检测此类变化,并通过放大、滤波等信号处理的手段将其准确捕获。

用户使用英飞凌 CAPSENSE 电容式触摸传感器界面时,手指在界面上形成与嵌入式传感器的电气连接。传感器与 PSoC 器件一起工作,将有关手指位置的数据转换为各种系统控制功能。一个 PSoC 器件可以用简单的触敏控制取代几十个机械开关和控件。基于 CAPSENSE 的"按键"和滑块控件不像机械按键和开关那样容易受环境磨损影响,因此比传统按键控制更可靠。

在触摸传感器设计方面,电容式传感器板由多层板上的印制线构建而成。对于基本的自电容按钮,最简单的设计是将传感器板印制线放在板子上方,印制线四周环绕着网状接地平面。传感器板连接到控制器(通常连接在板子下方)的输入引脚,还可提供接地平面。最后,顶层覆盖着不导电保护性化合物,形成了传感器覆面。对于小键盘,工程师通过将各个传感器板加入可寻址按钮阵列来扩展此项基本设计。

PSoC6 CAPSENSE 特性

PSoC 6 RTT 开发板配备了一个触摸滑条,方便用户评估 CapSense 功能。你可以基于 CapSense 的强大功能,做一些有趣的项目。

具体来说,PSoC6 中的 CapSense 具有以下特性:

  • 支持自电容和互电容触摸感应;
  • 功能强大的 CapSense Sigma Delta(CSD)和 CapSense Crosspoint(CSX)感应技术,能够为基于自电容和互电容的触摸感应提供一流的信噪比;
  • 在覆盖材料和厚度不同的条件下仍能提供高性能感应(请参考 CapSense 基本原理、覆盖层材料和覆盖层厚度);
  • SmartSense™ 自动调试技术;
  • 接近感应的范围较大(接近感应距离可达 30 cm)。

CAPSENSE 应用示例

RT-Thread 提供了一个简单的触摸滑条应用示例,只需要在 RT-Thread Studio 勾选配置即可快速体验。

双击工程中的 RT-Thread Settings ,打开项目配置页面。在"硬件"选项卡中,找到 Board extended module Drivers,勾选 Enable Slider 和 Enable Slider Demo。此时会自动勾选 Slider Demo 的相关依赖,例如 PWM 功能。

按 Ctrl + S 保持配置,会更新当前工程。然后重新编译工程,将固件下载到 PSoC 6 RTT 开发板。

在 RT-Thread Studio 打开终端,按 Tab 键可以可以看到当前系统支持的命令,如下所示。

bash 复制代码
 \ | /
- RT -     Thread Operating System
 / | \     5.0.1 build Sep 20 2024 16:17:44
 2006 - 2022 Copyright by RT-Thread team
msh >
RT-Thread shell commands:
clear            - clear the terminal screen
version          - show RT-Thread version information
list             - list objects
help             - RT-Thread shell help.
ps               - List threads in the system.
free             - Show the memory usage in the system.
pin              - pin [option]
pwm              - pwm [option]
reboot           - Reboot System
pwm_sample       - <pwm0> channel7 sample
Slider_ctrl_samp - Slider sample to ctrl led

其中 Slider_ctrl_samp 就是触摸滑条的 Demo 程序,该程序代码位于 board/ports/slider_sample.c 文件。其功能是通过触摸滑条控制 PWM 波形,从而控制 LED 灯的亮度。

为了方便查看触摸滑条对应的亮度值,我在 update_led_state() 函数中增加了一个打印。

c 复制代码
void update_led_state(led_data_t *ledData)
{
    if (ledData->brightness >= 0)
    {
        uint32_t brightness = (ledData->brightness < LED_MIN_BRIGHTNESS) ? LED_MIN_BRIGHTNESS : ledData->brightness;

        /* Drive the LED with brightness */
        rt_pwm_set(pwm_dev, PWM_DEV_CHANNEL, 1 * 1000 * 1000, GET_DUTY_CYCLE(brightness));
        rt_kprintf("brightness = %u\n", brightness);
    }
}

重新编译并下载到开发板,在终端执行 Slider_ctrl_samp 命令启动示例程序,此时用手指触摸滑条,可以看到如下打印。

bash 复制代码
brightness = 0
brightness = 2
brightness = 13
brightness = 30
brightness = 49
brightness = 71
brightness = 97
brightness = 100

滑条的一侧对应亮度值为 0,另一侧对应亮度值为 100。

资源链接

相关推荐
物联通信量讯说5 小时前
物联网卡、流量卡、SIM 卡到底有什么区别?
物联网·iot·物联网卡
会周易的程序员8 小时前
使用 QClaw 驱动多 Agent 团队对项目进行专业安全审计实战
物联网·安全·iot·aiot·qclaw
路在旁边8 小时前
RTOS vs 裸机
物联网·iot
sramdram17 小时前
基于国民32位MCU的无磁智能水表方案
mcu·32位mcu
TDengine (老段)1 天前
TDengine WAL 预写日志机制 — 持久性保障与崩溃恢复
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据
TDengine (老段)1 天前
TDengine 数据文件格式 — TSDB 文件集的物理结构与块编码
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据
HKT_China2 天前
5G IoT应用 打造智慧停车场管理新时代
物联网·5g·iot·数字化转型
HKT_China2 天前
5G IoT升级营运模式,打通数据脉络,驱动AI应用
人工智能·物联网·5g·iot
时光の尘2 天前
【STM32实战】ESP8266 通过 MQTT 协议对接 OneNET 云平台实现数据上传与下发(源码可直接移植)
stm32·mqtt·嵌入式·iot·esp8266
十年编程老舅2 天前
读懂 MCU 启动:从上电到程序运行全链路
单片机·嵌入式硬件·mcu·嵌入式·cpu·嵌入式开发·ram