前言

汽车倒车防碰撞系统是一种辅助汽车泊车装置。低配的由超声波收发电路、回波放大电路、语音提示电路、数码显示、报警及温度补偿电路组成,高配的有时会带有后视视频系统。[1]

    

一、工作原理

如下图在汽车的尾部安装4个超声波探头,倒车时,采用往返时间测量法测量汽车尾部到障碍物的距离,通过数码管实时显示距离,当车尾部的超声波探头与障碍物的距离小于设定值的安全值时,通过蜂鸣器报警提示驾驶员。

这里测距一般采用4路超声波传感器分时隙工作,采用往返时间测量法测距,测距原理是当汽车进行倒车时,防碰撞系统开始工作,单片机产生一串40KHz的矩形波,经4选1模拟开关按时序分别向4路超声波探头传给发射电路,通过超声波换能器发射超声波,同时开启计数器计数,超声波传至障碍物后反射,反射回来部分超声波被超声波换能器接收并转换成电信号,再经过接收电路滤波、放大、整形后,触发单片机外部中断,产生中断,计数器停止计数,测出超声波发射脉冲串到接收回波信号的时间差 t,并根据超声波在空气中传播的速度v,得出被测距离:

S=vt/2

由于声速会受到环境温度的影响,温度与声速的关系为:

v≈v0+0.607T

式中:v0=332m/s为0℃时的声波速度;T为当前的环境温度。因此只需要通过温度传感器测出T即可得到S的修正值。通过比较选取的4路信号中的最短距离进行显示,当显示值小于设定警报值时,单片机控制蜂鸣器发出报警声音,随着距离越来越近,报警声音频率越大,同时显示部分两侧的条形数码管显示条数量增加以表示危险级别。最大测量距离与超声波传感器性能、驱动电路、回波放大电路等因素相关。

二、主要模块介绍

系统主要模块包括:显示模块、语音报警和四探头测距模块(MCU负责整体逻辑协调、温度测量可采用数字式也可采用热敏电阻、蜂鸣器报警可以直接由MCU控制)。此外显示模块设计没有难点,如果为了追求绚丽可以考虑采用TFT屏;语音模块这里引入一个API8108A语音芯片介绍、测距先简单介绍几种方案(后面会细讲)。

三、具体模块详解

API8108A、API8108A(一次性编程语音系列)[2]

>_<: (介绍)10、20秒多功能可编程语音电路是采用大规模CMOS芯片技术制造的最新ASIC专用语音电路。它们内部包含语音处理器、EPROM存储器、A/D、D/A数模转换器、逻辑接口控制器、音频放大器、时钟振荡器等大量部件,能完成从语音数据写入固化到语音高保真重放的全过程工作,外围秩序几只元件即可。过去这种电路常采用8031、2764、DA0832等IC组合完成,体积大、耗电大、成本高,现在API8108A、API8208A比常规语音处理电路设计要结构简单、体积微小的多,而成本只是过去的五分之一。

API8108A、API8208A可根据需要分为一至八段录放,其语音可以最大不重复时间分别为10秒和20秒,重复部分可不计算时间。其语音录入需要专门的计算机编程器上进行,一旦录入即成为固定数据,不能再更改或抹掉,永久保存。固化了语音之后的API8108A、API8208A在放音使用上和普通的音乐集成片一样简单,只是发出的不是单调的音符曲调,而是极其逼真的话语模拟声响,其效果经计算机软件处理可与磁带、CD媲美。

>_<: (工作要求)其电源电压为:2.6~6V,静态耗电<5uA,工作温度:-10度~60度,储存温度:-55度~125度,发光管驱动电路:8mA。

>_<: (引脚说明)1、5、6编程选择脚;2、3电压放大推挽输出,外接蜂鸣器或喇叭;4电源接地端;7电流放大输出,外接三极管放大推动喇叭;8外接振荡电阻,决定放音速度;9编程电源端;12电源接正端;10、11、13、14发音触发器,高电平有效,组合控制8段;15单键触发端,高有效使所有的段顺序放音;16放音停止端,高电平使放音中断停止。

