Funpack4-2 - 用dsPIC33CK64MC105 Curiosity Nano设计的触摸开关
该项目使用了dsPIC33CK64MC105 Curiosity Nano,实现了检测触摸的设计,它的主要功能为:PWM调整灵敏度、ADC检测是否触摸。
标签
ADC
PWM
电容触摸
dsPIC33CK64MC105 Curiosity Nano
Funpack4-2
你豪吗
更新2025-07-09
18

DSP实现PCB板电容触摸检测项目报告

一、项目描述

(一)项目介绍

本项目通过dsPIC33CK64MC105 Curiosity Nano开发板实现PCB板上的电容触摸检测功能。电容触摸技术是利用人体与PCB之间的电容变化来检测是否触摸,具有高灵敏度、良好的透光性等优点。我将利用DSP的强大处理能力,结合PWM和ADC技术,并使用UART来进行便捷调参,实现对PCB板上电容触摸信号的精确检测和处理。

(二)设计思路

  1. 硬件设计:处理器使用了活动所提供的dsPIC33CK64MC105 Curiosity Nano板卡,并设计了一个电容触摸检测PCB板。两者通过杜邦线进行连接。DSP处理器用于处理触摸信号,电容触摸传感器用于检测触摸信号。
  2. 软件设计:编写DSP程序,实现PWM信号的生成、ADC信号的采集、触摸信号的处理和识别。通过算法优化,提高触摸检测的准确性和响应速度。
  3. 系统集成:将硬件和软件集成在一起,进行系统调试和优化,确保电容触摸检测功能的稳定性和可靠性。

二、简短的硬件介绍

(一)主要硬件组件

  1. DSP处理器:选用dsPIC33CK64MC105芯片,其具有强大的数字信号处理能力和丰富的外设接口。图片.png
  2. 电容触摸传感器:采用PCB绘制的电容触摸传感器,设计考虑了人体电容与PCB板之间的交互效应。传感器通过特殊的PCB布局和走线设计,能够精确地检测到人体触摸时引起的电容变化。

图片.png

(二)硬件连接

DSP的ADC输入引脚连接到电容触摸板的输出,用于采集触摸信号。DSP的PWM输出引脚连接到连接到电容触摸板的输入端,用于控制触摸的灵敏度

总共需要连接四根线:GND、PWM、ADC1和ADC2

图片.png

三、软件流程图及各功能对应的主要代码片段及说明

(一)软件流程图

开始

├── 初始化DSP和外设
│ ├── 配置PWM
│ ├── 配置ADC
│ └── 配置GPIO
│ └── 配置UART
│ └── 配置TMR

├── 进入主循环
│ ├── 生成PWM信号
│ ├── 采集ADC信号
│ ├── 处理触摸信号
│ │ ├── 滤波处理
│ │ ├── 触摸识别
│ └── 串口数据解析(用于调PWM参数)

└── 结束

上面是我总结出来的一个流程,用图片表示的话就是下面这样:

图片.png

(二)主要代码片段及说明

1. 初始化DSP外设和指定终端函数

void TMR1_IQR(void)
{
ADC1.SoftwareTriggerEnable();
if(ADC_Select == 0)
{
adc1_value = ADC1.ConversionResultGet(Channel_AN2);
}
else if(ADC_Select == 1)
{
adc2_value = ADC1.ConversionResultGet(Channel_AN9);
}


ADC_Select++;
if(ADC_Select>2)
{
ADC_Select=0;
}
}

void UART1_RXIRQ(void)
{
if (rxIndex < BUF_SIZE - 1) {
rxBuffer[rxIndex] = UART1_Drv.Read();

if(rxBuffer[rxIndex] == 0x0A && rxBuffer[rxIndex-1] == 0x0D){
rxComplete = true;
rxIndex = 0;
return;
}
} else { // 缓冲区溢出
rxIndex = 0;
return;
}

rxIndex++;
}

SYSTEM_Initialize();
UART1_RxCompleteCallbackRegister(UART1_RXIRQ);
TMR1_TimeoutCallbackRegister(TMR1_IQR);

2. 配置PWM参数

if(pwm_enable)
{
PWM1.Enable();
}
else
{
PWM1.Disable();
}

PWM1.PeriodSet(4000000/pwm_period);
PWM1.DutyCycleSet(0.01*4000000/pwm_period*pwm_duty);

四、功能展示图片及说明

(一)功能展示图片

图片.png

图片.png


(二)说明

  1. 触摸前界面:显示PCB板电容触摸检测区域的初始状态,无触摸信号输入。
  2. 触摸后界面:当用户触摸电容触摸区域时,界面显示触摸坐标,证明触摸检测功能正常工作。

五、项目中遇到的难题和解决方法

(一)难题:触摸信号干扰

问题描述:在电容触摸检测过程中,受到周围环境电磁干扰,导致触摸信号不稳定。
解决方法:采用滤波算法对采集到的ADC信号进行滤波处理,减少噪声干扰。同时,优化PCB板布局,减少电磁干扰源对触摸传感器的影响。

(二)问题:编译下载的时候报Unable to read ID的错误

问题描述:无法下载程序,发现单独编译可以通过就是不能下载
解决方法重启开发板(断电在上电)

图片.png

六、对本活动的心得体会

本次项目让我认识到,硬件设计和软件编程是相辅相成的。只有充分理解硬件的工作原理,才能编写出高效的软件程序。

在本次活动中学习了如何使用Microchip 的DSP芯片,掌握了其PWM、ADC、UART、GPIO的使用,以及如何使用UART来调整参数,不用重复的修改下载





附件下载
pwm.X.zip
团队介绍
个人玩家
评论
0 / 100
查看更多
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号