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