新闻中心

EEPW首页 > 汽车电子 > 设计应用 > 基于脑电的驾驶疲劳检测系统设计与实现,包括原理图、电路图等

基于脑电的驾驶疲劳检测系统设计与实现,包括原理图、电路图等

作者:时间:2017-06-07来源:网络收藏

本文引用地址:http://www.eepw.com.cn/article/201706/350537.htm

交通事故是当前世界各国所面临的严重社会问题之一,已被公认为当今世界危害人类生命安全的第一大公害,每年因交通事故的原因至少使50万人死亡.欧美各国的交通事故统计分析表明,交通事故中80%~90%是人的因素造成的。根据美国国家公路交通安全署的统计,在美国的公路上,每年由于司机在驾驶过程中跌入睡眠状态而导致大约10万起交通事故,约有1500起直接导致人员死亡,7.1万起导致人员伤害。在欧洲的情况也大致相同,如在德国境内的高速公路上25%导致人员伤亡的交通事故,都是由疲劳驾驶引起的。根据中国交通部的统计,我国48%的车祸由驾驶员疲劳驾驶引起,直接经济损失达数十万美元。有关汽车驾驶员的疲劳检测问题,随着高速公路的发展和车速的提高,目前已成为汽车安全研究的重要一环。

国外的许多国家都比较重视疲劳驾驶检测的研究工作。尤以美国的研究发展较快,目前具有代表性的有:美国研制的打瞌睡驾驶员侦探系统,方向盘监视装置,日本研制的DAS2000型路面警告系统,日本研制的电子“清醒带”。对于国内,我国的疲劳驾驶检测系统研究起步较晚,目前比较成型的系统很少。对于目前来说,不论国内国外,虽然研究的成果较多,但是还未见到一种方法是被大家所公认的。就现在而言,基于波的疲劳驾驶检测系统被国际上视作为未来该领域的发展趋势。

信号是一种微弱的生物信号,并且极易受到干扰。基于的疲劳驾驶检测系统的设计思想为:首先要通过脑电采集电路采集脑电信号,再对其进行处理,去掉脑电伪迹和高频噪声,最后通过处理分析脑电信号,从而给出驾驶人员的疲劳程度。系统的基本设计思想如下图所示:

整个系统由模拟部分和数字部分组成。

模拟部分主要由信号放大电路,滤波电路,光电耦合电路以及AD6783模数转换器构成。

数字部分主要由(ADC接口),时钟管理器,模块和分析处理模块共同组成。

第一章:模拟部分

前端信号采集电路完整实现了基于脑电的疲劳检测系统,总体放大倍数为A=100×70×1.1×2=15400,脑电信号电压为5μV—100μV,经全部采集电路放大滤波后,信号电压范围为-1.54V~+1.54V ,经电压抬升后输入AD信号范围为0.71V~3.79V,外部采用12V直流供电,内部选用7805产生5V电压。详细情况如下:

一、脑电信号采集放大部分:

(1)前置放大电路:前置放大电路是整个脑电采集仪器设计的关键,它决定了整个放大电路的共模抑制比、输入阻抗和噪声水平。

脑电测量过程中的共模干扰特别大,脑电信号的放大一般采用差动放大电路结构。前置放大电路对集成运算放大器的要求有:高输入阻抗;高共模抑制比;低噪声、低漂移;低输入失调电压;足够大的放大倍数及低功耗。本课题中采用AD公司的高性能仪用放大器AD620来实现前置放大。此运放有较高的技术参数,非常适合用于生理信号放大及在电池供电条件下工作的医疗仪器的应用系统。本次电路设计中,放大倍数为100倍,增益反馈电阻选为499欧姆。AD620的放大倍数G由增益电阻决定,增益

其中为增益反馈电阻。

二级放大电路:因前置放大后的信号仍然处于比较低的电压水平上,现采用AD620设计二级放大电路,以进一步保证高共模抑制比、低噪声、低漂移等电路性能,放大倍数选择为70倍,增益反馈电阻取为715欧姆。

