传感器是用于侦测、监控和响应温度、压力、湿度和运动等物理参量的设备。它们是许多实际工作系统不可或缺的零组件,在工业、消费、汽车、医疗和军事 方面应用非常广泛。在过去,从传感器获得的数据被直接发送至中央控制单元,然后中央控制单元可能会使用外挂的硬件组件或数字逻辑对传感器数据执行后制或显示。
随着8位微控制器(MCU)等嵌入式处理器解决方案的出现,将固定的中央硬件替换为可透过程序执行应用所需特定任务的微控制器所带来的优势愈加明显。但是,8位微控制器只能提供给计算密集度不大的系统做一些基本处理任务。
为此,智能传感器讯号处理的需求逐渐浮现,而其具备的条件包括以下几项:
传感器信号融合
传感器应用复杂度的急速提升,使得将更强大的智能嵌入至传感器接口变得势在必行。很多应用均采用多个传感器来获取各种测量数据,并且运用十分先进的方法对数据进行处理。
在某些情况下,必须同时处理来自多种传感器的讯号,因而须利用同一个微控制器,这种情况可以称为「传感器讯号融合」。每种类型的传感器都有各自的讯号特性,并且须要透过不同的后制从中提取有用的信息,这会增加中央处理器(CPU)的运算量和周边数据处理量。
容错技术需求大增
对于处理器而言,监控传感器讯号和侦测可能引起系统完全故障的错误也非常有用。检测出错误情况后,可完全关闭系统或切换到多余备分传感器。如果在错误检测流程中再加入一个步骤,就可以在故障实际发生前对其进行预测,这将大大简化现场硬件维护和保养。
此类容错算法和技术可能会相当复杂,需要更高的运算能力、更大的内存以及容易与更丰富的周边功能,因此有必要升级到16位微控制器。
分布式处理
在许多应用中,传感器实际分散在较广的区域内,如分散在大型建筑或工厂内,或分散在汽车的不同零件内。对于这样的分布式系统来说,集中式处理/控制方法往往被证实无效,或者在最佳情况下仍然效能不彰。
要减轻中央控制单元在处理和数据储存方面的压力,最好将处理能力分散到多个靠近的传感器,或者甚至与传感器整合的微控制器上。但是这种分布式传感器处理方法需要各种强大的讯号转换和通讯周边。
剖析智能传感器处理讯号链
传感器讯号处理包括各式各样的嵌入式应用,但可以概括地定义代表传感器处理系统特点的通用讯号链。传感器应用的主要组件是感测组件(也称为转换 器)、讯号调整电路(多数是模拟电路组件),以及嵌入式微处理器(在某些情况下是简单硬件电路的数字逻辑电路或ASIC)(图1)。
感测组件种类多样
感测组件(实际上就是「传感器」)是用于将关注的物理参量转换成某种电子讯号的装置。智能传感器处理应用经常使用多个感测组件,它们属于同一类型,如空 调系统中的多个热敏电阻,或者属于不同类型,例如一台工业机械设备中的热电偶和一氧化碳探测器。每种类型的传感器都有自己的一套讯号调整和数据后制要求, 可以根据所测量的物理参量对感测组件进行广义分类,例如温度传感器、压力传感器、流量传感器、气体/化学传感器、声音/超音波传感器、位置/运动传感器、 加速计、图像传感器、光传感器。
也可以根据传感器输出的电子讯号的类型对传感器进行分类。概括而言,共有四种常见的传感器类型:
电压传感器
产生随感兴趣的物理量而变化的输出电压。
电流传感器
产生变化的电流。
频率传感器
产生电压波形,该波形的频率取决于待测量。
数位传感器
只根据输入参数产生数字电压数据。在某些情况下,所产生的数字数据只是二进制0/1讯号。此类传感器的输出在本质上不同于大多数其它传感器,后者产生的讯号在模拟范畴变化。
讯号调整电路设计视传感器类型而定。
简单地说,讯号调整电路将感测组件的输出讯号规画到其余电子电路或应用软件可以处理的范围内。传感器应用所需的具体讯号调整电路,取决于所采用的传感器 的类型。例如,某个传感器根据所测量的物理参数大小产生输出电压,其需要的讯号调整能力,可能不同于产生可变电阻的传感器。从本质上说,传感器应用均有以 下共同的讯号调整要求。
首先,传感器产生的讯号必须尽量避免混入噪声。而且,讯号的频谱(亦即讯号频宽)必须根据某些约束条件限制 在特定的范围内,因而常常有必要使用一种称为迭频消除滤波器的设备。其次,不管是电压、电流还是频率,传感器所产生讯号的振幅通常较小。为了准确处理讯 号,让系统尽量不受噪声的影响,须要将讯号放大。
除了滤波和放大外,还须使用模拟数字转换器(ADC)将讯号转换成数字形式,这 增加了讯号调整要求。除了要放大讯号外,可能还须要对讯号进行转换,使其能适应不同的ADC参考电压。但是,很多ADC,尤其是微控制器或数字讯号控制器 (DSC)中包含的ADC,仅对单极性输入有效。换句话说,输入电压不能相对地在正负电位之间变换。在这种情况下,就必须使用电压位准移位器。
在本例中,使用一个三运放差动放大器将热电偶产生的差动输出电压放大,然后送入内建模拟数字转换器C的输入端。与此相似,ADC的另一个输入,可用于补偿热电偶引线结点和印刷电路板(PCB)布线交汇处产生的电压的影响,而且更多用于补偿后者。
嵌入式处理器提取有用信息
即使在经过相当多的讯号调整后,若可从随时间变化的电子讯号中提取出相关信息,传感器产生的讯号才有用。此一提取过程透过嵌入式微处理器来完 成,传统上使用微控制器或数字讯号处理器(DSP)。因此,显而易见,处理器的功能及其上运行的应用软件的功能,才是系统中最关键的因素,这就是为智能传 感器处理系统提供所有「智能」的处理器次系统。
处理传感器输出的第一步,是将模拟讯号(通常被调整成提供变化的模拟电压)转换成数字形式。由此可以推断,ADC在决定整个传感器处理系统的精 确度方面发挥至关重要的作用。此外,ADC必须提供足够高的分辨率和具有较好的精确度特性,如积分非线性(Integral Non- Linearity, INL)和微分非线性(Differential Non-Linearity, DNL)。
通常,可能须要对从传感器获取的数据执行大量的后制操作。此类操作的例子包括:
数据的有限脉冲响应(FIR)和无限脉冲回应(IIR)滤波
主要用于消除噪声,可能需要不同类型的滤波器。例如,若目标仅是限制讯号的频宽与去除高频噪声,则使用低通滤波器或带通滤波器比较合适。另一方面,如果系统易受电源引入的噪声的影响,则使用高通滤波器或带拒滤波器(具体取决于所需讯号的频谱)更合适。
进行快速傅利叶转换(FFT)计算来分析数据,以便将频域数据用于进一步的处理阶段,此一操作对于信息包含在输出讯号的频率中的传感器尤为重要,例如基于都卜勒效应的超音波传感器或声音传感器。
传感器数据的静态或周期性校准
校准是透过提供一组已知的传感器输入并测量相应的输出,来设置传感器输出与所需物理参量之间映射的过程。
传感器输出与所测量的物理参量间通常不是线性关系
在此类情况下(例如热电偶),必须将采样后的传感器数据「线性化」以补偿输入输出间的此种非线性关系。该过程通常会涉及高密集度的计算,如应用高次多项式。
根据输入数据的大小对其进行换算和常态化此类计算要求传感器接口使用的处理器必须具有相当高速的数学运算能力,普通的16位微控制器架构无法满足这样的要求。
此外,在很多应用中,并不只是简单地对传感器讯号进行分析和解读,还必须执行控制操作对传感器讯号进行响应。这些操作可能包括以下几项任务:调整传感器讯号分析软件所使用的校准参数,以便正确分析传感器输出;向其它处理次系统传送数据,例如汽车轮胎上的胎压监控器向仪表板定期发送压力资料并发送警报;在因特网上更新数据,例如定期读取电表读数或定期收集工业数据采集系统的数据;控制电机、电源、继电器、开关和其它设备;采用容错措施,例如修正与故障传感器对应的数据或切换到其它感测组件。
传统上,使用DSP执行此类数学计算密集的任务。不过,DSP本身(没有关联微控制器)并不是非常适用于传感器接口,理由主要有四个:第一,DSP设备没有灵活的中断结构;其次,DSP设备在控制位如单独的I/O接脚方面的效率不高;再者,DSP设备在很大程度上依赖于外接内存和周边;第四,DSP设备的接脚数一般都比较多,但是传感器处理所需的接脚数应该要非常少,这一点非常重要,因为很多应用一般都有空间限制,并且对成本敏感。
另一种适用于高效能智能传感器系统的有效单芯片架构平台是16位DSC,如微芯(Microchip)的dsPIC33F系列。DSC是一种创新的混合处理器架构,集16位微控制器的控制功能与丰富的DSP功能于一身。DSC架构非常适用于提供周期性中断,以及捕捉来自多个传感器和控制输入端的数据。若有需要,DSC架构可与分布式系统中的其它控制器模块共享数据。
另一方面,DSC的中央处理器支持一系列强大的DSP指令和灵活的寻址模式,因而能够快速准确地进行算术和逻辑运算。接下来,说明让DSC架构适用于智能传感器讯号处理的典型特性。
DSC必备主要特点
典型的DSC架构具有使其适用于大量传感器应用的多种中央处理器和周边特性。以下将探讨这些特性中最有用的几个,在选择DSC架构时,这几个特性是考虑的重点。
增强的中央处理器功能
16位DSC最强大的特性是可提供丰富的DSP功能。真正的DSC包含两个40位累加器,可用于储存两个独立的16位×16位乘法运算的结果。
大多数DSP算法如FIR和IIR滤波,都会涉及计算乘积之和。利用特殊指令如乘法与累加计算(Multiply-and-Accumulate, MAC),可以在一个运算速度内将两个16位数字元相乘,将结果加到累加器,然后从随机存取内存(RAM)预先取得一对数据值。利用两个累加器,也可以将数据写回一个累加器,同时在另一个累加器上执行计算。
累加器宽度为40位(而非32位)时,可以将数据暂时「溢出」(这在累加器中累加大量值时经常发生)。此外,DSC的中央处理器也可以选用一种称为「饱和」的机制,将值保持在允许的范围内,并在将值写回RAM时对值进行取整或换算。DSC的另一项特性(也是微控制器一般缺少的)是其解读分数形式的数据的能力,DSC并不总是假定数据为整数,因而有助于分数运算。
除上述特性外,还增加各种数据寻址模式,用以高效移动数据,支持环形缓冲区和位反转寻址,以及零耗循环(Zero Overhead Loop)。很显然地,DSC提供了非常强大的使用者友善型中央处理器架构来处理或分析传感器数据。
灵活的中断结构
DSC设备的中断结构拥有极高的灵活性。一般来说,支持大量可单独允许并设置优先级的中断源和向量,这对涉及多个传感器的应用非常有利。其中断延迟应该具有高确定性,以简化系统开发人员的工作。显著提高智能传感器讯号处理应用效率的另一个特性是,直接内存存取(Direct Memory Access, DMA),其在周边和内存之间(如在ADC和数据缓冲区间)自动传输大批量的数据。
运行时自我烧录(RTSP)
大多数传感器应用都须要储存常数,其用于根据环境条件、变换器输出与预测量之间的偏差量,来校准从传感器获取的资料。后制算法也会使用常数,如滤波系数或快速傅立叶转换旋转因子。但是,在RAM中储存此类常数会浪费数据储存空间。
DSC设备通常包含闪存(Flash Memory)程序内存和基于闪存的数据电子式可清除程序化只读存储器(EEPROM),可用于高效可靠地储存和存取此类常数。在闪存DSC设备中,使用者的程序甚至可以实时修改这些常数,具体取决于环境、资料或工作条件的变化。
实体电路串行烧录
借助闪存DSC,使用者能够使用称为实体电路串行烧录(In-Circuit Serial Programming, ICSP)的方法在现场轻松升级应用韧体。实体电路串行烧录,不仅可以修正传感器校准或软件漏洞,以最少的成本和最短的延迟提供更强的功能,而且能够使同一控制器用在不同类型的传感器接口中及不同的条件下。
高解析ADC和DAC
传感器一般用于测量温度、压力和光等物理特性。因此,须要使用速度和分辨率足够高的内建ADC,才能测量输入量的微小且快速的变化。对于大多数系统而言,输入分辨率低于12位的ADC可能不够用,非线性误差大于一个最低有效位的ADC也不行。
此外,为测量不同类型参数而采用多种传感器的任何应用,都要求ADC支持多种采样、转换和触发选项。DSC通常包含多个模拟输入频道(因而能够与多个变换器相连接)、灵活的采样/转换选项(如自动在多个输入之间切换以实现连续采样),以及测量差动输入的功能等。为了减少读取转换后的采样所产生的开销,DSC提供了数据格式可配置(例如整数/分数或有符号/无符号)的大内存映像ADC缓冲区。
内建数字模拟转换器(DAC)模块将数字数据(通常来自对传感器数据的实时分析)转换成可用于驱动外接设备(如制动器)的模拟讯号。尤其是在DAC支持如16位高分辨率的情况下,DAC输出可以被送入扬声器,用于播放语音形式的系统使用说明或系统状态。
高速输入捕捉和输出比较
在某些传感器应用中,控制器可能会仅为了响应特定事件而读取来自传感器变换器的输入。为了尽可能地降低功耗,控制器可能须要在检测到某种脉冲或讯号前保持休眠状态。DSC具有低功耗工作模式,在该模式下只有内部低功耗振荡器处于活动状态。此后,可透过「输入捕捉」接脚上的控制脉冲或事
件唤醒DSC,此时会触发资料收集或计算。「输入捕捉」频道还可用于获取特定事件的时间戳记。
DSC设备上除了有「输入捕捉」频道外,还有多个「输出比较」频道。「输出比较」模块基本上用于从通用内建定时器触发输出接脚状态转换来产生所需波形,其通常具有脉冲宽度调变(Pulse Width Modulation, PWM)功能。
「输出比较」讯号在传感器应用中有很多用途。例如,PWM讯号可用于基本的电机控制。语音录音通常以压缩形式储存在内建闪存中并实时进行解压缩,其可以转换成PWM波形的工作周期,然后透过外接低通滤波器电路,从扬声器播放出来。
I/O位准变化通知功能
在许多情况下,传感器应用中的控制器可能需要根据某些通用I/O接脚的状态变化来切换工作模式或产生警报。DSC可以透过产生中断快速响应此状态变化。
通讯周边不可或缺
由于基于传感器的系统的空间分布越来越广,数量越来越多,控制器须要透过某种通讯总线或网络进行数据通讯。
在一些应用中,为了记录或以图表显示从传感器获取的资料,控制器可能必须透过标准协议如RS-232和RS485发送数据到个人计算机(PC)或逻辑分析器。控制器偶尔也可能选择使用外接调制解调器透过电话线发送数据。
为此,DSC芯片提供16位可寻址通用异步收发器(UART)接口。在某些情况下,甚至可能在处理器内的软件中实现调制解调器通讯协议--分时多任务(Time-Division-Multiplexed, TDM)串行通讯接口或转码器接口有利于与调制解调器前端芯片组的通讯。
另一方面,某些周边使用I2C协议进行通讯。例如,凭借I2C,DSC可以使用外接串行EEPROM来储存和存取HTML网页,以直观监测和控制传感器次系统的运行。在基于因特网的系统中,应用软件中可能须要包含低成本的TCP/IP软件协议,并且可以使用透过16位串行周边接口(SPI)与DSC进行通讯的以太网络收发器芯片实现透过以太网络连接的通讯。
DSC的内建SPI频道还有其它常见用途。例如,可能须要使用外接数字电位计或可程序化增益放大器,来动态调节一个或多个传感器的增益。位置互相靠近的不同传感器次系统间,可能经常需要同时开展通讯。为了应对这种情况,DSC设备通常包含一个或多个16位SPI。
讨论通讯接口和周边时,若不提及功能稳健且灵活的控制局域网络(Controller Area Network, CAN)协议,那么该讨论肯定不完整。CAN协议是汽车应用(工业和医疗应用中也越来越多)中网络次系统的事实标准,也是其它应用领域中的一种新兴技术。
请注意,这些应用领域中广泛采用智能传感器讯号处理次系统。包含多个内建CAN通讯接口的DSC设备,尤其是带有支持数据过滤和缓冲的精密硬件的DSC设备,非常适用于网络传感器处理。
感测实例应用说明
接着说明几个基于传感器的系统的范例,在这些范例中,DSC提供理想的架构解决方案。这里并未逐一罗列所有的情况,仅为说明DSC在传感器应用中应用广泛而已。
温度量测运算 DSC效益显著
在传感器测量的各种物理量中,温度测量可能最为常见。在工业设备、化工厂、暖气、通风与空调(Ventilation and Air Conditioning, HVAC)系统、计算机安装和电池管理系统等众多系统中,温度测量是极其重要的一个方面。若要根据所测量的电阻准确计算温度如使用电阻式温度检测器或热敏电阻,须要进行对数计算和除法,在此过程中,DSC的DSP功能将非常有效。在某些配置中,须要差动ADC输入。
将热电偶用作温度传感器时,所产生的电压很小,因而容易受到寄生结效应的干扰。在使用P-N结(硅)传感器的情况下,所产生的电压将随设备的不同而有所变化,难以进行准确的测量。不管是哪一种情况,在内建数据EEPROM或闪存程序内存上储存和存取校准常数的功能,都有助于补偿这种不需要的效应。
类似地,须要对热电偶和红外线(IR)温度检测器所产生的非线性输出进行数学运算,使其线性化。例如,K型热电偶使用下列线性化多项式:
温度=a1×V+a2×V2+a3×V3+…
其中,a1=25132.785,a2=-60883.423…,V =传感器输出电压。
在dsPIC33F DSC上使用两个累加器和DSP指令执行此线性化任务时,计算过程(上述多项式仅计算到第二阶)需要七个运算速度--四个数据传送周期、二个乘法周期以及一个乘减运算周期。透过该公式可以很明显看出,在通用微处理器或微控制器架构上执行此运算会耗费更多时间,这也间接说明了使用DSC的优势。
而且,热电偶的输出电压(即使在放大之后)特别容易受60Hz(或50Hz,具体取决于区域)的电源线路噪声影响。考虑到热电偶输出的变化率较慢,此噪声容易与热电偶输出位于同一频带,并且须要使用中心频率为60Hz的带拒滤波器小心地进行滤波。
FIRD和IIR滤波算法均可以在DSC上高效执行,但是IIR滤波器需要的系数一般要少得多,因而需要较少的乘法和加法运算。不过,IIR滤波器具有回馈项,因而会造成一些稳定性方面的难题。幸运的是,数据自动饱和是DSC架构中相当常见的硬件特性,可以尽可能地降低由于溢出造成的数据损坏。图5的频率响应图展示了用于抑制60Hz电源线路讯号的十六阶IIR带拒滤波器(取样速率为1kHz)的频率选择特性。
对于DSP设计经验不甚丰富的系统开发人员而言,设计数字滤波器尤其是IIR滤波器的过程中所涉及之理论和步骤可能相当复杂,对数学功底的要求极高。幸运的是,很多DSC制造商和协力工具厂商都已提供低成本的工具,开发人员只须要在这些工具中指定通带和拒带的转移频率及所需的衰减度即可。这些工具可以计算滤波器系数并产生应用软件可以直接使用的源文件和数据文件。图3展示了四种最常见的数字滤波问题。
除了线性滤波和数字滤波外,应用软件还必须在从热电偶采样的电压中加上从外接温度传感器IC如TC1047A采样的电压,以执行冷结点补偿。此外,很可能须要定期计算ADC转换结果的平均值,具体视所采用的ADC取样速率而定。平均值计算可以透过DSC架构中通常提供的基于累加器的加法和多位移动运算高效完成。
满足指纹辨识复杂计算
说明过最常见的智慧传感器应用后,现在开始讨论一种本质上更复杂且计算要求更高的传感器应用--指纹辨识。
指纹辨识在安全区域(如房间或车辆)的进出控制、存取设备(如手机)、个人计算机或网络登入,以及仅作为
可靠的个人身分识别形式等方面的应用日趋增多。目前,市面上有很多类型的指纹传感器,如电容式传感器、光学传感器、热传感器和电场传感器。例如,电容式传感器依赖于人手指上的纹路起伏产生的电容变化。
负责从指纹传感器捕捉指纹数据的控制器须具有以下的某些特性:足够快的ADC,用于接收传感器采样的值;高速串行通讯接口(如SPI),用于与系统中的其它模块进行通讯;闪存,用于储存指纹「模板」数据库,然后在验证或辨别指纹时高效存取这些范本。
最重要的是,须要拥有强大的DSP功能来执行指纹配对操作。最后必须指出的是,控制器应该不仅能够处理16位数据,还要能够高效处理8位数据(如DSC可以处理8位和16位的数据),因为大多数传感器都使用8位的值来代表指纹。
16位DSC渐受瞩目
随着对传感器接口的功能性、联机性以及数学和讯号处理方面的要求变得越来越高,16位DSC逐渐成为许多基于传感器的系统和智能传感器的理想内建系统架构。实时操作系统(RTOS)、TCP/IP和预封装DSP算法等软件工具,进一步增强此类架构在各种传感器应用中的可用性。