编程引脚OUT1、OUT2、OUT3功能选择:

※STP指OUT输出15ms的停止脉冲,(也可推另一片语音IC,以增加语音长度)

※BUSY指OUT输出忙信号,推动马达或其它

语音分段控制选择:(L表示接正触发,N表示不接)

放音频率、振荡电阻(ROSC)与放音时间选择:

>_<: (基础应用)基础电路应用:

① COUT输出驱动喇叭 && VOUT输出驱动蜂鸣偏或喇叭

② 八段触发控制(见上表)

③ 两片串联加长语音长度

④ 带LED的电路

>_<: (时序波形)时序波形示意图:

1. Level, Unholdable, Non-retriggerable(电平的、非保持的、非触发的)

展示了两种情况:触发的时长小于一个Group的播放时长和触发时长超过一个Group的播放时长。可见小于的情况在一个Group的时间内多个触发只起单个作用,当大于Group时长的触发会导致Group再次启动。

2. Level Holdable(电平保持)

展示了两种情况:(和上面一样。当小于时,播放会直接停止;当大于时,播放会重新开始同样也会戛然而止。

3. Single Button Trigger (SBT), Sequential(这是一个按钮的控制情况)

这是Level Unholdable情况的长短两种情况,可见:SBT每次触发会进行一次Group的切换,直到第8个又重新从第1个开始,如果某一个SBT信号持续时间超过当前播放一组的时长,会导致该组重复播放,直至SBT切换。

这是Level Holdable情况的长短两种情况,可见:类似与上面的Level Unholdable情况,只是会出现截止情况。

4. Edge,Unholdable,Non-retritggerable(边缘触发的、非保持的、非触发的)

和上面1的电平触发的比较可以看出当触发时长保持超过Group的时长时,仍然播放一次。

5. Edge Holdable

和上面2的电平保持比较可以发现当触发时长保持超过Group的时长时,仍然播放一次。

6. Single Button Trigger (SBT), Sequential(这是一个按钮控制的情况)

这是Edge Unholdable应和3的Level Unholdable比较发现这仍然是Edge触发的特点:当时长超过时,仍然只播放一次。

同样的Edge Holdable不再说明。

>_<: (使用注意事项)

编程烧写语音芯片时注意:语音芯片型号要与软件相对应,不可互相混淆。

烧写时注意:首先检测是否空片,是空片再开始烧写;OPT芯片不可多次烧写不用的内容。

API8108A、840N语音芯片烧写采用6V供电,API8208A语音芯片采用5V供电(可以采用ADAPTOR转换烧写电压)。

>_<: (具体应用)[3] 

AT89C205除了在外部引脚上少了两个并口外,其他资源与AT89C52完全相同,且内部的2KFLASHROM能够很方便的进行擦写。该单片机的P1口是一个8位双向I/O口,其中P1.2~P1.7口内部提供上拉电阻,P1.0和P1.1需要外接上拉电阻。P1.0和P1.1同时也是片内精确模拟比较器的正输入端(AIN0)和负输入端(AIN1)。P3口是7个带有内部上拉电阻的双向口(P3.6除外)。

为了提高音量,在该设计中加入了音频放大芯片LM386。LM386是美国国家半导体公司生产的音频放大器,主要应用于低电压消费类产品。为使外围元件最少,电压增益内置为20,如果在1脚和8脚之间增加一只外接电阻和电容,便可将电压增益调为任意值,直至200。输入端以地为参考,同时输出端被自动偏置到电源电压的一半,在6V电源电压下,它的静态功耗仅仅为24mW,所以它是一种低电压小功率的音频功放集成电路,采用8脚双列直插式封装,第6脚为电源正极,第4脚接地,第2、3脚为选择输入端,第5脚为输出端,第1、8脚为增益控制端,第7脚为旁路端。它具有共组电压宽(4~12V)、静态耗电少、电压增益可调(20~200)、外接元件少、频带宽(300KHz)、低失真度。

整个电路图如上图:单片机的P3口控制API8108A的TG1~TG4,用来控制语音的分段输出。R4为语音模块的振荡电阻,其余放音时间的关系见上面的表格。在本设计中选用200千欧,放音时间为9s左右。由于U3的1脚和8脚之间只连接10微法的电容,此音频放大倍数为200倍。通过R2还可以调节音量大小,如果想降低音量,只需在U3的3脚连接一个电位器和R2进行分压即可。

播放语音已经预先录制好,存放在API8108A语音芯片的各单元中,语音播放程序首先完成语音地址计算,将语音地址存放在缓冲区中,待全部算完,建立结束标志,然后启动定时器,每隔0.3s输出一个地址信号,完成语音输出,如要播放“欢迎光临”,根据该数据,调用语音地址计算子程序,将“欢”“迎”语音地址存入缓冲区30H和31H中。依次类推,直至结束,再在缓冲区依次间隔0.3s时间取出语音地址,直至遇到结束标志。

四、小结

最近一直没有写东西了,三四月份忙着导师的项目、五月份忙着找工作、六月份忙着复习考试(其实明天还有考试,复习烦了遂来写点东西,嘻嘻)。翻来覆去发现还是把这个有趣的汽车倒车雷达的设计同大家分享吧,本部分将倒车雷达电路系统中的语音模块大致讲述了一下,接下来还要对其测距电路进行分析设计(其实以前我已经对超声波测距进行了比较细致的研究啦4个哦:点这看看)。

链接

[1] 一种倒车防碰撞系统的设计与实现(张安然):http://pan.baidu.com/s/1dDGrGbR

[2] API8108A的datasheet:http://pan.baidu.com/s/1bn2i7UJ

[3] 简易智能语音模块的设计与实现(李世红)(蒋海潮):http://pan.baidu.com/s/1o6GFrK2

其他资料(私用):http://pan.baidu.com/s/1o6HvpJO

[硬件项目] 1、汽车倒车雷达设计——基于API8108A芯片简易智能语音模块的设计与实现的更多相关文章

  1. 业务接口+UI层的设计(基于Castle实现的Repository)

    业务接口+UI层的设计(基于Castle实现的Repository) Repository层设计的文章见:[http://www.cnblogs.com/yomho/p/3297042.html]   ...

  2. [硬件项目] 2、汽车倒车雷达设计——基于专用倒车雷达芯片GM3101的设计方案与采用CX20106A红外线检测芯片方案对比

    前言 尽管每辆汽车都有后视镜,但不可避免地都存在一个后视镜的盲区,倒车雷达则可一定程度帮助驾驶员扫除视野死角和视线模糊的缺陷,提高驾驶安全性.上一节已经分析清倒车雷达的语音模块(上一节),本节将深入分 ...

  3. 阶段4-独挡一面\项目-基于视频压缩的实时监控系统\Sprint1-基于Epoll架构的采集端程序框架设计\第2课-基于Epoll的采集端程序框架设计

    回顾之前的整个程序架构 把epoll机制应用到这个架构上去 下面主要去分析我们的系统中有没有需要等待的事件,先看看采集子系统 在采集子系统当中,摄像头有数据,摄像头采集到图像数据可以作为一个等待事件. ...

  4. 基于UML的高校教务管理系统的设计与实现

    一.基本信息 标题:基于UML的高校教务管理系统的设计与实现 时间:2018 出版源:南昌航空大学 领域分类:教育信息化:教务管理系统:UML:SSH:Oracle 二.研究背景 问题定义:高校教务管 ...

  5. 基于 Angularjs&Node.js 云编辑器架构设计及开发实践

    基于 Angularjs&Node.js 云编辑器架构设计及开发实践 一.产品背景 二.总体架构 1. 前端架构 a.前端层次 b.核心基础模块设计 c.业务模块设计 2. Node.js端设 ...

  6. 如何为编程爱好者设计一款好玩的智能硬件(十)——无线2.4G通信模块研究·一篇说完

    六.温湿度传感器DHT11驱动封装(下):如何为编程爱好者设计一款好玩的智能硬件(六)——初尝试·把温湿度给收集了(下)! 七.点阵字符型液晶显示模块LCD1602驱动封装(上):如何为编程爱好者设计 ...

  7. 如何为编程爱好者设计一款好玩的智能硬件(九)——LCD1602点阵字符型液晶显示模块驱动封装(下)

    六.温湿度传感器DHT11驱动封装(下):如何为编程爱好者设计一款好玩的智能硬件(六)——初尝试·把温湿度给收集了(下)! 七.点阵字符型液晶显示模块LCD1602驱动封装(上):如何为编程爱好者设计 ...

  8. 如何为编程爱好者设计一款好玩的智能硬件(八)——LCD1602点阵字符型液晶显示模块驱动封装(中)

    六.温湿度传感器DHT11驱动封装(下):如何为编程爱好者设计一款好玩的智能硬件(六)——初尝试·把温湿度给收集了(下)! 七.点阵字符型液晶显示模块LCD1602驱动封装(上):如何为编程爱好者设计 ...

  9. 如何为编程爱好者设计一款好玩的智能硬件(七)——LCD1602点阵字符型液晶显示模块驱动封装(上)

    当前进展: 一.我的构想:如何为编程爱好者设计一款好玩的智能硬件(一)——即插即用.积木化.功能重组的智能硬件模块构想 二.别人家的孩子:如何为编程爱好者设计一款好玩的智能硬件(二)——别人是如何设计 ...

随机推荐

  1. CSS里常见的块级元素和行内元素

    根据CSS规范的规定,每一个网页元素都有一个display属性,用于确定该元素的类型,每一个元素都有默认的display属性值,比如div元素,它的默认display属性值为“block”,成为“块级 ...

  2. [09]APUE:进程关系

    [a] getpgid / setpgid #include <unistd.h> pid_t getpgid(pid_t pid) //成功返回进程组 ID,出错返回 -1 int se ...

  3. Spring IOC 注入方式

    依赖注入通常有如下两种方式: ①设值注入:IOC容器使用属性的Setter方法来注入被依赖的实例. 设值注入是指IOC容器使用属性的Setter方法来注入被依赖的实例.这种注入方式简单.直观,因而在S ...

  4. 再次完善了 WASPCN for Matlab

    前段时间有多个网友询问在64位Matlab中如何使用WASPCN(水和蒸汽性质计算软件)的方法,一直没能给出解决方案. 最近自己有个项目也需要在64位Matlab中如何使用WASPCN(水和蒸汽性质计 ...

  5. 简单的dp

    有趣的数:(动态规划,状态转移) #include<stdio.h> ][]; int main() { int n,i; ; i<; i++) dp[i][]=; while(~s ...

  6. 【洛谷P2889】Milking Time

    很容易想到以结束时间加上R从小到大排序 之后怎样呢? 我们按层考虑,f[i]表示前i个时间段嫩得到的最大价值 每次枚举其之前的状态,如果其ed<当前i的st,那么取max即可 #include& ...

  7. eclipse开发 javafx(转)

    了解过JavaFX的都知道,JavaFX自从2.0版本开始,已经完全抛弃了之前的script语言,才用纯java来实现.这样的好处就是1.让使用Java的IDE进行JavaFX的开发成为可能,2.Ja ...

  8. JS-JQuery(JSONP)调用WebService跨域若干技术点

    1.JSONP:JSON With Padding,让网页从别的网域获取信息,也就是跨域获取信息,可以当做是一种“工具”,大多数架构Jquery.EXTjs等都支持. 由于同源策略,一般来说位于 se ...

  9. Android系统启动顺序

    Android是一个基于Linux的开源操作系统.x86(x86是一系列的基于intel 8086 CPU的计算机微处理器指令集架构)是linux内核部署最常见的系统.然而,所有的Android设备都 ...

  10. Oozie命令行常用命令汇总[转]

    Oozie命令行常用命令汇总 有时候脚本跑多了就不愿意在OozieWeb端去看脚本的运行情况了.还好Oozie提供了很多命令行命令.能通过命令行直接检索自己想看到的脚本信息.在这里简单进行一下总结.一 ...