MSP430 电容触摸转轮和LED PWM 输出设计

发布者:Tianyun2021最新更新时间:2021-04-21 来源: eefocus关键字:MSP430  电容触摸转轮  LED  PWM  输出 手机看文章 扫描二维码
随时随地手机看文章

简介


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


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 产生变化,导致震荡频率改变,这样在定长的测量窗口就能获得不同的记数结果,一旦差值超过门限,结合一定的滤波算法判断就可以触发触摸事件。


1.2 转轮算法


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


当用户在转轮上操作的时候,在手指对应位置的电极会获得最高的信号值,手指临近的通道会有相对高的信号值,离手指最远的通道检测到的信号值最小,如图 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 呼吸的效果,就要求LED 进行PWM 调光,而要实现轨迹灯的效果,每一路LED必须是独立的PWM 控制。


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


3. 设计实例


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



图 4 实例演示图


3.1 电路设计


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

图 5MCU电路


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


图 6 LED 驱动电路


3.2 代码设计


3.2.1 LED驱动


在编写代码控制LED 点亮时序前,先定义好PWM 输出相关的规格:


• PWM 输出占空比设置为50%。


• 频率为5K Hz, 亮度的等级分为24 级,0 级的时候关闭LED, 23 的时候最亮。


• 使用2个TIMER 进行PWM 输出的控制


• TIMERA0 中断频率为24 X 5K Hz = 120K Hz.


• TIMERB中断间隔设为10ms,在TIMERB 中进行LED 亮度等级的改变


通过两个TIMER 的中断配合,就可以完成24 路独立PWM 输出的控制。当有触摸事件产生时,根据触摸位置对对应的LED 进行亮度等级赋值,然后在TIMERB 的中断中让亮度等级慢慢减少至零,这样就可以实现手指离开电极后,对应LED 慢慢变暗的效果。


在两个TIMER 中断里的程序流程图如下图 7 和图 8



图 7 TIMERB 流程图


图 8 TIMERA0 流程图


3.2.2 转轮


德州仪器的电容触摸软件库支持电容按键的信号检测以及转轮坐标的计算,通过软件库相关参数的配置以及函数的调用就可以得到当前触摸事件的位置值,可以参考德州仪器的触摸按键软件库(www.ti.com/capacitivetouch)获得详细介绍。


当用户在转轮上做滑动操作,LED 的轨迹显示应该是N 个灯同时被点亮,手指所在位置的灯最亮,之前滑过的轨迹上的灯一个比一个暗,N 的数值由操作者滑动的速度决定,如果滑的速度够快,24 个LED 灯会同时被点亮,只是亮度不同。


在滑动很快的操作时会带来一个问题,电容按键扫描的周期跟不上滑动的速度,导致坐标的变化不是连续的,结果就是LED 的轨迹不连贯,在连续的N 个LED 中有部分没有被点亮。为了解决这个问题需要在转轮坐标计算后加入一个插值算法,在用户操作过快的时候对被漏掉的坐标进行补值,使得LED 的轨迹连续。


插值的方法可以通过当前位置和上一次位置的比较,决定是否要进行插值,这里需要设置一个插值门限InterpolationThreshold,当位置跳动距离超过门限就不进行插值,反正误操作产生。


