本文包含源代码、原理图、PCB、封装库、中英文PDF等资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
马达驱动电流环的设计,作为驱动器领域技术上的一个重点和难点一直困扰着很多工程师,今天让我们一起来揭开他的面纱。
对于一个马达来说,如果电流变大的话,可能造成的危害有两个:
1.电机本体本身会发热,会损坏;
2.我们驱动器的MOSFET会由于电流过大导致发热,甚至损坏。另外,我们这套系统使用电源或者电池供电的,电流变大的话,也就是功率变大了,这个时候提供能量的电源或者电池就会出现问题,或者出现异常保护。
因此,为了我们这样一个系统能够稳定的工作,我们就需要对电机的电流进行监控。
一般的,监控电流之后的保护措施有两种:
1.当检测到电流过大之后,我们就实行一个关断保护;
2.有的情况下,我们是不能关断保护的,比如说无人机,由于某种原因导致过流了,过流了之后如果进行关断的话,它就会摔下来,因此这个时候是不能进行关断的, 还要继续保持一定功率去工作。当然也不能过大功率去工作,这个时候就需要我们对它进行一个限功率输出,也叫恒功率输出。
那么恒功率的目的,也就是恒电流输出,也就是我们所说的“电流环”。对于一个电机来说,实际上它的“环”是有很多的,比如说有:电压环、转速环、位置环、电流环。我们这次和大家谈的主要是电流环,那么谈这个电流环的话,首先我们要和大家谈的是电机的电流如何进行一个采样。
电机电流的采样一般我们分两种形式:一种方式是我们直接从电源端采样,对于电源端采样,比如说像这个桥式电路,+15V是给电池供电的电压,我们把这样的一个电压叫做Vbus电压(如下图)。
这个Vbus电压实际上是由电源供过来的,我们可以在这个电压前面,我们串接一个很小的电阻,当然了,这个电路的网络就需要改动一下(如下图),而且R3如果做采样电阻的话,所以说它的电阻的就不能大,大的话,它会影响功率的输出,比如说我们可以用一个10Ω这样的电阻。当它流过电流之后,由于它有阻值,那么它两端就有一个电势差,我们测量这个电势差,然后它的电流等效成电势差除以一个10Ω的阻值,而R3两端的电压我们就可以通过一个运放进行采集。这种方式输出来的话,采集的是一个平均电流。
如果Vbus电压是高压的话,比如说几十伏以上。而我们的运放,它的输入 电压是不可能很高的,这样的话,运放就不能直接进行采集,就需要进行分压,或者进行一个隔离,比如说用一个高速光耦进行隔离,再进行采样,这样的话,也是一个比较不错的方法,但是它的成本会比较高。
我们还有一个方法:由于R3是放在Vbus端,它是属于电源端,它的电压比较高的话,运放它的成本就比较高,这样我们可以把检流电阻放在地端(如下图)。放在地端的话,它过来的就是一个低的电压。低的电压对于一个正常的运放来说,是在它的电气参数范围之内的,所以说这样就没有什么问题了。因此,通过一个这样的方式,我们可以进行一个采样。
理想情况下,我们是进行差分输入的,运放的两端一定要紧挨着这个检流电阻。而不能把这个地方直接接到地上,甚至在layout的时候把这个“地”接到其他地方去了,这样的话就会把干扰采集进来(如下图)。
因为在布局的时候,“1”点的地和“2”点的地其实是不同的(如下图)。理论上这两点的电位是相同的,但事实上,它是不相同的。原因很简单,这个电路是接马达的相线的,电流会很大,这样的一个大电流下来的话,在到达这个地上之后,这个地上必然会发生震荡。为什么有了大电流之后,“1”点和“2”点之间的地会不一致呢?我们可以设想一下,假设这是一个广大的湖面,在湖面很平静的情况下,这两点的水位是一样高的,我们在“2”点扔一个石头的话,这样的话,水面的就会产生涟漪,由于水面在高、低不断地晃动,那么这两点就不是同样的水位了。所以,我们需要在靠近检流电阻的地方进行采集,这样的话,即使存在高低波动的话,检流电阻的两端会同时变高或变地,但是检流电阻两端的电压差是不变的,这样的话,就由通过的电流决定了。当然,由于M6是高速开关的,所以R61需要是低ESL的电阻,一般是贴片电阻,一定要是低ESL的,如果感量太大的话,由于di/dt比较大,那么就会产生感抗,R61两端电压量出来就会比较高,但是事实上电压是没有那么高的,所以说这个地方对电阻的选型是有要求的。
如下图,R61采集过来的电压需要进行放大,为什么需要进行放大呢?首先,第一,这个检流电阻的阻值不能太大,如果阻值太大的话,假设有30A的电流流过,如果电阻为1Ω,那么电阻的功率为:30*30*1=90W,一般没有这样的电阻,即使有,成本也很贵。
所以说这个地方需要选择小电阻,当然了,这个地方需要根据电机和电流来进行选择。最好这个电阻的功率是正常的,比如说1206、1210、1811、2510、2512,最多到2512,其实2512就已经很贵了,要一块钱以上了。
由于电阻值取值比较小,所以流过电流之后电阻两端的电压差比较小,这个时候需要我们设计一个运算放大电路来进行放大。这个时候放大多少倍呢,实际上放大了1+51K/1K=52倍,其中R51和R54是用来进行阻抗匹配的。所以我原先一直说“源”、“ 回路”、“阻抗”,这个地方阻抗的作用是比较大的,如果阻抗不一样的话,这个地方放大之后的电压是飘的,不是真正想要的值。
如下图所示,R61两端的电压经过简单的差分放大之后进行输出,我们对R62后面的点进行分析,这个点得到的是放大的信号,那么放大多少呢?放大的这个信号是给我们的单片机的,对应的是单片机的AD采样口,单片机的采样口一般是3.3V居多,现在5V用的已经不多了,所以说最大电流放大之后对应的电压不能超过3.3V,因为超过3.3V的话,对于AD采样来说,已经超过它的最上限值了,所以就没有意义了。这样的话,要提前算好这个电机上的最大的电流是多少,这个电阻要选好,放大后不要超过3.3V,最好不要超过3V,这样测量出来后就比较准。
第二,我们要考虑运放,我们输入端的检流电阻R61,它的沿是比较陡的,如下图所示。
一般的运放,我们分高带宽和低带宽。如下图所示,运放的带宽比较高的话,它的输出沿是比较陡的,我们也将它称之为压摆率,如果压摆率比较小的话,它的输出是比较缓的,我们规定1s内上升的电压值为压摆率。很明显第1条红线1s内上升的电压值是比较高的,而第二条红线是比较低的。理想情况下,运放输出的斜率和前面R61上的斜率是相等的,所以运放的压摆率比较低的话,在对输入值进行采样的话,采样的值不是真正的值,而是被运放放慢了,所以我们要关注运放的压摆率问题。当然,如果你的信号是周期比较长的信号,你可以忽略,但是在马达控制的这个项目里,这个周期是不能忽略的,所以说压摆率是越高越好,这个就是我们对运放提出的要求。
在检流电阻这个地方还有一个问题:由于这里的地上会产生干扰,所以这个地方的干扰会耦合进运放里面,干扰耦合进来之后,进入运放之后就会放大,所以说测量出来的信号里面就会带有很多的干扰,这个干扰是我们不希望看到的。之前有说过,内阻越小,也就预示着电流越大,电流越大,周围的磁场也就越大,抗外在的干扰能力就越大,所以电流要偏大。运放目前有两种,一种是DMOS工艺,一种相当于是晶体管工艺。
如果前面的干扰比较大,你可以选择晶体管工艺的运放,因为晶体管工艺的运放,它的抗干扰能力要强一些,因为它有电流,属于流控流型。如果前面的干扰比较小的话,你可以选择DMOS工艺的运放,它的功耗比较低,功耗低的原因是MOSFET的内阻比较大,所以说它的抗干扰能力比较弱,这个也是运放本身我们需要注意的。
另外,运放定好了以后,我们还要注意R69的取值,我们不能取的很大,因为取的越大,电阻网络的阻值就比较大,电流就比较小,它就比较容易受到干扰,就容易把干扰耦合进来,然后会放大输出。实验证明,R69的取值最大不要超过300K,我们要求最大不要超过200K,否则在有干扰的情况下,它的输出就会带着干扰,所以不要大于200K,如果说放大一级后还是不够大怎么办,那就再加一级,甚至三级放大,也不要在一级上放大到无穷大。
经过放大之后的信号就送给MCU了,MCU根据放大后的电压值就可以判断目前的的电流是多大,一旦判断出这里的电流大了,它就要做一些保护措施,比如说关掉,这个是我们电机电流保护里面最常用的一种方法,直接把电流关掉。还有一种叫限功率,它不能关断,它只能限功率,例如之前说过的无人机。
对于限功率,在这里先定义一个值,比如说10A,这个10A是限制的了,不能超过10A,如果超过10A的话,就把它关掉,低于10A,就不管,这个叫削幅。如下图,如果电流在10A以下,就不管,但是一旦超过了,就把它削平。
这种方式去做的话,我们就需要对电流实时进行采样,我们看下面,对于三个桥臂来说,只有两个MOSFET导通。
当MOSFET导通时,电阻上才会有电流流过,当管子不导通时,就没有电流流过。所以,当有时候其中一路MOSFET不导通时,就采集不到值,因此需要对其它路进行采样。采集之后,就需要对它进行处理,如下图所示,这里是用硬件的方式进行设计的,实际上,更多的人是用软件进行处理的,我们视频里也会和大家详细讲解软件怎么样去做电流环、硬件如何去搭一个电流环,那么这里是用硬件去搭的。
实际上,基本的原理很简单,在我的PFC视频的第11部至第13部已经详细讲到,就是采用电流跟踪法,比它高了,就把它削掉,类似于一个比较器一样。我们可以用一个比较器,比较器的一端是把那3路电流合并之后送过来。
下面这幅图是整流,因为采集到的信号有些时候是正,有些时候是负,为什么会出现负呢,是因为有的时候会续流,由于电感的作用,电流会从下往上流,这个时候采集到的就是负压,对于一个运放来说,要想采集到负压,必须采用双电源供电。而我们这里是单电源供电,所以负压是采集不到的,那么该怎么做呢?我们就需要将其抬升,这里是采用偏置电阻,通过分压之后的7.5V进行抬升。
如下图所示,这里大致画一下它的意思,对于一个正常的信号来说,它只能看到0V以上的电压,0V以下的电压是看不到的。但是这里确实是有负压,而且续流过程中也有可能存在过流,那么如何将0V以下的进行处理呢?实际上将其抬升就可以,比如说原先存在0V以下的负压是被截止的,为0V,但是经过7.5V的抬升后,相对于7.5V来看为负压,但是相对于0V坐标轴来看,电压是正压,这样的话,负压也可以被采集进来。
抬升电压的好处是什么呢?可以方便的使用单电源供电的运放,因为现在单电源供电的运放是比较多的,双电源只在过去用的比较多。采用双电源运放是一个比较麻烦的事,因为需要去做负压电源,这样电路比较复杂,成本也比较高,所以说我们采用单电源这样的方案去做。
这样整流后的波形如下图,这样比较后的电压就可以进行处理了,用它进行比较,当它大于某个电压值的时候,就关闭,当它小于某个电压的时候,就不管。
如下图,合成之后的电压送到比较器的“+”端,这个电压反应的就是电流,这里是采用硬件电路来做的。刚才提到的为7.5V,具体情况需要自己来确定。假设现在限制的为2A,其中VR1和R83分压后的电压值等效为2A,那么合成之后的电压就和等效成2A的电压进行比较,如果它超过2A,那么比较器就输出为高,否则输出为低。那么输出高或者低时,如何进行一个电流的控制呢?
对于电机的电流的控制,实际上是用PWM来进行调速的,也就是PWM的占空比宽了或者窄了来反应速度的高和低。这样的话,我们分成前一个周期和下一个周期来看,如果前一个周期开的时间小了(占空比小),反应的电流也就小了,电流小的话,我们不管,但如果做电流精确控制的话,电流小的话,我们是需要管的,在下一个周期将占空比调大些,就是实时监控电流,但是我们这里关注的是“高”,如果上一个周期的电流超过了我的设定值,那么我们就将它关掉,等到下一个周期到来时,我们再做一次电流判断。
如果判断电流低了,没有超过的话,我们再继续去开通,但是如果判断电流依旧是超过的话,那么我就继续关断,也就是通过丢占空比的方式来实现。那么对于比较器的电路就比较容易理解了,通过比较器U4将采集到的电流(实际上是电压)和设定的电流(实际上是电压)进行比较,如果比它大,那么比较器输出高,对于CD4013来说,CLK为上升沿,把D处的电压送到Q端并进行锁存,而此时D端通过上拉电阻到+15V,所以Q端为高,当Q端为高时,通过MOS管的驱动电路将MOS管关断,电流就会下降,采用这种方式进行保护。
对于恒功率输出,需要对电路进行修改,如下图,RST接比较器输出,CLK接正常的PWM波,接输出,一旦过流了,比较器输出为高,RST输入为高,Q输出就为低,就为高。如果过流状态持续,下一个周期来临时,RST还是为高,那么Q还是为低,还是为高,除非RST为0(不过流),那么Q才为高,才为低,这样就实现了保护。
上面所说的电路方案是通过有位置搭建的,采用霍尔的方式,如下图,霍尔的信号通过多路选择开关,将三路霍尔信号转换成六路输出,六路信号通过与或门电路输出再送到CD4053模拟开关,再经过CD4081输出控制M1、M4、M3,进而控制MOS管的开通和关断,以上所说的是有位置的方波电路,当然还有其他的方案电路,比如有位置正弦波、无位置方波、无位置正弦波。
下面再给大家简单介绍一下无位置的三相马达电路,这个电路就复杂了些。
如下图所示,这是一个译码电路,马达转起来之后,需要将无霍尔转换成有霍尔,虚拟出一个霍尔,进而判断出它的位置,以及到下一项如何导通,根据当前的导通相序推出下一个导通相序。
下图的这个电路是抓取当前相线的反电动势,低转速时采用电流检测法来做,高转速时,则采用电压检测法来做。最后再将高速、低速这两项进行合成,合成之后进行锁相环跟踪,跟踪后面需要进行换向和位置的储存。
下面的这个电路是实现电机的强拖,拖到一定程度之后需要替换。
下面这个电路是实现负压,在低转速时需要用到负压。
下面的这个电路是实现的消隐,马达在每次换向之后都需要进行消隐,是不能采集的。
下面的电路是三相桥电路。
这个方案就是把软件做的工作给换成硬件搭建实现,所以说软硬件是不分家的
|