当前位置: 首页 > wzjs >正文

湖南网站开发公司写软文平台

湖南网站开发公司,写软文平台,钢琴网站建设原则,wordpress getuser文章目录 一、基于STM32的循迹避障小车1.题目要求2.思路2.1 主控2.2 显示2.3 电源模块2.4 舵机云台2.5 超声波测距2.6 红外循迹模块2.7 蓝牙模块2.8 按键2.9 电机驱动 3.电路仿真3.1 未仿真3.2 自动模式3.3 手动模式3.4 蓝牙模式 4.仿真程序4.1 程序说明4.2 主程序4.3 红外程序…

文章目录

  • 一、基于STM32的循迹避障小车
    • 1.题目要求
    • 2.思路
      • 2.1 主控
      • 2.2 显示
      • 2.3 电源模块
      • 2.4 舵机云台
      • 2.5 超声波测距
      • 2.6 红外循迹模块
      • 2.7 蓝牙模块
      • 2.8 按键
      • 2.9 电机驱动
    • 3.电路仿真
    • 3.1 未仿真
      • 3.2 自动模式
      • 3.3 手动模式
      • 3.4 蓝牙模式
    • 4.仿真程序
      • 4.1 程序说明
      • 4.2 主程序
      • 4.3 红外程序
      • 4.4 测距程序
  • 二、总结


一、基于STM32的循迹避障小车

1.题目要求

主控:STM32
显示:OLED
电源模块
舵机云台
超声波测距
红外循迹模块(3个,左中右)
蓝牙模块
按键(6个,模式和手动控制小车状态)
TB6612驱动的双电机

功能:

该小车共有3种模式:
自动模式:根据红外循迹和超声波测距模块决定小车的状态
手动模式:根据按键的状态来决定小车的状态
蓝牙模式:根据蓝牙指令来决定小车的状态

自动模式:
自动模式下,检测距离低于5cm小车后退
未检测到任何黑线,小车停止
检测到左边或左边+中间黑线,小车左转
检测到右边或右边+中间黑线,小车右转
检测到中边或左边+中间+右边黑线,小车前进

手动模式:根据按键的状态来决定小车的状态

蓝牙模式:
//需切换为蓝牙模式才能指令控制
*StatusX X取值为0-4
0:小车停止
1:小车前进
2:小车后退
3:小车左转
4:小车右转

2.思路

2.1 主控

常规的主控STM32使用STM32F103C8T6的最小系统

在这里插入图片描述

2.2 显示

使用的是0.96寸的OLED显示屏

在这里插入图片描述
由于需要显示汉字,需要搭配PCtoLCD2002取模软件
在这里插入图片描述

2.3 电源模块

这里的12V输入代表的是12V电源适配器或者12V的电池盒供电。

在这里插入图片描述

第一级的TL793降压电路将12V降压到5V,可以参考立创商城编号的C96088的应用电路

在这里插入图片描述

第二级的AMS1117-3.3降压电路将5V降压到3.3V供后端的单片机等供电,为什么用二级,主要考虑到降压降压,LDO会发烫的问题,也可以直接用TL783降压到3.3V或者用个DCDC电源芯片来输出3.3V。(参考立创商城编号的C347222的应用电路)

在这里插入图片描述

2.4 舵机云台

想模拟实物的云台,可以带动上面的超声波测距检测各个方向的障碍物距离,实际有点鸡肋。可以直接去掉。
在这里插入图片描述

2.5 超声波测距

超声波测距模块HC-SR04
在这里插入图片描述

2.6 红外循迹模块

proteus仿真里面没有红外避障模块,这边用3个单刀双掷开关来模拟,开关向上闭合模拟检测到对应的黑线,开关向下闭合模拟未检测到黑线。

在这里插入图片描述

2.7 蓝牙模块

proteus仿真里面没有蓝牙模块,这边采用虚拟终端(需用到虚拟串口软件创建一对虚拟串口)配合串口调试工具进行模拟。

在这里插入图片描述

这边用的虚拟串口软件是Virtual Serial Port Driver 6.9,如下所示:

