控制/MCU
红外测温仪提供快速、非接触测量手段,可广泛、有效地用于人群的体温排查。这里介绍一种采用SPCE061A和TN 系列传感器实现红外测温的方法。
SPCE061A是***凌阳公司生产的性价比很高的一款十六位单片机,使用它可以非常方便的实现控制和语音播报的系统,该芯片拥有8路10位精度的AD,其中1路AD为音频转换通道,并且内置有自动增益电路。这为实现语音录入提供了方便的硬件条件。2路10位精度的DA,只需要外接2个功放(LM386)即可完成语音的播放。另外,凌阳十六位单片机具有易学易用的效率较高的一套指令系统和集成开发环境。在此环境中,支持标准C语言,可以实现C语言与凌阳汇编语言的互相调用,并且,提供了语音录放的库函数,只要了解库函数的使用,就会很容易完成语音播报,这些都为软件开发提供了方便的条件。
系统结构图如下:
图1.1 总体结构图
本系统包括按键部分、音频输出部分和TN红外测温传感器接入等三部分。
按键部分:按键开始测温,一直按下,听到声音表示测温完毕。
音频输出部分:主要是将SPCE061A两路音频输出端通过LM386放大,经喇叭播放。
TN红外测温传感器接入部分:通过SPCE061A IO口的控制,将将所测得的温度接受到SPCE061A中来处理。
系统实现的功能:按住按键,听到声音,此时播报测得的环境温度和目标温度。
红外测温传感器如图 4.1 所示。
图4.1 红外测温传感器尺寸图
红外测温模块与SPCE061A的接口如下:
V--》3.3v
D--》IOA15
C--》IOB8
G--》GND
A--》按键--》GND
音频输出部分详细电路图如图4.2
图4.2 音频输出部分电路原理图
本系统软件设计流程如下:
图5.1 总体流程图
其中,SPCE061A读取红外传感器的测量结果,是采用SPI接口进行读取,其中数据格式如下:
SPI时序图:
图 5.2 SPI接口与SPCE061A的时序图
一帧数据包括5Byte,每个Byte代表含义如下:
Item “L”(4CH): 代表此帧为目标温度
“f”(66H): 代表此帧为环境温度
MSB 8 bit Data Msb
LSB 8 bit Data Lsb
Sum Item+MSB+LSB=SUM
CR 0DH,结束码
读取数据流程图如图5.3:
图5.3 读取数据流程图
本软件系统设计简单。主要是因为凌阳的十六位单片机开发环境使用方便,并支持C语言与汇编语言的互相调用,且提供丰富的凌阳语音函数库,只要我们了解这些函数的使用方法,我们就可以很容易的实现语音的播放。本系统采用S480压缩格式,该压缩算法压缩比较大80:3, 存储容量大,音质介于A2000和S240之间,适用于语音播放。例如播放部分代码如下:
其相关API函数如下所示:
int SACM_S480_Initial(int Init_Index) //初始化
void SACM_ S480_ServiceLoop(void) //获取语音资料,填入译码队列
void SACM_ S480_Play(int Speech_Index, int Channel, int Ramp_Set) //播放
void SACM_ S480_Stop(void) //停止播放
void SACM_S480_Pause (void) //暂停播放
void SACM_S480_Resume(void) //暂停后恢复
void SACM_S480_Volume(Volume_Index) //音量的控制
unsigned int SACM_S480_Status(void) //获取模块的状态
Call F_FIQ_Service_ SACM_S480 //中断服务函数
各函数具体内容如下:
1)【API格式】
C:int SACM_S480_Initial(int Init_Index)
ASM:R1=[ Init_Index]
Call F_ SACM_ S480_Initial
【功能说明】SACM_S480语音播放之前的初始化。
【参 数】Init_Index=0 表示手动方式;Init_Index=1 则表示自动方式。
【返 回 值】
0:代表语音模块初始化失败
1:代表初始化成功。
【备 注】该函数用于对定时器、中断和DAC等的初始化。
2) 【API格式】
C:void SACM_S480_ServiceLoop(void)
ASM:Call F_ SACM_S480_ServiceLoop
【功能说明】从资源中获取SACM_S480语音资料,并将其填入解码队列中。
【参 数】无。
【返 回 值】无。
【备 注】播放语音文件中数据,当出现FF FF FFH数据时便停止播放。
3) 【API格式】
C:int SACM_S480_Play(int Speech_Index, int Channel, int Ramp_Set);
ASM:R1=[ Speech _Index]
R2=[ Channel]
R3=[ Ramp_Set]
Call SACM_S480_Play
【功能说明】播放资源中SACM_S480语音。
【参 数】Speech _Index 表示语音索引号。
Channel: 1.通过DAC1通道播放; 2.通过DAC2通道播放; 3.通过DAC1和DAC2双通道播放。
Ramp_Set:0.禁止音量增/减调节; 1.仅允许音量增调节; 2.仅允许音量减调节; 3.允许音量增/减调节。
【返 回 值】无。
【备 注】
① SACM_S480的数据率有4.8Kbps7.2Kbps三种,可在同一模块的几种算法中自动选择一种。
②Speech_Index是定义在resource.inc文件中资源表(T_SACM_S480_SpeechTable)的偏移地址。
③ 中断服务子程序中F_FIQ_Service_ SACM_S480必须放在TMA_FIQ中断向量上(参见SPCE的中断系统)。
④函数允许TimerA以所选的的数据采样率(计数溢出)中断。
凌阳公司的SPCE061A的结构特点及其相关的一些开发平台为我们控制和播放提供了极其方便的条件,当然SPCE061A还有很多的类似于其他方面的单片机所具有的功能,使用起来同样方便。随着市场竞争的激烈,开发者对产品开发的资金和时间的投入不断缩小,相信凌阳科技能实现开发者们的需求。
全部0条评论
快来发表一下你的评论吧 !