智能小车 – DRV8833电机驱动模块

智能小车 – DRV8833电机驱动模块DRV8833PWM 驱动直流电机替代 TB6612 芯片 drv8833

大家好,欢迎来到IT知识分享网。

一.硬件

在这里插入图片描述在这里插入图片描述
基本兼容TB6612模块管脚,可驱动1.5A以下的直流电机和4线步进电机。

在这里插入图片描述)

芯片中共有两个全H桥。因此最多可以同时驱动两个直流电机或一个步进电机。(如果将4个电机中两个两个正负极相接,一个芯片也可带动4个电机)

管脚说明:
ANI1:AO1的逻辑输入控制端口,电平0-5V。
AIN2:AO2的逻辑输入控制端口,电平0-5V。
BNI1:BO1的逻辑输入控制端口,电平0-5V。
BIN2:BO2的逻辑输入控制端口,电平0-5V。
AO1、AO2为1路H桥输出端口,接一个直流电机的两个脚。
BO1、BO2为2路H桥输出端口,接另一个外直接电机的两个脚。
GND:接地。
VM:芯片和电机供电脚,电压范围2.7 V – 10.8 V。
STBY:接地或悬空芯片不工作,无输出,接5V工作;电平0-5V。
NC:空脚









二.全H桥电路基础知识

在这里插入图片描述

二.接线

第一种DRV8833驱动模块
在这里插入图片描述

DRV8833的的用法
DRV8833是双驱动,也就是可以驱动两个电机 下面分别是控制两个电机的IO口
STBY口,接单片机的IO,清零电机全部停止,
置1通过AIN1 AIN2, BIN1,BIN2来控制正反转
VM 接12V以内电源
GND接地




第二种DRV8833驱动模块
在这里插入图片描述

TB6612模块

TB6612模块有单独的PWM接口的

在这里插入图片描述
在这里插入图片描述
STBY 控制小车的启动还是停止
AIN1和AIN2控制电机的正转或反转
在这里插入图片描述



二.代码

/* Copyright: 2022 File name: driver_dc_brush_motor.c Description: 直流电机驱动文件 Author: 如图所示z Version: v1.0 Date: History: :v1.0:初版 */ #include "driver_dc_brush_motor.h" unsigned int n = 0; /* Function: DC_Brush_Motor_Configuration Description: 直流电机PWM配置 Input: 无 Output: 无 Return: 无 */ void DC_Brush_Motor_Configuration(void) { 
    GPIO_InitTypeDef GPIO_InitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure; /*开启端口时钟*/ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB, ENABLE); /*开启定时器时钟*/ RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2 | RCC_APB1Periph_TIM4, ENABLE); //PA1:PWM GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOA, &GPIO_InitStructure); TIM_TimeBaseStructure.TIM_Period = 19999; //小车调速范围 TIM_TimeBaseStructure.TIM_Prescaler = 71; //71+1= 72分频 //TIM_TimeBaseStructure.TIM_ClockDivision = 0x0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OC2Init(TIM2, & TIM_OCInitStructure); //PB6 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOB, &GPIO_InitStructure); TIM_TimeBaseStructure.TIM_Period = 19999; TIM_TimeBaseStructure.TIM_Prescaler = 71; //71+1= 72分频 //TIM_TimeBaseStructure.TIM_ClockDivision = 0x0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure); TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OC1Init(TIM4, & TIM_OCInitStructure); TIM_SetCompare2(TIM2, 5000); //占空比 TIM_SetCompare1(TIM4, 5000); //占空比 TIM_Cmd(TIM2, ENABLE); TIM_Cmd(TIM4, ENABLE); //PA2:AIN1 PA3:AIN2 PA11:STBY GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_11; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIOA, &GPIO_InitStructure); // 另一侧的轮子PB7:BIN1 PB8:BIN2 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_8; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIOB, &GPIO_InitStructure); } 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/130372.html

(0)
上一篇 2025-08-15 20:10
下一篇 2025-08-15 20:15

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信