1  序言

  相信对云台有兴趣的小伙伴对STorM32 BGC这块云台控制板并不陌生,虽说这块控制板的软件已经不再开源,但是在GitHub上依旧可以找到两三个版本的代码,而硬件呢我们也可以从Olliw(BGC的作者)的个人网站上找到,我手头上目前由于两个版本的电路图。而这两个电路中的电机驱动电路所使用的控制芯片的型号均为TC4452DF N08,对于我们所购买到的驱动板,其上面所使用的控制芯片为DRV8313。Olliw的电路使用了9块芯片,而使用DRV8313则只需要三片即可。如果想要自己设计主板的话要使用DRV8313就是一件比较麻烦的事情,因为没有参考电路是无从下手的,并且网上也找不到任何相关的资料和教程。我在研究驱动电路期间也是历经一番波折,终于是弄明白了这块电路。

  2  DRV8313芯片介绍

  在介绍外围电路之前,先说明一下DRV8313这块芯片,这款芯片的生产厂家是TI(Texas Instruments),TI的芯片有一个很突出的特点,那就是网上的资料少。

  拿到一块芯片想要知道它怎么使用,最好的办法就是去官网找到它的芯片手册。 -> DRV8313官方手册

  在这里我将其翻译成中文,有需要的小伙伴可以去我自己搭建的论坛下载,下载前需要注册一个论坛账号,注册完登陆即可下载。 -> DRV8313中文参考手册

  在参考手册里可以获取更详细的信息,在此我就不再抄一遍了。

  2.1  DRV8313外围电路设计思路探究

  我相信这一小节也是各位小伙伴最关心的一点了,到底外围电路怎么设计才能有效的驱动电机旋转?我们从官方手册中找到推荐电路,如图2.1-1所示。

Fig. 2.1-1 DRV8313参考外围电路

  拿到这个电路之后,有些关键的电路该图也已经给出,其内部包含了三个半桥驱动电路,半桥里面有一个OCP,它是什么意思呢?它是指自动输入补偿的过流保护电路(我也是百度的),说白了就是防止过流用的。一个桥臂由两个MOS管组成,上桥臂接VM(VM是12V),下桥臂接地(注意:这里一定要接地),重点是左边这个小白框(上面标记Predriver)里面的电路,可惜,该图并没有将它绘制出来。这块逻辑电路的上边有一个Charge Pump,这个叫做电荷泵,类似于一个微型变压器,用来调压用的(主要是降压),紧接着看左边电路,有一个箭头指向这个方框,上面标记VM,然后一个箭头指出去,上面标记V3P3OUT,这是什么意思呢?其实也可以把这块电路理解成一个降压器,VM(12V)电压输入,输出3.3V电压。没错,芯片自带3.3V电压输出,也就是说这款芯片只需要一个12V的直流电源输出即可,它自身可以输出3.3V电压,无需外界在输入电压。那么这个3.3V电压是做什么用的呢?我们接着往下看,下面有一个很长的长方形,这是低压端(单片机所控制的)的控制逻辑电路,有三个低压信号输入端子,三个信号使能端子(高电平使能输入,即该引脚为高电平时,对应的输入端有效),下面有一个RESET和SLEEP端子,分别是TI设计的重置和休眠引脚端口。低电平进入休眠模式,低电平复位输入,即要使芯片正常工作,必须使这两个引脚处于高电平状态,这样我们就回答了上面那个问题。3.3V电压输出可以接到这些引脚上,从而让芯片能够正常工作。

  2.2  DRV8313外围电路设计

  弄清楚电路的设计思路之后,我们进入电路设计环节,逼逼这么多,这才是各位小伙伴最最关心的问题。首先,我们要知道的是这款芯片有三种封装,下面我就HTSOP | 28(封装名称 | 引脚数目)封装来说明这个电路设计。芯片端口标号如图2.2-1所示。

Fig. 2.2-1  DRV8313 HTSOP | 28封装端口标号示意图

  经过多次测试,我最终得到的电路设计图。

  那么这个电路设计的对不对了?邓爷爷说:“实践是检验真理的唯一标准”,做一块板子测一下就知道对不对。于是乎我继续瞎折腾,按照我设计的电路自己绘制了一块板子,如图2.2-2所示。

