基于摄像头循迹的电子设计竞赛论文

摘要

 

本系统以设计题目的要求为目的,采用STM32F103ZET6单片机为控制核心,另外其他辅助模块包括:电源模块,图像显示模块,蓝牙模块,以及其他功能模块进行辅助,从而来完成智能车的硬件设计。我们采用了模糊PID控制算法来实现对智能车的控制,并进行了一定的实验。通过利用ov7725摄像头探测前方的黑线,将采集到的信息传回STM32单片机,对读出的数据进行二值化处理,加上阈值后可以进行循迹使用,通过判断黑线的形状和曲率调整电机转速进而改变方向,使小车沿黑线行驶,达到循迹功能并可以自动记录时间,使用LCD显示屏显示黑线轨迹使用超声波测距离避障,并在LCD上显示,整个系统的电路结构简单,可靠性能高。实验测试结果满足要求,本文着重介绍了该系统的硬件设计方法及测试结果分析。

采用的技术主要有:

(1)小车摄像头处理及自动循迹

(2)稳压电路的有效应用;

(3)单片机的使用;

4障碍物距离算法,串口通信协议

 

关键字:STM32F103ZET6单片机直流驱动小车摄像头;LCD显示避障;蓝牙控制;比例积分微分。


目  录

1章 系统方案 1

1.1 实现方法 1

1.2 方案论证 1

       1.2.1主控芯片的选择........................................................................................1

       1.2.2电机及驱动................................................................................................1

1.2.3寻迹传感器模块........................................................................................2

1.3 系统设计 2

1.4 结构框图 3

2章 理论分析与计算 8

2.1 测量与控制方法 8

2.2 理论计算 10

3章 电路与程序设计 11

3.1 检测与驱动电路设计 14

       3.1.1驱动设计..................................................................................................15

3.1.2检测设计...................................................................................................16

3.2 总体电路图 18

3.3 软件设计与工作流程图 19

4章 结果分析 20

4.1 创新发挥 20

4.2 结果分析 20

 

 

 

第1章    系统方案

1.1 实现方法

本系统采用STM32F103ZET6单片机作为主控单元,对整个系统进行控制,并驱动液晶显示器,显示运动系统的信息利用蓝牙接收数据,实现对小车的控制,实现反馈位置信息进行循迹调整

1.2 方案论证

1.2.1主控芯片芯片的选择

方案一:采用传统8位89C51单片机作为控制单元,价格低廉,但处理速度慢,功能单一,RAM、ROM小。本系统需要计算速度,角度等大量的浮点数。需扩展RAM和ROM,而且硬件工作量必然加大。

方案二:采用STM32F103ZET6单片机为控制核心,库函数多,实用简单方便,片内资源丰富运算速度功率低。

鉴于STM32F103ZET6单片机的优越性,选方案二。

1.2.2电机及其驱动

1)电机

方案一:采用步进电机,可准确控制转速和旋转的角度,但是体积大,质量大,并且需要另配驱动器,成本较高。在电动车上安装比较复杂。
    方案二:采用减速直流电机,体积适中,安装简单,转速慢,车速容易控制,并且转矩和扭矩较大
    综上所述,采用方案二。

(2)驱动

方案一:采用继电器对电机的开关进行控制,可以完成电机的正转,反转,调速,但继电器响应时间慢,使小车运动灵敏度降低,

 

机械结构易磨损,可靠性不高。它适用于大功率电机的驱动,对于中小功率的电机极不经济。

方案二:采用SM6135W电机遥控驱动模块。SM6135W专为遥控设计的大规模集成电路。能实现前进后退、向右、向左、加速五个功能,但是其采用的是编码输入控制,不是电平控制,这样在程序中实现比较麻烦,而且该电机模块价格比较高。

方案三:采用集成的驱动电路芯片L298N。L298N驱动芯片具有体积小,可靠性安全性高,抗干扰能力强等优点,适合控制智能小车的运动。且较大的电流驱动能力,连接方便简单

综合以上考虑,我们选择方案三,使用L298N驱动直流电机。

1.2.3寻迹传感器模块
    方案一:采用OpenCV和高像素摄像头来完成,功能强大,图传稳定。

 方案二:采用openmv摄像头,其中自带内核,处理速度快,功能强大。

 方案三:采用ov7725摄像头,价格便宜,每秒60帧的像素处理,容易受到外界光的干扰,但其体积小,安装简单,当其安装位置较低时,可以大大减轻外界光对传感器的干扰,在平缓的路径中,可以完成寻迹功能。其原理图如下:

 


    由于价格和实用性方面的考虑,所以采用方案三

1.2.4电源模块

本系统中,需要用到的电源有单片机的5V,L298N芯片的电源6V电机的电源7-12V。所以需要对电源的提供必须正确和稳定可靠。

方案一:用9V锌电源给电机供电,然后使用7805稳压来把高电压稳成5V分别单片机和电机驱动芯片供电。这种接法比较简单,但小车的电路功耗导致电机动力不足。

