PWM控制直流电机

这篇具有很好参考价值的文章主要介绍了PWM控制直流电机。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一,TB6612电机驱动模块

PWM控制直流电机

 文章来源地址https://www.toymoban.com/news/detail-427100.html

PWM控制直流电机

 

PWM控制直流电机

 

直流电机属于大功率器件,GPIO无法直接驱动,需要电机驱动模块配合,才能驱动直流电机.

TB6612可以驱动2个直流电机。由IN1,IN2控制电机旋转方向,由PWM控制电机旋转速度。

二,代码部分

PWM控制直流电机

核心代码还是为PWM部分,直流电机初始化也只是多初始化2了两个GPIO口,用于产生电压差,驱动电机,并且可以通过2个GPIO口改变电机旋转方向。

就是两个端口输出电平控制点击转动方向,然后中间那个端口通过输出占空比控制转速
 

PWM.c

#include "stm32f10x.h"                  // Device header
 
void PWM_Init(void)
{
	//开启TIM2连接的总线APBB1
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
 
	
	GPIO_InitTypeDef GPIOA_InitStructure;
	GPIOA_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
	GPIOA_InitStructure.GPIO_Pin=GPIO_Pin_2;
	GPIOA_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
	GPIO_Init(GPIOA,&GPIOA_InitStructure);
	
	//选择内部时钟
	TIM_InternalClockConfig(TIM2);
	
	//时基单元初始化
	TIM_TimeBaseInitTypeDef TIM_TimeBaseStruct;
	TIM_TimeBaseStruct.TIM_ClockDivision=TIM_CKD_DIV1;
	TIM_TimeBaseStruct.TIM_CounterMode=TIM_CounterMode_Up;
	TIM_TimeBaseStruct.TIM_Period=100-1;   //ARR
	TIM_TimeBaseStruct.TIM_Prescaler=36-1;  //PSC
	TIM_TimeBaseStruct.TIM_RepetitionCounter=0;
	TIM_TimeBaseInit(TIM2,&TIM_TimeBaseStruct);
	
	TIM_OCInitTypeDef TIM_OCInitStructture;
	TIM_OCStructInit(&TIM_OCInitStructture);
	TIM_OCInitStructture.TIM_OCMode=TIM_OCMode_PWM1;
	TIM_OCInitStructture.TIM_OCPolarity=TIM_OCPolarity_High ;
	TIM_OCInitStructture.TIM_OutputState=TIM_OutputState_Enable;
	TIM_OCInitStructture.TIM_Pulse=90;    //CCR
	TIM_OC3Init(TIM2,&TIM_OCInitStructture);
	TIM_Cmd(TIM2,ENABLE);
}
void PWM_SetCompare3(uint16_t Compare)
{
	TIM_SetCompare3(TIM2,Compare);
}

Motor.c

#include "stm32f10x.h"                  // Device header
#include "PWM.h"
 
void Motor_Init(void)
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
 
	GPIO_InitTypeDef GPIOA_InitStructure;
	GPIOA_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
	GPIOA_InitStructure.GPIO_Pin=GPIO_Pin_4 | GPIO_Pin_5;
	GPIOA_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
	GPIO_Init(GPIOA,&GPIOA_InitStructure);
	PWM_Init();
}
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_SetBits(GPIOA,GPIO_Pin_5);
		GPIO_ResetBits(GPIOA,GPIO_Pin_4);
		PWM_SetCompare3(-Speed);
	}
}

main.c

#include "stm32f10x.h"                  // Device header
#include "Delay.h"
#include "LED.h"
#include "Key.h"
#include "Buzzer.h"
#include "OLED.h "
#include "Motor.h"
 
uint8_t KeyNum;
int8_t Speed;
int main()
{
	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);
	}
}
}

三、怎么选择输出占空比函数

PWM控制直流电机

 这个函数TIM_SetCompare1,这个函数有四个,分别是TIM_SetCompare1,TIM_SetCompare2,TIM_SetCompare3,TIM_SetCompare4。

位于CH1那一行的GPIO口使用TIM_SetCompare1这个函数

位于CH2那一行的GPIO口使用TIM_SetCompare2这个函数

位于CH3那一行的GPIO口使用TIM_SetCompare1这个函数
以此类推

四、如何选择捕获/比较寄存器

在选择捕获/比较寄存器的时候,我们可以先根据输出比较的端口,在上面的图里面选择出输出的端口。如何对应选择出CHx端口,再选择相应的捕获/比较寄存器

