【含源代码】STM32F1控制L298N直流电机驱动,PWM调速、电机调速、STM32F103C8T6智能小车教程、控制电机正反转

您所在的位置:网站首页 直流调速f083 【含源代码】STM32F1控制L298N直流电机驱动,PWM调速、电机调速、STM32F103C8T6智能小车教程、控制电机正反转

【含源代码】STM32F1控制L298N直流电机驱动,PWM调速、电机调速、STM32F103C8T6智能小车教程、控制电机正反转

2024-07-06 13:02:12| 来源: 网络整理| 查看: 265

源代码获取方法:见文末! 本文将用最通俗易懂的语言讲解怎么使用STM32通过L298N驱动直流电机。 通过这篇文章,你可以学到: 驱动两个直流电机转动 控制电机的转速 控制电机转向:正转、反转 话不多说,直接进入主题! 一、本文用到的模块 STM32F103C8T6最小系统板,单片机就不详细介绍了,想必大家也学了,如下图所示。

 L298N电机驱动,如下图

二、L298N接口说明

如下图所示,其实可以把接口分为三部分:

①输出口,这里分了输出A(OUT1和OUT2)和输出B(OUT3和OUT4),是接电机的。

②控制口,这部分是和单片机连接的,分为通道使能口(ENA和ENB)和逻辑输入口(IN1-IN4),通道使能口接PWM控制电机速度,逻辑输入控制电机正反转,具体逻辑如下图所示(ENB、IN3、IN4和ENA、IN1、IN2的逻辑相同)。

③电源供电口,分为+12V、GND、+5V。+12V和GND是接我们的供电电源的(锂电池的正负极,一般接三节串联的18650锂电池即可,这样电压大概是12V)。

关于接线,以上只做简单介绍! 三、例程接线图

下面举出一个例子,供电电池采用12V锂电池(三节串联的18650)。

电池和L2989N的连接 电池L298N电机驱动电池正极(红线)+12V电池负极(黑线)GND STM32和L298N连接 STM32F103最小系统L298NPA6ENAPB5IN1PB6IN2PB7IN3PB8IN4PA7ENB5V+5VGNDGND 四、代码 TIME.c,初始化了定时器3产生两路PWM(PA6和PA7) #include "TIME.h" #include "myMOTOR.h" //定时器3 PWM输出(CH1->PA6 CH2->PA7)**TIM_SetComparex(TIMx,xxx);//占空比函数 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); //使能定时器3时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //使能GPIO外设;————假如要AFIO复用功能模块时钟则要加上( | RCC_APB2Periph_AFIO) //GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3, ENABLE); //Timer3部分重映射 TIM3_CH2->PB5 //初始化输出TIM3四个通道PWM脉冲波形的引脚(CH1->PA6 CH2->PA7) GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7; //TIM_CH1、CH2 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIO //初始化TIM3 TIM_TimeBaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值 TIM_TimeBaseStructure.TIM_Prescaler =psc; //设置用来作为TIMx时钟频率除数的预分频值 TIM_TimeBaseStructure.TIM_ClockDivision = 0; //设置时钟分割:TDTS = Tck_tim TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上计数模式 TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位 //初始化TIM3 Channe12 PWM模式 TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //选择定时器模式:TIM脉冲宽度调制模式1 TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比较输出使能 TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //输出极性:TIM输出比较极性高 TIM_OC1Init(TIM3, &TIM_OCInitStructure); //根据T指定的参数初始化外设TIM3 OC1 TIM_OC2Init(TIM3, &TIM_OCInitStructure); TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable); //使能TIM3在CCR1上的预装载寄存器 TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable); TIM_Cmd(TIM3, ENABLE); //使能TIM 3 } myMOTOR.c,初始化四个IO口,用于控制电机正反转(PB5、PB6、PB7、PB8)。还有电机控制相关的函数Set_Car_Speed,此函数用于控制车速和转向。 #include "stm32f10x.h" #include "Delay.h" #include "TIME.h" void MOTOR_GPIO_Init(void) { RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8; //依次接L298N IN1,IN2,IN3,IN4 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); } /* 函数功能:控制两个电机的速度和正反转 参数说明: PWM1、PWM2 范围:-7200到7200 参数正负不同表示电机不同的转向 */ void Set_Car_Speed(int PWM1,int PWM2) { if(PWM1>0) { TIM_SetCompare1(TIM3,PWM1); GPIO_SetBits(GPIOB, GPIO_Pin_5); GPIO_ResetBits(GPIOB, GPIO_Pin_6); } if(PWM2>0) { TIM_SetCompare2(TIM3,PWM2); GPIO_SetBits(GPIOB, GPIO_Pin_7); GPIO_ResetBits(GPIOB, GPIO_Pin_8); } if(PWM1


【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