关于有感直流无刷电机编程的深度剖析

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

关于有感直流无刷电机编程的深度剖析有感直流无刷电机的驱动电路是由6个MOS管组成的桥式电路。编程控制无刷直流电机运行,其最底层的工作就是控制这6个MOS管的两个状态:导通和关断。首先,6个MOS管,每个MOS管有两种状态,这就相当于一个6位二进制数,这6个MOS所有的状态组合共有2^6=64种。然而这64种状态组合中,并不是每一个状态组合都符合对直流无刷电机的控制要求,虽然有64种MOS的开断状态组合,但是其中只有6种符合(是我们要的)控制要求的状态组合。在对直流无刷电机编程控制时,要求任一时刻有且只能有两个MOS为导通状态:从6个里面取2个,根据组合公式:6*5/2*1=15,即,64种里的15种状态要求出来了,对直流无刷电机编程控制时,还要求任一时刻导通的两个MOS必须在每一个桥臂(即一相)的一上一下的两个MOS,即15种里面还要减去上面3个MOS和下面3个MOS里的有2个MOS导通的状:从3个里面取2个的组合数为:3*2/2*1=3种,上下各3个,所以排除后的MOS开断状态组合数为:15-3-3=9,然而,对直流无刷电机编程控制时,要求任一时刻导通的2个MOS不能在同一个桥臂(即不能是同一相上的两个MOS同时导通),不然电源VDC就和GND短路了,这样又经过排除后,剩下的MOS开断状态为:9-3=6种,这6种MOS的开断状态组合就是控制直流无刷电机最终所要求的,最后以6步(6STEP)来实现。先不管这6步怎么实现,每个MOS的导通与关断,就是通过对STM8的GPIO管脚写低、写高来实现,这就是最底层的操作,可以通过定义一个带形参的函数来实现,其中形参只能取ON/OFF,用于判断是将此MOS导通还是关断。如果是用国际整流公司(现被IFENION,英飞凌收购)的IR2010芯片驱动MOS桥的话,实际上,只需要对3个底下的MOS实现一次性完全的打开与关断(CON1(),CON2(),CON3()),上面的3个MOS是通过STM8的定时器的输出比较功能输出的PWM波来进行非完全一次性打开与关断的(SetCompare1(),SetCompare2(),SetCompare3()),这就是调速了,如果导通的两个MOS都完全导通(即两个MOS的G极都达到了其在电路里所能获得的最大电压值),那么,电机达观察家最大速度,如果不是,那么速度就会慢下来,这个G极电压的大小就是通过PWM来控制的,从而实现电机调速。最底层的MOS导通与关断函数有了,那么下面就应该解决在驱动直流无刷电机时每一相(A、B、C三相即三个桥臂)的状态了,因为电机的三个相线就是与驱动电路的这三个相相连的,根据MOS的导通、判断状态组合,每一相里的2个MOS只能有3种组合即,每一相只有三个状态,也可以这样理解,每一相的电流只有三种状态:流出、流进、即不流出也没有流进(即无电流)。a.上面的MOS导通(HMOS)b.下面的MOS导通(LMOS)c.上下两个全部截止(MOS_OFF)编程时,可以定义一个枚举类型:Typedefenum{HMOS,LMOS,MOS_OFF}MOS_STATUS;通过枚举类型里的这三个状态来决定怎样调用上面已经定义的最底层的MOS导通与关断函数,如果要求的某一相的状态为HMOS(即要求上面的MOS导通,下面的MOS截止),那么调用:SetCompare(x);CONx(OFF)如果要求的某一相的状态为LMOS(即要求上面的MOS截止,下面的MOS导通),那么调用:SetCompare(0);CONx(ON)如果要求的某一相的状态为MOS_OFF(即两个MOS全部截止),那么调用:SetCompare(0);CONx(OFF)(定义的三个相的带形参的函数为:Phase_A();Phase_B();Phase_C();里面的形参用于判断,决定程序走向)这样,把三个相的if()语句全写出来,即为每一相定义一个函数,为下面的每一步的操作做准备。对直流无刷电机驱动,要6步,这6步中的每一步是什么,这6个步骤又是怎样的顺序?6步:001(0x01):AC101(0x05):BC100(0x04):BA110(0x06):CA010(0x02):CB011(0x03):AB其中,前面的二进制数表示三个霍尔信号的状态(1表示有磁通通过,0表示无磁通通过),AC表示电流从A相流出(必然是A相的上面的MOS导通才能使电流从VDD经上面的MOS(HMOS)流出,即A相的状态为HMOS),然后流入电机(要想电流从VDD经HMOS流入电机,那么A相的下面的MOS必须截止才可,即A相状态为HMOS),最后流进C相(桥)(要想电流从电机流进C相,那么C相的LMOS必须导通,然而一相里面只能有一个MOS导通,所以C相的状态为LMOS),最后配置B相的两个MOS全部截止才可以。据此,加上上面已经定义的关于相的状态的函数,就可以写出这一步的程序了:STEP_AC{Phase_A(HMOS);Phase_B(LMOS);Phase_C(MOS_OFF);}那么6步的所有程序为:STEP_AC:STEP_BC:STEP_BA:STEP_CA:STEP_CB:STEP_AB:上面介绍了,有感无刷直流电机驱动程序的详细编写算法,下面介绍有感无刷直流电机外面的8根线与驱动板的连接方法。有感无刷直流电机外面的8根线分别为三根相线(粗线):用于通直流电三根霍尔信号线(细线):用于把位置信号传给驱动板或MCU一根电源线(12V左右):用于给霍尔传感器供电一地线(GND):霍尔信号接地线三根相线+三根信号线=6根,这6根线根据排列组合有6*5*4*3*2*1=720种接线方法,然而,3根信号线只能接在信号位置,不能接在相的位置,同时,3根相线只能接在相的位置不能接在信号线的位置,这样就把这6根线分成了2组,并且每一组里只能接对应该组的3根线,每一个组里的3根线的接法有:3*2*1=6种接法。再把这两组组合,得到总共有6*6=36种接线方法了。从吓人的720里面跳了出来了,我的哥……我们接着跳,这时我们再分析三根信号线。三根信号线的状态我们可以给电机的霍尔传感器加上电源后一步一步的转动电机的转轴得到。由于电机内部磁力的作用,电机的位置总是偏向于某一状态,就是说,我们转电机转轴时,转到某一位置时电机会自动吸符在某一位置。前面列出的001(0x01);101(0x05);100(0x04);110(0x06);010(0x02);011(0x03);就是转动电机转轴得到的。不管转动多少圈,只有这6种状态,往复循环……。3位2进制数可以表示2^3=8个数,这里只有6个。说明电机的霍尔信号不会出现全0(000)和全1(111),即不管电机转轴在什么位置,三个霍尔传感器中至少有一个有磁通通过(状态1),并且至少有一个没有磁通通过(状态0)。由于电机转轴转动是连续不可跳跃的,所以从6种状态中的1种状态到另一种状态顺序变化时,有且只能有一个霍尔传感器的状态发生变化(这里的一个是对只有三个霍尔元件来说的,如果电机里有N个霍尔元件,那么转轴连续转动时会有n个霍尔传感器的状态发生变化,但是不管电机里有多少个霍尔元件,转轴连续转动时状态变化的霍尔传感器的个数n一定是一个确定的数。对于电机里有三个霍尔元件时,这里的这个确定数n=1)。理解上叙问题后,我们分析这6个状态。先把001取出来,根据前面的分析,可知如果转轴在霍尔信号为001这个状态时转动,那么下一个霍尔信号状态要么是101,要么是011,因为霍尔信号变化时最多只有一个发生变化,并且霍尔信号状态不可能为全0(000),也不可能为全1(111),所以001的下一个状态只能为101、011两者中的一种。就这样接着分析完所有的6个状态可以发现,这6个状态的顺序只有两种:一是正转:0x01,0x05,0x04,0x06,0x02,0x03.另一种是反转:0x03,0x02,0x06,0x04,0x05,0x01。(当然这里的正转、反转是相对的,称一种的正,另一种就是反)。不可能出现其它的顺序。在某一确定时刻,电机的三根霍尔信号线的每一根的电平状态是确定的,不管它们怎么排序(就是不管它们怎么与驱动板接线,不同的排序对应不同的值,比如,001这个状态,6种霍尔信号线的接法中只有001,010,100这三个值,不管是哪一个值即不管怎样接线,转轴转动后的下一个值一定是按照上面讨论的两种顺序中的一种往下变化,不会有其它变化,要么是正转变化,要么是反转变化)。这就说明三根霍尔信号线怎么接都可以,充其量的变化就是正转或反转而已(然而,正反是相对的,换句话说就是都一样)。到这里想必各位看官已经从36里跳出来了。即,霍尔信号线怎么接都可以,怎么接都是对的,霍尔信号线接好后,就剩下三根相线的6种接法了,其中只有一种是与前面随便接的霍尔信号线是匹配(或者说是对应)的,其它5种都不能使电机正确转动。这6种接法我们可以一个一个的手动确定哪一个是对的。接着分析,由于霍尔信号线6种接法都对,每一种又对应一种正确的相线的接法,这就使得电机的6根线的接法中有6种接法都可以使电机正常运行。其它的720-6=716种接法都不行。6种正确的接法我们可以做实验证都是可以使电机正常运行的。切换的时候,霍尔信号线接法怎么变化,相线就跟着怎么变化,这样就可以保证变化后的电机正常运行,直到6种接法遍历……小小电机学问大,剖根问底乐趣多。谢谢阅读,记得分享……爱林林——领导于二〇一七年四月五日星期三10时59分56秒

1 / 4
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功