低通滤波电路:低通滤波采用二阶巴特沃斯滤波器,采用OP07运放,截止频率为100赫兹。

由电路,得到传递函数:

只有小于3时,即分母中S的一次项系数大于零,电路才能稳定工作,而不产生自激振荡。

截止频率为:

(4)50赫兹陷波电路:如下图,采用典型的二阶有源带阻滤波器。

这是一种典型的二阶有源带阻滤波器,其传递函数为:

,式中A是运放增益。

这个电路的特点是所用器件少,调试方便。如果陷波深度不够,可采取级联方式提高干扰抑制能力。总的来说,50Hz工频陷波电路在系统中起到一个很重要的作用。即使在工频信号淹没脑电信号的条件下,通过滤除5OHz的干扰信号,也可以得到比较理想的脑电信号。所以工频陷波电路是生物电信号采集中不可缺少的环节。本电路通过50Hz陷波器的引入,成功的去除了50Hz工频干扰。

高通滤波电路:人体中存在极化电位,这些电信号是直流信号,因此需要设计高通滤波器将这些直流滤除。采用一个简单的一阶有源RC高通滤波电路,截止频率为0.1Hz,增益为2。电路如下:

电压抬升电路:脑电信号是双极性型号,由于AD转换器对输入信号的电压要求为正,故在AD转换之前,通过电压抬升电路,把信号的幅度调整为正,同时通过适当调整电压值浮动范围,确保与之后的模数转换电路匹配。电路中采用了可稳定地提供4.5V的基准电压的电压基准源MAX6107。电路如下:

在反向比例运算电路中,同向输入端通过电阻接地,此为补偿电阻,以保证集成运放输入级差分放大电路的对称性,须满足

由电路得:

差分比例电路中,在参数对称前提下,电路实现了对输入差模信号的比例运算,最后得:

二、模数转换部分:

AD转换电路——光耦隔离电路

(1)AD转换电路:采用16位采样速率可调的A/D转换芯片,不但保证了A/D转换的精度,而且可以满足并更改需要的A/D的转换速率。

AD7683是AD公司生产的一种低功耗高精度16位高速串行A/D转换器,它适用于仪器仪表、便携式探测器及各种电池供电的应用场合。采用AD7683和MAX6107设计的A/D转换电路图如下:

(2)光耦隔离电路:在脑电采集电路与开发板之间,采用光耦隔离电路做接口,把两者隔离开,防止开发板上的高频数字信号对脑电采集电路的干扰。同时,光耦隔离电路还有电压转换的作用,由于AD转换芯片的工作电压为5V,其输出的数字信号电压也可达5V,而芯片的管脚电压为3.3V。光耦隔离两端采用不同的上拉电压以实现两者的匹配。

6N136是一个高速光耦芯片,其工作速度可达1Mbit/s,带宽为2MHz。图中,U14、U15和U16分别对DCLK、DOUT和CS进行隔离,U17对电源控制信号POWER进行隔离。

第二章:数字部分

  • SPI控制模块的实现

我们采用16位串行A/D转换器AD7683,其工作时序如下图所示:

DCLOCK为AD7683时钟控制信号,由FPGA产生。CS为AD7683选通信号,低电平有效,由FPGA产生。一次A/D转换至少需要22个时钟周期,至多为24个时钟周期。Dout为AD7683转换输出信号为串行总线,与FPGA相接,为FPGA提供数据。

依据该时序要求,我们设计了SPI控制器。SPI控制器主要由有限状态机实现。状态机转换逻辑,如下图所示:

依据状态机逻辑转换图,我们设计程序,经过modelsim仿真得到如下图:

此设计符合AD7683的时序逻辑。

  • 时钟管理器

依据脑电信号的特点,我们的采样平率为256Hz,我们采用33MHz的系统时钟,对其进行11分频,得到3MHz在对其进行相应的分频后,分别得到6.144KHz(SPI控制器工作频率), 4.608KHz(第一级小波工作频率,FFT工作频率), 2.304KHz(第二级小波工作频率), 1.152KHz(第三级小波工作频率), 576Hz(第四级小波工作频率)。