PWM控制直流电机

 

到了这里,关于PWM控制直流电机的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • PWM驱动直流电机

    目录 一、实验目的 二、实验要求 三、硬件部分 1. 主控模块 2. 电器驱动模块 3. 直流电机  四、软件部分 1. 主程序 2.定时器输出PWM波原理  五、实验总结 掌握MSP432 PWM波的输出配置 掌握直流电机驱动的方法 按键控制小车的前进方向。 实现小车加速前进,减速后退运动。   

    2024年02月09日
    浏览(47)
  • PWM控制直流电机

    一,TB6612电机驱动模块       直流电机属于大功率器件,GPIO无法直接驱动,需要电机驱动模块配合,才能驱动直流电机. TB6612可以驱动2个直流电机。由IN1,IN2控制电机旋转方向,由PWM控制电机旋转速度。 二,代码部分 核心代码还是为PWM部分,直流电机初始化也只是多初始化

    2023年04月27日
    浏览(41)
  • PWM如何控制直流电机

    智能车基础可是控制电机呀!如何设置频率,如何控制车的加速,减速,正反转状态~。是这篇文章要弄明白的 对于普通的 直流(有刷)电机 ,在其两个电极上接上合适的直流电源后,电机就可以满速转动,电源反接后,电机就反向转动。实际情况是我们要能控制电机的正反

    2024年01月18日
    浏览(52)
  • 直流无刷电机驱动的PWM频率

    针对ESCON伺服驱动器: https://support.maxongroup.com/hc/en-us/articles/360020442720-ESCON-PWM-input-frequency-PWM-output-frequency- Impact of the PWM input frequency? Please be aware that the PWM input frequency in use also determines how fast updated set values can be identified and processed because one period has to measured before the PWM duty cy

    2023年04月08日
    浏览(33)
  • 单片机学习笔记---直流电机驱动(PWM)

    直流电机是一种将电能转换为机械能的装置。一般的直流电机有两个电极,当电极正接时,电机正转,当电极反接时,电机反转 直流电机主要由永磁体(定子)、线圈(转子)和换向器组成 除直流电机外,常见的电机还有步进电机、舵机、无刷电机、空心杯电机等 因为电机

    2024年02月21日
    浏览(51)
  • STM32PWM控制直流电机

    PWM介绍 脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用 微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。简单一点,就是对脉冲宽 度的控制 PWM的原理: 假定定时器工作在向上计数 PWM 模式,且当 CNT=CCRx 时输出 1。那么就可以

    2024年02月08日
    浏览(49)
  • 【51单片机】直流电机驱动(PWM)(江科大)

    · 直流电机是一种将电能转换为机械能的装置。一般的直流电机有两个电极,当电极正接时,电机正转,当电极反接时,电机反转 · 直流电机主要由永磁体(定子)、线圈(转子)和换向器组成 · 除直流电机外,常见的电机还有步进电机、舵机、无刷电机、空心杯电机等 电机的驱动无法

    2024年02月20日
    浏览(50)
  • 【Arduino32】PWM控制直流电机速度

    震动传感器:1个 红黄绿LED灯:各一个 旋钮电位器:1个 直流电机:1个 1K电阻:1个 220欧电阻:3个 杜邦线:若干

    2024年02月07日
    浏览(40)
  • stm32——pwm驱动LED灯、舵机、直流电机

    改为PA15,选择重映射方式1或完全重映射 在时钟开启后写入 PWM频率=计数器更新频率 比如要产生一个频率为1KHz,占空比为50%,分辨率为1%的PWM波形 72M/(PSC+1)/ (ARR+1)=1000 CCR/(ARR+1)=0.5 1/(ARR+1)=0.01 计算得:ARR=99,CCR=50, PSC=720-1; 常用模式为 PWM1模式1 PWM.c PWM.h main.c 参数计算 PWM.c Servo.

    2024年02月04日
    浏览(44)
  • 【51单片机】直流电机的驱动和PWM调速

    51单片机驱动直流电机与 PWM 调速是通过使用 51 单片机来控制直流电机的转速和方向。51 单片机通过控制电机的电流来实现驱动,并通过生成 PWM 信号来调节电机的转速。使用 PWM 调速可以使得直流电机的转速精确可控,并且减少了电机的功率损耗。在 51 单片机的控制系统中,

    2023年04月09日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包