概述
一、常见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口部分,不要一味地复制粘贴喔,首先还是要理解代码意思的。
void Motor_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;//定义一个结构体变量GPIO_InitStructure
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//使能时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;//确定哪一个io口
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//设置为推挽输出模式
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//io口速度为50hz
GPIO_Init(GPIOB,&GPIO_InitStructure);//GPIOB.12初始化函数
}
pwm部分
//PWM输出初始化
//arr:自动重装值 899 //可在函数声明写入口参数
//psc:时钟预分频数 0
void TIM2_PWM_Init(u16 arr,u16 psc)
{
GPIO_InitTypeDef GPIO_InitStructure;
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);// APB1,TIM2
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE); //使能GPIO外设时钟使能
//设置该引脚为复用输出功能,输出TIM2 CH1的PWM脉冲波形
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1; //TIM_CH1 TIM_CH2
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
TIM_TimeBaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值 80K
TIM_TimeBaseStructure.TIM_Prescaler =psc; //设置用来作为TIMx时钟频率除数的预分频值 不分频
TIM_TimeBaseStructure.TIM_ClockDivision = 0; //设置时钟分割:TDTS = Tck_tim
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上计数模式
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); //根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; //选择定时器模式:TIM脉冲宽度调制模式2
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比较输出使能
TIM_OCInitStructure.TIM_Pulse = 0; //设置待装入捕获比较寄存器的脉冲值
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //输出极性:TIM输出比较极性高
TIM_OC1Init(TIM2, &TIM_OCInitStructure); //根据TIM_OCInitStruct中指定的参数初始化外设TIMx
TIM_OC2Init(TIM2, &TIM_OCInitStructure);
TIM_CtrlPWMOutputs(TIM2,ENABLE); //MOE 主输出使能
TIM_OC1PreloadConfig(TIM2, TIM_OCPreload_Enable); //CH1预装载使能
TIM_OC2PreloadConfig(TIM2, TIM_OCPreload_Enable); //CH2预装载使能
TIM_ARRPreloadConfig(TIM2, ENABLE); //使能TIMx在ARR上的预装载寄存器
TIM_Cmd(TIM2, ENABLE); //使能TIM2
}
最后差不多了,关注博主,以简单粗暴的方式分享学习,欢迎批评改正,如有侵权联系删除。
最后
以上就是缥缈蛋挞为你收集整理的常见l298n电机驱动的使用方法,简单粗暴,不讲废话。一、常见L298N可以干嘛的简单介绍二、L298N模块的使用三、stm32f103c8t6代码部分的全部内容,希望文章能够帮你解决常见l298n电机驱动的使用方法,简单粗暴,不讲废话。一、常见L298N可以干嘛的简单介绍二、L298N模块的使用三、stm32f103c8t6代码部分所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复