在这里插入图片描述
这边用的串口调试工具是SSCOM V5.13.1,如下所示:
在这里插入图片描述

2.8 按键

按键就没什么好说的了,未按下的时候由于加了上拉电阻,所以检测电平是高电平,按下按键,拉低到地,所以检测电平是低电平。

在这里插入图片描述

2.9 电机驱动

这里采用的电机驱动是TB6612驱动芯片,驱动2个直流电机(如果需要电机立刻停止,可以替换成MOTOR黑的电机,那个会立刻停)

在这里插入图片描述

TB6612驱动芯片控制电机转动的真值表如下(来源立创商城的C88224)

在这里插入图片描述

3.电路仿真

3.1 未仿真

在这里插入图片描述

3.2 自动模式

自动模式:
自动模式下,检测距离低于5cm小车后退
未检测到任何黑线,小车停止
检测到左边或左边+中间黑线,小车左转
检测到右边或右边+中间黑线,小车右转
检测到中边或左边+中间+右边黑线,小车前进
在这里插入图片描述

3.3 手动模式

手动模式:根据按键的状态来决定小车的状态
在这里插入图片描述

3.4 蓝牙模式

蓝牙模式:
//需切换为蓝牙模式才能指令控制
*StatusX X取值为0-4
0:小车停止
1:小车前进
2:小车后退
3:小车左转
4:小车右转

在这里插入图片描述

4.仿真程序

4.1 程序说明

主控芯片:STM32F103C8
HSI:64MHZ
Systick: 1ms

超声波测距:TR(PA0),ECHO(PA1)

舵机(模拟云台):PWM1(PA2)

模拟蓝牙模块(Uart1):9600(PA9:tx1,PA10:rx1)

红外循迹模块:IR1(PA13),IR2(PA14),IR3(PA15)

按键:
KEY1(PB0)
KEY2(PB1)
KEY3(PB2)
KEY4(PB3)
KEY5(PB4)
KEY6(PB5)

电机驱动:
PWMA(PB6)
PWMB(PB7)
AIN1(PB10)
AIN2(PB11)
BIN1(PB12)
BIN2(PB13)

OLED显示屏:SCL(PB14),SDA(PB15)

串口协议
举例如发送*Mode2,即设置蓝牙模式

*ModeX X取值为0-2(0表示自动模式,1表示手动模式,2表示蓝牙模式)
自动模式:根据红外循迹和超声波测距模块决定小车的状态
手动模式:根据按键的状态来决定小车的状态
蓝牙模式:根据蓝牙指令来决定小车的状态

//需切换为蓝牙模式才能指令控制
*StatusX X取值为0-4
0:小车停止
1:小车前进
2:小车后退
3:小车左转
4:小车右转

4.2 主程序

/* Includes ------------------------------------------------------------------*/
#include "Drv_UserSystem.h"/*** @brief  main function.* @param  none* @retval none*/
int main(void)
{UserSystemInit();//用户配置初始化		while (1){					if (stSysTime.flg._10ms + TEN_MILLISECOND < Time_millis()) //10ms{stSysTime.flg._10ms = Time_millis();		Key_Scan();//按键扫描IR_Scan();//红外检测			}if (stSysTime.flg._50ms + FIFTY_MILLISECOND < Time_millis()) //50ms{stSysTime.flg._50ms = Time_millis();	Measurement_function();//测距		Motor_function();//电机函数				}if (stSysTime.flg._100ms + BEST_MILLISECOND < Time_millis()) //100ms{stSysTime.flg._100ms = Time_millis();	OLED_Handel();//OLED显示						Receive_data_Handel();//数据接收判断				IWDG_ReloadCounter();//清开门狗 }}
}

4.3 红外程序

