文档详情

智能小车声音引导系统设计与制作报告.doc

博****1
实名认证
店铺
DOC
287KB
约20页
文档ID:396101651
智能小车声音引导系统设计与制作报告.doc_第1页
1/20

声音引导系统设计与制作报告一、方案选择与论证 1、整体方案选择方案一:本方案采用音频收发的方式,由核心控制模块80C51F020发出一个特定频率的音频脉冲信号,前置音频接收模块接收并识别这个脉冲信号将其转变成TTL电平采用FPGA对接受的信号进行处理,经过无线收发模块通讯,将小车的定点位置传至核心模块单片机处理并控制小车在特定的范围内运动 方案二:本方案采用语音收发的方式来控制小车的运动,由核心控制模块控制语音芯片,发送特定的语音信号,再由语音识别模块对语音进行采集和数字化采用FPGA对接受的信号进行处理,经过无线收发模块通讯,将小车的定点位置传至核心模块单片机处理并控制小车在特定的范围内运动方案比较:方案一的核心控制算法由80C51F020完成单片机的算法控制比较简单,容易实现而FPGA的算法较复杂,但其对边沿信号反应时间快,所以利用FPGA处理接受音频信号方案二用到语音收发的方式,由于识别语音的收发模块实现困难,所以本设计采用方案一2、控制理论计算方案选择方案一:可移动声源在运动前发出音频信号,根据三个接收器接收音频的时间不同,可以算出声源到接收器间的距离和声源到中线OX的距离,即可移动声源起始位置定位。

然后控制小车做垂直中线OX运动,到达中线OX再第二次发音频信号,定位此时可移动声源的位置,得出与中心点W的距离,使小车转动90度,运动至W点方案二:可移动声源发出音频信号后,得到定位根据弧度的计算,控制小车做弧线运动到达至中线OX可移动声源第二次发出音频信号,得到与中心点W的距离,控制小车到达W点方案比较:方案一直接利用走垂直线的方法,算法简单方案二用到弧长和角度的算法,控制困难,且调试繁琐为了满足方案的要求,所以本设计选择方案一二、硬件设计与实现硬件系统的框图如图1所示单片机与FPGA通过无线的方式通讯单片机FPGA电机控制音频发送无线收发音频接受无线收发红外对管测速液晶显示图1、硬件系统框图主要模块电路如下:1、 控制器模块实现音频的接受和无线收发功能FPGA模块电路如图2所示接收经过锁相环选频后的信号和单片机控制发送的同步无线信号,通过处理后利用无线通讯将命令发会单片机图2、FPGA控制模块2、 音频接收模块 该模块通过驻极体话筒采集音频信号,驻极体话筒具有结构简单、重量轻、体积小、无方向性、频率响应宽、保真度好等优点音频信号通过前置放大、滤波再将放大信号通过LM567锁相环音频译码芯片,构建选频电路,当输入信号的频率落在其内部压控振荡器中心频率时,输出端将由原来的高电平变为低电平。

锁相环内部压控振荡器中心频率(f=1/1.1RC)由5、6脚外接的电阻与电容决定所以在5脚接入10K的滑动变阻器调节,可确定被选定的频率经过多次计算与验证,前置放大电路用TL082集成运放当麦克风接收到6k赫兹左右的频率时,输出会有很明显的电平跳变电路原理如图3图3、音频接收模块原理图3、 电机控制模块根据大赛要求,电机控制采用MMC-ASSP作为电机驱动的主控芯片采用串口通信UART模式该芯片提供三个通道控制电机,即可同时控制三个电机运转每一路直流电机需要CHnDCPWM和CHnDCDIR两个引脚,CHnDCPWM用于PWM波输出,CHnDCDIR用于指定电机转向,外接一个全桥驱动芯片控制直流电机工作通过调节占空比控制电机的转速数据的输入输出端口(TXD和RXD)与主控MCU相连如图4所示采用了H桥驱动元件L298,避免了使用分立元件带来的电路板复杂的问题,电路简洁且可以提供最大为4A的电流MMC-ASSP控制电路如图4所示,L298驱动电路如图5所示双H桥驱动IC双H桥驱动IC双H桥驱动ICCH1DCPWMCH1DCDIRCH1DCPWMCH1DCDIRCH1DCPWMCH1DCDIRVddUART/SPIRESETSLEEPRXD/SITXD/SOREGCVssI/OTXDRXDVddGND电机1电机2电机3主控MCUMMC-1图4、UART模式下直流电机控制模块图5、电机驱动模块原理图4、 红外对管测速模块用黑线将小车车轮圆盘平均15等分,采用光电传感器RCRT5000检测黑线,在一定时间内计数检测到的黑线条数,计算出车速,由80C51F020控制液晶显示。

