Driver8833电机驱动模块的使用(STM32为主控)

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

一、硬件
STM32C8T6、STLINK下载器
Driver8833:TI公司的DRV8833是双桥马达驱动器解决方案,包括有两个H桥驱动器,可驱动两个DC电刷马达,或一个步进马达, 螺线管和其它电感负载. DRV8833具有PWM绕组电流调整/限制,H桥的输出电流1.5A RMS,2A峰值,工作电压2.7V-10.8V。
编码电机

二、Driver8833的使用

模块供电2.7-10.8v,芯片中共有两个全H桥,最多可以同时驱动两个直流电机,内置过热保护和用户可调的限流保护电路。
引脚说明:
SLEEP:睡眠模式控制,高电平使能芯片,低电平关闭芯片;
UTL:报警端,过热和电流过大时输出低电平,默认不用;
输入IN1、IN2控制输出OUT1、OUT2,第一路H桥;
输入IN3、IN4控制输出OUT3、OUT4,第二路H桥;
GND:与单片机共地。

1.H桥驱动逻辑

IN1 IN2 OUT1 OUT2 状态
0 0 Z Z 慢速运行/快速衰减
1 0 1 0 正转
0 1 0 1 反转
1 1 0 0 制动/慢速衰减

输入为相同电平电机停止,相异控制电机正反转。
场效应管(FET)的两种电流衰减方法-----快速衰减和慢速衰减,衰减指的是电流衰减的速度,并且与电机的停止速度成反比。

硬件相关知识参考这篇文章:https://blog.csdn.net/oXiaoXue123456789/article/details/110260343

2.PWM控制逻辑

IN1 IN2 状态
PWM 0 正转,快速衰减
PWM 1 反转,慢速衰减
1 PWM 正转,慢速衰减
0 PWM 反转,快速衰减

输入为一个低电平,一个PWM时,正反转、快衰减,占空比越大,转速越快。
输入为一个高电平,一个PWM时,正反转、慢衰减,占空比越小,转速越快。

三、主要程序:
motor.c

#include "motor.h"

/********************************************
* @brief      电机GPIO初始化
* @param      void
* @retval     void
*********************************************/
void Motor_Init(void)
{
  GPIO_InitTypeDef GPIO_InitStructure;
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
	
  GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7;//PB6 PB7作为方向控制
  GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
  GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
  GPIO_Init(GPIOB,&GPIO_InitStructure);

  GPIO_ResetBits(GPIOB, GPIO_Pin_6|GPIO_Pin_7);
}

pwm.c

#include "stm32f10x.h"
#include "pwm.h"

/********************************************
* @brief      TIM2 PWM初始化
* @param      arr
*             psc
* @retval     void
*********************************************/
void TIM2_PWM_Init(u16 arr, u16 psc)
{
  GPIO_InitTypeDef GPIO_InitStructure; //定义引脚初始化结构体
  TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStrue; //定义定时中断结构体	
  TIM_OCInitTypeDef TIM_OCInitTypeStrue; //定义PWM输出结构体
	
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //使能GPIOA时钟
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); //使能通用定时器2时钟
	
  GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1|GPIO_Pin_2;//定时器引脚PA1 CH2   PA2 CH3
  GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP; //复用推挽输出模式,A0引脚复用
  GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; //引脚输出速度为
  GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化引脚GPIO
	 
  TIM_TimeBaseInitStrue.TIM_Period=arr; //计数周期
  TIM_TimeBaseInitStrue.TIM_Prescaler=psc; //预分频系数
  TIM_TimeBaseInitStrue.TIM_CounterMode=TIM_CounterMode_Up; //向上计数模式
  TIM_TimeBaseInitStrue.TIM_ClockDivision=TIM_CKD_DIV1; //一般不使用,默认TIM_CKD_DIV1
  TIM_TimeBaseInit(TIM2, &TIM_TimeBaseInitStrue); //初始化定时器TIM2
	
  TIM_OCInitTypeStrue.TIM_OCMode=TIM_OCMode_PWM1; //PWM模式1,定时器计数小于 TIM_Pulse时,输出有效电平
  TIM_OCInitTypeStrue.TIM_OCPolarity=TIM_OCNPolarity_High; //输出有效电平为高电平
  TIM_OCInitTypeStrue.TIM_OutputState=TIM_OutputState_Enable; //使能PWM输出
  TIM_OCInitTypeStrue.TIM_Pulse = 0; //设置待装入捕获比较寄存器的脉冲值
  TIM_OC2Init(TIM2, &TIM_OCInitTypeStrue); //初始化定时器2通道2
  
  TIM_OCInitTypeStrue.TIM_OCMode=TIM_OCMode_PWM1;//PWM模式1,时器计数小于TIM_Puls输出有效电平
  TIM_OCInitTypeStrue.TIM_OCPolarity=TIM_OCNPolarity_High; //输出有效电平为高电平
  TIM_OCInitTypeStrue.TIM_OutputState=TIM_OutputState_Enable; //使能PWM输出
  TIM_OCInitTypeStrue.TIM_Pulse = 0; //设置待装入捕获比较寄存器的脉冲值
  TIM_OC3Init(TIM2, &TIM_OCInitTypeStrue); //初始化定时器2通道3

  TIM_OC2PreloadConfig(TIM2, TIM_OCPreload_Disable); //CH2预装载使能
  TIM_OC3PreloadConfig(TIM2, TIM_OCPreload_Disable); //CH3预装载使能
  TIM_ARRPreloadConfig(TIM2, ENABLE); //预装载使能
  TIM_Cmd(TIM2, ENABLE); //使能定时器TIM2
}