时钟管理器示意图如下所示:

离散小波的基本原理

小波变换是一种信号的时间—尺度(时间—频率)分析方法,它具有多分辨率分析(Multi-resolutionAnalysis)的特点,而且在时频两域都具有表征信号局部特征的能力,是一种窗口大小固定不变,但其形状可改变,时间窗和频率窗都可以改变的时频局部化分析方法。即在低频部分具有较高的频率分辨率和较低的时间分辨率,在高频部分具有较高的时间分辨率和较低的频率分辨率,很适合于探测正常信号中夹带的瞬态反常现象并展示其成分,所以被誉为分析信号的显微镜。

依据脑电信号自身特性,我们选择DB4小波,图为小波变换的示意图:

离散小波变换的整体设计思想

采用四级小波分解,每一级的小波系数由FIFO进行暂存,协同去噪模块进行读取,去噪,以及去噪后的合成工作,整个离散小波变换采用流水结构,其中小波分解和小波合成两个模块可达到262MHz,小波去噪模块可达到167MHz,整个离散小波模块可以达到167MHz。

MALLAT算法

MALLAT算法是由法国科学家于1988年提出的一种离散小波变换(DWT)的快速算法。该算法的地位相当于快速福利叶变换在经典傅里叶分析中的地位,已成为各种硬件实现的直接理论依据。MALLAT算法中的核心是滤波模块,由滤波模块实现小波的分解与合成,下图给出MALLT算法的小波分解示意图:

小波去噪模块核心设计

补码运算器

AD采样输出的为数据的原码,我们需要将其变换为补码。

对于正数而言,它的原码等于它的补码;对于负数而言,它的补码是对其原码除符号位之外进行取反后加一处理。因此,补码器的设计示意图如下:

DA算法及其滤波器的实现

DA算法是distributed arithmetic算法的简称。中文译为分布式算法。小波滤波器的实现采用分布式算法实现。分布式算法作为一项数字信号处理算法,广泛应用于计算乘积和运算,与传统的乘积和结构相比,DA算法具有并行处理的高效性特点。若采用分布式算法实现小波滤波器,则它在FPGA中的工作速度只与输入数据的宽度B有关,与滤波器的阶数N无关,阶数只影响FPGA资源的使用量。

在高速环境下,往往使用DA算法封装成一个乘法器代替DSP进行使用,从而实现滤波器的设计工作,但是这样过于耗费资源。我们通过分析卷积原理,优化了滤波器实现结构,这样不仅节省了大量的资源,而且在速度上也完全可以满足实时高速要求。具体优化为:

(1)使用串并转换结构,从而达到复用乘法器的目的,可以指数倍的节省硬件资源。

基于这种结构的滤波器无论是多少阶的滤波器都只使用一个DA乘法器。

(2)多位并行查找表结构,速度大大提高。

滤波器实现结构示意图如下:

依据该滤波器结构,编写程序,经过modelsim仿真得到如下图:

下面给出MATLAB仿真

注意:此时的滤波器已经实现了下两点抽取,因此x_out显示的为MATLAB中y输出的偶数点。

经MATLAB验证,滤波器设计无误。

下两点采样器

依据MALLAT算法,我们要对每一级输出的数据进行下两点采样处理,因此我们设计的下两点采样器示意图如下:

异步FIFO1024点)

异步FIFO在整个系统中,担当系统暂存的作用,因此要保证数据的丢失概率足够的低,因而需要设计一个高可靠的,高速率的异步FIFO需要解决以下问题:

(1)同步异步信号,使触发器避免亚稳态的产生。我们采用了两措施解决这一问题:

a).对写地址/读地址采用格雷码。

b).采用触发器来同步输入信号。

(2)产生正确的满/空标志信号。我们通过设置额外状态位的办法来准确判断满/空状态。

判断满/空标志的公式:

Empty=(读指针=写指针);

Full=(读指针最高位/=写指针最高位)and (读指针其它位=写指针其它位);

243点中值选取器

