[作品] 李智鹏 卢炫均 汪鹏:超声波避障蓝牙小车

学渣小队   2018-9-1 23:46 楼主
题 目:超声波蓝牙避障小车
成 员: 李智鹏
_____汪鹏
卢炫均
超声波避障蓝牙小车
摘要
利用超声波发射接收器来实现小车对将要前进的路况进行探测,并将信号发送至89C52核心板处理,实现避障;小车通过蓝牙模块来跟手机连接,手机发送信号到蓝牙,对小车的运动进行指挥。小车驱动由L298N驱动完成,通过pwm波控制速度。
关键词:超声波,蓝牙,L298N驱动电路,89C52核心板
Abstract
the ultrasonic transmitterreceiver is used to detect the road condition to be advanced by the car, andthe signal is sent to the 89C52 core plate for processing, so as to avoidobstacles. The car is connected to the mobile phone through the bluetooth module.The mobile phone sends a signal to the bluetooth to direct the movement of thecar. The car is driven by L298N and the speed is controlled by PWM wave.
Key words: ultrasonic, bluetooth, L298N drive circuit, 89C52 coreboard
目录
摘要..........................................1
ABSTRACT......................................1
目录..........................................2
1. 引言.......................................3
2. 设计方案论证与比较.........................3
2.1 蓝牙模块的选择........................3
2.2 驱动模块的选择........................4
2.3 电源系统..............................4
3. 系统设计与理论分析.........................4
3.1系统硬件设计...........................4
4.主要流程图..................................5
5.系统测试....................................6
6.结论........................................6
7.参考文献....................................6
一.引言
89C52是INTEL公司MCS-51系列单片机中基本的产品,它采用ATMEL公司可靠的CMOS工艺技术制造的高性能8位单片机,属于标准的MCS-51的HCMOS产品。它结合了CMOS的高速和高密度技术及CMOS的低功耗特征,它基于标准的MCS-51单片机体系结构和指令系统,属于89C51增强型单片机版本。89C52内置8位中央处理单元、512字节内部数据存储器RAM、8k片内程序存储器(ROM)32个双向输入/输出(I/O)口、3个16位定时/计数器和5个两级中断结构,一个全双工串行通信口,片内时钟振荡电路,还可工作于低功耗模式。(1)
本设计采用89c52作为核心板,有效实现对小车运动状态的实时控制,控制灵活可靠,精确度高。利用超声波发射接收器来探测前进路上的障碍,实现自动避障,探测数据由超声波传送到89c52核心板,由核心板对数据进行处理并判断,调控小车运行的速度与方向。
二.设计方案论证与比较
2.1 蓝牙模块的选择
主机:用来搜索从设备,不能被其他设备搜索。(带白点的蓝牙模块)
从机:用来被搜索的设备,不能主动搜索其他设备。主从连上以后就相当于一根串口线使用,这个时候就不分主从,也就是透传模式。(2)
方案一:HC-05是主从一体化的蓝牙串口模块,主从可指令切换,主机为快闪,从机为慢闪,指令丰富齐全,需要按按钮不放才能进入 AT 设置, AT 设置时需要将发送新行勾上。 (供电电压3.3V~3.6V)(3)
方案二:HC-06是主从一体化的蓝牙串口模块,主从可指令切换,主机为慢闪,从机为快闪,指令少于HC-05,使用简单,设置时不需要将发送新行勾上,不需要按按钮不放来进入 AT 设置。(供电电压3.3V~3.6V)(4)
小车的控制需要的指令不多,HC-06足够满足需求,而且操作更简单,故选择方案二。
2.2 驱动模块的选择
方案一:L298驱动:L298为H桥驱动芯片,可以为负载提供双向的电流,适合驱动2相或4相的步进电机,也可以驱动2台普通的有刷直流电机。驱动电流为2A.(5) 方案二:uln2003驱动芯片:uln2003为极电极开路驱动芯片,驱动4相步进电机如果用于驱动直流电机的话只能按一个方向转动,换向要改变电机的接法。(6)
小车在避障以及蓝牙控制时需要后退,就是电机反转,L298驱动满足需求,左右两边四个电机组成两组,左边两个电机看成一个电机,工作状态相同。L298驱动满足工作条件,故选择方案一。
2.3 电源系统
方案一:焊接一个电源转化模块,本模块作用为将12V电源转为9V再转为5V,给系统供电,需用到LM7809芯片以及LM7809芯片。
方案二:通过两节3.7V电池直接给系统供电,输入电压为7.4V
驱动的输入电压最好为12V,单片机的工作电压为5V,方案一正好满足整个系统对电压的需求。
三.系统设计与理论分析
3.1 系统硬件设计
本小车硬件由四个直流步进电机,蓝牙模块,l298驱动模块,89c52单片机最小系统,电源转换模块构成。
左右各两个步进电机,组成两组,每组的工作状态相同,与驱动直接相连,驱动的in1,in2,in3,in4分别与单片机最小系统板的IO口相连,以此为媒介,单片机来控制各组步进电机的工作状态。
蓝牙模块与手机相连,手机发射信号到蓝牙,蓝牙将信号传输到单片机进行处理。
电源转换模块由电容,lm7809,lm7805构成,将12V电压转换为5V供单片机使用。12V电压直接给驱动模块供电。
以上各模块之间通过杜邦线相连。
四.主要软件流程图
QQ截图20180901195326.png
五.系统测试
驱动的四个IO口在单片机中定义为高低高低,接上驱动后全部为高,电机无法转动。
只测电机,给电机正负极通电,电机转动;
只测驱动,给电机接上电压,in1给高电位,in2不接IO口,电机转动,当in2接上IO口时,因两端都为高,故不转动;
只测单片机最小系统板,更换系统板之后,单测还是出现上述情况。
六.结论
蓝牙功能实现,避障之前可以正常运行,但蓝牙与单片机的接口坏了,后来自己焊了一个,避障运转不了手机APP蓝牙串口助手与小车的蓝牙相连,输入111x,小车前进;输入222x,小车后退;输入000x,小车停止;输入333x,小车右拐;输入444x,小车左拐。
七.参考文献
【1】360百科
【2】360百科
【3】360百科
【4】360百科
【5】360百科
【6】360百科
实物图: IMG20180901155833.jpg
程序: #include
#define uchar unsigned char #define uint unsigned int #define run_car '1'//按键前 #define back_car '2'//按键后 #define left_car '3'//按键左 #define right_car '4'//按键右 #define stop_car '0'//按键停
uchar data_count=0; uchar len=0; uchar Get_Bluetoooth_Data_flag=0;
uchar data Bluetooth_Receive_Data[10]; sbit IN1=P2^0;//控制左电机IN1=0、IN2=0制动,IN1=0、IN2=1正转,IN1=1、IN2=0反转,IN1=1、IN2=1制动. sbit IN2=P2^1;//控制左电机 sbit IN3=P2^2;//控制右电机 sbit IN4=P2^3;//控制右电机 void init_UART(void);
void main() {
init_UART();
while(1) { if(Get_Bluetoooth_Data_flag==1) { Get_Bluetoooth_Data_flag=0;
switch (Bluetooth_Receive_Data[1]) { case '1': //前进 IN1=1; IN2=0; IN3=1; IN4=0; break; case '2': //后退 IN1=0; IN2=1; IN3=0; IN4=1; break; case '5': //停止 IN1=1; IN2=1; IN3=1;IN4=1; break; case '3': //左拐 IN1=1; IN2=1; IN3=1; IN4=0; break; case '4': //右拐 IN1=1; IN2=0; IN3=1; IN4=1; break; } } } }
void init_UART(void) { TMOD=0x20; TH1=0xfd; TL1=0xfd; TR1=1; SM0=0; SM1=1; REN=1; EA=1; ES=1; }
void UART_Interrupt(void) interrupt 4 { if(RI==1) { uchar temp; RI=0; temp=SBUF; if(temp!='x') { Bluetooth_Receive_Data[data_count]=temp; data_count++; } else { len=data_count; data_count=0; Get_Bluetoooth_Data_flag=1; } } }
本帖最后由 bqgup 于 2018-9-11 16:40 编辑
  • 电协徽章.jpg

回复评论 (1)

你们,,,获奖了吗。。。。最后做出来了没有啊?
点赞  2019-5-15 21:04
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复