stm32篇--小车循迹

STM32 学习笔记2-智能小车循迹实验 特斯拉镇楼 1、什么是小车循迹? 将小车放在黑色跑道上面,小车沿着黑色跑道运动→ 循迹 黑色跑道 2、小车循迹基本原理 原理: 介绍原理之前,突然记起来,在电子爱好者上 做过 一个循迹小车的项目,那个介绍的相相当详细,和这个基本原理是一样的。 光敏电阻:光照作用下, 光敏电阻器的阻值下降。光敏接触(跑道)黑色线时,电阻上升 LM393 比较两路光敏电阻 R13 R14 的大小,不平衡时,控制压线侧电机停止,第二个电机工作,从而修正方向,使黑色跑道线保持在两轮之间... 阅读详情

小车的循迹算法
循迹小车使用红外对射寻黑线,根据轨道的不同,我使用了两种不同算法:
(1)第一种是在轨道外有影响的,比如轨道外有黑色,车出去一点就会碰到黑色,那就是检测到歪了之后除非检测它
回来了,否则一直拐弯:
//自己寻道
void Self_Tracting(void)
{
        while(1)
 {
          test_sensor();
  motor_move_speed(paras.speed);
              if(GPIO_ReadInputDataBit(GPIOE , GPIO_Pin_3))//传感器5
             {
            GPIO_ResetBits(GPIOF,GPIO_Pin_11); //点亮LED5           
            //左边界,减速
      motor_move_steer(paras.right_angle);//车右
      
            while(!GPIO_ReadInputDataBit(GPIOE , GPIO_Pin_4));
     GPIO_ResetBits(GPIOB,GPIO_Pin_0); //熄灭LED3
     motor_move_steer(150);//车直行,140 for20120417,before is 150   
        }
        else
            GPIO_SetBits(GPIOF,GPIO_Pin_11); //熄灭LED5

        if(GPIO_ReadInputDataBit(GPIOE , GPIO_Pin_2)) //传感器4
        {
            GPIO_ResetBits(GPIOB,GPIO_Pin_1); //点亮LED4           
      motor_move_steer(paras.right_angle);//车右
     
      while(!GPIO_ReadInputDataBit(GPIOE , GPIO_Pin_4));
      motor_move_steer(150);//车直行,140 for20120417,before is 150   
        }else
            GPIO_SetBits(GPIOB,GPIO_Pin_1); //熄灭LED4
     
        if(GPIO_ReadInputDataBit(GPIOE , GPIO_Pin_4))//传感器3
        {
            GPIO_ResetBits(GPIOB,GPIO_Pin_0); //点亮LED3
             motor_move_steer(150);//车直行,140 for20120417,before is 150
        }else
            GPIO_SetBits(GPIOB,GPIO_Pin_0); //熄灭LED3
     
        if(GPIO_ReadInputDataBit(GPIOE , GPIO_Pin_5))//传感器2
        {
            GPIO_ResetBits(GPIOC,GPIO_Pin_5); //点亮LED2          
       motor_move_steer(paras.left_angle);//车左转
      
       while(!GPIO_ReadInputDataBit(GPIOE , GPIO_Pin_4));
      motor_move_steer(150);//车直行,140 for20120417,before is 150    
        }else
            GPIO_SetBits(GPIOC,GPIO_Pin_5); //熄灭LED2

        if(GPIO_ReadInputDataBit(GPIOF , GPIO_Pin_6))//传感器1
        {
            GPIO_ResetBits(GPIOC,GPIO_Pin_4); //点亮LED1
              //左边界,减速
    motor_move_steer(paras.left_angle);//车左转
     
      while(!GPIO_ReadInputDataBit(GPIOE , GPIO_Pin_4)); 
      motor_move_steer(150);//车直行,140 for20120417,before is 150
        }else
            GPIO_SetBits(GPIOC,GPIO_Pin_4); //熄灭LED1
         
  if(GPIO_ReadInputDataBit(GPIOB , GPIO_Pin_15))
   break;  
 }
}
(2)第二种是为适应车道宽且车道外没有黑色斑迹的,可能同时亮两个灯但是不会是检测出错
//自己寻道
void Self_Tracting(void)
{
 unsigned char left_angle_1,left_angle_2;
 unsigned char right_angle_1,right_angle_2;
 unsigned char tpw;

 left_angle_2 = (paras.left_angle + paras.angle)/2;
 left_angle_1 = (paras.left_angle + left_angle_2)/2;
 right_angle_2 = (paras.right_angle + paras.angle)/2;
 right_angle_1 = (paras.right_angle + right_angle_2)/2;
 motor_move_speed(paras.speed);
 
 while(1)
 {
  uart_print("The car begin1!!",16);
  test_sensor();
        tpw = 0x00;
  
  /* 传感器检测 */
  if(GPIO_ReadInputDataBit(GPIOE, GPIO_Pin_3))
        {
   tpw |= 0x01;
   GPIO_ResetBits(GPIOF,GPIO_Pin_11); //点亮LED5 
  }
  else
   GPIO_SetBits(GPIOF,GPIO_Pin_11);  //熄灭LED5
   
  if(GPIO_ReadInputDataBit(GPIOE , GPIO_Pin_2))
  {
   tpw |= 0x02;
   GPIO_ResetBits(GPIOB,GPIO_Pin_1);  //点亮LED4 
  }
  else
   GPIO_SetBits(GPIOB,GPIO_Pin_1);  //熄灭LED4
  
  if(GPIO_ReadInputDataBit(GPIOE , GPIO_Pin_4))
  {
   tpw |= 0x04;
   GPIO_ResetBits(GPIOB,GPIO_Pin_0);  //点亮LED3 
  }
  else
   GPIO_SetBits(GPIOB,GPIO_Pin_0);  //熄灭LED3
  
  if(GPIO_ReadInputDataBit(GPIOE , GPIO_Pin_5))
  {
   tpw |= 0x08;
   GPIO_ResetBits(GPIOC,GPIO_Pin_5);  //点亮LED2 
  }
  else
   GPIO_SetBits(GPIOC,GPIO_Pin_5);  //熄灭LED2
  
  if(GPIO_ReadInputDataBit(GPIOF , GPIO_Pin_6))
  {
   tpw |= 0x10;
   GPIO_ResetBits(GPIOC,GPIO_Pin_4);  //点亮LED1 
  }
  else
   GPIO_SetBits(GPIOC,GPIO_Pin_4);  //熄灭LED1
  
  /* 动作执行 */
 switch(tpw)
  {
   case 0x07:
    motor_move_steer(paras.right_angle+2); //右转弯
    motor_move_speed(paras.speed+20);
    break;
   case 0x01: case 0x03:
    motor_move_steer(paras.right_angle+2); //右转弯
    motor_move_speed(paras.speed+15);
    break;
   case 0x02:
    motor_move_steer(right_angle_2);  //微量右转弯
    motor_move_speed(paras.speed+5);
    break;
   case 0x06:
    motor_move_steer(right_angle_1);  //微量右转弯
    motor_move_speed(paras.speed);
    break;
   case 0x04:
    motor_move_steer(paras.angle);   //车直行
    motor_move_speed(paras.speed-5);
    break;
   case 0x0c:
    motor_move_steer(left_angle_1);   //微量左转弯
    motor_move_speed(paras.speed);
    break;
   case 0x08:
    motor_move_steer(left_angle_2);   //微量左转弯
    motor_move_speed(paras.speed+5);
    break;
   case 0x10: case 0x18:
    motor_move_steer(paras.left_angle-2);  //左转弯
    motor_move_speed(paras.speed+15);
    break;
   case 0x1c:
    motor_move_steer(paras.left_angle-2);  //左转弯
    motor_move_speed(paras.speed+20);
    break;
   default:
    break;
  }
  if(GPIO_ReadInputDataBit(GPIOB , GPIO_Pin_15))
   break;
 }
(3)还有一个算法,没太研就其中的PID算法,听同事说就是随便给两个量
带进去公式之后就可以缓慢的更新数值知道和预定的数值相等.

手把手教你用Cubemx配置一辆两路循迹小车-1.基本配置 手把手教你用Cubemx配置一辆两路循迹小车-1.基本配置 大一用库函数做了一循迹车,经过一年的学习,想用Cubemx,即HAL库做一个教程。如果有什么不对的,还请指正,谢谢。 这个教程大概分三四期。 第一期:基本配置 第二期:GPIO和PWM的配置 第三期和第四期:代码编写 首先做一辆循迹小车需要的硬件有:stm32f103c8t6 循迹模块 l298n电机驱动 小车车体 电池 若干杜邦线,当然还有电机 主控 stm32f103c8t6最小系统板 电机驱动 L298N 下载 阅读详情

相关推荐

基于STM32的智能循迹小车设计(基础版)

基于STM32的智能循迹小车设计 硬件准备 1、小车底盘+四直流电机(带轮) 2、STM32F103C8T6核心板 3、12V 8700mAh锂电池(可以用几节18650锂电池) 4、循迹模块 选择的是TCRT500L,五路集成在一起,集成度比较高,但是可能不如五个单独的循迹模块好用 5、L298N电机驱动模块 四驱车为啥用L298N电机驱动模块? 可以把左边的两个电机并联,用输出A控制。把右边的两个电机并联,用输出B控制。 12V供电接电源正极,供电GND接电源负极和核心板GND,5V供电接核心

Rendezvous1的博客 3万+

c32循迹小车c语言程序,stm32篇--小车循迹

小车的循迹算法循迹小车使用红外对射寻黑线,根据轨道的不同,我使用了两种不同算法:(1)第一种是在轨道外有影响的,比如轨道外有黑色,车出去一点就会碰到黑色,那就是检测到歪了之后除非检测它回来了,否则一直拐弯://自己寻道void Self_Tracting(void){while(1){test_sensor();motor_move_speed(paras.speed);if(GPIO_ReadI...

weixin_29468871的博客 1621

基于STM32和PID算法实现小车循迹

通过这次功能的实现,我清楚的了解循迹传感器、驱动电机、PID算法控制的原理和使用,还有实现一个功能需要不断的调试,测试,同时也了解自己的不足,还是有很大的提升空间,加油,共勉。

2301_79565212的博客 1万+

STM32循迹小车系列教程(三)—— 使用灰度传感器循迹

灰度传感器如图1所示灰度传感器 使用一对抗干扰较强的光电传感器,其中发射管的光源采用高亮白色聚光 LED,发射管端发出的光线通过不同环境背景的反射之后,最终由光敏接收管来接收,光敏接收管的阻抗随反射光线的强弱变化而变化(反射光线越强,阻值越小),最后通过分压和运放比较电路实现数字/模拟信号的双输出。灰度传感器模块对白光反射强弱不同背景环境有非常好的识别效果,背景差异越大,分辨效果越好。灰度传感器相比普通红外传感器有着更高的抗干扰能力。

本博客专注嵌入式系统开发,涵盖 STM32、ESP32、单片机与物联网应用,分享实战经验与项目案例,为电子与智能控制爱好者提供参考。 10万+

基于stm32开发的红外循迹小车

2.L298N电机驱动模块:分别是5V,12V,GND,可以通过外加电源给驱动模块供电,IN1,IN2,IN3,IN4,EN1,EN2,通过给IN口不同的电平,可以达到控制电机正反转,EN口为使能口,可以通过给EN口不同的PWM波,来达到控制小车速度,1.红外循迹模块:检测黑线的原理是向外发射红外线,当没有遇到黑线的时候,返回回来,之后返回高电平,当遇到黑线的时候,红外被吸收,返回高电平,读取相应IO口的电平就可以知道小车此时的大致位置;模块有四个输入接口,分别连接四个TT马达,驱动小车运动;

2301_81374681的博客 1万+

基于PID算法的STM32爬坡循迹智能小车的设计与实现

目录 摘要 0 引言 1 需求分析 2 系统结构 3 硬件电路设计 3.1 整体硬件框架 3.2 主控制电路 3.3 电源模块 3.4 红外循迹 3.5 电机驱动 3.6 无线蓝牙控制 4 软件设计 4.1 循迹程序设计 4.2 PID算法调速设计 5 系统搭建与调试 6 结语 参考文献 摘要:随着现代物联网行业的发展,越来越多的智能产品已经出现在人们的生活中。智能型产品在指定的环境中,不用人为控制,就可以按照预先设计的模式,完成指定的动作,可广泛运用...

qq_54706971的博客 2万+

基于STM32的智能循迹避障小车

为了在日常实验教学中融入智能车的元素,本设计采用多传感器协同策略,开发一款基于STM32智能循迹避障小车。研究内容主要包括系统的整体方案设计、系统硬件设计与选择、多传感器协同策略、软件设计等,并在此基础上进行实际H型轨迹循迹试验,验证该方案的可靠性及该系统的功能的完整性。

m0_55933541的博客 4万+

基于STM32的智能循迹小车设计

基于STM32的智能循迹小车设计(基础版) 想看IF-WHILE代码块直接拉到底,在最下面 硬件准备 1、小车底盘+四直流电机(带轮) 2、STM32F103C8T6核心板 3、12V 8700mAh锂电池(可以用几节18650锂电池) 4、循迹模块 选择的是TCRT500L,五路集成在一起,集成度比较高,但是可能不如五个单独的循迹模块好用 5、L298N电机驱动模块 四驱车为啥用L298N电机驱动模块? 可以把左边的两个电机并联,用输出A控制。把右边的两个电机并联,用输出B控制。 12V供电接

Rendezvous1的博客 1万+

硬件篇:教你做STM32蓝牙+循迹+避障+pwm调速小车

前言 前面我学完STM32后做了一个蓝牙小车,完成了小车的基本前进后退以及转向,发布的博客也帮助了不少小伙伴,没看过的去看看吧~ 硬件篇:教你做STM32蓝牙小车(基于STM32F103ZET6)最近又心血来潮,打算给小车升升级,经过一个星期的研究,现在实现了多功能小车。 设计思路 材料准备 以下材料为新增材料,全部材料参照上一篇博客的介绍!! TCRT5000循迹模块 HC-SR04超声波模块 SG90舵机(180度) 超声波支架 程序设计 pwm调速 这里我们直接用上一次用于驱动

小柯的的博客 1万+

第13章-循迹功能 循迹小车讲解 原理分析 STM32智能小车循迹教程 红外对管使用 PID循迹算法分析

先不列举了,大家直接到专栏看和视频里面看把。V3.3.0-STM32智能小车视频: https://www.bilibili.com/video/BV16x4y1M7EN/?V3:HAL库开发、功能:PID速度控制、PID循迹、PID跟随、遥控、避障、PID角度控制、视觉控制、电磁循迹、RTOS等功能。STM32智能小车V3-STM32入门教程-openmv与STM32循迹小车-stm32f103c8t6-电赛 嵌入式学习 PID控制算法 编码器电机 跟随。

2501_91769822的博客 2885

STM32智能小车循迹教程

文章目录前言一、红外循迹模块工作原理及接线图红外循迹模块工作原理红外循迹模块和STM32的接线图二、cubeMX配置三、代码解析总结 前言 本篇文章将带大家学习STM32智能小车的循迹功能。 一、红外循迹模块工作原理及接线图 红外循迹模块工作原理 电路工作描述 以其中一路为例 TCRT5000传感器的红外发射二极管不断发射红外线,当发射的红外线没有被反射回来或者反射回的强度不够大时,红外接收管一直处于关闭状态,此时比较器LM393的2脚的电压低于3脚的电压,输出OUT1为低电平,LED1为点亮状态;当红

m0_49476241的博客 3万+

STM32蓝牙控制循迹避障小车源代码——5.最终程序

STM32蓝牙控制循迹避障小车源代码--最终程序

www_haha__的博客 3941

项目实战第九篇:STM32智能小车红外循迹功能开发(寻迹小车开发篇)

文章目录 前门几章已经详细的介绍了硬件的基本知识,那么接下来就开始进入正题,进行项目的软件开发部分。前面也说过,首先是单独的功能调试,然后再进行综合调试

nandycooh 4369

串级pid循迹小车

串级pid循迹小车

weixin_64248798的博客 1196

基于stm32f103c8t6的五路循迹小车.zip

基于stm32f103c8t6的五路循迹小车.zip

手把手式介绍 ADNI 影像数据下载

1.搜索 1.1登录 打开ADNI的官网:http://adni.loni.usc.edu/,进入下面的界面。 点击 DATA&SMPLES 下的 ACCESS DATA AND SAMPLES,如下图。 页面跳转以后点击中间的“LOGIN”,这时会跳出一个新的界面,然后在右上角输入自己的帐号、密码即可。如果没有权限可以跳转到第2部分看看如何申请权限。 登录以后选择DOWNLOAD下的 Image Collections就是搜索下载影像数据,其他还有一些学习测试数据和遗传数据。 1.2 sea

永远想不起来更新的博客 1万+

stm32循迹小车

网上的大部分stm32循迹小车都是VIP内容,也没有停车这个功能,于是我写了一个完整含有代码的一篇循迹小车,希望帮助大家更好的了解循迹小车。

2302_81380153的博客 1万+

URDF模型转换实战:解决SolidWorks到Gazebo的五大常见问题

本文详细解析了从SolidWorks导出URDF模型到Gazebo仿真过程中常见的五大问题及解决方案,包括插件安装、坐标系建立、Link与Joint配置等关键步骤。通过实战经验分享,帮助机器人仿真工程师高效完成模型转换,确保Gazebo仿真准确性。

weixin_29052717的博客 442

基于STM32开发板的循迹小车设计

智能寻迹基于自动引导机器人系统,可以实现小车自动识别路线。智能寻迹小车运用传感器、单片机、电机驱动及自动控制等技术实现,管理时自动寻迹导航。该技术已经应用于无人驾驶机动车、无人工厂、仓库、服务机器人等多种领域。本设计的完整的系统主要包括STM32单片机最小系统、L298n电机驱动、三路红外循迹模块。本设计软件系统采用模块设计思想,采用C语言作为程序设计语言,通过KEI MDK完成程序设计,使用仿真器下载软件完成程序的烧录和在线调试。

m0_62621938的博客 2万+

UWB灵犀遥控器方案介绍

UWB灵犀指向遥控器的技术原理和方案介绍

xiongdauwb的博客 3898

CloudCompare

分割点云:选中要分割的点云文件–>Segment–>左键框出要分割的点或者区域–>Segment Out–>Comfirm Segmentation,原点云文件被分割成两个结构,选中分割出来的remaining,右键delete即可。qSRA (Surface of Revolution Analysis):计算一个点云和一个假定旋转平面之间的距离(旋转平面用2D轮廓定义),距离计算好后,用户可以创建一个偏差的2D图或者圆柱或圆锥的投影。②表现为同样的对象或者至少有同样的形状。

xiaoyaolangwj的博客 4709
上一篇: stm32篇--内置flash
下一篇: stm32篇--中断
快乐的小鸟
博客等级 码龄14年 25粉丝 40原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值