L298N双路电机驱动模块使用指南

这篇具有很好参考价值的文章主要介绍了L298N双路电机驱动模块使用指南。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

哦吼,这个模块上手很快!!!

L298N,是一款接受高电压的电机驱动器,直流电机和步进电机都可以驱动。一片驱动芯片可同时控制两个直流减速电机做不同动作,在6V到46V的电压范围内,提供2安培的电流,并且具有过热自断和反馈检测功能,可对电机进行直接控制,通过主控芯片的I/O输入对其控制电平进行设定,就可为电机进行正转反转驱动,操作简单、稳定性好,可以满足直流电机的大电流驱动条件。

L298N双路电机驱动模块使用指南

L298N 电机驱动板引脚 

L298N双路电机驱动模块使用指南

L298N双路电机驱动模块使用指南

L298N双路电机驱动模块使用指南

代码如下:(无脑转动

#include "stm32f10x.h"


uint16_t NUM;


int main (void)
{
		RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOC, ENABLE);
	
	 GPIO_InitTypeDef 	 GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	
	GPIO_Init(GPIOC,&GPIO_InitStructure);
	
	GPIO_SetBits(GPIOC,GPIO_Pin_6);
	GPIO_SetBits(GPIOC,GPIO_Pin_7);
	
	while(1)
	{
		GPIO_ResetBits(GPIOC,GPIO_Pin_6);

	}
	
}

PWM调速实现
这里就不再是把ENA、ENB再接上高电平了,这个时候就要把跳线帽拔掉了,在通过定时器来控制实现PWM调速,具体先上代码:

#include "timer.h"
 
 
#define Ina PGout(2)
#define Inb PGout(3)
#define Inc PGout(4)
#define Ind PGout(5)
 
void TIM3_PWM_Init(u16 arr,u16 psc)
{  
    GPIO_InitTypeDef GPIO_InitStructure;
    TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
    TIM_OCInitTypeDef  TIM_OCInitStructure;
 
    
 
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);    
     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOG,ENABLE); 
    
 
 
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7; //
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  //复用推挽输出
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOA, &GPIO_InitStructure);//TIM3通道2
    
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6; //
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  //
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOA, &GPIO_InitStructure);//TIM3通道1
    
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;            
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;         
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;        
    GPIO_Init(GPIOG, &GPIO_InitStructure);                     
    GPIO_ResetBits(GPIOG,GPIO_Pin_2);                    
    
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                 
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;         
    GPIO_Init(GPIOG, &GPIO_InitStructure);                
    GPIO_ResetBits(GPIOG,GPIO_Pin_3);                        
    
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;                 
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;         
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;         
    GPIO_Init(GPIOG, &GPIO_InitStructure);                     
    GPIO_ResetBits(GPIOG,GPIO_Pin_4);                        
    
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;                
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;         
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;         
    GPIO_Init(GPIOG, &GPIO_InitStructure);                     
    GPIO_ResetBits(GPIOG,GPIO_Pin_5);                        
 
    TIM_TimeBaseStructure.TIM_Period = arr; 
    TIM_TimeBaseStructure.TIM_Prescaler =psc; 
    TIM_TimeBaseStructure.TIM_ClockDivision = 0; 
    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  
    TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
    
    
    TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; 
     TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; 
    TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; 
    TIM_OC2Init(TIM3, &TIM_OCInitStructure);  
 
    TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; 
     TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; 
    TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; 
    TIM_OC1Init(TIM3, &TIM_OCInitStructure);  
 
 
    TIM_Cmd(TIM3, ENABLE);  
 
}

上面这段代码主要是定时器TIM3的初始化以及四个输入端的初始化,至于那个预分配系数psc和自动重装值arr可以自己设定,这里我设定的是arr=450,psc=7199

然后把PA6,PA7分别连接到ENA和ENB上,设置好arr和psc,最后通过TIM_SetComparex函数设置占空比即可实现PWM调速功能

整体关键代码
剩下一下重要代码如下:

void qianjin(void)
{
    TIM_SetCompare2(TIM3,100);//设置通道2的占空比实现PWM调速,这里是100,在0~450间,越小速度越快
    TIM_SetCompare1(TIM3,100);//设置通道1的占空比实现PWM调速
    Ina=1;
    Inb=0;
    Inc=1;
    Ind=0;
}
void houtui(void)
{
    TIM_SetCompare2(TIM3,100);
    TIM_SetCompare1(TIM3,100);
    Ina=0;
    Inb=1;
    Inc=0;
    Ind=1;
}
void zuozhuan(void)
{
    TIM_SetCompare2(TIM3,100);
    TIM_SetCompare1(TIM3,100);
    Ina=0;
    Inb=0;
    Inc=1;
    Ind=0;
}
void youzhuan(void)
{
    TIM_SetCompare2(TIM3,100);
    TIM_SetCompare1(TIM3,100);
    Ina=1;
    Inb=0;
    Inc=0;
    Ind=0;
}
void stop(void)
{
    TIM_SetCompare2(TIM3,100);
    TIM_SetCompare1(TIM3,100);
    Ina=0;
    Inb=0;
    Inc=0;
    Ind=0;
}


主函数:

int main(void)
 {    
    vu8 key=0;
     
    delay_init();        //      
    LED_Init();              //
    KEY_Init(); //
    TIM3_PWM_Init(450,7199);
    while(1)
    {
       key=KEY_Scan(0);    //通过按键简单实现
           if(key)
        {                           
            switch(key)
            {                 
                case WKUP_PRES:    
                     LED0=0;
                     qianjin();
                     break; 
                case KEY1_PRES:    // 
                     qianjin();
                     delay_ms(5000);
                     delay_ms(5000);
                     delay_ms(5000);
                     houtui();
                     delay_ms(5000);
                     delay_ms(5000);
                     delay_ms(5000);
                     break;
                case KEY0_PRES:    
                     LED0=1;
                     stop();
                     break;
            }
        }
        else delay_ms(10); 
        
        
    }
}

