1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本文将简单介绍如何通过L298N电机驱动模块实现直流减速电机(电动推杆)的正反转控制,后续会更新含PWM调速的教程,如有需要可关注后续博客,希望对大家的学习有所帮助。
1.所需硬件 正点原子战舰V3开发板 X1 L298N电机驱动模块 X1 微型电动推杆 X1 杜邦线 若干 2.L298N电机驱动模块介绍 上图为L298N电机驱动模块的实物图,关于L298N电机驱动模块的原理这里不做过多的介绍,感兴趣的同学可以自行百度,下面将直接介绍L298N的使用方法。 输出A(OUT1和OUT2):从电机上可以看到两个正负金属片,我们可以联想到这是接电机的正负金属片,至于哪个是正哪个是负无所谓,若未达到预期效果可通过代码或相反接线来改变。 12V供电、供电GND:12V电源接口接12V电池正极,负极接地,同时一定要和单片机共地,至于为什么这里不做详细介绍,同学可百度查阅。至于这个12V的电源,电压尽量不要高于16V也不要低于8V,过高过低都会烧毁芯片。 5V供电:由于L298N电机驱动模块自带了稳压功能,可以供出5v电压,在以后的智能小车项目中,单片机的供电选择可以选这个,对于初学者这个很少用到。 通道A使能(EN1):这里的使能可以类比STM32的GPIO口和时钟配置,这是使能的意思就是让它开启工作状态。这个使能接口是用来控制PWM输入的,也就是说,如果单纯只想让电机转动起来,可以不用管EN1,把那个帽子给它盖上,它就和5v接上了,也就是它不使能了。以后如果想用PWM来控制,那就把帽子拔了,把EN脚接到单片机的PWM输出口。 单片机IO口控制输入(IN1、IN2):这两个脚是接到STM32的某两个GPIO口上,通过给予高低电平,就可以实现电机的正反转。 所以,剩下的IN3、IN4、EN2、OUT3和OUT4都同理。 3.硬件接线 接线描述: [tr]12V供电DC电源正极[/tr]供电GNDDC电源负极及单片机GND(共地) IN1PA5 IN2PA4 OUT1电机正极 OUT2电源负极 4.程序代码 在学习点灯实验后,相信大家已经知道如何配置引脚,也知道怎么给引脚高低电平了,这里只示例部分主要代码,注意工程的创建。 motor.c源文件 #include “stm32f10x.h” #include “motor.h” #include “sys.h” #include “delay.h” void MOTOR_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); //使能GPIO外设 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4; //LED0--》PB.4 端口配置 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz GPIO_Init(GPIOA, &GPIO_InitStructure); //根据设定参数初始化GPIOB.4 GPIO_ResetBits(GPIOA,GPIO_Pin_4); //Pa.4 输出低 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED0--》PB.5 端口配置 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz GPIO_Init(GPIOA, &GPIO_InitStructure); //根据设定参数初始化GPIOB.5 GPIO_ResetBits(GPIOA,GPIO_Pin_5); //Pa.5 输出低 } main.c源文件 #include “delay.h” #include “sys.h” #include “motor.h” #include “key.h” #include “led.h” int main() { delay_init(); //延时函数初始化 MOTOR_Init(); KEY_Init(); LED_Init(); GPIO_ResetBits(GPIOE,GPIO_Pin_5); delay_ms(1000); GPIO_SetBits(GPIOE,GPIO_Pin_5); delay_ms(1000); while(1) { if(KEY0==0) //按键KEY0 { delay_ms(10); //消抖 if(KEY0==0) { GPIO_SetBits(GPIOA,GPIO_Pin_4); GPIO_ResetBits(GPIOA,GPIO_Pin_5); //推进 } } if(KEY1==0) //按键KEY1 { delay_ms(10); //消抖 if(KEY1==0) { GPIO_SetBits(GPIOA,GPIO_Pin_5); GPIO_ResetBits(GPIOA,GPIO_Pin_4); //缩回 } } if(KEY2==0) //按键KEY2 { delay_ms(10); //消抖 if(KEY2==0) { GPIO_ResetBits(GPIOA,GPIO_Pin_4); GPIO_ResetBits(GPIOA,GPIO_Pin_5); //停止 } } } } 演示效果: 按下KEY0,电机正转 按下KEY1,电机反转 按下KEY2,电机停止 5.总结 通过本次的项目,我们对GPIO口的应用有一定了解,在学习STM32单片机的过程中自己可以边学边做项目,这样会提高自己的动手能力,也会巩固理论知识,本篇博客简单介绍了L298N模块的使用,如需进一步了解可自行求助度娘,希望对大家的学习有所帮助! |
|
|
|
只有小组成员才能发言,加入小组>>
2434 浏览 0 评论
9096 浏览 4 评论
36765 浏览 19 评论
5025 浏览 0 评论
24737 浏览 34 评论
1525浏览 2评论
1740浏览 1评论
2189浏览 1评论
1550浏览 0评论
521浏览 0评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-21 16:30 , Processed in 1.353581 second(s), Total 76, Slave 60 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号