十六、STM32的TIM(七)(PWM直流电机)

介绍:接上一章节。本章节重点介绍如何在 STM32C8T6 上实现 PWM 驱动直流电机 的控制。通过按键输入实现控制逻辑,利用 PWM(脉宽调制)信号调节电机转速,并根据需求改变电机的转动方向,从而完成简易电机控制系统的构建与应用实践。

目录

一、接线图

二、TB6612说明

三、相关代码编写

四、程序现象


一、接线图

二、TB6612说明

由于直流电机属于大功率器件,STM32 的 GPIO 引脚无法直接提供足够的驱动电流,因此必须借助专用的电机驱动芯片进行功率放大和方向控制。我们选择使用 TB6612 驱动模块,它是一款性能稳定的双路 H 桥直流电机驱动芯片,可同时驱动两台直流电机,并支持正反转与转速调节等功能。

TB6612 不仅具有较高的输出电流能力,还具备低功耗、响应速度快等优点,非常适合与 STM32 进行配合使用。在控制方式上,我们通过 STM32 的 PA4 和 PA5 引脚输出高低电平 来切换电机的转动方向,同时利用 PWM 输出并修改 CCR 寄存器的值 调整 PWM 占空比,实现对电机转速的精准控制。因此,TB6612 既保证了系统的安全性和可靠性,又大大简化了电机控制的硬件设计。

三、相关代码编写

1.初始化:

复制代码
void Motor_Init(void)
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);		
	
	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOA, &GPIO_InitStructure);							
	
	PWM_Init();													
}

2.直流电机速度设置(正反直接可以定义)

复制代码
void Motor_SetSpeed(int8_t Speed)
{
	if (Speed >= 0)							
	{
		GPIO_SetBits(GPIOA, GPIO_Pin_4);	
		GPIO_ResetBits(GPIOA, GPIO_Pin_5);	
		PWM_SetCompare3(Speed);				
	}
	else									
	{
		GPIO_ResetBits(GPIOA, GPIO_Pin_4);	
		GPIO_SetBits(GPIOA, GPIO_Pin_5);	
		PWM_SetCompare3(-Speed);			
	}
}

3.主函数示例

复制代码
int main(void)
{
	
	OLED_Init();		
	Motor_Init();	
	Key_Init();			
	
	
	OLED_ShowString(1, 1, "Speed:");		
	
	while (1)
	{
		KeyNum = Key_GetNum();				
		if (KeyNum == 1)				
		{
			Speed += 20;					
			if (Speed > 100)				
			{
				Speed = -100;				
											
										
			}
		}
		Motor_SetSpeed(Speed);				
		OLED_ShowSignedNum(1, 7, Speed, 3);
	}
}

四、程序现象

本程序的运行效果为:每次按下按键,直流电机的转速都会逐级提升;当转速达到设定阈值后,系统会自动切换电机的转动方向,并从较低转速重新开始递增,实现正反转循环控制的效果。

At the end of this article, applaud yourself again!!

相关推荐
M78佐菲6 小时前
51单片机学习笔记:ds18b20要点整理
linux·笔记·嵌入式硬件·学习·51单片机
洪核单片机8 小时前
DPJ-96基于STM32单片机wifi远程监控智慧教室 温湿度光照粉尘人数考勤
stm32·单片机·嵌入式硬件·智慧教室·教室人数考勤
m0_752753129 小时前
单片机基础知识
单片机·51单片机
天空'之城9 小时前
单片机基础核心知识点汇总(三十六)
单片机·嵌入式硬件
云泽80810 小时前
STM32 USART 详解(八):C I/O 串口重定向原理与实现
c语言·stm32·嵌入式硬件
Doraemomo12 小时前
IMX6ULL裸机开发——系统主频和时钟配置
arm开发·嵌入式硬件·makefile·imx6ull
深圳市恒锐丰科技杨生13 小时前
EG1192H 零功耗使能集成上管非同步降压 DC‑DC|屹晶 EGmicro
嵌入式硬件·硬件工程
星栖与芯14 小时前
LiteOS-M 切换汇编逐行图解(1):汇编是什么·寄存器与栈
汇编·stm32·嵌入式硬件·harmonyos·鸿蒙系统
xx~t15 小时前
嵌入式——单片机2
嵌入式硬件·学习·51单片机·串口·蜂鸣器
JNX_SEMI15 小时前
OC5138T 8V~100V超宽输入降压恒流驱动:覆盖12V汽车至72V电动车全场景
单片机·嵌入式硬件