if((WheelPosition-LastPosition)

{


for (j=1;j<=(WheelPosition-LastPosition+1);j++)


{


SetLightLevel(LastPosition+j);


}


}


除此之外,还需要对两个特殊情况做处理,及正向和反向滑动操作经过转轮坐标0 点。


4. 总结


本文介绍了使用MSP430G 系列单芯片实现电容触摸转轮和24 路独立PWM 输出LED 控制方案,在一些需要低成本的产品设计,又要对多种LED 特效控制的场合,有很大的使用价值。


参考文档


1. MSP430x2xx Family User s Guide (SLAU144H)

2. MSP430_SLAS800_G2x55

3. Capacitive Touch Software Library Programmer s Guide (Rev. A) (slaa490a)


关键字:MSP430  电容触摸转轮  LED  PWM  输出 引用地址:MSP430 电容触摸转轮和LED PWM 输出设计

上一篇:总结MSP430学习经验(1)
下一篇:MCU与DSP的SPI通信设计

推荐阅读最新更新时间:2024-11-17 11:57

LED电源的保护情况和负载特点
在平稳电流模式中,LED显示屏生产厂家驱动组件必需供给过压呵护功效。LED就会从电源断开,这样当电源失效时,就不会出现漏电流现象,而且在PWM进行亮度调整的轮回间,输出电容器都是布满的。无论负载是多少,都可发生平稳电流。但若是负载电阻增年夜,相对的电源的输出电压也必需随之增添。当电源检测到的负载电阻,或负载断开的话,那么输出电压概略会凌驾IC,或别的组件的操纵电压规模。   在驱动器里就必需供给过压呵护。负载断开是LED驱动电源中一个凡是被轻忽的功效,因为在电源失踪效时,可以操纵负载断开将LED与电源断开。这种功效不才列两种情形下是相等严重的,那即是断电和PWM调光。例如:在升压转换器断电时代,负载模拟仍是透过电感器和二极管与输入
[电源管理]
STM32中对Key_GPIO_Config()函数的理解之轮询控制按键LED
STM32中对Key_GPIO_Config()函数的理解(自定义)
[单片机]
STM32中对Key_GPIO_Config()函数的理解之轮询控制按键<font color='red'>LED</font>
PIC单片机C语言程序设计实例之C语言if语句与LED数码管显示
if 语句也称为条件语句,是C 语言中转移语句之一。在设计C 语言程序时,常常要根据某些条件以决定程序运行的流向,这时就需要if 语句来实现。任何if语句(包括else 部分),都可当作一条C 语句使用。 格式:if(表达式) 语句1 else 语句2 其中else 为选择项;即可有、可无的。所以条件语句,可分为两种;if 语句和if— else 语句。 式中的表达式为关系表达式或逻辑表达式以及由条件运算符(有关运算符将在后文介绍)构成的一种表达式。 功能:先计算if 中的条件表达式,其值为真(满足条件时),执行语句1 ;其值为假(不满足条件时),若有else,就执行语句2。 If 语句常用有几种形式:
[单片机]
PIC单片机C语言程序设计实例之C语言if语句与<font color='red'>LED</font>数码管显示
直下式LED背光电视成主流,市占率到底有多高
据市场调查机构IHS指出,直下式 LED 背光 电视 的出货比例在2016年第二季达到69%之后,依然持续攀升;并且在2017年同期达到77%,再创新高。直下式LED背光技术由2014年开始导入各种电视机型之后,侧光式LED背光的市占比重正逐年下降。直下式LED背光技术目前已成为市场主流。 直下式LED背光与侧光式LED背光的差异在于LED晶粒的布建方式,直下式背光制造成本相对较低,并且不需要导光板,另外还具有区域控制(Local Dimming)优势。然而,直下式LED背光架构的厚度会比侧光式要来得厚,因此侧光式LED背光架构依然具有轻薄的优势。  
[嵌入式]
STM8S学习笔记之二(STM8 GPIO输出功能)
拿到STM8板子之后,在IAR官方下载IAR for STM8s 30天试用版本,在电脑上安装后发现在安装IAR时,STLink的驱动也会全部自动的安装上去,方便啊。。因为之前我的AVR都是在IAR上开发的,所有对这个软件并不陌生,打开软件新建工程,Debug模式下,设置使用STLink仿真,将空白文件成功烧写进去了,看来,开饭环境搭建还是很简单的。。 接下来,进入主题,STM8S的IO口控制,这是学习一个单片机最最最基础的东西了。 STM8单片机IO与AVR差不多,可以配置为输入输出,同时还可以带上拉电阻下拉电阻。还有就是跟STM32几乎相同,某些IO口可以配置成模拟输入,模拟输入,复用端口,也可以配置成中断端口。
[单片机]
LED可控恒流源驱动系统设计方案
LED作为第三代照明光源,具有工作电压低,耗电量小,发光效率高、寿命长等优点。LED是一个非线性器件,当LED导通时,只要LED上的电压发生微小变化,就会使电流过大导致LED器件发热损坏。LED的工作特性对其供电电源质量的依赖程度很大,因此实现一个高质量的供电电源对提高LED的照明质量、电能利用率、延长LED的使用寿命有着重要的意义。供电电源的稳定性主要取决于LED驱动电路设计,恒流源驱动是最佳的LED驱动方式,采用恒流源驱动,LED上流过的电流将不受电压、环境温度变化,以及LED参数离散性的影响,从而能保持电流恒定,充分发挥LED的各种优良特性。目前广泛采用的恒流源有两种形式:一种是线性电源改进型恒流源,另一种是开关电源式恒流源
[电源管理]
<font color='red'>LED</font>可控恒流源驱动系统设计方案
LED芯片的技术和应用设计知识
较于白炽灯、紧凑型荧光灯等传统光源,发光二极管( LED )具有发光效率高、寿命长、指向性高等诸多优势,日益受到业界青睐而被用于通用 照明 (General Lighting)市场。 LED照明 应用要加速普及,短期内仍有来自成本、技术、标准等层面的问题必须克服,技术方面,包括色温、显色性和效率提升等问题,仍有待进一步改善。而LED在通用照明市场的应用涉及多方面的要求,须从系统的角度去考虑,如LED光源、电源转换、驱动控制、散热和光学等。    薄膜芯片技术崭露锋芒   目前, LED芯片 技术的发展关键在于基底材料和晶圆生长技术。基底材料除了传统的蓝宝石材料、硅(Si)、碳化硅(SiC)以外,氧化锌(ZnO)和氮化镓(GaN)
[电源管理]
LED封装淘汰赛时机不熟 差异化或突围
经过多年的发展,中国 LED封装产业已趋于成熟。近几年 LED封装企业积极过会上市,在资本市场及下游应用产业持续增长的需求助力下,企业规模扩张速度加快,产能高速增长,国内LED封装产业规模不断扩大,2012年国内LED封装总产值达到438亿元,与2011年相比增长53.68%,其中广东省产值达到323亿元,增长57.56%,占国内LED封装总产值的73.74%。而2013年中国LED中游封装473亿元,同比增长19%。预计2014年将达到133.9亿美金,年成长率为7%。 国内LED封装产业产值高速增长主要是因为多数国际LED封装厂家因看好中国国内应用市场,纷纷在国内设立生产基地,加大国内产业销售力度,以及国内公司扩大产
[电源管理]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved