1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 【毕业设计】基于单片机的智能避障超声波跟随小车 - 物联网 嵌入式

【毕业设计】基于单片机的智能避障超声波跟随小车 - 物联网 嵌入式

时间:2023-05-26 16:42:35

相关推荐

【毕业设计】基于单片机的智能避障超声波跟随小车 - 物联网 嵌入式

文章目录

0 前言1 项目背景2 实现效果3 设计原理HC-SR04超声波模块5 部分代码6 最后

0 前言

🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。

为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天要分享的是

🚩基于单片机的智能避障超声波跟随小车

🥇学长这里给一个题目综合评分(每项满分5分)

难度系数:4分工作量:4分创新点:3分

🧿选题指导, 项目分享:

/dancheng-senior/project-sharing-1/blob/master/%E6%AF%95%E8%AE%BE%E6%8C%87%E5%AF%BC/README.md

1 项目背景

一些行业仍在努力掌握工业 4.0 的真正理念,即每台机器都通过互联网相互连接。这个想法意味着要使用传感器、实施控制和智能编程来确保机器或机器人有效地执行任务。

这样的应用一般是在工厂中,材料必须由铁路线控制的机器人在托盘或推车中移动。我们的项目就是受到这个想法的启发,即建立一个机器人系统。这些机器人协同工作以遵循计算好的路径并相互支持。

它还通过引入自主方面来改进概念,只允许对前面的机器人进行编程以改变目标路径并消除对跟随路径的需要。这直接导致了我们的 IR 墙壁感应和障碍物检测机器人以及视觉感应机器人的灵感涌现。

2 实现效果

墙壁感应和避障机器人:

视觉传感机器人:

3 设计原理

它的基本要点是第一辆机器人汽车使用红外传感器(安装在右侧)跟随墙壁和安装在汽车前部的超声波传感器来检测障碍物并转弯。从航位推算获得的坐标信息在第一个 MyRio 的帮助下传输到计算机上的 LabVIEW 软件,在计算机上显示坐标,并且地图绘制了汽车行驶的路径。

此外,我们可以在 LabVIEW 中动态更改多达 10 个参数(速度、增益、转弯速率等),这些参数控制转弯发生的距离、转弯时的速度、墙跟随时的速度、与被跟踪墙壁的距离,以及相关的增益和阈值参数。

允许我们在此处控制 C 代码片段中的参数,这些参数用于控制如何使用来自超声波和 IR 传感器的数据。

第二辆车使用 USB 摄像头,它有自己的 LabVIEW 程序和 MyRio 来回传输信息。在我们的例子中,USB 摄像头跟踪红色并使用其视图中“红色”的质心将转向值从 LabVIEW 程序发送回 myRio,从而发送到使用该信息进行转向的机器人汽车,方向将其与看到的颜色对齐。

第一辆汽车的后部贴有一块红色纸板,这辆车紧随其后。使用第一个 LabVIEW 代码中显示的排序系统来计算转向参考值。然后在电机转向的转向控制中实现。

HC-SR04超声波模块

简介

HC-SR04超声波模块常用于机器人避障、物体测距、液位检测、公共安防、停车场检测等场所。HC-SR04超声波模块主要是由两个通用的压电陶瓷超声传感器,并加外围信号处理电路构成的。如图:

两个压电陶瓷超声传感器,一个用于发出超声波信号,一个用于接收反射回来的超声波信号。由于发出信号和接收信号都比较微弱,所以需要通过外围信号放大器提高发出信号的功率,和将反射回来信号进行放大,以能更稳定地将信号传输给单片机。模块整体电路如图:

模块参数

(1)模块主要电气参数

使用电压:DC—5V静态电流:小于2mA电平输出:高5V电平输出:底0V感应角度:不大于15度探测距离:2cm-450cm高精度 可达0.2cm

(2)模块引脚

超声波模块有4个引脚,分别为Vcc、 Trig(控制端)、 Echo(接收端)、 GND;其中VCC、GND接上5V电源, Trig(控制端)控制发出的超声波信号,Echo(接收端)接收反射回来的超声波信号。模块如图

