一.硬件
基本兼容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桥电路基础知识
从上图可看出,此电机驱动电路由4个NMOS管构成,形如H型,故名全H桥电路。通过控制4个MOS管的导通与截止达到对中间电机的不同控制效果。NMOS管的栅极为高电平时导通,低电平时截止。
当Q1、Q4的栅极为高电平,Q2、Q3为低电平时,Q1,Q4导通,如图所示,电机正向旋转。
二.接线
第一种DRV8833驱动模块
DRV8833的的用法
DRV8833是双驱动,也就是可以驱动两个电机 下面分别是控制两个电机的IO口
STBY口,接单片机的IO,清零电机全部停止,
置1通过AIN1 AIN2, BIN1,BIN2来控制正反转
VM 接12V以内电源
GND接地
第二种DRV8833驱动模块
ULT低电平为睡眠模式(需要断开模块后面的J2短接焊点)
OUT1,0UT2为1路H桥,相对应控制为IN1,IN2.
OUT3,0UT4为第2路H桥,相对应控制为IN3,IN4.
EEP为保护输出,默认不用。
VCC为电压输入3至10V.
GND接地。
TB6612模块
TB6612模块有单独的PWM接口的文章来源:https://www.toymoban.com/news/detail-782361.html
用STBY 控制小车的启动还是停止
AIN1和AIN2控制电机的正转或反转
文章来源地址https://www.toymoban.com/news/detail-782361.html
二.代码
/*******************************************************************************
Copyright: 2022
File name: driver_dc_brush_motor.c
Description: 直流电机驱动文件
Author: 如图所示z
Version: v1.0
Date: 20220707
History: 20220707: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);
}
到了这里,关于智能小车 - DRV8833电机驱动模块的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!