FOC学习-硬件版
1.引言
从大一下学期开始接触Benjamin的VESC,复刻了七八个版本才成功,硬件懵懵懂懂,软件一窍不通,希望通过写这篇文章彻底弄懂VESC的硬件。

2.原理图模块解读
单片机控制电路
STM32大致可以分为三个部分:

ADC采样:PA0/1/2对三相电压进行采样,PC0/1/2/3对三相电流和总电压进行采样
驱动DRV8301:PA8/9/10、PB13/14/15输出PWM信号驱动DRV8301,SPI3与DRV8301进行通信读取状态,PB5接EN_GATE选择是否启用栅极驱动和采样电流放大器,PB7接收DRV的FALUT数据
外设:两个LED显示状态,一个霍尔接口,一个3508的编码器接口,一个6020的编码器接口,一个CAN接口,Benjamin版本还有IMU、无线调试模块,比赛用处较小就删去了
驱动芯片
DRV8301大致可以分成四个部分:

电源部分:DRV8301内置一个BUCK降压电路TPS54160,将24V降到5V
单片机通信部分:DRV8301通过SPI和单片机通信,用于向上位机报告 DRV8301 状态及故障
单片机PWM输入部分:INH_A/B/C、INL_A/B/C。这6个引脚控制GH_A/B/C、GL_A/B/C驱动栅极输出

MOS驱动部分:GH_A/B/C、GL_A/B/C、SH_A/B/C、SL_A/B/C。GH_A/B/C接上管栅极,GL_A/B/C接下管栅极,SH_A/B/C接上管源极,SL_A/B/C接下管源极。
看到一篇华南理工博主自制无刷电机驱动器的博客,他把驱动芯片换成了FD6288Q,确实可以减小不少面积,只需要添加两个降压模块,也很不错,有机会尝试下。
电流检测
使用3个AD8418测三相电流,AD8418检测电流的原理是电流通过采样电阻会产生压降,AD8418将这个压降通过内部的运算放大器放大然后输出,输出的这三个电压通过一个RC滤波器输入到单片机的ADC引脚进行采集。

MOS驱动电路
在电调上MOS的作用就是开关。MOS分为NMOS和PMOS,MOS有三个极;S(源极)、G(栅极)、D(漏级)。
NMOS的导通条件是Vgs>Vgs(th),也就是栅极电压高于源极电压一定程度,此时SD导通,电流从漏极流向源极
PMOS的导通条件是Vgs<Vgs(th),也就是栅极电压低于源极电压一定程度,此时SD导通,电流从源极流向漏极
ESC上的MOS都是NMOS,分为上管和下管,上管和下管一共六个MOS,MOS的栅极接到驱动芯片DRV8301,由DRV8301控制MOS开关,DRV8301芯片手册上栅极驱动电压在9.5V ~ 11.5V,MOS管是电压控制器件,只需要控制栅极的电压超过其开启阈值电压即可,这里栅极串联了一个4.7R的电阻,这个电阻有保护MOS、减缓米勒效应的作用。

MOS驱动电路有一个很重要的参数——死区时间,驱动芯片给栅极传输的PWM信号,而MOS在硬件上不可避免会出现米勒平台,实际上MOS的每个极间是存在电容的,存在电容就会有充放电现象,
其他
CAN通信
很普通的CAN电路,使用用TJA1050CAN收发器芯片。
编码器 传感器接口
根据比赛需求,外接DJI3508编码器接口、DJI2006编码器接口、HALL接口
3.PCB布局
电调的布局和走线是有讲究的,不是简单的把所有线连起来就行,主要讲驱动电路和电流检测电路布局走线需要注意的点
驱动电路
控制六个M
电流检测电路
散热
一般板子越大散热性能越好,可以在板子空的地方打地孔和开窗增加散热
4.结语
Benjamin的VESC6原理图和固件都是开源的,只有PCB不开源,而不同的PCB布局和走线却能直接导致电调能否使用,可能就是硬件和软件的适配问题,个人认为修改软件比修改硬件消耗的时间和金钱成本更低,但笔者不懂软件,只能在硬件上硬磕,磕了一年多也算是找到一点门路了,希望这篇文章能对学弟学妹在这方面的学习有帮助 ^ - ^