简单循迹小车实验心得

您所在的位置:网站首页 循迹小车心得体会3000字 简单循迹小车实验心得

简单循迹小车实验心得

2024-07-09 11:36| 来源: 网络整理| 查看: 265

提前说说:博主是用寄存器写的驱动。

历时两周,总算把小车弄好了,总体上来说做的太慢了。自己在32的学习中还不够仔细深入,只是浅面的学习,当真正做一个项目时,暴露的问题就太多了。这次在小车的制作的过程中,遇到了各种各样的问题,软件,硬件,各式各样的问题迎面而来,真的好几次心态崩了。不过还好小车这个项目不只是我一个人在搞,组里的其他成员也在一直在考虑问题,想办法,不断地解决解决,总归小车终于做好了,下面是小车完成图:

24573567e3c6996939cca39ddd0609d6.png 2a2c1db0fb824346a523623555fe55d6.png

是有点灵魂接线(·

26425c7b67b450b42e3bddb69b70029a.png

模块清单

4a5c611034c1cd67370dda1ae54324ef.png

stm32f103C8T6开发板

HC-SR04超声波测距模块X3

TB6612FNG 电机驱动模块X2

HC-05主从一体无线蓝牙模块X1

智能小车底盘 4WD小车循迹/避障小车 底盘X1

LM2596S DC-DC降压电源模块X1

电源模块3.3V 5V 12V多路输出 电压转换模块DC-DC 12V转3.3V 5V X1

12V电池X1

杜邦线 Xn

转串口模块X1

ST-linkX1

面包板X1

26425c7b67b450b42e3bddb69b70029a.png

完成功能

4a5c611034c1cd67370dda1ae54324ef.png

超声波避障

蓝牙控制

走矩形

各个模块就不再介绍了,具体介绍大家可以自行百度或者看一下我的前几篇Arduino智能小车博客,里面有简单的介绍。

小车的所有详细代码和成品演示在我的资源中,大家可以下载提取(包括代码,引脚图,效果演示):

https://download.csdn.net/download/nidie508/11458242

那么,开始吧。

准备工作

1.首先配置好keil5 c8t6模板(温馨提示:多看看模板的核心驱动,包括sys.h delay.h usart.h等,这些核心文件一定要保证准确无误!)

2.了解开发板和确保开发板无误3.熟悉怎么用转串口模块和st-link将驱动下载到开发板上。

下图示为c8t6开发板的引脚图

18e2298d3d7b476f54401d36251f97f1.png 1.超声波避障功能

我们设计的思路如下,用三个超声波来避障。为什么用三个超声波呢?我们想的是如果用舵机的话,小车在行进过程中并不好判断,只能将车停下,舵机转动来检测哪个方向无障碍物,而用3个超声波不仅可以在行进中判断,也可以让小车没有停下的动作,显得整个过程比较流畅。这就是我们使用三个超声波的原因了。

我们使用的是定时器二的通道一,通道二,通道三来进行输入捕获的,那么,第一个问题就来了。

我们在写超声波代码时,用一个超声波先测试,发现超声波测试的并没有问题 ,串口显示的数据也并没有问题。但是,但是,在用三个超声波同时测试是,却发现数据显示的总有问题,输出的数据总是毫无规律,且数字都非常大,我们就在想是什么问题。

下面是三个超声波控制的代码:

//main.c#include "sys.h"#include "usart.h" #include "delay.h" #include "led.h" #include "dianji.h"#include "hcsr.h"u32 DIS_Init(u8 STA,u16 VAL){ u32 temp; u32 lenth; if((*STA)&0X80)//成功捕获到了一次高电平 { temp=STA&0X3F; temp*=65536; //溢出时间总和 temp+=VAL; //得到总的高电平时间 lenth=temp*0.017; //计算长度 STA=0; //开启下一次捕获 } return lenth;}extern u8 TIM2CH2_CAPTURE_STA; //输入捕获状态extern u16 TIM2CH2_CAPTURE_VAL; //输入捕获值extern u8 TIM2CH3_CAPTURE_STA; //输入捕获状态extern u16 TIM2CH3_CAPTURE_VAL; //输入捕获值extern u8 TIM2CH4_CAPTURE_STA; //输入捕获状态extern u16 TIM2CH4_CAPTURE_VAL; //输入捕获值int main(void){ u32 temp=0; u32 length1; u32 length2; u32 length3; Stm32_Clock_Init(9); //系统时钟设置 delay_init(72); //延时初始化 uart_init(72,9600); //串口初始化 //初始化与LED连接的硬件接口 TIM_PWM1_Init();//10000-1,36-1);//不分频。PWM频率=72M/(0.036M)=2Khz Echo1=0; Echo2=0; Echo3=0; HCSR04_Init(0XFFFF,72-1);//以1Mhz的频率计数 /*while(1) { }*/ while(1) { Echo3=1; delay_us(20); Echo3=0; length1=DIS_Init(&TIM2CH4_CAP


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3