STorM32 BGC三轴云台控制板电机驱动电路设计(驱动芯片DRV8313)

  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.315ms,黄色曲线表示高压输出端口信号,蓝色曲线表示低压输入端口信号。

  4  总结

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

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

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

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

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

  2019.12.17  周二   于厦门

原文地址:https://www.cnblogs.com/ningmeng484/p/12056935.html

时间: 2024-10-04 00:35:14

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

张高兴的 Windows 10 IoT 开发笔记:三轴数字罗盘 HMC5883L

原文:张高兴的 Windows 10 IoT 开发笔记:三轴数字罗盘 HMC5883L 注意,数据不包含校验,准确的来说我不知道怎么校验,但方向看起来差不多是对的... GitHub:https://github.com/ZhangGaoxing/windows-iot-demo/tree/master/HMC5883L

基于STM32的三轴数字罗盘HMC5883L模块的测试

最近买了个数字罗盘模块,调通后发现很不错,非常灵敏,测试的时候精度在1°以内.连续测量模式下,最快测量.输出速率可达75hz,模块每次测量完毕并将数据更新至寄存器后,其DRDY引脚便产生一个低电平脉冲(可以配置一个外部中断捕获DRDY引脚的下降沿,并在中断服务程序中读取数据),在STM32中可以设置一个下降沿触发的外部中断,并在中断服务程序中调用角度数据读取函数.以下为操作该模块的主要步骤. 一.IIC协议相关操作(单片机作为主机控制时钟线) 宏定义: //这里用到了STM32的位带区操作,方便

三轴加速度传感器原理及应用

三轴加速度传感器原理 目前的加速度传感器有多种实现方式,主要可分为压电式.电容式及热感应式三种,这三种技术各有其优缺点.以电容式3轴加速度计的技术原理为例.电容式加速度计能够感测不同方向的加速度或振动等运动状况.其主要为利用硅的机械性质设计出的可移动机构:由于加速度使得机械悬臂与两个电极之间的距离发生变化,从而改变了两个电容的参数.通过集成的开关电容放大电路量测电容参数的变化,形成了与加速度成正比的电压输出.因此3轴加速度传感器必然包含一个单纯的机械性MEMS传感器和一枚ASIC接口芯片两部分,

android 三轴加速度传感器【转】

一.手机中常用的传感器 在Android2.3 gingerbread系统中,google提供了11种传感器供应用层使用,具体如下:(Sensor类) #define SENSOR_TYPE_ACCELEROMETER 1 //加速度#define SENSOR_TYPE_MAGNETIC_FIELD 2 //磁力#define SENSOR_TYPE_ORIENTATION 3 //方向#define SENSOR_TYPE_GYROSCOPE 4 //陀螺仪#define SENSOR_TY

Arduino I2C + 三轴加速度计ADXL345

ADXL345是ADI公司生产的三轴数字加速度计芯片,与ST的LIS3DH功能接近.主要特性有: 工作电压:2.0 ~ 3.6V 功耗:待机功耗0.1μA:工作时与数据输出频率(ODR)有关,如ODR<10 Hz时30μA 接口:I2C:三线/四线制SPI 分辨率:可选择,最大13-bit 内置FIFO single tap/double tap检测 自由落体检测 两个可编程中断输出脚 封装:3 x 5 x 1 mm LGA 管脚定义 与Arduino的连接 用工作于3.3V/8MHz版本的Ar

【翻译】利用加速度求解位置的算法——三轴传感器

摘要 此文档描述并使用MMA7260QT三轴加速计和低功耗的9S08QG8八位单片机实现求解位置的算法 . 在今天先进的电子市场,有不少增加了许多特性和智能的多功能的产品.定位和游戏只是得益于获取到的位置信息的一部分市场.一个获取这种信息的可选方案是通过使用惯性传感器.从这些传感器中取得的信号需要进行一些处理,因为在加速度和位置之间没有一种直接转换. 为了获得位置,需要对加速度进行二次积分.本文介绍一种简单的算法实现加速度的二重积分.为了获取加速度的二重积分,一个简单的积分要进行两次,因为这样也

我的嵌入式Qt开发第一课——基于BBB和hmc5843三轴电子罗盘

几次想照着课本系统地学习Qt,但我发现还是有详细问题驱动时学习比較快. 于是我给自己设定了这个任务: 读取HMC5843的三轴磁场强度值,计算出角度,并把角度用直观形式显示在图形界面上. 这里面涉及到一些问题,接下来就用问答的形式记录一下. Q1: 搭建Ubuntu-BBB的Qt交叉编译环境.配置触摸屏: A1: http://blog.csdn.net/wyt2013/article/details/18549415 Q2: 去掉Qt界面的标题栏 A2: 在mainwindow.cpp中Mai

Atmega16驱动三轴加速度传感器MMA7455

最近做一个设计G-Sense的设备,需要一个三轴加速度传感器,最终选择飞思卡尔的MMA7455,因为看起来似乎比博士的三轴加速度芯片简单一些,哈哈.原本是准备应用在ARM上的,首先在比较熟悉的AVR单片机的环境下做个测试. 来个MMA7455模块的近照: 考虑到7455工作在3.3V,所以用宽电压工作的Atmega16L,这样就不存在电压冲突的问题.电路图参考7455的Datasheet: 在这里,中断INT1和INT2我都没有用,ACC_CS接3.3采用I2C模式,IADDR0接3.3,设置7

【Delphi】如何在三轴加速器的频谱分析中使用FFT(快速傅里叶变换)算法

关于傅里叶变换的作用,网上说的太过学术化,且都在说原理,已经如何编码实现,可能很多人有个模糊影响,在人工智能,图像识别,运动分析,机器学习等中,频谱分析成为了必备的手段,可将离散信号量转换为数字信息进行归类分析. 今天这里将的不是如何实现,而是如何使用傅里叶变换 但频谱分析中,涉及到的信号处理知识对大部分软件开发的人来说,太过于晦涩难懂,傅里叶变换,拉普拉斯,卷积,模相,实数,虚数,复数,三角函数等等,已经能让软件工程师望而却步,造成懂知识的人无法开发,懂开发的人无法分析,而同时具备两种技能的人