历史上的今天
返回首页

历史上的今天

今天是:2024年09月15日(星期日)

2020年09月15日 | 基于MSP430微控制器的电容触摸实现方案和LED PWM驱动

2020-09-15 来源:elecfans

本应用文档介绍了使用MSP430微控制器实现电容触摸转轮和多路独立LED的PWM软件驱动技术。方案通过4路I/O 端口实现电容触摸转轮控制,I/O端口配合三极管驱动LED,实现LED呼吸、轨迹灯等效果。本方案为需要电容触摸转轮控制和LED跟踪显示等绚丽灯效的产品提供了有效的低成本方案。


简介

电容触摸技术作为一种实用、时尚的人机交互方式,已经被广泛的应用到各种电子产品,小到电灯开关,大到平板电脑、触摸桌等。随之而来的是考验产品设计者如何发挥智慧,在把产品用户界面设计得方便简洁的同时,又能呈现产品绚丽的外观,从而带来良好的用户体验。


LED显示由于界面友好,可以实时反映触摸的位置信息,在电容触摸产品设计中得到广泛应用。本设计正是利用了大量的LED来实现呼吸灯、轨迹灯的特效,可以为例如灯光、音量、温度等带有调节功能的产品提供设计参考。


德州仪器的MSP430系列单片机以低功耗和外设模块的丰富性而著称,而针对电容触摸应用,MSP430的PIN RO电容触摸检测方式支持IO口直接连接检测电极,不需要任何外围器件,极大的简化了电路设计,而本设计文档中使用的MSP430G2XX5更支持多达32个IO口,可驱动24个以上的LED灯,达到理想的显示效果。


1.电容触摸转轮实现方案

MSP430电容触摸转轮方案通过4个IO口完成4个通道的电容检测,配合特殊的电极图形,就可实现转轮的设计。


1.1 电容触摸实现原理

MSP430根据型号的不同支持多种电容触摸检测方式,有RC震荡、比较器、PIN RO, 本设计使用的是PIN RelaxaTIon Oscillator方式,原理如图1,芯片管脚内部检测电路由施密特触发器、反向器,以及一个电阻组成,震荡信号经过施密特触发器变成脉冲信号,再通过反向器反馈回RC电路,通过TImer_A对施密特触发器的输出进行记数,再通过设置测量窗口Gate获得记数的结果。当手指触摸电极,电极上的C产生变化,导致震荡频率改变,这样在定长的测量窗口就能获得不同的记数结果,一旦差值超过门限,结合一定的滤波算法判断就可以触发触摸事件。

基于MSP430微控制器的电容触摸实现方案和LED PWM驱动

图1 PIN RO原理图


1.2 转轮算法

将4个按键电极按照图2锯齿状交叉就形成了一个转轮的电极,转轮的大小根据产品设计的需要可进行适当的缩放,图2的图形设计适合30mm左右直径的转轮。

基于MSP430微控制器的电容触摸实现方案和LED PWM驱动

图2 转轮电极设计


当用户在转轮上操作的时候,在手指对应位置的电极会获得最高的信号值,手指临近的通道会有相对高的信号值,离手指最远的通道检测到的信号值最小,如图3所示:

基于MSP430微控制器的电容触摸实现方案和LED PWM驱动

图3 手指触摸时不同电极上测量到的信号值


这时可以利用不同通道上信号值的不同计算出手指在转轮或滑条上的位置。位置计算步骤如下:

a.用排序方法找出4 个电极中信号最大的电极

index = Dominant_Element(groupOfElements, &measCnt[0]);

b.将找到的这个电极的信号加上相邻电极的信号

posiTIon = measCnt[index] + measCnt[index+1] + measCnt[index-1];

相加后的结果如果大于门限,就认为有触摸事件产生,继续后续的位置计算。 把前后信号相加的原因是手指在操作的过程中有可能处于两个电极中间,这样两个电极上得到的信号都不会很高,需要把信号相加才可以与门限做比较。


