stm32+TB6612驱动直流电机

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

        因为单片机的不可以直接的驱动电机,所以需要在他们之间加上一个电机的驱动模块,之前的文章里面用过L298N电机驱动模块,现在再给大家推荐一个新的电机驱动模块,他比L298N好用许多,而且占用体积小,发热也少。TB6612可以一次驱动两个直流电机,输出PWM也很简单,下面就是通过实验对TB6612电机进行介绍。

一、TB6612电机驱动模块

tb6612fng电机驱动模块接线,stm32,C语言,Linux驱动开发,stm32,单片机,c语言

        先介绍一下TB6612电机驱动模块的引脚功能,VM:最大接15V电源,我一般使用12V直流电源供电。VCC采用3.3V或者5V供电。板子上的GND就是接地,尽量将三个GND都接上,尽量同时接电源的GND和STM32的GND引脚。STBY:使能端口,加3.3V或者5V电压。AIN1、AIN2、BIN1、BIN2:单片机对驱动模块的输入。AO1、AO2、BO1、BO2:驱动模块对电机的输入。PWMA、PWMB:对A和B口输出PWM,通过PWM来调节电机的转速。

        可以通过输入电压的改变来控制电机的正反转,如下图:

tb6612fng电机驱动模块接线,stm32,C语言,Linux驱动开发,stm32,单片机,c语言

        下面采用带编码器的减速直流电机来进行最简单的电机实验:接线如下图:

tb6612fng电机驱动模块接线,stm32,C语言,Linux驱动开发,stm32,单片机,c语言

         直接用VCC和GND来带动电机,AIN1接VCC,AIN2接GND,给PWMA接VCC,STBY接VCC,这是代表电机在一个方向全速转动。如果电机正常转动的话,那么各模块就是没有问题的,可以进行下一步实验了,利用GPIO控制电机正反转,就是定义两个独立的GPIO引脚,两个都为输出模式,一个口输出高、一个口输出低,电机就可以根据GPIO的信息正反转起来了,实验简单就不上代码了。

        电机可以正反转了,那么如何控制电机的转动速度呢,这里就用到了PWM脉宽调制功能。刚才将PWMA接到了VCC上,代表PWMA一直是高电平,下来将一个IO口定义为PWM功能,通过更改占空比来调节电机的转速。以下是PWM的配置代码后面我们只需要调用TIM_SetCompare1(TIM8,20);这个函数来更改占空比,从而达到调速的功能。将输出PWM的引脚连接在驱动模块的PWMA口即可,之后电机就可以根据设置的PWM来调速转动了。

void TIM1_PWM_Init(u16 arr,u16 psc)
{  
	 GPIO_InitTypeDef GPIO_InitStructure;
	TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
	TIM_OCInitTypeDef  TIM_OCInitStructure;

	//使能GPIO外设时钟使能
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM8, ENABLE); 
 	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC , ENABLE);  
	                                                                     	

  //设置该引脚为复用输出功能,输出TIM1 CH1的PWM脉冲波形
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6; //TIM_CH1
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  //复用推挽输出
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOC, &GPIO_InitStructure);
	
	//初始化定时器ARR,PSC
	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(TIM8, &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(TIM8, &TIM_OCInitStructure);  //根据TIM_OCInitStruct中指定的参数初始化外设TIMx

	//使能TIM1
	TIM_Cmd(TIM8, ENABLE);  //使能TIM1
 
	//MOE 主输出使能pwm
  TIM_CtrlPWMOutputs(TIM8,ENABLE);		
	
	//CH1预装载使能
	TIM_OC1PreloadConfig(TIM8, TIM_OCPreload_Enable);  	 
	
	//使能TIMx在ARR上的预装载寄存器
	TIM_ARRPreloadConfig(TIM8, ENABLE);    
}

        利用带编码器的电机,还可以做一个闭环的电机控制系统,利用PID算法控制电机在可控的情况下可以定速的运行,这里还是PID计算出来的值就是PWM要设置的占空比。后面把平衡小车做出来时会分享出来。文章来源地址https://www.toymoban.com/news/detail-612068.html

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

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

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