Fig. 2.2-2  Altium Desiner设计电路图

  趁着这几天嘉里创做活动赶紧送去打样,拿到板子后有迫不及待地拿起电烙铁把元器件焊接上去测试。

Fig. 2.2-3  驱动电路实物实物图

  拿起我的最小系统,编写了一段小测试程序,烧写入开发板系统。

Fig. 2.2-4  实物连接图

  3  测试结果

  拿起示波器,监测输入输出端口的电平信号,先监测IN1(信号输入引脚1)和OUT1(信号输出引脚1)的信号如图3.1-1所示。

  

Fig. 3.1-1 端口输入输出波形图

  可以明显看出OUT1信号是跟随IN1信号,有所区别的是OUT2信号(黄色曲线信号)的峰峰值大约为24V,而IN1信号(蓝色曲线信号)大约为4V。这说明输出端信号有效放大了输入端引脚的信号,这样我们在用单片机控制信号输出实际上就是用这个驱动芯片做一个电压的放大。我们操作低压端子就相当于在操作电机。然而实际上,我们将信号频率阈值调小,其实这两种信号是有时延的,我的示波器可以非常方便的做到这一点。

Fig. 3.1-2  输入输出时延数测量

  可以大致算出输入输出延时为0.315us,黄色曲线表示高压输出端口信号,蓝色曲线表示低压输入端口信号。

  4  总结

  1、基于DRV8313芯片设计的无刷电机控制电路实际上可以理解为一个电压放大电路,很好理解,我们不可能用单片机的引脚直接去驱动电机,电机启动所需要的电流是非常大了,而单片机的引脚是无法提供的。

  2、DRV8313的功能非常齐全,它只需要一个12V直流电源即可工作,内部包含电荷泵,能够输出3.3V电源,供给它的其他引脚使用,非常方便,也就是它无需外接3.3V电源供电。

  3、内部包含三个半桥电路,上桥臂接VM(12V电源),下桥臂接GND,下桥臂可接下拉电阻(注意:这里一定要接地,我的第一次制板失败原因就是这里没有接地),所以说把芯片手册看懂是多么重要,至少可以说看懂芯片手册能帮你省下好多钱呢!!!

  4、无刷电机的控制还有很多很多的内容,这仅仅是万里长征第一步。

  最后,如果觉得我的文章对你有帮助,别忘了左下角的推荐点一下哟,谢谢!

  2019.12.17  周二   于厦门

