常见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口部分,不要一味地复制粘贴喔,首先还是要理解代码意思的。
-
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
-
}
最后差不多了,关注博主,以简单粗暴的方式分享学习,欢迎批评改正,如有侵权联系删除。
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgabkjh
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01