/******************************************************************************** 函数名:IR_Scan* 描述  :红外扫描* 输入  :void* 输出  :void* 调用  :10ms* 备注  :*******************************************************************************/
void IR_Scan(void)
{	if(IR1_IN_Read())//IR1{	IR1_flag = 1;}else{IR1_flag = 0;		}if(IR2_IN_Read())//IR2{	IR2_flag = 1;}else{IR2_flag = 0;		}if(IR3_IN_Read())//IR3{	IR3_flag = 1;}else{IR3_flag = 0;		}	
}if((!IR1_flag)&&(!IR2_flag)&&(!IR3_flag))//未检测到任何黑线,小车停止
{IR_Status = 0;
}
else if((IR1_flag)&&(!IR2_flag)&&(!IR3_flag))//检测到左边,小车左转
{IR_Status = 1;moto1_dir = 1;moto2_dir = 0;					
}	
else if((IR1_flag)&&(IR2_flag)&&(!IR3_flag))//检测到左边+中间黑线,小车左转
{IR_Status = 2;moto1_dir = 1;moto2_dir = 0;					
}	
else if((!IR1_flag)&&(!IR2_flag)&&(IR3_flag))//检测到右边,小车右转
{IR_Status = 3;moto1_dir = 0;moto2_dir = 1;					
}	
else if((!IR1_flag)&&(IR2_flag)&&(IR3_flag))//检测到右边+中间黑线,小车右转
{IR_Status = 4;moto1_dir = 0;moto2_dir = 1;					
}
else if((!IR1_flag)&&(IR2_flag)&&(!IR3_flag))//检测到中边黑线,小车前进
{IR_Status = 5;moto1_dir = 1;moto2_dir = 1;					
}		
else if((IR1_flag)&&(IR2_flag)&&(IR3_flag))//检测到左边+中间+右边黑线,小车前进
{IR_Status = 6;moto1_dir = 1;moto2_dir = 1;					
}	

4.4 测距程序

    HCSR04_W_TR(1);  Delay_20us();HCSR04_W_TR(0);	while(HCSR04_R_ECHO()==0);//等待低电平结束ditance_count = 0;	while(HCSR04_R_ECHO()==1);//等待高电平结束	ditance_flag = 1;	if(ditance_count < Overtime)//小于超时时间 38ms{MM_ditance = ((ditance_count * 400)/2/10);//单位毫米}

二、总结

今天主要讲了基于STM32的循迹避障小车的Proteus仿真设计,有需要成品的或者需要定制的可以闲鱼私聊。

感谢你的观看!

在这里插入图片描述

http://www.dtcms.com/wzjs/268734.html

相关文章:

  • 天津公司网站制作公司百度统计代码安装位置
  • 建网站需要什么步骤有哪些平台可以免费发广告
  • 国际网站如何推做推广自助发外链网站
  • 外贸企业网站改版b站视频推广的方法有哪些
  • 做质量计量的网站有哪些东莞网络营销优化
  • 网站不足之处郑州网络推广培训
  • 自己设计一个网站首页百度医生在线问诊
  • wordpress漂亮手机网站模板下载微信管理系统
  • 东莞关键字排名优化seo整站优化哪家专业
  • 小兔自助建站网站设计模板网站
  • 乘客电梯做推广的网站雅虎搜索
  • 上海做网站好的公司有哪些宁德市属于哪个省
  • 接口网站开发推广拉新app哪几个靠谱
  • 做淘宝的网站有哪些内容懂得网站推广
  • 网站建设推广群全球新闻最新消息
  • 做户外的网站seo教育
  • 网站优化排名实际操作网站收录免费咨询
  • WordPress导航栏主题seo实战技巧
  • html格式的网站地图站长工具介绍
  • 河南便宜网站建设百度电脑版网址
  • 网站utf8乱码百度一下电脑版
  • 免费网站管理系统下载无锡网站关键词推广
  • 聊城市建设局网站互联网销售包括哪些
  • 公司建站多少钱北京网站seo哪家公司好
  • phpcms v9 网站名称标签网络营销试题库及答案
  • betheme做网站怎么样葫岛百度seo
  • 辛集建设局官方网站外链查询
  • google网站排名厦门网络推广外包多少钱
  • 程序开发公司名大全网络运营seo是什么
  • 网站建设实习生怎么样百度一下你就知道移动官网