STorM32 BGC三轴云台控制板电机驱动电路设计(驱动芯片DRV8313)的更多相关文章

  1. STorM32 BGC三轴增稳云台驱动下载

    STorM32 BGC是一种硬件开源.软件闭源的三轴稳定云台控制项目.云台在我们生活中是越来越常见,我们手机拍照用的手持云台,无人机上挂载摄像机的机载隔振云台.我们在电影<流浪地球>里面那 ...

  2. 开源三轴云台EVVGC(simple BGC)分析

    一. 主程序分析 主程序结构清晰,流程如图所示,下面将对每个部分做详细分析 二. 系统初始化 系统初始化部分的流程如上图所示,下面对每部分做具体分析 1. 时钟初始化 该部分主要是使能DWT,用DWT ...

  3. [算法][三轴、六轴、九轴传感器算法分析] 1、分享一个三轴加速计matlab动态可视化脚本

    一.有啥用 这里用的是LIS3DH三轴加速计,输出为X.Y.Z轴的加速度,通过串口连接电脑,电脑里运行matlab脚本通过串口实时获取数据并做可视化显示. 这里虽然是针对LIS3DH的,其实稍作修改即 ...

  4. Arduino I2C + 三轴加速度计LIS3DH

    LIS3DH是ST公司生产的MEMS三轴加速度计芯片,实现运动传感的功能.主要特性有: 宽工作电压范围:1.71 ~ 3.6V 功耗:低功耗模式2μA:正常工作模式.ODR = 50Hz时功耗11μA ...

  5. 单片机实验: 三轴磁场模块 GY-271

    最近买了一块三轴磁场模块进行实验 名称:HMC5883L模块(三轴磁场模块) 型号:GY-271 使用芯片:HMC5883L 供电电源:3-5v 通信方式:IIC通信协议 测量范围:±1.3-8 高斯 ...

  6. 利用Matlab生成一个网格化的三维三轴椭球面(生成直角坐标)

    代码很简单,a,b,c分别为椭球的三轴轴长,a=b=c时得到的是三维球面,a=b!=c时得到的是三维椭球面,a!=b且a!=c且b!=c时得到的是三维旋转椭球面 %生成一个笛卡尔坐标系下三轴椭球表面的 ...

  7. 玩转X-CTR100 l STM32F4 l HMC5983/HMC5883L三轴磁力计传感器

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      本文介绍X-CTR100控制器 扩展HMC ...

  8. Arduino I2C + 三轴加速度计ADXL345

    ADXL345是ADI公司生产的三轴数字加速度计芯片,与ST的LIS3DH功能接近.主要特性有: 工作电压:2.0 ~ 3.6V 功耗:待机功耗0.1μA:工作时与数据输出频率(ODR)有关,如ODR ...

  9. 【传感器】BMA253 数字,三轴加速度传感器

    参考文档:BMA253E DataSheet 参考文档链接 密码:9new BMA253 数字,三轴加速度传感器 关键特性: 关键特性   封装方式 LGA封装(12pins),长*宽(2mm*2mm ...

随机推荐

  1. css3自适应布局单位vw,vh详解

    视口单位(Viewport units) 什么是视口? 在桌面端,视口指的是在桌面端,指的是浏览器的可视区域:而在移动端,它涉及3个视口:Layout Viewport(布局视口),Visual Vi ...

  2. MySQL基于报错注入1

    0x1 判断注入点: http://www.xxxx.ro/s.php?id=1' 那么尝试闭合下单引号 http://www.xxxx.ro/s.php?id=1' --+ 0x2 枚举下表的列 h ...

  3. 版本管理·玩转git(日志查看与版本切换)

    如果你想更清晰地学习git,你必须要了解3个重要区域. 工作区:即开发者的工作目录 暂存区:修改已被记录,但尚未录入版本库的区域 版本库:存储变化日志及版本信息 当你在工作区进行开发工作时,git会记 ...

  4. CodeForces - 1007A (思维+双指针)

    题意 https://vjudge.net/problem/CodeForces-1007A 对一个序列重排,使得新的数比原来的数大对应的位置个数最多. 思路 举个栗子,比如1 2 2 3 3 3 3 ...

  5. Flask request接口获取参数

    Flask request接口获取参数   request.form.get("key", type=str, default=None) 获取表单数据, request.args ...

  6. python语法区别

    python语法区别: 大小写敏感 (动态语言:python)变量不用声明 p.s: 静态语言(Java)必须声明变量 语句末尾可以不打分号 可以直接进行数学计算 复制.粘贴功能失效,粘贴到别的地方的 ...

  7. 三、排序算法总结一(冒泡排序,插入排序,选择排序)(C++版本)

    一.引言 对于各种排序算法也算是有了一定的了解,所以这里做一个总结. 二.冒泡排序法. 这是比较经典的排序算法,主要是通过内外两层的循环比较,使得乱序变为顺序. 下面是一个测试代码 #include ...

  8. jmeter BeanShell的几种使用方式

    jmeter的BeanShell Sampler,可以直接引用java代码,有下面3种方式: 1.直接输入java代码:2.导入java文件:3.导入class文件 BeanShell脚本访问变量主要 ...

  9. STP配置和选路规则

    1.用四台S3700交换机,2台PC机,组建网络拓扑 2.对mengyu-S1进行设置 (1)在交换机启用生成树(华为交换机默认启用MSTP),将交换机的STP模式更改为普通生成树STP: (2)配置 ...

  10. RabbitMQ的消息传输保障三个层级

    这里只简单介绍一下三个层级,笔记摘录自<RabbitMQ实战指南>朱忠华作者 消息可靠传输一般是业务系统接入消息中间件时候首要考虑的问题,一般消息中间件的消息传输保障分为三个层级 1  A ...