常见问题
1.电机不会转动?
(1)有响声但是齿轮不转,可能是电压不够,加大电压
(2)接线存在错误,没有与MCU共地等
(3)逻辑端编程错误,没有正确的使能
2.关于ENA和ENB上面的跳线帽要不要拔去?
这取决于你的程序是怎么输出PWM波的,如果是通过ENA来接收PWM控制的,跳线帽就要拔了,接自己的I/O输出。如果是通过IN1和IN2来控制的则不用拔。文章来源地址https://www.toymoban.com/news/detail-467922.html

到了这里,关于L298N双路电机驱动模块使用指南的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • L298N驱动电机+pwm

    目录 一、L298N驱动电机 二、pwm波输出——电机转动 pwm参数 pwm参数计算 输出比较 pwm基本结构:运行控制 → 时基单元 →捕获/输出比较通道 时基单元 捕获/输出通道的输出 STM32F103c8t6定时器:TIM1、TIM2、TIM3、TIM4 基本定时器 通用定时器 PWM输出  L298N驱动 :输入:12V 12V供电 :

    2023年04月19日
    浏览(29)
  • 直流减速编码电机的使用(STM32f103c8t6)L298N电机驱动模块

    直接减速电机就是在直流电机上加上霍尔编码器,霍尔编码器可用于电机转动的测速,A、B相会产生相位相差90°的方波信号。stm32可以使用硬件资源或者软件模拟来捕获编码器信号。这里我介绍的是stm32自带的编码器模式来使用直流减速电机。 以下是直流减速电机的商品图 ​

    2024年02月13日
    浏览(52)
  • L298n电机驱动+stm32+pwm

    7V~12VVCC:接入7V—12V的电源。 GND:接地。 注:当单片机与驱动不是同一电源时要供地。 5V输出:可以输出5V的电源。 电机A/B:接入电机。 IN1~IN4:控制电机正反转,转速信号接口。 电机A/B使能:通过跳帽控制是否使能电机。 通过引脚的高低搭配,控制电机的正反转和停止,

    2024年02月16日
    浏览(34)
  • L298N电机驱动板的使用说明

    目录 一、为什么要用L298N驱动板来驱动电机 二、L298N引脚功能图 三、供电方式 1、接入5V电源 2、接入7~12V电源 3、接入大于12V电源 四、L298N的驱动方式 你可能有这个疑惑,电机是4-6V供电的,单片机的输出也是5V输出,为什么不直接用单片机来供电驱动电机呢?这是因为单片机

    2024年02月02日
    浏览(26)
  • L298N驱动俩路电机按键控制正反转

    一个L298N是带有俩路驱动电路的,就是可以驱动俩个电机同时去转动,在硬件部分因为以前弄小车的时候已经组装好了,一路驱动去控制俩个电机,俩路驱动就是控制四个电机,做的是四轮四驱的小车,嫌麻烦就没有去拆改装了。 博主主页里面有介绍过L298N的使用了,为了避

    2024年02月03日
    浏览(26)
  • ESP32设备驱动-直流电机与L298N电机驱动器

    在本文中,我们将介绍如何使用ESP32通过L298N电机驱动器驱动直流电机。 L298N 电机驱动器模块非常易于与微控制器一起使用,而且相对便宜。 它被广泛用于控制机器人,因为我们可以一次连接多达四个电机,但如果我们还想控制速度和方向,那么它允许连接两个电机。 因此,

    2024年02月13日
    浏览(37)
  • Arduino驱动L298N控制直流电机的正反转和调速

    本模块使用ST公司的L298N作为主驱动芯片,具有驱动能力强,发热量低,抗干扰能力强的特点。LN298N可以用来驱动直流电机和步进电机、继电器线圈等感性负载;采用标准逻辑电平信号控制;具有两个使能控制端,在不受输入信号影响下允许或禁止器件工作有一个逻辑电源

    2024年02月06日
    浏览(36)
  • 【STM32】cubeMX配置HAL库驱动L298N控制直流有刷电机

    目录 1.电机为什么需要驱动板呢?为什么不能用控制器直接控制电机呢? 2.H桥电路介绍 3.L298N原理介绍 4.实物接线图 5.CUBEMX配置 6.代码 7. 演示视频 L298N是常用来驱动小型直流有刷电机(两个)和步进电机(一个)的电机驱动板,其电路原理就是两个H桥电路,控制原理是使用

    2024年02月16日
    浏览(43)
  • STM32之L298N控制130电机+PWM调速

    左右两边的OUT0~OUT4接130电机两端; 中间蓝色端口接电源, 注意:两个电源口和一个接地口都要接上!!!!!!!! 偏左一些的排针用杜邦线接上io口,如果需要PWM控速的话,ENA和ENB的跳线帽需要拔掉, 然后用两根杜邦线分别连到一个io口,给高电平使能,如果是低电平则

    2024年02月04日
    浏览(32)
  • L298N模块详细使用教程

    一.L298N芯片         L298是15脚Multiwatt封装的L298N,内部包含4通道逻辑驱动电路;是一种二相和四相电机的专用驱动器,即内含二个H桥的高电压大电流双全桥驱动器,接收标准TTL逻辑电平信号,可驱动46V、2A以下的电机。 L298N引脚定义: Pin9: Vss,即逻辑电路供电电压。电

    2023年04月12日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包