main.c

#include "stm32f10x.h"
#include "main.h"
#include "motor.h"
#include "pwm.h"


int main(void)
{
  
   TIM2_PWM_Init(99,0);//720khz
   Motor_Init();
   
   while(1)
  {
    /*IN1---1  IN2---PWM  正转 慢速衰减 占空比越小速度越快*/
    GPIO_SetBits(GPIOB, GPIO_Pin_6);
    TIM_SetCompare2(TIM2, 40);
    
    /*IN1---PWM  IN2---0 正转  快速衰减 占空比越大速度越快*/
    GPIO_ResetBits(GPIOB, GPIO_Pin_7);
    TIM_SetCompare3(TIM2, 90);

   }
}

四、现象总结
调速过程中PWM频率过低会产生异响,转速缓慢,增大频率后消失。目前只是对driver8833进行了一个初步的使用。

Driver8833电机驱动模块的使用(STM32为主控)文章来源地址https://www.toymoban.com/news/detail-429174.html

到了这里,关于Driver8833电机驱动模块的使用(STM32为主控)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Stm32-使用TB6612驱动电机及编码器测速

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

    2023年04月16日
    浏览(67)
  • K_A08_009 基于 STM32等单片机驱动TB6612模块按键控制直流电机正反转加减速启停

    目录 一、资源说明 二、基本参数         1、参数         2、引脚说明 三、驱动说明         TB6612模块驱动说明         对应程序:         ENA ENB输出PWM 四、部分代码说明         接线说明                 1、STC89C52RC+TB6612模块                 2、STM32F

    2024年02月15日
    浏览(35)
  • K_A08_005 基于 STM32等单片机驱动XY-160D模块按键控制直流电机正反转加减速启停

    目录 一、资源说明 二、基本参数 四、部分代码说明         接线说明                 1、STC89C52RC+XY-160D模块                  2、STM32F103C8T6+XY-160D模块 五、基础知识学习与相关资料下载 六、视频效果展示与程序资料获取 七、项目所有材料清单 八、注意事项 九

    2024年02月14日
    浏览(67)
  • stm32使用TB6600驱动器控制42BYGH型步进电机

    stm32使用TB6600驱动器控制42BYGH型步进电机 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 24V电源就是通过电路控制开关进行高速的导通于截至,将直流电转化为高频率的交流电提供给变压

    2024年02月11日
    浏览(44)
  • STM32自学笔记17-步进电机驱动项目-磁编码器的正常使用

    上节有这样一句话: 步进电机旋转角度和编码器输出数据之间的关系通常是非线性的。在校准过程中,可以通过采集一系列已知角度位置的数据点,并拟合出角度与编码器数据之间的关系。这个拟合可以使用曲线拟合算法或其他数学方法来实现。通过拟合,可以建立编码器输

    2024年02月16日
    浏览(46)
  • ESP32设备驱动-步进电机A4988驱动模块

    在本文中,我们将介绍如何通过ESP32芯片驱动A4988 步进电机驱动器模块。 A4988 驱动器模块用于以相对简单的方式控制步进电机。 仅使用 ESP32 和 A4988 驱动模块的两个引脚,我们就可以控制步进电机的旋转速度和旋转方向。 步进电机是直流无刷同步电机。 它们以预定义值的离

    2024年02月13日
    浏览(36)
  • 【STM32篇】4988驱动步进电机

    本文介绍的步进电机驱动为毕设所用,学习时也借鉴了其他博主和商家的资料,介绍的都很详细。但对于刚入门的友友萌来说,可能还会存在的一些不解。而我就是被卡在驱动电源上。下文为我对4988驱动的一些理解,希望能帮助到刚学习步进电机的朋友。 4988驱动IC价格便宜

    2024年02月01日
    浏览(67)
  • 基于STM32的步进电机驱动设计

    程序源码提取链接放置文章底部,自行提取即可。 采用STM32驱动28BYJ4步进电机,实现正转反转,完成角度调整。步进电机是一种将电脉冲转化为角位移的执行机构。当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动------一个固定的角度(及步进角)。可以

    2024年02月02日
    浏览(54)
  • stm32+TB6612驱动直流电机

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

    2024年02月15日
    浏览(45)
  • 【STM32】实战3.1—用STM32与TB6600驱动器驱动42步进电机(一)

    目录 0 参考资料出处 1 实验预期效果 2 硬件学习 2.1 TB6600驱动器  2.1.1 通过拨码开关设定细分与电流 2.1.2 共阴共阳接线法 2.2 开关电源(AC转DC变压器) 电源线 2.3 42步进电机 2.3.1 基本知识 2.3.2 转速细分控制 2.3.3 满步、半步、微步驱动原理 3 软件配置与硬件接线 3.1 STM32CubeM

    2024年02月02日
    浏览(51)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包