c.计算位置坐标时先根据筛选出的index 值得到一个大约的位置,再根据index 的相邻电极信号强度进行修正,得到最后的坐标值

posiTIon = index*(groupOfElements-》points/groupOfElements-》numElements);

position += (groupOfElements-》points/groupOfElements-》numElements)/2;

position += (measCnt[index+1]*(groupOfElements-》points/groupOfElements-》numElements))/100;

position -= (measCnt[index-1]*(groupOfElements-》points/groupOfElements-》numElements))/100;

d.针对index为0或者3的情况代码需要另外处理,不过计算方法和上述是一致的。

这里转轮的分辨率,即转轮一圈分为多少个段是根据points设定的,假设用户只需要区分24个位置,就可以设points为24,当然也可以设为64,128,甚至更高,这取决于转轮的大小,电极图形的设计以及电极的多少,例如需要类似1024这种高精度,需要增加电极数从4个到8个或者更多。


2.LED PWM驱动方案实现

要实现LED呼吸的效果,就要求


本应用由于使用了24个LED灯,需要24路的PWM输出控制,MSP430G2955有32个IO口,通过IO口配合TIMER定时器,足够支持24路的软件PWM输出。


3.设计实例

本实例采用德州仪器MSP430G2955,通过6个IO完成电容触摸检测,24个IO驱动24路LED,并预留了通讯口。 设计实例如图4

基于MSP430微控制器的电容触摸实现方案和LED PWM驱动

图4 实例演示图


3.1 电路设计

原理图设计如图4, MCU通过一个5V转3.3V的LDO给VCC供电,使用LDO的目的是为了保证电源的稳定,让触摸电路在检测信号时不会因为电源的噪声产生过大的信号偏差。电极上串的电阻作为ESD保护器件,如果在产品结构设计合理的情况下可以省去。电路中预留了UART口与主控系统通讯。

基于MSP430微控制器的电容触摸实现方案和LED PWM驱动

图5 MCU电路


LED驱动部分电路如图5,由于每一个LED的电流在10mA左右,24个LED如果同时亮就有240mA,无法通过MCU IO口直接驱动,在每个LED上加一个三极管以及限流电阻,实现24路LED的控制。

推荐阅读

史海拾趣

Elpaq公司的发展小趣事
Galaxy Microelectronics公司的发展小趣事

江苏飞翼智能科技有限公司成立于2023年,该公司迅速将无人机技术与大数据技术相结合,实现了从传统无人机表演企业向无人机应用型企业的转型。通过自主研发和技术创新,飞翼智能的无人机在地理测绘、土方开挖计算、三维建模等领域展现出强大实力。例如,在地理测绘领域,无人机通过镜头采集地面照片,结合后期处理,能够高效完成数据测绘,大大降低了人工用量,提高了工作效率。这一技术的成功应用,不仅为公司赢得了市场认可,也推动了无人机技术的智能化发展。

Cliff Electronic Components公司的发展小趣事

江苏飞翼智能科技有限公司成立于2023年,该公司迅速将无人机技术与大数据技术相结合,实现了从传统无人机表演企业向无人机应用型企业的转型。通过自主研发和技术创新,飞翼智能的无人机在地理测绘、土方开挖计算、三维建模等领域展现出强大实力。例如,在地理测绘领域,无人机通过镜头采集地面照片,结合后期处理,能够高效完成数据测绘,大大降低了人工用量,提高了工作效率。这一技术的成功应用,不仅为公司赢得了市场认可,也推动了无人机技术的智能化发展。

汇顶科技(GOODiX)公司的发展小趣事

江苏飞翼智能科技有限公司在无人机航模领域也有着深厚的积累。公司不仅自己购买零件组装各类航模,还积极参与国内航模比赛,凭借良好的飞机性能和一流的操控技术取得了不俗的成绩。尤其是涡喷航模,作为中高级的航模产品,其高难度的特技动作展示了飞翼智能在无人机技术方面的深厚功底。这些经验积累和技术创新为飞翼智能向无人机应用型企业转型奠定了坚实基础。

