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

成都企业网站建设费用石家庄企业做网站

成都企业网站建设费用,石家庄企业做网站,上网登录页网址,电商网站管理系统模板下载文章目录 一、基于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/604616.html

相关文章:

  • 大连投诉网站基金网站建设需求书
  • 望牛墩网站仿做如何利用视频网站做推广
  • 与网站建设有关的课程和知识点dedecms 食品网站模板
  • 太原中小企业网站制作网页特效代码大全免费
  • 如何做内网网站全自动推广软件
  • 怎么在各大网站做产品推广好用的影视网站模板
  • 企业网站搭建方案旅游网站建设的摘要
  • 中国优秀设计网站wordpress必装的插件
  • 韩国电商网站排名wordpress更改主题的响应
  • 做网站给女朋友官网招聘平台
  • 网站平台建设需求的意见网站建设公司怎么选
  • 网站更换logo景区vi设计案例
  • 做pc端网站必知建设网站好公司简介
  • 汽车4s店网站模板wordpress 怎么学
  • 建设电影网站代码网站的404如何做
  • 河北网站建设哪家好韩家英设计公司官网
  • 企业网站托管搜索引擎优化技术都有哪些
  • 做箱包外贸哪个网站好设计公司网站建设
  • 营销型网站建设网站建设资讯易观数据app排行
  • 网站建设工作分解结构图或表网络营销就是建立企业网站
  • 国家和住房城乡建设部网站建立应用网站
  • 织梦手机网站教程wordpress死链跳转
  • 用网站ip做代理建站之星模板下载网站
  • 自己做的网站怎么接入微信wordpress登陆界面修改
  • 小米手机官方网站常州个人做网站
  • 网站开发交付做网站和做电脑软件差别大吗
  • 网站建设与网络编辑课程心得成都旅游攻略四天三夜
  • 网站优化方法云端做效果图的网站
  • wordpress人个网站上传网站标志
  • 阿里云网站建设教程邢台网站建设的地方