5 部分代码

```c/************************** .h文件******************************/#ifndef _pid_H#define _pid_H#defineMODEL_P 1#defineMODEL_PI2#defineMODEL_PID3typedef struct{u8 choose_model; //使用哪个模式调节,以方便分布调试float curr; //当前值float set;//设定值float En; //当前时刻误差值float En_1; //前一时刻误差值float En_2; //前二时刻误差值float Kp; //比例系数float T; //每隔T控制器输出一次PID运算结果u16 Tdata; //判断PID周期到没到float Ti; //积分时间常数float Td; //微分时间常数float Dout; //增量PID计算本次应该输出的增量值-本次计算的结果float OUT0; //一个维持的输出,防止失控short currpwm;//当前的pwm宽度u16 pwmcycle; //pwm周期}PID;extern u8 STATUS;extern PID pid;void PID_Init(void);//增量式PID初始化void pid_calc(void); //pid计算 并输出/************************** .c文件******************************/#endif#include "pid.h"#include "PWM_Config.h"#include "USART_Config.h" //USART设置PID pid;void PID_Init() //{pid.choose_model = MODEL_PID;pid.T=330;//采样周期,定时器使用1ms,则最小执行PID的周期为330mspid.set =280; //用户设定值pid.Kp=0.5;//比例系数pid.Ti=40;//微分系数常数pid.Td=10;//积分时间常数pid.OUT0=0;//一个维持的输出pid.pwmcycle = 330; //PWM的周期}void pid_calc() {float dk1;float dk2;float t1,t2,t3;if(pid.Tdata < (pid.T)) //最小计算周期未到{return ;}pid.Tdata = 0;pid.En=pid.set-pid.curr; //本次误差dk1=pid.En-pid.En_1; //本次偏差与上次偏差之差dk2=pid.En-2*pid.En_1+pid.En_2;t1=pid.Kp*dk1; //比例t2=(pid.Kp*pid.T)/pid.Ti;//积分t2=t2*pid.En;t3=(pid.Kp*pid.Td)/pid.T; //微分t3=t3*dk2;switch(pid.choose_model){case MODEL_P: //仅用Ppid.Dout= t1;printf("使用P运算\r\n") ;break;case MODEL_PI: //仅用PIpid.Dout= t1+t2;printf("使用PI运算\r\n") ;break;case MODEL_PID: //用PIDpid.Dout= t1+t2+t3; printf("使用PID运算\r\n") ;break;} pid.currpwm+=pid.Dout; //本次应该输出的PWMprintf("PID算得的OUT:\t%d\r\n",(int)pid.currpwm) ;if(pid.currpwm>pid.pwmcycle) //确保值在0-pid.pwmcycle之间{pid.currpwm=pid.pwmcycle;}if(pid.currpwm<0){pid.currpwm=0;}printf("实际输出使用的OUT:\t%d\r\n",(int)pid.currpwm) ;pid.En_2=pid.En_1;pid.En_1=pid.En; }

void tim4_pwm_init(u16 arr,u16 psc){RCC->APB1ENR |= 1<<2; //时钟复位TIM4TIM4->CR1=0x0080;//ARPE 使能,Timx_ARR寄存器被装入缓冲器TIM4->CR1|=0x01;//使能定时器 4RCC->APB2ENR |= 1<<3; //时钟使能GPIOB 由电路图知GPIO6和TIM4的通道一复用 GPIOB->CRL&=0X00F00000;GPIOB->CRL|=0XBB033333; //pb6 7复用功能输出 PB6输出ch1,pb7输出ch2TIM4->ARR = arr; //设置计数器自动重装载值TIM4->PSC = psc; //预分频器设计TIM4->CCMR1 =0X6060; //配置Tim4输入捕获模式TIM4->CCMR1|=1<<3; //CH1 预装载使能 TIM4->CCMR1|=1<<11; //CH 2 预装载使能TIM4->CCER |=1<<0; //OC1 输出使能 TIM4->CCER |=1<<4; //OC2 输出使能}这里用到的寄存器全部可以在stm32中文手册里查到。

6 最后

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。