方案二:采用双电源。为了确保单片机控制部分电机驱动的本分电压不会互相影响,要把单片机的供电和驱动电路分开来,即:用电流电12V供给单片机和驱动,这样有助于消除电机干扰,提高系统的稳定性。

基于以上分析,我们选择了方案二

1.3 系统设计

本系统采用STM32F103ZET6单片机为核心,采用两个直流减速电机进行左右轮分别驱动,利用PWM对电机进行调速,控制电动车的速度,实现电动车在跷跷板上的前进、停止和后退,利用红外反射传感器进行寻迹,使电动车沿着引导线行驶

1.4 结构框图

通过上面的分析,我们设计的系统总体框图如一所示

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

1.5 OV7725特点

     高灵敏度、低电压适合嵌入式应用标准的 SCCB 接口,兼容 IIC 接口
支持 RawRGB、 RGB(GBR4:2:2, RGB565/RGB555/RGB444), YUV(4:2:2)和 YCbCr4:2:2)输出格式支持 VGA、 QVGA,和从 CIF 到 40*30 的各种尺寸输出支持自动曝光控制、自动增益控制、自动白平衡、自动消除灯光条纹、自动黑电平校准等自动控制功能。同时支持色饱和度、色相、伽马、锐度等设置。支持图像缩放 

 

 

 

 

 

 

 

第二章 理论分析与计算

2.1测量与控制方法

根据题目分析,要使摄像头循迹ov7725摄像头来实现路径识别功能,将摄像头采集过来的视频信号二值化后送入微处理器进行处理实时采集路况信息方法和实时控制智能小车的速度,最终达到实现整个系统的闭环控制,使小车可以自主的按照路面信息快速行驶。通过STM32F103ZET6单片机输出的PWM波控制。调节电机转速,进行循迹,避障

 

2.2理论计算

 2.2.1摄像头检测到黑线的中心位置算法             

u8 center[4]={120,120,120,120};

u8 i,j,left=0,right=0,left_flag=0,right_flag=0,left2=0,

right2=0,left_flag2=0,right_flag2=0,left3=0,right3=0,left_flag3=0,right_flag3=0;

static u8 number;

for(j=0;j<240;j++)

{f((color1[0][j]==0)&&(color1[0][j+1]==0)&&(color1[0][j+2]==0)&&(color1[0][j+3]==0)&&(color1[0][j+4]==0)&&(color1[0][j+5]==1)&&(color1[0][j+6]==1)&&(color1[0][j+7]==1)&&(color1[0][j+8]==1)&&(color1[0][j+9]==1))//若存在00000111111这样的连续数据,判断为左边线{left_flag=1;left=j+4;break; }

else if((color1[0][j]==1)&&(color1[0][j+1]==1)&&(color1[0][j+2]==1)&&(color1[0][j+3]==1)&&(color1[0][j+4]==1)&&(color1[0][j+5]==0)&&(color1[0][j+6]==0)&&(color1[0][j+7]==0)&&(color1[0][j+8]==0)&&(color1[0][j+9]==0))

{right_flag=1;right=j+5;break; }

if((color2[0][j]==0)&&(color2[0][j+1]==0)&&(color2[0][j+2]==0)&&(color2[0][j+3]==0)&&(color2[0][j+4]==0)&&(color2[0][j+5]==1)&&(color2[0][j+6]==1)&&(color2[0][j+7]==1)&&(color2[0][j+8]==1)&&(color2[0][j+9]==1))//若存在0000011111这样的连续数据,判断为左边线{left_flag2=1;left2=j+4;break; }else if((color2[0][j]==1)&&(color2[0][j+1]==1)&&(color2[0][j+2]==1)&&(color2[0][j+3]==1)&&(color2[0][j+4]==1)&&(color2[0][j+5]==0)&&(color2[0][j+6]==0)&&(color2[0][j+7]==0)&&(color2[0][j+8]==0)&&(color2[0][j+9]==0)){right_flag2=1;right2=j+5;break;}if((color3[0][j]==0)&&(color3[0][j+1]==0)&&(color3[0][j+2]==0)&&(color3[0][j+3]==0)&&(color3[0][j+4]==0)&&(color3[0][j+5]==1)&&(color3[0][j+6]==1)&&(color3[0][j+7]==1)&&(color3[0][j+8]==1)&&(color3[0][j+9]==1)){left_flag3=1;left3=j+4;break;}else if((color3[0][j]==1)&&(color3[0][j+1]==1)&&(color3[0][j+2]==1)&&(color3[0][j+3]==1)&&(color3[0][j+4]==1)&&(color3[0][j+5]==0)&&(color3[0][j+6]==0)&&(color3[0][j+7]==0)&&(color3[0][j+8]==0)&&(color3[0][j+9]==0)){right_flag3=1;right3=j+5;break}

}

zhong1=(left+right)/2;zhong2=(left2+right2)/2;zhong3=(left3+right3)/2;

kuan=((right-left)+(right2-left2))/2;

}                   

 其他的后续更新

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

当黄昏靠岸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值