243点中值选取器的基本作用就是选取hi_d1小波系数中的中间值,之后对中间值进行简单运算处理,从而得到小波去噪的门限值,以便进行之后的小波去噪运算。

在计算机应用当中,中值算法已经相当成熟,高效。但对于FPGA来讲,还没有发现一种既节省资源又可以执行效率高的中值算法。因此我们采取了诸多尝试,首先我们尝试着修改计算机中的冒泡法以便可以移植到FPGA中应用,但是我们发现假如将冒泡法利用在FPGA上会出现以下情况:

(1)无法综合或者很难综合,极易产生错误

(2)严重耗费资源,延时不佳,若243点中值采用冒泡算法占用资源量是一般FPGA所吃不消的。

后来我们又尝试过几种算法,例如基于三点中值选取器的全流水结构的243点中值选取器,资源占用虽然有所改善,但是耗费资源依然严重,需要耗费10000多个以上LUT,一般的FPGA仍然很难吃消。

而后,我们通过分析基于三点中值选取器的结构的全流水结构,发现了3点中值选取器利用率过低,所以经过重新设计我们采用了一种新的设计结构:一种基于复用9点中值选取器的全流水的243点中值选取器,该种结构较基于三点中值选取器的全流水结构可以节约94%的LUT资源,并且时钟频率仍然保持在175MHz以上。

其核心思想为:将大量数据进行分段处理,做到少量多次,并且使用流水结构达到实时处理关键要求。

分析以上结构,如果我们将第三级的3点中值选取器更换为9点中值选取器,那么它将可以实现729点的中值选取功能,而若使用基于三点中值选取器的全流水结构来实现729点中值选取的功能那么其资源耗费可想而知。如下图所示为两者资源耗费的关系图例:

3点中值选取器

3点中值选取器的基本功能是完成对于三个输入数据完成寻找其中值的功能,设计流程图如下图所示:

9点中值选取器

9点中值选取器的构造是基于3点中值选取器的全流水结构,其结构示意图如下图所示:

根据结构示意图,编写程序,经modelsim仿真,得到如下图:

我输入的数据1-486,则算出的中值为122和365,这与逻辑分析相同,设计正确无误。

去噪分析器

去噪分析器的基本功能是完成hi_d4与去噪门限的比较,如果hi_d4大于去噪门限就认为是噪声,则此点被置零,如果hi_d4小于去噪门限则保持不变输出。设计流程图如下图所示:

小波分解模块的实现

依据MALLAT算法,小波分解模块主要是实现对于脑电信号的各个频谱分量的分解工作,而MALLAT算法实现的关键在于小波滤波器。下图为小波分解模块的结构示意图:

数据经补码器流入小波分解高通滤波器(HI_D)和小波分解低通滤波器(LO_D)滤波后经下两点采样后完成一级小波分解运算,小波的高通系数被寄存在FIFO当中等待合成运算。小波的低通系数继续流入下一级小波分解模块,对信号进一步分解。

以上是通用的小波分解算法,其优点是适用于各种信号的分解,但是我们通过分析本次课题设计的目的可知:脑电信号的频率范围是从1Hz~250Hz,而我们所关心的只有10~13Hz和18~22Hz的频带信息,即我们只关心脑电信号50Hz以下的频带信息,其余的频带信息在本次课题设计中是无用的,因此我们依据小波分解的概念,提出了更为节省资源的小波分解模块的实现方法;下图为应用于脑电疲劳检测的小波分解模块的结构示意图:

该种结构节约了两个小波高通滤波器(HI_D)和两个1024点的FIFO,节约资源不可忽视。

小波合成模块的实现

小波合成模块主要是为了实现在小波去噪之后的各级小波系数的合成工作。根据MALLAT算法,小波合成的实现依然要依靠小波合成高通滤波器(HI_R)和小波合成低通滤波器(LO_R)。下图为小波合成模块的结构示意图:

