stm32寻迹小车,占空比调速,0基础学习

stm32寻迹小车,占空比调速

所用器件

1.stm32F103核心板
2.LN298
3.12V电源
4.小车底座(电机随便,普通减速电机也可)

视频演示

<iframe allowfullscreen="true" data-mediaembed="bilibili" id="aX0bLr1X-1633596851034" src="https://player.bilibili.com/player.html?aid=419105051"></iframe>

stm32寻迹小车(占空比)

说明

经过测试:
1.可以进行90°直角转弯
2.直行前进偏差几乎为0
3."S"转弯不会偏离轨道
4.最大速度目前还没有具体测试,有兴趣的可以进行测试一下
5.正常上下坡没有任何问题

补充

寻迹采用的是八路的传感器,但是只用了六个,如果说大家想用两个单路的传感器做这个也行,但是尽量把速度降下来,要不然转弯的时候容易跑偏,个人觉得用6个比较稳定。

代码(部分)

1.主函数

// An highlighted block
/*本程序用keil4编写,您如果用keil5打开会有不兼性,有可能会出现错误,可以下载这个兼容包解决!链接:https://www2.keil.com/mdk5/legacy/       */

/*********接线定义**********

八路传感器:
1号——PB13
2号——PB3
3号——PB4
6号——PB5
7号——PB6
8号——PB15

中间左侧传感器:
接开发板上的PB11

LN298接线定义:
IN1——PA6
IN1——PA7
IN1——PB0
IN1——PB1

***************************/

#include "stm32f10x.h"
#include "led.h"
#include "moter.h"
#include "xunji.h"  
#include "delay.h"
#include "sys.h"
#include "bmp.h"
#include "cs.h"


//循迹检测到黑线后返回高电平

extern void xunji(void);   //在这里是因为有警告,所以加上xunji的定义,避免警告


 int main(void)
{	
	
	SystemInit();	// 配置系统时钟为72M 
  delay_init();    //延时初始化		
	xunji_config();   //循迹初始化
	TIM3_PWM_Init();	//电机pwm   TIM3	
	

while(1)
{	
	xunji(); //具体的逻辑在xunji.c里面,这里只是调用一下
	
}		
}

2.motor.c


#include "xunji.h"
#include "moter.h"
#include "delay.h"


void xunji_config(void)	
{
  GPIO_InitTypeDef GPIO_InitStructure;	
  RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE); // 使能PC端口时钟
	
  GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_3 | GPIO_Pin_4  | GPIO_Pin_8 | GPIO_Pin_9| GPIO_Pin_13| GPIO_Pin_15| GPIO_Pin_11;	//选择对应的引脚
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;//配置GPIO模式,输入上拉       
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOB, &GPIO_InitStructure);  //初始化PC端口
}


void Read_xunji_Date(void)
{
 xunji_1;
 xunji_2;
 xunji_3;
 xunji_4;
 xunji_5;
 xunji_6;
 xunji_7;
}

程序下载

1.下载本程序
2.https://download.csdn.net/download/weixin_52553823/20298261?spm=1001.2014.3001.5501

上一篇:2021/10/14 智能家具 嵌入式实训 第四天 RGB彩灯(3)


下一篇:点亮stm32开发板的led灯