红外对管模块如图6 图6、红外对管测速原理图5、显示模块显示模块主要由80C51F020的开发板作为控制核心,另外显示电路作为外围电路主要功能:红外对管采集车轮转动的数据,由单片机处理后经过1602液晶显示小车的车速三、软件系统设计1、80C51F020和FPGA总体程序流程初始化定时器开 计数等待接收到无线命令音频结束关定时器换算距离延时无线发送初始化发送无线信号发送6kHZ音频信号延时是否否是定位声源接收无线信号(几乎同时发送)控制电机图7、程序流程图2、MMC-1 ASSP电机控制程序流程电机驱动需要配置相对应的寄存器,占空比给定寄存器(chnDuty)在用于直流电机驱动时需要配置,主要是通过设定该寄存器选择不同占空比,进而调节电机转速另外,在配置完chnDuty寄存器后,还要设置工作模式寄存器(chnMode)选择驱动电机的类型本方案选择的是直流电机具体程序流程如图8所示延时50us,初始化结束MMC-1上电初始化设置chnDuty寄存器设置chnMode寄存器是否结束图8、MMC-1电机控制程序流程四、硬件与软件调试本方案所用到的硬件电路不多,主要是音频接收模块、电机驱动模块和核心板电路。

有关的硬件模块调试主要就是音频的接收该操作比较简单难度较大的是软件调试,本方案软件控制是核心通过对音频的控制和无线接受模块控制小车在特定要求下运动主要用到核心控制器80C51F020和FPGA进行协同控制调试在控制时序方面较困难,对音频的采集处理有难度五、性能与指标测试1、测试仪器数字示波器 DS1102C 功率函数信号发生器 YB1605P直流稳压电源 YB1732A2A 秒表、2米卷尺2、测试分析本次设计用到声音的引导,会受到较大的干扰,前置的音频接受与转换的硬件也存在一定的误差,导致FPGA测得的时序浮度比较大,所测得的数据稳定性不高不过对小车的控制比较到位六、总结经过4天3夜的努力,我们终于完成了本题的制作,在参数和功能上尽量完成要求在理论设计计算方面,我们充分运用了我们所掌握的知识,力争做到更好在实际过程中,关于音频信号的处理和相关时序处理遇到的问题较大这一方面成为本设计的关键所在说明了我们还是缺少相关知识技术和实际的工程经验通过此次大赛,我们队的每个成员都获益非浅 参考文献[1] 综合电子设计与实践.田良.南京:东南大学出版社,2002.3.[2] FPGA设计与应用.刘皖,何道君,谭明.北京:清华大学出版社,2006.[3] C8051F单片机原理及应用. 鲍可进. 北京:中国电力出版社,2006.[4] FPGA原理与实践.张庆玲, 杨勇.北京:北京航空航天大学出版社,2006.附  录附录1. 单片机源程序//020 串口UART0发送程序模块#includeunsigned int count,count1,count2;unsigned char lcd[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};unsigned int cnt; //用于控制发6KHz的方波的个数unsigned int a,b,c;bit flag_sound; //标志位,用于控制发送方波的个数bit flag,flag1,flag2;bit key_flag;sbit key1=P0^5;sbit key2=P0^6; sbit sound=P0^7;sbit RS=P2^5;//液晶sbit RW=P2^6;sbit EN=P2^7;sbit P30=P3^0;//EN_1,EN_2sbit P31=P3^1;sbit P33=P2^3;void Delay(unsigned int i);void PORT_Init(void);void SYSCLK_Init(void);void UART0_INT();void UART1_INT();void E_int(void);void Wait_Busy(void);void Write_Data(unsigned char data_in);void Write_Code(unsigned char code_in);void Lcd_Init(void);void stright(void);void zhuanwan_left(void);void zhuanwan_right(void);void stop_8s(void);void delay_long(void);void stop();void key_puanduan();void Timer_INT();void Delay(unsigned int i)//延时子程序{ while(i--);}void Timer_INT() interrupt 1 using 1{ if (cnt==b) //发10个周期的6KHz的方波 { TL0=0x69; //6KHz的频率产生的定时器的值 TH0=0xff; flag_sound=1; TR0=0; cnt=0; } else { TL0=0x69; TH0=0xff; sound=~sound; cnt++; flag_sound=0; TR0=1; }}void PORT_Init(void) /**********端口的初始化***********/{ XBR0=0x04; //使UART0的TXD和RXD分别连接到P0.0,P0.1 XBR1=0x04; XBR2=0x44; P0MDOUT=0x60; /*******P口输出方式的设置*********/ P1MDOUT=0X00; P2MDOUT&=0x00; P3MDOUT&=0x00;}void SYSCLK_Init(void) /*******系统时钟初始化**********/{ unsigned int Q=0; /*******外部时钟的配置*********/ OSCXCN=0x67; for(Q=0;Q<255。

下载提示
相似文档
正为您匹配相似的精品文档