相关文章

  • STM32 HAL库PID控制电机 第二章 TB6612FNG芯片驱动GB37-520电机

    1 电路图 2 TB6612简介 TB6612是双驱动,可同时驱动两个电机 STBY:接单片机的IO口清零电机全部停止,置1通过AIN1 AIN2,BIN1,BIN2 来控制正反转 VM:建议接10V以内电源( 瞬间上电12V可能会有尖峰电压击穿器件 ) VCC:接5V电源 GND:接电源负极 PWMA:接单片机的PWM口 ,控制转速 PWM

    2023年04月22日
    浏览(96)
  • STM32平衡小车 TB6612电机驱动学习

    单片机引脚的电流一般只有几十个毫安,无法驱动电机,因此一般是通过单片机控制电机驱动芯片进而控制电机。TB6612是比较常用的电机驱动芯片之一。         TB6612FNG可以同时控制两个电机,工作电流1.2A,最大电流3.2A。  VM电机电源正极,是驱动电压输入端(10V), VCC为逻

    2024年02月06日
    浏览(49)
  • STM32外设系列—TB6612FNG

    🎀 文章作者:二土电子 🌸 关注文末公众号获取其他资料和工程文件! 🐸 期待大家一起学习交流! 本文涉及到定时器和串口的知识,详细内容可见博主STM32速成笔记专栏。 TB6612FNG是东芝半导体的一款驱动电机的IC。一个TB6612FNG可以驱动两个电机,每一个驱动都有两个逻辑

    2024年02月14日
    浏览(48)
  • STM32用TB6612驱动电机(智能家居系列二)

            本篇文章主要讲解主控板为STM32,利用TB6612驱动来驱动电机的整个流程,看完点个赞吧! PWMA---连接代码中的PB0口                                   VM------接10V以内电压 AIN2-----接代码中的PB3口                                       VCC-----接5V AIN1-----接代

    2024年01月15日
    浏览(56)
  • Stm32-使用TB6612驱动电机及编码器测速

    最近在 学习编码电机以及尝试使用编码电机测速 。遇到了很多问题,花费了很多时间,在这里做一个记录,对自己学习到的知识进行一个总结 找了很多资料,看了很多视频,这些太多了,以至于让我不知道究竟哪一个是正确的,今天看这个,明天看这个,导致自己的学习效

    2023年04月16日
    浏览(70)
  • stm32平衡小车--(1)JGB-520减速电机+tb6612(附测试代码)

                                        这是我用的电机,红色框框中的就是 编码器 。 编码器是将信号(如比特流)或数据进行编制、转换为可用以通讯、传输和存储的信号形式的设备。编码器把角位移或直线位移转换成电信号,前者称为码盘,后者称为码尺。按照读出方

    2024年02月04日
    浏览(306)
  • 霍尔编码器电机与TB6612电机驱动相关学习

    简单粗暴的说下,电机-电机驱动-单片机该怎么连线。 先简单认识一下霍尔编码器电机 以上选用的平衡小车之家的,市面上基本都跟这个差不了多少。 电机线-+这两个引脚 与电机驱动相连接 来控制电机的正反转(自己的浅显理解)  编码器的AB相 连接单片机(定时器)  编

    2023年04月09日
    浏览(39)
  • STM32单片机PWM控制实现电机调速度(小车运动,STM32F103C8T6&TB6612&TT电机)

    作者:公子易平 时间:2023/6/6 前段时间做一个智能小车的相关项目时,发现很少有人能够将STM32的PWM控制讲清楚,故而书此文,希望对后来的学习者有所帮助。 STM32F103C8T6最小系统板 直流TT电机 电机驱动芯片(TB6612) 杜邦线若干 接线情况: TB6612引脚说明: STM32主控芯片与TB6612接

    2024年02月15日
    浏览(48)
  • TB6612驱动和MG513P3012V电机

    用的是stm32f103c9t6 驱动的意义:实现将3.3v的pwm转换成更高电压比如12v的pwm,同时还可以控制pwm的极性是+12还是-12  vcc:原先的pwm电平 vm:转换后的pwm电平 pwma:输入pwm ain2,ain1:  stby:1正常工作,0待机 ao1-a02: 输出一路pwm连到电机线上,这个pwm的电压就是vm端所接的电压,比如这里就

    2024年02月02日
    浏览(42)
  • tb6612电机驱动软件开发(代码pid实现,调试,控制实现)

    代码工程 https://download.csdn.net/download/weixin_52849254/87879043?spm=1001.2014.3001.5501 这段代码是一个PID算法的实现,用于控制电机的位置和速度。代码中包含了以下主要内容: 定义了全局变量,包括四个PID结构体变量,分别用于左电机的位置控制、左电机的速度控制、右电机的速度控

    2024年02月08日
    浏览(53)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包