本帖最后由 JackTang1994 于 2022-12-8 16:01 编辑
#申请原创# #技术资源#
准备资料
硬件:SAM C21 Xplained Pro开发板
软件:MPLAB X IDE,MPLAB Harmony
https://www.microchip.com/en-us/tools-resources
Atmel Data Visualizer下载(Touch调试工具)
https://gallery.microchip.com/packages/AtmelDataVisualizerInstaller-Standalone/
测试代码:
Touch2.zip
(684.28 KB)
触摸检测原理简介
原理简述如下电容两端的电流与电压公式。
将上述公式中的dT移动到等号左边。等式变为:I*dT = C*dV,等号两边同时积分,如果I为直流(与时间没关系)则可以得到 I * T = C * V
说明:*号在这里表示乘号
然后变换下就可以得到电容C的计算公式:
通过上面这个公式,我们只要知道电流I,充电时间t以及电容两端电压V就可以算出电容大小了。而在MCU中是通过ADC采集电容两端的电压,而直流电流是通过MCU内部的高精度的电流源来实现的,充电时间则可以通过MCU内部的定时器来测量或者软件延时测量得到。
等效的测量电路(大概是这样的)
S1开关闭合时,电流源开始给C1充电。我们通过控制开关S1的通断时间t和测量C1两端电压,以及恒流源I1的电流大小。根据上述电容计算公式即可计算出电容C1的大小 。最后再通过断开S1,闭合S2将C1中电荷释放以便进行下一次测量。
综合分析
当上述电路中我们触摸C1两端时,由于人体电容的接入会改变原先被电容C1(相当于在C1两端串/并联了电容),此时电路中整体的电容值发生改变。通过与没有触摸时计算得到电容值进行比较,这样就可以判断出是否触摸了触摸按钮。
完整的等效电路如下:
硬件设计及要求
在进行硬件设计时,一定要先弄明白PTC的接法:互容、自容。
自容:每一个PTC引脚对应一个Touch Sensor(触摸结点)
互容:一对X-Y的PTC引脚(两个引脚)对应一个Touch Sensor(触摸结点)
注:X与Y,两个X或者两个Y都不行!
电容设计(电容决定)公式
S表示两电极板之间的正对面积,d表示两电极板之间的距离。
是一个常数,称为介电常数,与电介质的性质有关。
根据电容设计公式知,减少极板的正对面积可以减少电容值。而将触摸按钮由原先的全部铺铜到变成50%的网格状,正对面板减少了一半,所以电容值也减少一半。这样电容传感器的灵敏度也会成比较下降。关于灵敏度个人理解:本身的电容C减少了,使计算得到电容值变小再加上其他干扰会使测量得到电容值更小,这样就不灵敏了。
触摸按钮:实体化铺铜
触摸按钮:网络化铺铜
说明:如果有多个触摸按钮,触摸按钮之间间距不要太近否则会有干扰,影响使用。
软件开发
重要说明:Touch库中触摸控件只支持一种触摸Sensor实现方式,即要不是“互容”,要不是“自容”。
Harmony创建工程
点击File >> New Project..在弹出的窗口中选择“32-bit MPLAB Harmony 3 Configuration Project”
然后按照要求选择保存路径和芯片型号,这里型号为:ATSAMC21J18A
外设配置
点击Tools >> Embedded >> MPLAB Harmony 3 Configuration,打开Harmony配置工具。关于如何Harmony的配置,可以参考MicroChip官方视频
Harmony主界面
设置时钟系统
使用内部时钟,MCU主频main clock为48MHZ;GCLK1时钟:4MHZ;RTC时钟:32768HZGCLK1时钟源选择OSC48M,分频因子选择÷12;RTC时钟源选择OSCULP32K
添加组件
从左边组件库中拖拽出SERCOM4、Touch Library将这两个组件添加到工程中来。
在添加Touch Library组件时,系统会提示你添加RTC时钟。直接点击OK就行,后面我们再修改成需要的即可。
基本的触摸组合:RTC + PTC + Touch Library
设置触摸的调试功能
选中Touch Library组件,点击Harmony配置界面中左边栏的Configuration Options
勾选Enable Data Visualizer,此时Touch Library组件上会多出一个UART接口。说明需要添加一个调试接口:串口
添加串口组件
查看SAM C21 Xplained Pro开发板文档从Harmony配置界面的左边组件窗口中,将SERCOM4拖拽出来。按住SERCOM4组件上UART接口,将其与Touch Library组件上的UART接口相连。
此时连线会自动变为绿色并连接两个UART接口。
如下所示表示UART接口连接完成
设置UART属性
波特率:115200;使用Ring Buff:减少通信失败率;设置Receive和Transmit端口等。具体参数如下图所示:
确定串口引脚
开发板上的串口4直接连接到了Micro-USB接口。引脚接线如下:
TXD--PB10--SERCOM4 PAD[2]
RXD--PB11--SERCOM4 PAD[3]
打开引脚配置界面
点击MHC >> Tools >> Pin Configuration
选择Pin Settings界面
配置串口4引脚
完整的串口4引脚配置如下:
添置BSP组件
目的:减少手动配置步骤。因为BSP是板级支持包组件,里面会自动包含一些基本板级外设。比如:LED,SWITCH等
确认LED、SWITCH引脚
LED0--PA15; SW0—PA28。说明:关于LED0和SW0配置,我们可以偷懒直接添加BSP组件。当然也可以在引脚配置界面进行手动设置
添加触摸控件库确定Touch Button引脚
PA5--Touch Button
点击MHC >> Tools >> Touch Configuration打开触摸配置界面
切换到触摸配置
点击圆形控件(这个是触摸按钮)
选择电容接法类型:“Self Capacitance Sensing”,设置按钮控件数量
切换到触摸按钮对应的引脚
切换到Pin窗口,根据实际硬件接收来设置引脚。这里选择PA05
至此即可完成触摸按钮控件添加,而剩下的参数全部使用默认的。
修改外设时钟
串口时钟使用主频48MHZ;PTC时钟:4MHZ;
点击时钟界面中的Peripheral Clock Configuration按钮,打开外设时钟设置界面
最后整体看下引脚配置是否正常。没问题后,点击代码生成按钮或者点击MHC >> Generate Code
应用层代码编写
main函数中添加如下代码
向touch_example.c文件中添加发下代码
以下代码是Touch调试的代码,这个由Harmony配置工具自动完成的。
编译并下载程序。
触摸调试
接上开发板,查看电脑设备管理器中是否有COM口。如果没有显示COM口,请检查接线以及USB转串口驱动是否安装
打开Atmel Data Visualizer软件
在Serial Port Control面板中选择COM口,按照串口配置选择。然后勾选Autodetect protocols选项,并点击它。
然后打开的窗口中找到MicroChip Harmony配置工具生成的工程目录,在此目录找到仪表板配置(.db、.ds 和.sc)文件。一般存放路径
”..\src\config\default\touch\datastreamer“,这里选择*.ds文件即可。
说明:也可以将几个文件复制到其他目录,选择时指定即可。
最后点击Connect按钮
连接成功后,切换到数据及图像显示窗口
可以发现这里delta值非常大,一般我们设置Treshold值为最大增量delta的50%
切换到Harmony中触摸配置界面,将Treshold值提高到70-80之间再测试,可以发现此时触摸就更加准确。
关于触摸参数的说明,请查看我另外一篇文档:https://bbs.21ic.com/icview-3171342-1-1.html
参考资料
QTouch®模块化库外设触摸控制器用户指南
http://www.microchip.com.cn/newcommunity//Uploads/201912/5de5ffb7e90da.pdf
Capacitive-Touch-Sensor-Design-Guide文档
https://ww1.microchip.com/downloads/aemDocuments/documents/TXFG/ApplicationNotes/ApplicationNotes/Capacitive-Touch-Sensor-Design-Guide-DS00002934-B.pdf
ATSAMC21系列芯片手册:
https://ww1.microchip.com/downloads/aemDocuments/documents/MCU32/ProductDocuments/DataSheets/SAM-C20-C21-Family-Data-Sheet-DS60001479J.pdf
开发板使用说明文档
https://www.microchip.com/content/dam/mchp/documents/OTH/ProductDocuments/UserGuides/Atmel-42460-SAM-C21-Xplained-Pro_User-Guide.pdf
|