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

最新更新时间:2015-03-14来源: 互联网关键字: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   PIN RO  原理图

 

图 1 PIN RO 原理图

1.2 转轮算法

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

 

图 2  转轮电极设计

 

图 2 转轮电极设计

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

 

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

 

图 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  实例演示图

 

图 4 实例演示图

3.1 电路设计

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

 

图 5  MCU 电路

 

图 5 MCU 电路

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

 

图 6  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 流程图

 

图 7 TIMERB 流程图

 

图 8  TIMERA0 流程图

 

图 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 特效控制的场合,有很大的使用价值。

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

上一篇:功能丰富的 LED 驱动器 IC 可用来实现大功率汽车 LED 前灯
下一篇:MCU学习之按键控制LED

推荐阅读最新更新时间:2023-10-12 22:53

LED台灯与COB台灯怎么区分
LED台灯简介 LED台灯就是以LED(LightEmit TI ngDiode)即发光二极管为光源的台灯,LED是一种固态的半导体器件,它可以直接把电转化为光。其使用的LED照明技术是第三代照明技术。LED台灯使用产生的蓝光会对眼睛造成伤害,但也有一系列优点。 LED台灯缺点: 1、单色光源,色谱太窄,对眼睛的视神经会有影响,容易疲劳 2、价格比较贵,相对于其他光源,价格普遍比较高。 3、LED灯具由于入门门槛低,其中也包括了一些不合格的产品,国内也缺乏相关的质量检测手段,主要以国外发达国家的质量检测为标准。 4、LED小灯珠,使用几年后会慢慢损耗而无法更换,容易造成整个台灯报废 5、做工较差的LED
[电源管理]
漫谈大功率LED汽车灯泡
LED 切入车用市场已经多年,但由于 亮度 不足和成本原因,还没有被市场普遍接受。目前主要用于中高档轿车市场,而国外尤其是日本汽车对LED的应用已相当广泛。 汽车 LED灯 根据应用可分为照明用灯、配光用灯和装饰用灯三种,配光灯适用于仪表指示灯背 光显示 、前后转灯、刹车指示灯、倒车灯、雾灯、阅读灯等功能性方面。装饰灯主要用于汽车灯光色彩变换,产生车内外美化作用。 近几年随着部分车用LED亮度问题的解决和成本的下降,其应用量有所增长。最难突破的便是近年才得到初步应用的汽车照明头灯的应用,比如日本汽车厂商推出的Lexus顶级混合动力车“LS600h”和“LS600hL”,丰田汽车在量产车中全球首次配备了使用
[电源管理]
LED背光成市场主流规格 还需再等六年
虽然LED背光早就备受关注,但是让大部分用户用上LED显示设备的日子还很遥远。DisplaySearch今年7月30日发布的调查数据表明,虽然近期LED背光市场成长快速,不过,LED背光要成为市场主流规格(市场占有率超过50%)可能要等到2015年。 虽然大多数显示器厂商都还没有将重心转到LED背光产品上来,但是也都有相应的产品布局。近日LG发布了多款LED背光产品,已经开始将LED背光产品作为未来的推广重点。 成本依然是最大难题 2008年,LED的价格出现了较大幅度的下滑。LEDinside调查数据显示,目前大功率LED方面,发光效率在80lm/W以上的产品2009年第二季度价格普遍
[电源管理]
用延时实现PIC单片机LED流水灯
用延时实现P IC 单片机 LED 流水灯 ;**************************************************** __CONFIG 3F39H;设置配置位中振荡方式为XT,其它全部禁止或关闭 ;**************************************************** status equ 3h ;定义状态寄存器地址 portc equ 7h ;定义端口C的数据寄存器地址 trisc equ 87h ;定义端口C的方向控制寄存器地址 flag equ 25h ;定义一个控制左移/右移的标志寄存器 ;*****
[单片机]
PIC单片机AD转换LED显示程序
;* 单片机 模拟量进行模/数转换,并用 LED 显示出来我们可以看到转换 ;* 结果,0位AD当做8位来用了,利用 单片机 片内硬件资源TMR0和预 分频器 , ;* 为ADC提供定时启动信号, A/D 转换的时钟源选用了系统 周期 的8倍,选 ;* 用了 电源 电压 VDD和VSS作为基准电压,软件方式查询其中断标志位ADIF. ;************************************************************ LIST P=16F877 ;列表伪指令 INCLUDE P16F877.INC ;把包含文件含入源程序 ;******
[单片机]
浅谈影响LED元件热阻的因素
热阻(thermal resistance),是物体对热量传导的阻碍效果。热阻的单位为℃/W,即物体持续传热功率为1W时,导热路径两端的温差。led的热阻是指LED点亮后,热量传导稳定时,芯片表面每1W耗散,PN结点的温外与连线的支加或散热基板之间的温度差就是LED的热阻Rth。热阻值一般常用θ或是R表示,其中Tj为接面位置的温度,Tx为热传到某点位置的温度,P为匯入的发热功率。热阻大表示热不容易传递,因此套件所产生的温度就比对高,由热阻可以判断及预测套件的发热状况。℃/W数值越低,表示芯片中的热量向外界传导越快。因此,降低了芯片中PN结的温度有利于LED寿命的延长。 那麼影响LED元件热阻的主要因素有哪些呢?如何降
[电源管理]
基于AVR的LED数字大屏幕的设计与实现
摘要:研究基于AVR单片机的LED数字大屏幕显示技术。上位PC机通过串行端口为下位AVR单片机传输要显示的字符的编码,下位AVR单片机通过驱动74HC595可将字符的编码通过LED点阵的形式显示出来,并且给出了一种矩阵转置移位算法。 关键字:LED 单片机 编码 矩阵转置 1引言 LED显示屏是八十年代后期在全球迅速发展起来的新型信息显示媒体,应用越来越广泛。ATMEGA16L单片机是一款基于AVR RISC 的、低功耗CMOS 8 位单片机,具有16K字节的自编程FLASH, 512字节的EEPROM, 1K字节的SRAM, 通过AVR单片机来控制LED的显示,结构简单,应用灵活,并且易于扩展。 2 系统设
[单片机]
基于AVR的<font color='red'>LED</font>数字大屏幕的设计与实现
字符设备驱动程序--LED驱动
编写驱动程序需要编写那些代码: 1、硬件相关的驱动程序 2、Makefile的编译程序 3、还需要编写一个相关的测试程序 比如说:一个摄像头驱动程序 1、驱动程序的编写,需要编写一些硬件相关的操作,编译Makefile 2、安装、运行、卸载驱动程序(insmod ***、。./*** 、remod *** )。 3、使用这个驱动程序:需要一个测试程序,如QQ(测试程序)打开摄像头。 编写驱动程序框架: APP:(测试程序) open read write ......... -----------------------------------------------------
[单片机]
小广播
最新电源管理文章
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved