一种智能电梯语音系统的设计
扫描二维码
随时随地手机看文章
1 引言
随着城市文明化和现代化建设步伐的加快,对建筑物中电梯的服务要求也越来越高,人们越来越追求智能化、人性化的乘梯环境。在电梯语音服务方面,目前主要是传统的人工服务,即通过电梯管理员告知乘客所要到达的楼层以及其他相关的服务信息。本文以单片微机和ISD语音芯片为核心,设计了一种电梯语音服务系统,实现了电梯语音服务的智能化和自动化,以适应各种对服务要求比较高的电梯中。
2 器件功能介绍
Winbond公司的ISD系列语音芯片采用了“直接模拟量存储”(DAST)专利技术,信号无需经过D/A,A/D转换,数字压缩和语音合成等复杂的数字信号处理过程,减少了失真,使其声音存贮效果较以前产品有大幅提高,实际试听主观评价可以达到磁带录音机的水平,是目前市场上录放效果最好的语音电路之一。
ISD4004语音芯片采用CMOS技术,内含晶体振荡器、防混叠滤波器、平滑滤波器、自动静噪、音频功率放大器及高密度多电平闪烁存储陈列等(见图1),因此只需很少的外围器件就可构成一个完整的声音录放系统。芯片设计是基于所有操作由微控制器控制,操作命令通过串行通信接口(SPI或Micwire)送入。采样频率可为4.0kHz、 5.3kHz、6.4kHz、8.0kHz频率越低,录放时间越长,而音质则有所下降。片内信息存于闪烁存储器中,可在断电情况下保存100年(典型值) 反复录10万次。器件工作电压3V,工作电流25~30mA,维持电流1uA,单片录放语音时间8~16min,音质好,适用于移动电话机及其它便携式电子产品中。
图1 ISD4004系列语音芯片内部框图
2.1 引脚描述
ISD4004系列芯片引脚图如图2所示:
图2 ISD4004系列芯片引脚图(TSOP及PDIP、SOIC)
同相模拟输入(ANA IN+)—这是录音信号的同相输入端,输入放大器可用单端或差分驱动。单端输入时,信号由耦合电容输入,最大幅度为峰峰值32mV,耦合电容和本端的3kΩ输入阻抗决定了芯片频率的低端截止频率。在差分驱动时,信号最大幅度为峰峰值16mV。
反相模拟输入(ANA IN-)—差分驱动时,这是录音信号的反相输入端。信号通过耦合电容输入,最大幅度为峰峰值16mV,本端的标称输入阻抗为56kΩ,单端驱动时,本端通过电容接地。 两种方式下,ANA IN+和ANA IN-端的耦合电容值应相同。
·音频输出(AUD OUT)—提供音频输出,可驱动5Ω的负载。
·片选(SS)—此端为低,即选中ISD4004 系列。
·串行输入(MOSI)—此为串行输入端,主控制器应在串行时钟上升沿之前半个周期将数据放到本端,供ISD 输入。
·串行输出(MISO)—串行输出端,ISD未选中时,本端呈高阻态。
·串行时钟(SCLK)—ISD的时钟输入端,由主控制器产生,用于同步 MOSI 和MISO的数据传输。数据在SCLK上升沿锁存到ISD,在下降沿移出ISD。
·中断(INT)—本端为漏极开路输出,ISD在任何操作(包括快进)中检测到EOM或OVF时,本端变低并保持。中断状态在下一个SPI周期开始清除,中断状态也可用RINT指令读取。
·行地址时钟(RAC)—漏极开始输出。每个RAC周期表示 ISD存储器的操作进行了一行(ISD4004系列中的存储器有2400行)。8kHz采样频率的器件,RAC周期为200ms,其中175ms保持高电平,低电平为25ms。快进模式下,RAC为218.75ms高电平,31.25ms为低电平,该端可用于存储管理技术。
·外部时钟(XCLK)—本端有内部下拉元件,芯片内部的采样时钟在出厂前已调校,误差在+1%内,在不外接时钟时,此端必须接地。
·自动静噪(AM CAP)—1μF电容构成内部峰值检测电路的一部分,检测出的峰值电平与内部设定的阈值作比较,决定自动静噪电路的工作与否。大信号时自动静噪电路不衰减,静音时衰减6dB。同时,1μF电容也影响自动静噪电路时信号幅度的响应速度,本端接VCCA则禁止自动静噪。
2.2 SPI接口
ISD4004工作于SPI串行接口。SPI协议是一个同步串行数据传输协议,协议假定微控制器的SPI移位寄存器在SCLK的下降沿动作。因此,对ISD4004而言,在时钟上升沿锁存MOSI引脚数据,在下降沿将数据送至MISO引脚。协议具体内容如下:
(1) 所有串行数据传输开始于SS下降沿;
(2) SS在传输期间必须保持为低电平,在两条指令之间保持为高电平;
(3) 数据在时钟上升沿移入,在下降沿移出;
(4) SS变低,输入指令和地址后,ISD行才开始录放操作;
(5) 指令格式是8位控制码加16位地址码;
(6) ISD的任何操作(含快进)如果遇到EOM或OVF,则产生一个中断,该中断状态在下一个SPI周期开始时被清除;
(7) 使用“读”指令会使中断状态位移出ISD的MISO引脚时,控制及地址数据也同步从MOSI端移入;
(8) 所有操作在运行位(RUN)置1时开始,置0时结束;
(9) 所有指令都在SS端上升沿开始执行。
OVF标志指示ISD录放操作已到达存储器的末尾。EOM标志只在放音过程中检测到内部的EOM标志时,此状态位置1,如图3所示。SPI指令码如表1所示。
图3 SPI端口的控制位
表1 SPI指令表
以下列举了几种对ISD器件进行操作时的指令次序。
(1) 信息快进。用户不必知道确切的地址,就能快进跳过一条信息。信息快进只用于放音模式。放音速度是正常的1600倍,遇到EOM后停止,内部地址计数器加1,并接下条信息开始处。
(2) 上电顺序。器件延时TPUD(8kHz)采样时,约25ms后才能开始操作。因此,用户发完上电指令后,必须等待TPUD,才能发出一条操作指令。例如从 00处放音,应遵循如下时序:发power up命令;等待TPUD上电延时);发地址值为00的SETPLAY命令;发PLAY命令。器件会从00地址开始放音,当出现EOM时,立即中断,停止放音。如果从00处录音,则按以下时序:发power up命令;等待TPUD(上电延时);发power up命令;等待2倍 TPUD;发地址值为00的SET REC命令;发REC命令。器件便从00地址开始录音,一直到出现OVF存储器末尾)时,录音停止。
SPI控制寄存器控制器件的每种功能,如表2所列。
表2 SPI 控制寄存器
注:IAB置0时,录、放操作从A15A0地址开始。为了能连贯录、放到后续存储空间,在操作到达该行之前,应发出第二个SPI指令将IAB置1,原则器件在同一地址上反复循环。这个特点对语音提示功能很有用,RAC脚和 IAB位可用于信息管理。
2.3 命令格式及时序
8位及24位命令格式如图4和图5所示。录音、放音、停止时序如图6所示。
图4 8位命令格式
图5 24位命令格式
图 6 录音、放音、停止时序
3 电梯语音系统的设计
3.1 系统原理电路
本系统是指安装在电梯内的放音电路,不包含录音部分。在实际应用中,将对方需要播音的内容事先录制到语音芯片中(每一层楼对应一段语音服务,按楼层从低到高的顺序录音),电梯运行时,本系统便可实现自动的语音播报服务。各楼层信号通过信号采集系统从电梯控制面板中引出,经过隔离系统,进入单片机(如图8所示,其中隔离器件选用TOSHIBA的光电耦合芯片TLP521-4)。电源部分从电梯内部引入220V交流电源,通过电源模块和电压调节模块分别为单片机和语音芯片提供5V和3V电压(如图9所示)。语音芯片输出的音频信号通过功放电路输出至外部。系统总体结构如图7所示。
图7 系统整体结构图
图8 信号采集电路
图9 电源电路
3.2 单片机与ISD芯片接口电路
本文讨论的电梯语音系统的控制和放音部分主要由AT89C51单片机和ISD4004语音芯片构成,其中单片机和语音芯片的接口设计如图10所示:
图10 ISD4004与89C51接口电路
从图10中可以看出,单片机和ISD4004之间的连线较少。P1.0接 ISD4004的片选引脚/SS,控制ISD4004是否选通;P1.1接ISD4004的MOSI串行输入引脚,语音芯片从该引脚读入放音的地址; P1.2接ISD的串行输出引脚MISO,单片机从该引脚接收从语音芯片传来的信号;单片机AT89C51的P1.3接ISD4004的串行时钟输入端 SCLK,作为ISD的时钟输入,用于同步MOSI和MISO的数据传输;P1.4接ISD芯片的中断引脚/INT, 接收从语音芯片发来的EOM信号,获得语音段结束信息, 控制其放音或快进操作;ISD4004音频信号输出引脚AUDOUT通过一滤波电容输出至外部功放。
本系统是针对播报20层楼的情形设计的,通过信号采集系统从电梯控制面板内主要取出了三类信号:楼层信号,上下行信号,关门信号。其中F1至F20便是楼层信号,UP和DOWN分别为上行和下行信号,CLOSE为关门信号,这些信号经过隔离处理后进入单片机。
4 软件设计
按照前面的分析和硬件原理图,软件部分的任务主要是找出将要进行语音播报服务的楼层和在找到楼层后在合适的时候进行放音。
4.1 软件流程包括以下步骤
(1) 初始化,取定当前楼层;
(2) 扫描电梯面板,并量化存储用户选取的所有目标楼层信息;
(3) 为存储的目标楼层数据排序;
(4) 判断是否存在有效的目标楼层信息,若判断结果为否,则返回步骤(2);
(5) 若步骤(4)中的判断结果为是,检测是否有关门信号,若检测结果为否,则返回步骤(2);
(6) 若(5)中检测的结果为是,判断电梯是上行还是下行;
(7) 保存判断所述的电梯最近目标楼层;
(8) 调用选音播放子程序;
(9) 保存已经播放语音的电梯最近目标楼层为当前楼层。
4.2 软件
软件流程图如图11所示。选音播放子程序见图12。
图11 系统软件流程图
图12 选音播放子程序流程图
对于ISD4004而言,由于两次要放音的内容在存储器里不一定是相邻的两段,所以涉及到对语音芯片的分段提取语音的控制,而不只是简单的放音操作。对于这种情况,如果在知道每一语音段首地址的情况下,可以直接采用“发送该段首地址并从当前地址开始放音”的命令来实现,由于在实际录音过程中,录音设备不一定提供每一语音段的物理地址(一般只是显示对应的段数),所以在提取楼层对应的语音段的问题上,就必须采取另外的方法,在这里我们是采取控制语音芯片连续快进的方式来实现的。因此,选音播放子程序包括下列步骤:
(1) 根据电梯最近目标楼层设置快进次数计数器;
(2) 从首地址处开始快进一次(本系统一楼不要求语音服务);
(3) 向语音芯片发送从当前语音段地址开始快进的命令;
(4) 检测是否到达电梯最近目标楼层的语音段地址,若否则返回步骤(3);
(5) 若步骤(4)中的检测结果为是,则播放语音。
本文重点给出选音播放子程序如下:
FANGYIN:MOV 34H,33H
;设置33H为计数器并将当前播音楼层作一备份
SETMC: CLR SS
MOV R1,#0E8H
;发送从首地址开始快进命令
MOV A, #00H
ACALL SEND
MOV A, #00H
ACALL SEND
MOV A, R1
ACALL SEND
SETB SS
SETMC1: CLR SS
MOV R1, #0F8H
;发送从当前地址开始快进命令
MOV A, R1
ACALL SEND
ACALL DELAY125U
;调用12.5微秒延时子程序
SETB SS
ACALL DELAY125U
JB INT,$
;一段快进结束则接收到低电平信号
DJNZ 33H,SETMC1
;判断快进次数是否达到要求, 是则往下执行
ACALL PLAY ;调用放音子程序
MOV 33H,34H
;保存播音楼层为当前楼层
RET
PLAY: CLR SS
MOV R1,#0F0H
;发送从当前地址开始放音命令
MOV A, R1
ACALL SEND
;调用发送子程序进行发送
SETB SS
JB INT, $
;放音结束则接收到低电平信号
RET
由于篇幅所限,相关子程序并未全部给出。
5 结束语
本文所介绍的电梯语音系统已在某大医院门诊部大楼的多台电梯中投入使用,整个系统工作稳定,功耗小,音量可调,输出的语音清晰,音色优美,实现了电梯语音服务的智能化和自动化,用户评价良好。