本基于小车的声音导引系统由声音接收部分和移动声源控制部分组成。系统硬件部分主要为:声音传感器、误差距离分析模块、移动小车、声源控制模块。如图1所示。
图1 系统硬件组成部分
声源控制模块控制声源发出指定频率的间歇声音信号,三个声音传感器将捕获到的波形信息传递给单片机,单片机对声源当前位置进行计算,与设定值进行比较,以蓝牙通信的方式将运动控制指令传给移动小车,移动小车根据接收到的指令实现前进转弯等运动,并实现对声源的控制。串口屏用于显示和调试系统的参数。
图2 系统实际位置关系
系统实际摆放位置如图2所示。ABC三个声音接收器摆放在边长为1m的正方形的三个顶点上,三个接收器通过导线与单片机模块连接,单片机以蓝牙通信与移动小车通信,声源和声源控制模块位于小车上,控制小车的运动就能实现声源的移动。
本系统整体移动声源是将声源放置在移动小车上实现的,移动小车部分采用TM4C123G 作为主控,移动小车由电机驱动车板、亚克力车架、单片机主控板、蓝牙接收器和两个步进电机构成,移动小车上还搭载了声源和声源控制模块。蓝牙装置接收到运动指令后,由蜂鸣器发出声响,声音传感器接收信号传输给单片机主控板和电机驱动板共同实现电机的运行,小车在规定时间内到达目标位置后由板载的RGB灯显示绿灯。
本系统的声音检测部分采用三个声音传感器模块,经波形整形电路后传输给单片机,单片机两两比较三个通道信号时间差,经过数据拟合,得到各传感器时间差与移动声源位置信息的数学关系,从而能准确判断小车的实时位置,从而精确发出指令控制小车的运动状态。
图3 系统软件设计
在本系统中,我们使用了两块单片机,分别控制小车的运动与声音信号的采集。首先,单片机控制蜂鸣器发出周期性的声波信号,放置在坐标轴端点上的声音采集模块采出声音信号,单片机使用外部中断获得出三个传感器获得信号之间的相位差,经过处理后通过蓝牙模块传递给小车。小车根据所获得的信号来到达指定位置,完成任务目标。
单片机(Single-Chip Microcomputer)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用,在此,我们需要用到单片机来控制小车的运行和对数据进行处理。
方案一: 选用89C52RC作为主控。
STC89C52RC是STC公司生产的一种低功耗、高性能CMOS8位微控制器,STC89C52是一种带8K字节闪烁可编程可檫除只读存储器(FPEROM-Flash Programable and Erasable Read Only Memory )的低电压,高性能COMOS8的微处理器,俗称单片机。该器件采用ATMEL搞密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
方案二: 采用STM32F407ZET6单片机
32系列单片机具有高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M内核,且速度快,一次处理数据宽度达32位。
方案三:采用TM4C123GH6PMT7
TM4C123GH6PMT7是具有 80MHz 频率、256KB 闪存、32KB RAM、2 个 CAN、RTC 和 USB、采用 64 引脚 LQFP 封装、基于 Arm Cortex-M4F 的 32 位 MCU。如图3所示。
图4 TM4C123GH6PMT7开发板
综合对比,我们选择STM32F407ZET6作为声音误差分析部分的处理器,其引脚丰富,处理性能强大,能满足高速的误差计算需求;选择TM4C123GH6PMT7作为移动声源主控处理器,其体积小巧、功能丰富而且性价比高。
方案一:
设计制作一个咪头声音采集电路,如图5所示。将接收到的声音信号转为模拟电信号经过放大后传输给单片机,单片机通过判断模拟电信号的幅值大小来判断声源的位置。
图5 咪头声音采集电路实物图
方案二:
设计制作咪头声音采集电路,输出的电信号经过LM386音频放大器放大后,通过LM567鉴频电路筛选声源频率的电信号触发低电平,根据两路输出的下降沿时间差来判断声源位置鉴频电路如图6所示。
图6 LM567鉴频电路实物图
方案三:
利用现成的声音检测传感器,当声源音量高于设定阈值时,传感器输出高频数字脉冲,经过波形整形电路将密集脉冲整形为连续方波,通过两个传感器输出的两路上升沿时间差来判断声源的位置,整形电路如图7所示。
图7 波形整形电路实物图
上述三个方案中,方案一无法准确通过传感器输出的模拟电信号幅值来判断声源位置,误差较大。方案二实际制作的电路输出的下降沿抖动明显,不利于软件后期处理,在尝试中放弃了该方案。方案三能精准地获得两路方波信号的上升沿时间差,从而实现较为精确地判断声源位置,故最终选择方案三。
题目要求放置时移动声源正对目标线,行走过程中需要保持直线,这就要求驱动系统稳定、精准。
方案一:
直流编码电机具有编码器,可以通过单片机的输入捕获获得编码器的数值后通过PID精准控制速度,就可以达到小车直线行走的效果,并且其拥有着更大的轴距,拥有较强的带负载能力。
方案二:
步进电机通过脉冲数来控制器转速,在脉冲数相同的情况下,其所转角度也相同,这样在两个电机都给相同的脉冲数情况下,其便可以很简单的走出直线。
上述两种驱动中步进电机有着更好的稳定性,同时能提供足够的输出能力,运行性能和能耗方面也更具有优势,所以选择方案二。
方案一:
采用音频功放和扬声器发声
方案二:
采用高分贝蜂鸣器发声
方案一中的扬声器能够方便地调试发出不同音调的声音,但其发声响度有限,且驱动电路复杂,发出的声音无法突破声音传感器的设置阈值。方案二的高分贝蜂鸣器声音响亮,控制电路简单,功耗低,故选择方案二。
图9 整形后的矩形波
声音识别方法
声音传器接收到声源发出的脉冲声音信号,将声音振动转化为模拟电信号,经过电压比较器转为间歇性的数字脉冲信号,如图8所示,其通过滑动变阻器可以调节传感器对声音的敏感程度。间歇性的数字脉冲信号经单稳态触发器进行整型滤波,转化为标准的矩形波,如图9所示。间歇性数字脉冲信号经过单稳态触发器整形后,其输出矩形波的下降沿时间是取决于电路RC暂态时间,因此变得不可靠,但其上升沿几乎不受到干扰,单片机通过采取两路传感器经过整形后获得的上升沿的得出相位差,从而得到声源的位置信息。
通过蓝牙模块进行两个单片机之间的通信,在采样单片机采集到信号后,给控制单片机传递信号,在采样单片机采取到距离后,判断小车是否到达目标位置,如果小车到达目标位置,便向小车发出信号使其停止。
采用可重复触发的单稳态触发器74HC123AP数字芯片,其功能表如图10所示
图10 74HC123AP数字芯片功能表
声音传感器模块接收到高于设置阈值的声音时,输出低电平。从示波器实际观测波形,发现其在接收到声音时输出高频的数字脉冲,其标志信息为下降沿,因此设计单稳态电路使其工作在下降沿触发的模式下,故将CLR、B端接高电平,A端与声音传感器模块数字量输出脚相连接。用示波器再次观测得到高频数字脉冲相邻两个低电平的时间间隔为1ms左右,由此根据暂稳态时间公式T=0.45RC计算出单稳态的电容和滑动变阻器的选值。本电路选取电容C=1μf,电阻采用5.1kΩ定值电阻+500kΩ滑动变阻器,整形电路原理如图11所示
图11 74HC123AP单稳态触发器电路
声源驱动电路主要由升压模块和三极管组成,如图所示,单片机IO口通过拉高拉低电平,使三极管饱和或者截止,从而控制蜂鸣器与电源之间的开通或关断,实现了蜂鸣器间歇性发声。为使蜂鸣器声音响亮,使用升压模块提升供电电压至24V。
图12 声源驱动电路
将TM4C123GH6PMT7的PWM、串口引出,方便连接,接线端子采用Sada konektor XH4 ,使接线更加稳定,单片机拓展板将5V稳压和3.3V稳压集成,在拓展版上还同时将蜂鸣器模块进行了集成,使线路稳定性更高 。
图13电机驱动板
采用双电机驱动控制两个步进电机,将两个A4988的引脚向外引出方便连接,同时将蓝牙模块集成在驱动板上.
声源频率(KHz) 参数 |
0.5KHz |
1KHz |
2KHz |
3KHz |
相邻脉冲时间差(ms) |
2~3.45 |
1.05~1.35 |
0.47~0.68 |
0.31~0.35 |
有效距离(m) |
0.8 |
1.5 |
1.2 |
0.6 |
表1 单稳态触发器波形整形测试
通过改变声源发生频率,观察传感器对其声源的有效接收距离,最终发现声源发生频率为1KHz左右时,传感器有效感应距离最远,故设置蜂鸣器发生频率为1KHz。
传感器标号 |
A-B |
A-C |
OX线时间差(μs) |
-500~-1500 |
/ |
OY线时间差(μs) |
/ |
800~1300 |
表2 声源定位测试调试
由实际测试得到移动声源在OX、OY两条停止线上传感器之间的时间差,对其进行数据分析,建立控制指令阈值,以实现控制小车运动状态。图14为场地环境情况。
图14场地环境
到达成功率 |
定位误差 |
|
基础部分 |
85% |
1~10cm |
发挥部分 |
85% |
1~6cm |
表3 在较为嘈杂的条件下测试方案
到达成功率 |
定位误差 |
|
基础部分 |
90% |
1~8cm |
发挥部分 |
90% |
1~5cm |
表4 在安静的房间里进行测试
通过题目实际完成度测试发现系统在嘈杂的环境容易受到干扰,其定位误差会进一步增大,通过改进声音传感器阈值和软件滤波算法,以最大程度减小测试环境对系统产生的影响。
附录
实物图片:
图15 移动声源展示
图16 单片机误差计算模块
图17 传感器布置与调试场地
代码展示:
图18 声音检测代码
图19 蓝牙握手代码
图20 步进电机控制代码
!注意:请使用浏览器自带下载,迅雷等下载软件可能无法下载到有效资源。
欢迎加入EEWorld参考设计群,也许能碰到搞同一个设计的小伙伴,群聊设计经验和难点。 入群方式:微信搜索“helloeeworld”或者扫描二维码,备注:参考设计,即可被拉入群。 另外,如您在下载此设计遇到问题,也可以微信添加“helloeeworld”及时沟通。
EEWorld Datasheet 技术支持