以上是通用的小波合成算法,其优点是适用于各种信号的合成,但是我们通过分析本次课题设计的目的可知:脑电信号的频率范围是从1Hz~250Hz,而我们所关心的只有10~13Hz和18~22Hz的频带信息,即我们只关心脑电信号50Hz以下的频带信息,其余的频带信息在本次课题设计中是无用的,因此我们依据小波合成的概念,提出了更为节省资源的小波合成模块的实现方法;下图为应用于脑电疲劳检测的小波合成模块的结构示意图:

以上节约了两个FIFO,节约资源不可忽视。

  • 分析处理模块的实现

脑电信号与疲劳检测的基本理论

脑电信号与人体疲劳的关系

近年来学者对脑电的研究表明,18~22 Hz及更高频率的脑电主要是大脑思维活动活跃的体现,所以当驾驶员处于疲劳状态时,大脑的思维活动会降低,从而β波及高频脑电会减少,而脑电的α波会增多;当从疲劳转为瞌睡或睡眠状态时,占主导的脑电频率会逐步降低为2~4Hz的δ波。

经过学者的分析,如果使用10~13 Hz和18~22 Hz两个频带的平均功率谱比值作为疲劳驾驶脑电的一个指标是可行的。

设信号在频带h的平均功率谱密度为

式中:

疲劳状态下,无论驾驶员处于何种动作状态下,R值都比精力充沛时R值要高。

处理分析模块的整体结构及其功能

分析处理模块主要完成对信号的分析处理工作,从而最终给出脑电的驾驶疲劳系数。其结构示意图如下图所示:

经小波去噪模块后的数据,逐个进入FIFO进行寄存,同时读时能计数器自动加1,当FIFO中寄存了256个数据时,此时读时能寄存器计数值也为256,此时发出读时能信号给FIFO同时发出开始信号给FFT,数据将以CLK_fft的时钟节拍下从FIFO中读出进入FFT模块,FFT开始进行快速傅里叶计算,之后将结果进行数据输出,同时带有地址信息,选择乘法器选择地址信息为10-13,18-22点的数据进行乘法运算之后进行加法运算并分别输出为10-13Hz的实数加和结果(RE_13),10-13Hz的虚数加和结果(IM_13),18-22Hz的实数加和结果(RE_18)和18-22Hz的虚数加和结果。将RE_13和IM_13做加和运算作为除法器的被除数,将RE_18和IM_18做加和运算作为除法器的除数,最后完成两者的除法运算,给出疲劳系数(即除法器的商和余数)。

FFT core的调用

我们调用的为256点的FFT的CORE,采用流水结构,输入输出位宽为17位,使用缩放因子,设置截位处理为项下截取,顺序输出,选择使用BLOCK RAM,未进行任何特殊优化。

FFT主要完成的功能就是对信号进行时频域变换,从而可以对其进行频谱能量的相关计算。在本次课题设计当中我们主要关心的为10-13Hz 和18-22Hz的脑电频谱成分,对应到FFT上约为10-13点和18-22点的X(K)。

选择乘法器

选择乘法器的基本工作就是根据地址信息,选择性的选取数据进行乘法运算,该乘法运算调用了DSP48E模块,并将乘法结果输出到加法器当中进行累加运算。从而得到实部乘积和虚部乘积。其结构示意图如下所示:

加法器

加法器的基本功能就是完成加法运算。

除法器

对于所有的FPGA综合软件都可以综合“+,-,*”三种算术运算,但是不能综合除法运算,即使在计算机中所有的除法运算也是通过乘法运算间接完成的,因此在FPGA当中设计除法器是一个难点。

常用的除法算法主要有两种,一种为线性收敛,另一种为二次收敛方案。

我们采用线性熟练的除法算法,即restoring(还原)除法,首先调整分母并加载分子到余数寄存器中,然后从余数中减去调整的分母并将结果存在余数寄存器中,如果新的余数为正,我们就将商加1,否则商不变并且还需要通过加上分母来还原从前的余数值。我们采用状态机对其进行实现。

疲劳判决的预警装置

依据文献所给出的如下数据:

