当前位置:   article > 正文

常见l298n电机驱动的使用方法,简单粗暴,不讲废话。_l298n电机驱动模块使用方法

l298n电机驱动模块使用方法

一、常见L298N可以干嘛的简单介绍

制作一个智能循迹或者避障小车往往需要到驱动,而对于小白来说我们常用到的驱动往往为l298n和tb6612,这里就介绍常用l298n驱动的使用方法,仅供新手小白快速学习上手使用l298n驱动。

二、L298N模块的使用

如图所示(该图来自淘宝商家图片)

1、输出A接电机的正负极,输出B同理,如若正负极接反会使电机反转。如果为4轮小车,可以左边两个轮子串联在一起,当作一个轮子。右边同理。

2、板载5v使能的跳线帽要接上,一般在商家买回来的l298n模块都是接上了的

3、12v供电接电源的正极!供电GND(可以暂时简单理解为负极或者接地)接电源的负极!切记勿接错,接错l298n模块很容易烧毁的!

4、5v供电,可输出5v的电压,如果降压模块有限,可以使用它来给单片机供电,可以接到单片的 5v供电中,但切记一定要在单片机的GND上接回到l298n的GND上,也就是说如果你用l298n 的5v给单片机供电,在上图的(供电GND)中就要接两条线,一条是电源负极,一条是单片机 GND。

5、逻辑输入,这里有4个接线排针,从左到右为IN1 IN2 IN3 IN4,左边两个对应左边输出A,有边两个对应右边输出B,接到单片机的IO口上,如果IN1设置为高电平,IN2设置为低电平左边的电机正转,反之若IN1为低电平,IN2为高电平则反转。同理可知,IN3为高电平,IN4为低电平为右边电机正转,反之,IN3低,IN4高为反转。设置IN为高低电平可通过单片机代码设置IO口的高低来实现,如若是测试电机是否坏,可直接短接3.3v电源与GND,电机会转。

6、通道A使能和通道B使能,这里可以把跳线帽拔了(购买时是插着的)接到单片机代码配置的pwm通道上,用来输出pwm波。如果还没学到可以去学一下pwm波的输出,这里就不多讲了。pwm可以用来控制电机的运行速度。跳线帽拔了接一条线就行,比如左边跳线帽拔了接下面代码配置的PA0就行。右边同理。

7、最后是小博主的最后一点提醒,这个模块对新手很容易烧坏!如果是新手小白,在接电前一定要注意接线是否接对,特别是GND那里。(希望看到这篇文章的你不会烧(手动狗头))

三、stm32f103c8t6代码部分

电机初始化io口部分,不要一味地复制粘贴喔,首先还是要理解代码意思的。

  1. void Motor_Init(void)
  2. {
  3. GPIO_InitTypeDef GPIO_InitStructure;//定义一个结构体变量GPIO_InitStructure
  4. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//使能时钟
  5. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;//确定哪一个io口
  6. GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//设置为推挽输出模式
  7. GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//io口速度为50hz
  8. GPIO_Init(GPIOB,&GPIO_InitStructure);//GPIOB.12初始化函数
  9. }

pwm部分

  1. //PWM输出初始化
  2. //arr:自动重装值 899 //可在函数声明写入口参数
  3. //psc:时钟预分频数 0
  4. void TIM2_PWM_Init(u16 arr,u16 psc)
  5. {
  6. GPIO_InitTypeDef GPIO_InitStructure;
  7. TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
  8. TIM_OCInitTypeDef TIM_OCInitStructure;
  9. RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);// APB1,TIM2
  10. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE); //使能GPIO外设时钟使能
  11. //设置该引脚为复用输出功能,输出TIM2 CH1的PWM脉冲波形
  12. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1; //TIM_CH1 TIM_CH2
  13. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出
  14. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  15. GPIO_Init(GPIOA, &GPIO_InitStructure);
  16. TIM_TimeBaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值 80K
  17. TIM_TimeBaseStructure.TIM_Prescaler =psc; //设置用来作为TIMx时钟频率除数的预分频值 不分频
  18. TIM_TimeBaseStructure.TIM_ClockDivision = 0; //设置时钟分割:TDTS = Tck_tim
  19. TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上计数模式
  20. TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); //根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位
  21. TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; //选择定时器模式:TIM脉冲宽度调制模式2
  22. TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比较输出使能
  23. TIM_OCInitStructure.TIM_Pulse = 0; //设置待装入捕获比较寄存器的脉冲值
  24. TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //输出极性:TIM输出比较极性高
  25. TIM_OC1Init(TIM2, &TIM_OCInitStructure); //根据TIM_OCInitStruct中指定的参数初始化外设TIMx
  26. TIM_OC2Init(TIM2, &TIM_OCInitStructure);
  27. TIM_CtrlPWMOutputs(TIM2,ENABLE); //MOE 主输出使能
  28. TIM_OC1PreloadConfig(TIM2, TIM_OCPreload_Enable); //CH1预装载使能
  29. TIM_OC2PreloadConfig(TIM2, TIM_OCPreload_Enable); //CH2预装载使能
  30. TIM_ARRPreloadConfig(TIM2, ENABLE); //使能TIMx在ARR上的预装载寄存器
  31. TIM_Cmd(TIM2, ENABLE); //使能TIM2
  32. }

最后差不多了,关注博主,以简单粗暴的方式分享学习,欢迎批评改正,如有侵权联系删除。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/695020
推荐阅读
相关标签
  

闽ICP备14008679号