标题:
stm32控制L298N直流电机源代码
[打印本页]
作者:
lijianfenglijia
时间:
2018-11-18 15:56
标题:
stm32控制L298N直流电机源代码
L298N是目前智能小车应用很广泛的价格也比较便宜的电机驱动,用来驱动直流电机。
L298N
输出A 输出B 分别接两个直流电机,电机两根线随便接,如果发现两电机方向是反着的,就调换下接线就ok了。
12V供电 这个是外部电源为驱动板供电的接口,一般驱动电压实际可以接受的输入范围是7~12V,此时可以使能板载的5V逻辑供电。当使用大于12V的驱动电压时,为了避免稳压芯片损坏,首先要拔掉板载5V输出使能的跳线帽,然后在5V输出端口外部接入5V电压对L298N内部逻辑供电。
5V供电 引出5V电压接到Arduino板,给Arduino板供电(驱动电压7~12V)连接到UNO板的5V,同时Arduino板也要引出一条GND线,连接到L298N的GND与外部电源共地。
ENA ENB通道A使能,通道B使能,当你不用PWM时不需要拔掉跳线帽,当你需要PWM时,将需要拔掉跳线帽,接到arduino上的模拟输入输出接口。
IN1 IN2 IN3 IN4逻辑输出口,其中IN1 IN2 控制一个电机的转动,IN3 IN4 控制另一个电机的转动,只要一个置高 一个置低,就可以让电机转动起来。
单片机源程序如下:
#include "motor.h" //??led???
#include "stm32f10x.h" //??STM32???
#include "stm32f10x_rcc.h" //??STM32?RCC???
#include "delay.h" //???
void Motor_12_Config(void) //???????
{
GPIO_InitTypeDef GPIO_InitStructure; //??GPIO_InitTypeDef???
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA, ENABLE); //??????
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5; //??IN??
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //??????
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //??????
GPIO_Init(GPIOA, &GPIO_InitStructure); //???GPIOA?????,??
GPIO_ResetBits(GPIOB,GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6); //??????
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6; //??IN??
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //??????
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //??????
GPIO_Init(GPIOB, &GPIO_InitStructure); //???GPIOA?????,??
}
void Motor_1_STOP(void)
{
IN1(High);
IN2(High);
}
void Motor_1_PRun(void)
{
IN1(Low);
IN2(High);
}
void Motor_1_NRun(void)
{
IN1(High);
IN2(Low);
}
void Motor_2_STOP(void)
{
IN3(High);
IN4(High);
}
void Motor_2_PRun(void)
{
IN3(Low);
IN4(High);
}
void Motor_2_NRun(void)
{
IN3(High);
IN4(Low);
}
void Motor_3_STOP(void)
{
IN5(High);
IN6(High);
}
void Motor_3_PRun(void)
{
IN5(Low);
IN6(High);
}
void Motor_3_NRun(void)
{
IN5(High);
IN6(Low);
}
void Motor_4_STOP(void)
{
IN7(High);
IN8(High);
}
void Motor_4_PRun(void)
{
IN7(Low);
IN8(High);
}
void Motor_4_NRun(void)
{
IN7(High);
IN8(Low);
}
复制代码
所有资料51hei提供下载:
stm32控制L298N源代码.rar
(277.91 KB, 下载次数: 277)
2018-11-18 17:27 上传
点击文件名下载附件
motor.h和motor.h和main.c
下载积分: 黑币 -5
作者:
lzy199973
时间:
2019-4-28 22:52
为什么有一个错误
作者:
yhy123123
时间:
2019-5-2 19:04
有没有电路图和仿真图,求回复
作者:
mustvvvics
时间:
2019-8-2 15:22
IN 怎么连接呀
作者:
707837462
时间:
2019-11-20 15:00
求motor.c 和.h文件
作者:
yuhongyu520
时间:
2020-1-19 21:21
求motor.c 和.h文件
作者:
试遣愚衷
时间:
2020-3-17 21:53
yuhongyu520 发表于 2020-1-19 21:21
求motor.c 和.h文件
上面就是。c啊
作者:
6846513513
时间:
2020-4-16 16:41
这可以直接移植到stm32f103的板子上吗?
作者:
龚俊
时间:
2020-5-9 20:27
楼主你好,我们俩思路是一致的,我的电机只有一个能转,一个转不了,后来我发现是控制IN1,IN2的GPIO口PB3,PB4不能变化,请问为什么呢
作者:
龚俊
时间:
2020-5-9 20:29
我的思路和你一致,请问楼主,为什么我同时设置GPIOB3~6作为L298N的IN1~IN4,而且我同时设置为推挽输出,为什么PB3,PB4不能变化呢
作者:
han由心生
时间:
2020-10-7 17:23
楼主有没有实物连线图啊,科技小白····
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1