STM32f4日记3之diy小车实验(小车实验一:驱动小车转圈,直走,倒走)

STM32f4日记3之diy小车实验(小车实验一:驱动小车转圈,直走,倒走)
//
板子:stm32f407zgt6正点原子迷你版
//
如果你觉得对你有帮助,请点赞同,这对我很重要,谢谢。
//
一、器材介绍
器材:小车基本结构:底盘,电机,两个轮子,一个万向轮,固定螺丝,有机玻璃等等
在这里插入图片描述
电机驱动采用L298N(TB6612FNG也可,不过本实验暂时不讲)
在这里插入图片描述
二、核心模块L298N的讲解
首先讲解L298N模块的基本使用(只讲用法,原理不讲,有兴趣的自行查找)
L298N模块是最常见的电机驱动模块,淘宝上售价10元
可将6~30v电压转换成左右两桥5v输出,若摘除跳线帽还可为单片机提供5v供电
//
产品参数:
1.驱动芯片:L298N 双 H 桥直流电机驱动芯片
2.驱动部分端子供电范围 Vs:+5V~+30V ; 如需要板内取电,则
供电范围 Vs:+6V~+30V
3.驱动部分峰值电流 Io:2A
4.逻辑部分端子供电范围 Vss:+5V~+7V(可板内取电+5V)
5.逻辑部分工作电流范围:0~36mA
6.控制信号输入电压范围(IN1 IN2 IN3 IN4):
低电平:-0.3V≤Vin≤1.5V
高电平:2.3V≤Vin≤Vss
7.使能信号输入电压范围(ENA ENB):
低电平:-0.3≤Vin≤1.5V(控制信号无效)
高电平:2.3V≤Vin≤Vss(控制信号有效)
8.最大功耗:20W(温度 T=75℃时)
9.存储温度:-25℃~+130℃
10.驱动板尺寸:55mm45mm33mm(带固定铜柱和散热片高度)
12.逻辑部分板内取电接口。

图中绿色端子为电机驱动输出端与驱动电源输入端(螺丝刀可以拧紧拧松自主调节):12V输入(实际上6v就可)端(可用4节1.5v电池组供电),GND端,5v输出端

排针处为电机控制逻辑输入端:IN4 IN3 IN2 IN1 控制电机输出端
ENA,ENB为pwm波使能端

左右两边的两个绿色端子是电机电压输出端口,左边使能左电机,右边使能右电机

三、硬件连接
下面讲述硬件连接:
1.将电池组(4节1.5v电池)的正极连L298N的12V输入
2.电池组负极连接L298N的GND
此时若L298N的小灯亮起说明连接成功
3.L298N左右两桥的共四个OUT口分别接在左右电机两端
4.L298N的GND接开发板的GND,共地,此时逻辑值1,0才生效这一步非常重要
5.将开发板的各个IO口接到L298N电机控制逻辑输入端
6.给烧录好程序的单片机上电即可使得小车开始工作

四、单片机代码编写
代码讲解:
ENA接高电平使能左电机
ENB接高电平使能右电机
IN1,IN2分别输入高电平1跟低电平0,左电机正转
IN1,IN2分别输入低电平0跟高电平1,左电机反转
IN3,IN4分别输入高电平1跟低电平0,右电机正转
IN3,IN4分别输入低电平0跟高电平1,右电机反转

代码功能:PF0,2,6,7为高电平
PF8,4为低电平

连接:
PF0接ENA
PF6,4接IN1和IN2
PF2接ENB
PF7,4接IN3和IN4

以下是car.c里面代码

void CAR_Init(void)
{
    
        	 
  GPIO_InitTypeDef  GPIO_InitStructure;

  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);

  
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_8|GPIO_Pin_2|GPIO_Pin_7|GPIO_Pin_4|GPIO_Pin_0;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
  GPIO_Init(GPIOF, &GPIO_InitStructure);
	
	GPIO_SetBits(GPIOF,GPIO_Pin_6);
GPIO_ResetBits(GPIOF,GPIO_Pin_8);
	GPIO_SetBits(GPIOF,GPIO_Pin_2);
	GPIO_SetBits(GPIOF,GPIO_Pin_0);
GPIO_ResetBits(GPIOF,GPIO_Pin_4);
	GPIO_SetBits(GPIOF,GPIO_Pin_7);
}

下面是car.h里面代码

#ifndef __CAR_H
#define __CAR_H
#include "sys.h"


void CAR_Init(void);//³õʼ»¯		 				    
#endif

以下是主函数里代码

#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "car.h"


int main(void)
{
    
     
 
	delay_init(168);		 
	CAR_Init();		      

while(1)
{
    
    
	GPIO_ResetBits(GPIOF,GPIO_Pin_8);  
	GPIO_SetBits(GPIOF,GPIO_Pin_6);   
	GPIO_SetBits(GPIOF,GPIO_Pin_2);
	GPIO_SetBits(GPIOF,GPIO_Pin_0);
GPIO_ResetBits(GPIOF,GPIO_Pin_4);
	GPIO_SetBits(GPIOF,GPIO_Pin_7);

}
}

五、其他如转圈,倒走
只要将单片机IO口接线换个位置(或者少接几跟)就能实现
希望读者自行探索

六、思考
PWM制波能调节小车速度而且还能与红外线寻迹,避障等模块一起使用,那怎么连接硬件,修改程序能达到那样的效果呢
这些内容下一期会出,喜欢的朋友可以专注一下作者

作者:shawn
可咨询QQ:965798711
2021.1.17
15:08
All rights reserved

猜你喜欢

转载自blog.csdn.net/qq_51564898/article/details/112740262
今日推荐