Holt Integrated Circuits公司的发展小趣事

除了传统的航空电子解决方案外,Holt还致力于高压LCD显示驱动器的研发。这些产品不仅满足了航空电子设备对高可靠性和高清晰度的需求,还广泛应用于工业过程自动化和井下钻探等领域。Holt的高压LCD显示驱动器以其卓越的性能和稳定性,赢得了众多客户的信赖和好评。

Custom Connector Corporation公司的发展小趣事

Custom Connector Corporation成立于1969年,当时电子连接器行业正处于快速发展阶段。创始人看到这一市场潜力,决定投身于这一领域。在创业初期,CCC面临着资金紧张、技术瓶颈和市场认可度低等问题。然而,创始人凭借对技术的执着追求和对市场的敏锐洞察,带领团队不断研发新产品,改进生产工艺,逐渐在市场中树立了自己的品牌形象。

问答坊 | AI 解惑

09国赛征题原件———希望能中!!!!!

本帖最后由 paulhyde 于 2014-9-15 09:21 编辑 09国赛征题原件———希望能中!!!!!  …

查看全部问答>

createdialog没有wm_command消息

从同一个模板创建dialog,用dialogbox创建,一切正常。而用createdialog创建,callback里只有WM_INITDIALOG,没有WM_COMMAND,也就不能对button控件进行任何操作了。由于设备不能连接电脑,也看不见消息队列。…

查看全部问答>

求助linux编译的一个问题

在linux下我用如下的命令去单步编译 gcc -c ADInclude.c gcc -c test2.c gcc -o test test2.o ADInclude.o 可以编译通过,但我用makefile文件去编译就会出错 /usr/lib/gcc-lib/i386-redhat-linux/3.2.2/../../../crt1.o(.text+0x18): In funct ...…

查看全部问答>

哪里错了?同样的代码,结果却不一样!

        CString str,str1;         m_stbar.SetWindowText(_T(\"Testing......\"));         str1 = m_stbar         ::Sleep(2000);   &nb ...…

查看全部问答>

软件项目

大家好, 目前公司方面有两个小项目需要外包,希望有能力的个人或者小开发团队能够承接,我只是负责将需要完成的任务告诉大家,酬金则可以和我们公司领导谈 . 工作方式:  因为工作地点在广州, 所以其他城市的朋友可以过来广州这边,吃住公司 ...…

查看全部问答>

如何从器件基本特性入手开展精确、成本经济的高亮度LED测试

吉时利专家邀请您首先了解“高亮度LED测试( HBLED)” 高亮发光二极管(High brightness light emitting diodes,HBLED)综合具备了高输出、高效率和长寿命等优势。制造商们正在开发可以实现光通量更高、寿命更长、色彩更丰富而且单位功率发光度 ...…

查看全部问答>

大家在TI购买的EK-LM4F120XL写了在运送时,有没有给快递号啊?

大家在TI购买的EK-LM4F120XL写了在运送时,有没有给快递号啊? Status: Shipped Shipping Method: Shipping Included in Price of Item Carrier: FEDERAL EXPRESS CORP Tracking : Not available…

查看全部问答>

ADI常用芯片

本帖最后由 paulhyde 于 2014-9-15 03:45 编辑 1.模数转换器 AD1380JD 16位 20us高性能模数转换器(民用级) AD1380KD 16位 20us高性能模数转换器(民用级) AD1671JQ 12位 1.25MHz采样速率 带宽2MHz模数转换器(民用级) AD1672AP 12位 3MHz采样速 ...…

查看全部问答>

通用仿真卡CNIC-A2PX

求真相,这是个什么东东啊…

查看全部问答>

用FPGA实现高精度时间间隔测量

大家好,我想问一下,大家是否用FPGA做过高精度的时间测量,时间间隔是0.1ns的,或者是10ps的。 我看文献中显示有人在2000年左右就用FPGA实现了100ps分辨率的高精度时间间隔采集, 但是我给xilinx的技术人员打电话询问,他们说单从硬件上来说是无 ...…

查看全部问答>