一、硬件

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为主控)的更多相关文章

  1. 014_STM32程序移植之_L298N电机驱动模块

    更改注意: STM32程序移植之L298N电机驱动模块 引脚连接图 STM32引脚 L298N引脚 功能 PA6 ENA 马达A的PWM PA7 ENB 马达B的PWM PA2 IN1 控制马达A P ...

  2. TB6612FNG电机驱动模块的简单使用

    TB6612FNG电机驱动模块的简单使用: 文 小波 QQ463431476 博客 http://www.cnblogs.com/xiaobo-Linux/

  3. TB6612FNG电机驱动模块

    TB6612FNG电机驱动模块 模块原理图 模块的使用 TB6612是双驱动,也就是可以驱动两个电机 下面分别是控制两个电机的IO口 STBY口接单片机的IO口清零电机全部停止, 置1通过AIN1 A ...

  4. 【NetDIY智能主控】开发计划

    经过一个轮回,硬件开发.硬件创业又被推到了历史的前台. 面向低端.初级的硬件爱好者,以Arduino和81单片开发板为核心的开源硬件越来越深入人心,参与的人群越来越多,相关硬件和周边模块也越来越便宜. ...

  5. 增量式PID的stm32实现(转)

    源:增量式PID的stm32实现,整定过程 首先说说增量式PID的公式,这个关系到MCU算法公式的书写,实际上两个公式的写法是同一个公式变换来得,不同的是系数的差异. 资料上比较多的是: 还有一种是: ...

  6. GL-inet路由器当主控制作WIFI视频小车

    以前也用单片机做过WIFI小车,但是单片机没有自带WIFI,仍然需要用到小路由器作为图传和控制信号传输.既然肯定要用到路由器,那何不直接用路由器作为主控呢,这样就省掉了单片机.这次作为主控的GL-in ...

  7. stm32智能小车之路之小车启动

           首先.安装完小车后最激动的还是想让他跑动,那么就開始吧.写个简单的程序測试下电机是否正常.打开keil软件新建一个project,详细简历keilproject不会的请百度.或者call ...

  8. TPYBoard V102:能跑Python的stm32开发板

    近来micropython语言做硬件编程很火,随之而来的就开始带动着支持micropython语言编程的开发板也开始火的发烫,今天小编就来和大家介绍一款很经典的micropython开发板-TPYBo ...

  9. 实现硬件PWM控制电机旋转和通过编码器计算所转圈数的简单例程

    该例程所用的硬件设备: 直流电机驱动模块YYH-LWZ: H桥 大功率 正反转 刹车 PWM 调速 5/12/24V 12V直流减速电机JGB37-520B:ASLONG JGB37-520B编码器减 ...

  10. STM32 串口接收大量数据导致死机

    http://blog.csdn.net/origin333/article/details/49992383 以下文章出自上面的链接.感谢原创作者的分享. 在一项目中,使用STM32作为主控,程序运 ...

随机推荐

  1. 2021SWPUCTF-WEB(二)

    ez_unserialize ​ 不知道在哪,御剑扫叭 ​ 有一个robots.txt ​ ​ 一道反序列化好像是 分析代码应该是admin=admin.passwd=ctf即可输出flag < ...

  2. python之自动化连连看脚本-第一关不动-小记

    (如想转载,请联系博主或贴上本博地址) 仅供学习python之用,勿用做商业用途.运行环境为1920*1080屏幕,python3.7,win7,谷歌浏览器版本 75.0.3770.100. 参考ht ...

  3. sql Alias别名

    sql语句中where.group by.having.order by 是否可以使用别名 1.在mysql中,group by.order by中可以使用别名:where中不能使用别名,(如果别名来 ...

  4. 不使用setTimeout的延迟执行

    function sleep(ms){ var time = new Date(); time.setTime(time.getTime() + ms); while(new Date().getTi ...

  5. ImageUtils excel 中 emf 转图片(解决图片上部分显示不全问题)图片转文字

    excel 中ActiveX 工具 中的textbox  ,以及公式 解析后为emf 图片, emf 转图片(解决图片上部分显示不全问题) 图片转文字 /*********************** ...

  6. Python练习--简单习题(也是一看就能够写出来的代码)

    Python计算列表数字的和 数字范围内的所有偶数(append) 移除列表中的多个元素(remove) 如何实现对列表的去重 如何对简单列表进行排序 Python实现学生的排序11)

  7. 万字血书Vue—Vue语法

    模板语法 插值语法 Mustache插值采用{{ }},用于解析标签体内容,将Vue实例中的数据插入DOM中 <h1>Hello {{name}}</h1> 指令语法 指令用于 ...

  8. 声网 X 远程超声:实时音视频解决基层“看病难” 推动医疗资源均衡化

    实时互联网像触角一样,通过情景的共享延伸开来,链接着我们彼此的线下.线上生活,形成一张不可分割的网络.随着社交直播.在线教育.视频会议成为大众生活不可或缺的一部分的同时,智能手表.智能作业灯.视频双录 ...

  9. jmeter关于常用取样器的设置

      常用创建操作   1.线程组:测试计划(右键)-->线程(用户)-->线程组   2.http请求:线程组(右键)-->取样器-->http请求   3.察看结果树:线程组 ...

  10. Etherscan本地多文件开源(VScode)

    项目创建 创建文件夹  mkdir Duckereum ​ cdDuckereum 添加nodejs配置  npm init -y 安装依赖添加  npm install -D hardhat npm ...