基于STM32控制的声音导引系统
扫描二维码
随时随地手机看文章
摘要:设计了一个基于STM32控制的声音导引系统。该系统由1个可移动声源S和3个声音接收器A、B、C构成。由一片从控STM32单片机控制无线发送模块,实现声音导引信号的发送。主控单片机根据无线接收模块所接收到的信息来判断可移动声源运动的启停。
引言
声音导引系统,主要是靠声音来完成对机器的智能控制,既方便又快捷。尤其是环境比较恶劣、不适合人类停留的地方,可以依靠声音来控制机器的正常运行。声音导引系统也是智能化控制的一个方面,对未来的智能化发展有较大的促进作用,对未来智能机器人的研究也大有帮助。
1 系统总体方案
如图1所示,声音导引系统由1个可移动声源S,声音接收器A、B和C构成。其中,可移动声源由发声模块和无线接收模块组成;A、B、C三处各放置一个声音接收器。
针对系统设计要求,可以采用以下实现方案:在O点设置一个STM32单片机控制器,作为A、B、C三个声音接收器的公共控制器,并通过一个公共无线发送模块向可移动声源发送反馈信号。可移动声源开始运动并发出声音后,声音接收器A、B和C收到声音,将声音信号分别传送给STM32单片机,由STM32单片机判别A、B和C哪个声音接收器先接收到该声音信号。
若声音接收器B先收到,则不发送反馈信号给可移动声源。一旦声音接收器A先收到声音信号,表明可移动声源已经在定位误差的范围内到达Ox线,无线发送模块立即向可移动声源发送反馈信号,可移动声源接收到该信号后,立即停止运动。该方案电路简单,只需要一套无线收发系统,因此也节约了成本。
2 系统硬件设计
本系统中,可移动声源由EDC-CarX V1.0-2007.06四驱版DIY竞赛小车、日本NEC电机控制ASSP芯片MMC-1、STM32 Cortex-M3系列单片机、无线接收模块、天线、蜂鸣器组成;音频接收模块、无线发送模块、天线组成声音接收器。
如图2所示,本系统主要靠无线模块实现主从控制器之间的通信,进而通过MCU-1来控制电机的运行状态。由于该系统要求系统的响应速度快、功耗低、稳定性高等,一般的C51单片机不能满足要求,综合考虑选择ST公司Cortex-M3系列的STM32F1103VE作为主控芯片。该芯片基于专为要求高性能、低成本、低功耗的嵌入式应用设计的ARM Cortex-M3内核。其特点如下:工作时钟频率最高达到72 MHz;单周期乘法和硬件除法;256~512KB的Flash,高达64 KB的SRAM;睡眠、停机和待机3种低功耗模式;2通道12位D/A转换器;多达13个通信接口;11个定时器,可以进行输入捕捉/输出比较/PWM信号通道和增量编码输入。
可移动声源电机部分由STM32-F103VE、MMC-1和L293芯片驱动,其控制、驱动电路如图3所示。MMC-1和L293都是直流电机的控制芯片,这种组合更有利于精确控制。
无线接收模块电路如图4所示。SCDRX2DS为无线接收模块的控制芯片。301是电路的稳压芯片,起到电压保护的作用。
3 软件设计
本系统的软件部分主要分为移动声音模块和声音接收模块。采用ST公司提供的函数库进行开发。该函数库是一个固件函数包,它由程序、数据结构和宏组成,包括了微控制器所有外设的性能特征,以及每一个外设的驱动描述和应用实例。通过使用函数库,无需深入掌握细节,用户就可以轻松地应用外设,从而大大缩短了用户的编程时间,进而降低了开发成本。为了减小开发难度,本设计以引用函数库为主,添加自己的用户程序完成整个系统的软件部分。
3.1 移动声音模块
本模块主要实现移动声音控制器的功能。利用延时的方法产生高低电平来驱动蜂鸣器产生声源。通过SPI串口和NEC的从控芯片进行通信,发送命令进而来控制电机的运行状态。通过无线模块接收的信息先暂存在SPI的缓冲区中,以备控制命令及时发送。发送的控制命令有前进、后退、左转、右转和停止信号。移动声音模块控制流程如图5所示。
3.2 声音接收模块
本模块的功能主要是循环接收传感器的信息,根据3个接收器传回声音的顺序不同,来判断移动声音的位置和运行状态,进而将前进、后退、左转和右转控制命令发送给移动声源。由于该控制器的采样频率要高,因此把主控制器的时钟频率通过PLL调到最大72 MHz。声音接收模块控制流程如图6所示。
4 系统测试
测试仪器包括:100 MHz数字示波器,数字万用表(型号VICTOR-VC890D),STM32单片机开发板,秒表,卷尺。
用示波器观测单片机、MMC-1芯片的输入/输出引脚信号波形,用数字万用表检查元件有无虚焊,从而确定对电机的驱动情况。
用秒表、卷尺测试小车运动的平均速度,并量取定位误差。假设小车初始位置为S0,小车停止位置为S且SS0与间夹角为α,全程运动时间为t,S与0x线间距离为d,则小车平均速度为SS0·tan(α/t)。
测试数据如表1所列。
结语
可移动声源开始运动并发出声音,3个声音接收器收到来自可移动声源的声音信号后,立即发出各自载波频率的反馈信号给可移动声源。可移动声源根据接收到的不同信号频率判断反馈信号的源头,从而由MCU发出相应控制信号(前进、倒退和转弯),导引可移动声源在定位误差的范围内。