学了stm32后,自己动手完成一辆智能小车的制作,主要内容有5步进电机驱动、路灰度循迹、舵机控制等。

目录

所用到的硬件有:

首先是如何驱动步进电机

步进电机驱动方法

代码编写:

电机驱动板的接线

​编辑

使能驱动

5路灰度传感器工作原理

循迹逻辑

代码编写:

总结



所用到的硬件有:

  1. stm32f103c8t6单片机
  2. 5路数字灰度传感器模块
  3. 42步进电机
  4. LV8731V步进电机驱动模块

首先是如何驱动步进电机

步进电机驱动方法

最​基本的方法有3种,单4拍法、双4拍法、单双8拍法。但我们在这里不细讲,只讲我们怎么做能让步进电机动起来。

要想让步进电机动起来,关键是要给它脉冲信号。我们可以通过PWM来输出脉冲信号,当然我们可以用更简单的for循环+GPIO高低电平+延时实现脉冲信号的输出以驱动步进电机。

我们现在采用的思路是更简单的后者。

代码编写:

void Car_Go()
{GPIO_WriteBit(MOTOR_GPIO_PORT, DA, Bit_RESET);    //DA表示电机A的方向引脚,使用时,我这边是置低电平为前进方向GPIO_WriteBit(MOTOR_GPIO_PORT, DB, Bit_SET);     //大家可根据自己的实际情况调整电机转动方向GPIO_WriteBit(MOTOR_GPIO_PORT, DC, Bit_SET);      GPIO_WriteBit(MOTOR_GPIO_PORT, DD, Bit_RESET);    for (int a=0;a<500;a++){GPIO_WriteBit(MOTOR_GPIO_PORT, VA, Bit_SET);    //VA表示电机A的速度引脚GPIO_WriteBit(MOTOR_GPIO_PORT, VB, Bit_SET);      //需要置高电平一段时间再置为低电平一段时间以输出脉冲信号GPIO_WriteBit(MOTOR_GPIO_PORT, VC, Bit_SET);     GPIO_WriteBit(MOTOR_GPIO_PORT, VD, Bit_SET);delay(2);                                         //延时2msGPIO_WriteBit(MOTOR_GPIO_PORT, VA, Bit_RESET);GPIO_WriteBit(MOTOR_GPIO_PORT, VB, Bit_RESET);GPIO_WriteBit(MOTOR_GPIO_PORT, VC, Bit_RESET);GPIO_WriteBit(MOTOR_GPIO_PORT, VD, Bit_RESET);delay(2);                                        //延时2ms}
}

延时函数可这样写:

void delay(int n)
{volatile int i;while (n--){i = 12000;while (i--);}
}

电机驱动板的接线

LV8731V驱动接线相对来说,比较简单,直接按照对应的接线端口插上去即可。如图:

使能驱动

现在要想让电机动起来还需要使能我们的LV8731V驱动板,也就要给驱动板上的ST引脚置高电平。

5路灰度传感器工作原理

其实很简单 未碰到黑线(红灯亮):对应引脚状态 = 0
                           碰到黑线(红灯灭):对应引脚状态 = 1

循迹逻辑

当小车向偏右离(黑线)时,左侧循迹红灯灭,引脚状态为1,表示车辆向右偏离黑线,车辆需要向左行驶以调整车辆沿着黑线行驶。

代码编写:

void Find(void)
{if(L2==0&&L1==0&&M!=0&&R1==0&&R2==0&&S==0)  //左右都没有检测到黑线{Car_Go();}else if(L2!=0&&L1==0&&R1==0&&R2==0)  //左边检测到黑线{Car_Turn_Left();}else if(L2==0&&L1!=0&&R1==0&&R2==0)  //左边检测到黑线{Car_Turn_Left();}else if(L2==0&&L1==0&&R1!=0&&R2==0)  //右边检测到黑线{Car_Turn_Right();}else if(L2==0&&L1==0&&R1==0&&R2!=0)  //右边检测到黑线{Car_Turn_Right();}else if(L2!=0&&L1!=0&&R1!=0&&R2!=0)  {Car_Go();}else if(L2==0&&L1==0&&M==0&&R1==0&&R2==0)  {}else{Car_Go();}
}

舵机控制方面呢,我们下次再讲^-^

总结

本次项目主要运用到的知识:GPIO的使用,delay延时函数的编写,利用for循环驱动步进电机,读取IO口引脚状态,if分支语句判断循迹状态。

最后,感谢大家的阅读,祝大家学习愉快。

如有错误,敬请斧正~

编写不易,多多支持~

