|
说起自制电调,真是一段痛苦又快乐的经历.大半年以前,在EDN上看到一个利用视觉暂留原理做的一个硬盘时钟,记得作者说了一句话:要是能把硬盘电机弄慢点就好了,不过貌似做电
机驱动比做这个时钟本身还要麻烦....
当时我也粗略的做了一个硬盘钟,也是感觉太快了,做颜色渐变的时候单片机有点繁忙,所以决定做一个电机驱动,那个时候我还真不知道无刷电机是个什么东西,GOOGLE了一会后发现
,确实比做时钟本身还麻烦..从那时起开始疯狂的搜资料,搜着搜着搜到四轴论坛来了,发现挺有意思的,也想弄一个玩,还是先从电调开始把.一开始也没怎么弄明白,反正人云亦云,
过零检测,换相....于是乎搭了个很简陋的电路,调试了一两天,总算是转起来了,但是我自己还是觉得挺窝囊的,都没弄清楚,转了又能怎么样呢,过零检测是否准确?换相是否准确?环
路是否稳定?启动是否小功率?低速是否能运行?.......问题太多了,连反电势的求差网络都是搬的别人的,自己还没计算清楚呢,这么下去不行,于是开始第二轮,下了十来个应用笔记
,包括ST,MICROCHIP,TI,SILABS,FREESCALE,SUNPLUS以及几个专利文献,决定先通读再说.....读了大概半年(我脑子运行慢,还爱玩...),中途也重新做了几个改版的电调,一直到现在
这个,算是能满足我个人的要求了,但肯定有很多人对电调的某一方面有自己独特的看法,因此我在这里抛个砖,希望有玉砸来
话说无图无真相,肯定有兄弟在想,这个楼主尽说废话,都不知道是不是做出东西来了,所以还是先上个图,也不至于让大家直接ALT+F4了.
用单面感光板自己腐蚀的,由于是单面板,元件也比较多,所以反面跳线很恐怖,就不展示了
![](http://cache.amobbs.com/bbs_upload782111/files_26/ourdev_533889.jpg)
(原文件名:电调照片.jpg)
先说反电势检测策略的问题
在两相通电的时候,这两相的端电压都在电源轨(VCC和GND)上,看不到反电势,因此要知道反电势就要看悬浮相的电压.而悬浮相的电压就是悬浮端与中性点的差分量.由于采用了PWM
调制,因此中性点是变化的,但我们很容易的想到用差分放大(比较器或者运放),正端接悬浮端,负端接中性点,这样无论中性点怎么跑,差分量是不会变的,但其实并不是这样的,来看
下面的分析
我们可以将中性点的状态分为三个
第一个,PWM ON态,这个时候中性点被偏置于VCC/2(为方便讨论,忽略了一些东西,比如场管上的压降,反电势,相电阻不平衡...)
第二个,续流态,根据PWM调制方式的不同(包括高边PWM,低边PWM,双边PWM,同步整流),中性点是多种多样的,我在
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=3869081&bbs_page_no=1&bbs_id=1025 这个帖子中有详细说明
第三个,PWM OFF态,也就是续流到0电流之后的状态,这个时候的中性点也是和PWM调制方式有关的,可以自行画图分析
通过上述分析,我们发现,在某些调制方式下的反电势共模信号被电源轨给斩了,在这些被斩的地方,不能想当然的认为差分信号是不变的,在实际中,比较器的输出也确实是很惨不忍睹的,相信自制电调的各位也很清楚
解决这个问题现在有两个方法
第一种,用低通滤波滤除,因为上述那些被斩的事件都是和PWM同频率的,因此构建一个截至频率大于反电势频率而小于PWM频率的低通滤波可以有效滤除.但是有很明显的缺点,低通滤波的传递是有相位移动的,反电势的相移会造成换相的不准确,这个相移的大小和RC时间常数以及反电势频率相关,因此通过提高PWM频率,进而可以提高截止频率点,使得RC时间常数可以减小,这样在反电势频率点的相移可以相应减少,当然,还可以根据时时计算来补偿这个相移.
第二种,采用同步PWM检测,上面也说过了,那些"被斩事件"都是和PWM一个频率的,因此可以选择只在一个PWM周期的某一个点进行检测,这样就直接避开了干扰,这种方法的优点是准确度高,但是检测准确度和PWM频率成正比,打个比方,假设一个换相周期(60度电角度)有10个周期的PWM,本来过零点应该在第5个PWM周期内,由于某些原因产生的+-1误差会使检测到的过零点在第4或者第6个PWM周期,也就是产生了60*1/10即+-6度电角度的误差,而如果PWM频率提高10倍,那么就是+-0.6电角度的误差
我本人采用的是第二种方法,我也相信大多数同志都喜欢第二种
再来说说PWM调制方式的问题
在低频率的PWM的时候,栅极驱动问题不大,但是随着PWM频率的提高,无论是高边PWM还是低边PWM,有PWM的那一边的栅极驱动一定要可靠
在用全NMOS,又是自举升压的情况下就得用低边PWM,不过随着占空比的提高,自举电容充电时间渐渐变短,自举电压下降
我个人更倾向于独立升压,在我的电调中也是采用的独立的电容倍压电路.
再来说说软件上的问题
在说算法之前,我们先说说换相过程中的几个特殊事件,以高边PWM为例,如图
![](http://cache.amobbs.com/bbs_upload782111/files_26/ourdev_533890.JPG)
(原文件名:消磁过零换相.JPG)
第一个,消磁事件,每一次换相之后,悬浮相在一段时间内是续流状态,打个比方,从UV通电换相成UW通电,则在换相后,V相会先续流,而我们检测反电势正是要看V相,而这个消磁事件会造成一个过零事件假象,因此需要十分注意
第二个,过零事件,这个事件发生在两次换相的中间点,也就是换相后30度电角度
第三个,换相事件,这就不说了
要让电机稳定运行,我们要做的事情就是在过零事件后,再过30电角度就换相,并在消磁事件之后再监视过零事件
电机在运行时的转速是由PWM占空比和电机负载量决定的,我们并不知道转速应该是多少,因此要采用一个自调整的内环PID算法
假设在稳态时,设上一次检测到过零事件(A)到这一次换相之间的时间为last_t_degree30,在下一次过零事件(B)时我们可以得到时间t_degree30
假设现在我们就在B事件的时间点上,我们可以得到近两次degree30的误差,由这次误差和上次误差可以得到误差微分ERRd,由一定的时间间隔对误差积分可以得到ERRi,分别增益之后
得出下一次degree30.如图
![](http://cache.amobbs.com/bbs_upload782111/files_26/ourdev_533891.JPG)
(原文件名:环路.JPG)
在调试中,我发现I项作用不大,D项对于电机启动非常有帮助
在这种算法下,即使不需要独立的启动策略也可以快速的锁入闭环
最后说说启动的问题
上面所说的直接启动的方式需要比较大的PWM占空比,比如大于40%,虽然启动迅速,但是启动瞬间电流和力矩都太大,对电机和浆不太好,但是低PWM又很容易启动失败
现在来说说我的低PWM占空比启动策略(小于10%)
先假设转子处于运动中,于是有了微弱的反电势,在某一个转子位置的时候三相反电势与中性点的关系是唯一的,假设大于中性点就是1,小于中性点就是0,那么U,V,W的对应关系就如图中一样.
![](http://cache.amobbs.com/bbs_upload782111/files_26/ourdev_533892.JPG)
(原文件名:启动.JPG)
现在的问题是,一开始转子是静止的,也就是不存在反电势,也不存在图中所谓的对应关系表,但是我们可以先给六步中的任意一步通以极低占空比的PWM,并且在每一个PWM都检测三相反电势,并对应图中的状态表切换,那么一开始假设通UV相,有以下几种可能性
第一种,当前转子正在UV的力矩向量上,那么转子不会移动,也不会有任何反电势产生,因此在每一个PWM周期检测到的三相反电势都没有意义,处于一个稳态,转子锁死
第二种,当前转子正在UV的力矩之前,那么转子会向UV力矩移动,并且在某一个PWM周期我们可以检测到已经进入UW力矩的前方,这是加速态
第三种,当前转子正在UV的力矩之后,那么转子会向UV-WV力矩方向移动,并且在某一个PWM周期我们可以检测到已经进入WV力矩的后方,这是反转态
现在我们的任务就是在每个PWM周期检测并且判断处于哪种状态,如果锁死,则切换下一步通电,如果反转,则强制保持当前通电直到锁死,然后切换到下一步通电
一定要将反转扼杀于60电角度以内,扼杀于摇篮中!
在我的实际调试中,在12V电源时,仅仅用5%的PWM可以在0.6秒进入闭环,这是启动到锁入闭环的波形
可以看到前面几个周期是采用的5%PWM启动策略,换相超前反电势30度电角度,速度达到以后进入自由旋转,检测30度电角度时间,然后进入闭环
![](http://cache.amobbs.com/bbs_upload782111/files_26/ourdev_533893.jpg)
(原文件名:启动到闭环.jpg)
这是正常运行50%PWM时候的波形
![](http://cache.amobbs.com/bbs_upload782111/files_26/ourdev_533894.jpg)
(原文件名:50%PWM波形.jpg)
这就是我暂时想到的一些东西,有不对的或者不同意的我们一起讨论,希望有更多的人参与进来 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
该献的血还是要献的。你不献他不献。难道让我去献? --- 出自坛友:lovejp1981
|