数据表明:疲劳状态下,无论是处于静坐、平稳驾驶还是换挡操作下,脑电α和β波的R值(3·00~4·00)都比精力充沛时的R值(1·00~1·50)要高,说明脑电α和β波的R值能较好地反映出疲劳时的脑电特性.而脑电α波和δ波在疲劳状态下的R值(0·40~1·30)与精力充沛状态下的R值(0·10~0·70)相比,就相差较小,有交叉区间,不能明确区分两种状态.这是因为δ波频率为2~4Hz,容易受到身体移动等干扰的影响.因此,用脑电α和β波频带的平均功率谱密度比值R作为疲劳的脑电特征量是比较合适的.

依据以上数据与结论,我们设计了一种简单的预警装置。

第三章:开发总结及其扩展方向

一.开发总结

(1)系统分为模拟采集和数字处理两个部分:

模拟采集部分主要完成了对于脑电信号的提取放大和去噪的基本任务并通过串行转换器AD7683将AD转换后的脑电信号传送给FPGA当中。

数字处理部分主要完成了对于脑电信号的小波分解,去噪,合成的基本步骤从而实现了小波去噪功能,得到较为纯净的脑电信号,之后对脑电信号进行分析处理,主要完成了FFT运算,得到10-13Hz,18-22Hz的频带信息,并对其进行功率运算,最后利用除法器取其比值从而得到基于脑电的疲劳驾驶系数,做出了预警处理,提高了驾驶人员的驾驶安全系数。

(2) 系统的最高频率为167MHz左右,总资源使用率为10256个slice(占总资源数的14%),4个block ram(占总资源数的2%),16个DSP48ES(占总资源数的21%),小波分解与合成的速率在262MHz左右。系统工作速率的主要瓶颈在于243点中值选取器,代码及算法优化后,可望进一步提高小波去噪的整体工作频率。

(3)对于基于脑电信号的疲劳检测我们现在仍然处于探索阶段,因此还不能完确把握24个电极疲劳系数的融合方法,从而给出一个更为精确,科学的驾驶疲劳系数,但以初步完成了对于驾驶疲劳的测定,对今后的设计有很大的参考价值。

(4)如果继续优化代码和系统结构将系统使用资源降到最低,那么我们可以使用FPGA的低端产品进行开发,从而大大降低了开发成本。

(5)本系统通过有线形式对脑电进行采集,这对于一个驾驶中的人来讲是极其不方便的,因此对于脑电采集我们可以采取无线方式。

二.创新点总结

(1)DA滤波器的结构改进,硬件资源成指数倍的节约。主要对一下两方面做出了改进优化:

a).使用串并转换结构,从而达到复用乘法器的目的,可以指数倍的节省硬件资源。

基于这种结构的滤波器无论是多少阶的滤波器都只使用一个DA乘法器。

b). 多位并行查找表结构,速度大大提高。

(2)243点的中值选取器的创新结构(基于复用9点中值选取器的全流水结构),硬件资源节省都在90%以上,而且效率保持在很高的一个水平,约为167MHz。该结构的优势相对于3点中值选取器的全流水结构的优势在于其点数越多所能节约的硬件资源会越多,经理论计算甚至可以节约资源达到98%左右。

(3)依据脑电信号的自身特点,我们提出了小波分解与合成的更为节省资源的结构,使得将脑电信号的小波去噪模块移植到低端FPGA上成为可能。在本次课程设计当中,我们只需要10-13Hz和18-22Hz的频带信息,因此在小波分解时可以舍去其高频信号的滤波,而直接判定其为零,这样可以大大节约硬件资源。

(4)首次在FPGA实现了基于脑电的驾驶疲劳检测的整个系统。对于今后FPGA在脑电信号的应用与开发领域起到了一定的参考作用。

三.扩展方向

(1)本次开发所设计的小波去噪模块是具有通用性的,不仅可以用于脑电信号的去噪,还可以应用在心电信号,肌电信号,地震信号,雷达信号,通信信号及其他各种相关类似信号的去噪工作上。

(2)单对脑电信号而言经过小波去噪后,可以应用于脑机接口技术的开发,大脑病变信号的医疗检测,以及脑电信号在假肢上的应用等。



评论


相关推荐

技术专区

关闭