基于stm32f103c8t6的智能小车相关推荐

  1. 智能循迹避障小车C语言程序编写思路,基于单片机的智能小车红外避障循迹系统设计与制作...

    余秀玲 余秀娟 摘 要:随着科技的高速发展,人们对生活质量的要求越来越高,无人驾驶汽车已经被广为研发和试用,由此智能小车的快速发展也是在情理之中.通过对基于单片机的智能小车的硬件及软件设计分析,实现红 ...

  2. 基于ros_arduino_bridge的智能小车----下位机篇

    基于ros_arduino_bridge的智能小车----下位机篇 参考文章: 基于ros_arduino_bridge的智能小车----上位机篇 基于ros_arduino_bridge的智能小车- ...

  3. 基于STM32的智能小车方案设计

    基于STM32的智能小车设计 前言 一.什么是STM32智能小车? 二.模块汇总 1.主控板(STM32F103ZE) 2.底板 3.电机 4.避障模块(超声波传感器,红外传感器) 5.寻迹模块(3路 ...

  4. 基于linux的智能小车_基于ARM10与LINUX智能小车系统设计.doc

    基于ARM10与LINUX智能小车系统设计 基于ARM的智能小车系统的设计 摘 要 基于ARM的嵌入式系统其性能优良,移植性好,已广泛应用在各个行业,因此将ARM微处理器应用于智能小车的控制系统是一种 ...

  5. 毕业设计 - 题目_ 基于单片机的智能小车 - 嵌入式 物联网 本科毕设

    文章目录 1 简介 2 绪论 2.1 课题背景与目的 3 系统设计 3.1 设计方案 3.1.1 小车遥控部分 方案一 方案二 3.1.2 小车驱动部分 方案一 方案二 3.2 系统架构 3.3 主要 ...

  6. 基于STM32F103c8t6的智能垃圾桶项目

    基于STM32F103c8t6的智能垃圾桶项目 写在前头 软件配置 硬件部分 1. 主控芯片 2. HC-SR04超声波模块 模块简介 模块参数 工作原理 GPIO配置 3. SG90舵机 模块简介 ...

  7. 基于51单片机智能小车循迹功能的实现

    基于51单片机智能小车循迹功能的实现 目录 基于51单片机智能小车循迹功能的实现 一.思路(仅供参考) 二.部分硬件模块介绍 1.L298n电机驱动模块 2.两路红外循迹模块 三.实现 1.代码 2. ...

  8. 基于STM32的智能小车(一)

    ## 基于STM32的智能小车 在假期自学了STM32,一直想做一个智能小车,刚好这次有时间就在家自己制作了这个基于STM32的智能小车,小车基本功能包括循迹.壁障及手机蓝牙控制,本人是第一次制作小车 ...

  9. 基于STM32的智能小车--舵机云台设计

    基于STM32的智能小车 第一章 基于STM32的智能小车方案设计 第二章 基于STM32的智能小车–电机驱动设计 第三章 基于STM32的智能小车–循迹设计 第四章 基于STM32的智能小车–避障设 ...

最新文章

  1. vue ts 设置tslint提示_Typescript 在 Vue 中的实践(包含2.x、3.x)
  2. [再寄小读者之数学篇](2014-11-14 矩阵的应用: 多项式)
  3. 借助Apache Hadoop大规模扩展Apache Solr实时实时索引
  4. java object 源码_java中Object类 源代码详解
  5. [130_存储业务]001_富士通存储系统Eternus_高级拷贝(Advanced Copy)特性介绍
  6. 【Spring Cloud】网关 - Zuul(1.x)
  7. Webkit之Frame
  8. node 创建静态web服务器(上)
  9. android 可拖拽View的简单实现
  10. 《东周列国志》第九回 齐侯送文姜婚鲁 祝聃射周王中肩
  11. Markdown 图片排版
  12. 基于C++和QT实现的简单数独游戏软件
  13. jmeter监听器之用表格察看结果(View Results in Table)
  14. 教妹学Java(一):什么是Java?
  15. 从游戏中学习产品设计1:充值篇
  16. 神一样的存在,河北衡水中学2019高考再次碾压所有中学
  17. Socket 【网络通信 - Socket】
  18. Java项目:JSP在线水果销售商城
  19. jquery 实现 图片放大
  20. 前端网页预览word,pdf,excel等各类文档

热门文章

  1. matplotlib绘制双柱状图
  2. win10环境变量设置_最新 JDK 14 WIN10版的安装及环境变量配置
  3. jquery的each循环return语法有点坑
  4. 《Flutter 控件大全》第六十八个:Positioned
  5. VB为报表盖电子图章
  6. matlab生成mif图像文件,matlab 生成mif文件导入quartus rom中
  7. 模型加速之INT8量化原理及实践(基于TensorRT)
  8. Object转Map和Map转Object
  9. 暑期学习日记35:图片缩放动画
  10. Elmo驱动器的各项电流说明及查看方法