本文以MRO 公司所生产的PIC16F72为基础说明软件编程方面所涉及的要点,为节省篇幅,本文不附程序框图,电原理图等。
本文适合在编程方面有一定经验的读者,有些基础知识恕不一一介绍。
我们先列一下电动车无刷马达控制器的基本要求:
功能性要求:
1。电子换相
2。无级调速
3。刹车断电
4。附加功能
a。限速
b。1+1助力
c。EBS柔性电磁刹车
d。定速巡航
e。其它功能(xx换相噪音,倒车等)
安全性要求:
1。限流驱动
2。过流保护
3。堵转保护
3。电池欠压保护
4。降低温升
5。附加功能(防盗锁死,温升限制等)
6。附加故障检测功能
从上面的要求来看,功能性要求和安全性要求的前三项用专用的无刷马达驱动芯片加上适当的外围均不难解决,代表芯片是摩托罗拉的MC33035,早期的控制器方案均用该集成块解决。但后来随着竞争加剧,很多厂商都增加了不少附加功能,一些附加功能用硬件来实现就比较困难,所以使用单片机来做控制的控制器迅速取代了硬件电路芯片。
但是硬件控制和软件控制有很大的区别,硬件控制的反应速度仅仅受限于逻辑门的开关速度,而软件的运行则需要时间。要使软件跟得上电机控制的需求,就必须要求软件在最短的时间内能够正确处理换相,限制等各种复杂动作,这就涉及到一个对外部信号的采样,采样时机,信号的内部处理判断及处理结果的输出,还有一些抗干扰措施等,这些都是软件设计中需要再三仔细考虑的东西。
下面我们挑选对控制器性能和安全比较重要的功能来讨论编程中应该注意的问题和使用的一般方法。
1。电子换相
无刷电机要对转子永磁体位置进行xx检测,并用电子开关切换不同绕组通电以获得持续向前的动力,在目前的绝大多数电动车三相无刷电机中均使用三个开关式的检测永磁体相对于定子线圈的位置,控制器跟据三个霍尔传感器输出的六种不同信号输出相应的控制信号驱动电子开关向马达供电。这就是所谓六步换相法。从电机原理可以看出,换相必须及时,否则会导致电机失步,从而使电机噪音增大,效率降低,严重的还会导致控制器,电机烧毁。
鉴于以上要求,我们测得市面上普通的无刷马达在{zg}转速时(考虑到顺风和下坡的情况)每1。2mS左右换相一次,根据实际的使用效果,软件的反应时间必须在0。12mS左右检测到换相信号的改变并且输出换相驱动信号。考虑到输入到单片机的换相信号容易受干扰,加上线路上的影响,单片机程序在读取换相信号时应至少连续读取3次,以3次信号xx一致时才采用该值作为换相信号的真值,这就是鉴相。取得换相信号后,我们将其与上次读到的值做对比,如果相同,则表示没有换相,如果不同,则要跟据这个值去取得一个相对应的驱动信号,从而驱动电子开关动作。这个过程可以使用逐项比较法,查表法等来实现。鉴于查表法比较快捷,一般使用查表法。其中需要考虑的是,一旦获得的信号与所有的六个信号都不相同,可能表示电机中霍尔元件或者其连接线路出现故障,此时我们应该让电机断电以避免误操作。
市面上有两种电机,即所谓的120°和60°霍尔信号,这个角度代表三个输出的三相电信号其角相差的角度,其实这里面的区别仅仅是的不一样,在马达内部的安装上,位置没什么不同,只是中间一相的相位相反,所以仍然是六种信号对应六种驱动,软件上将表稍作调整即可。需要提一下的是,在 120°的霍尔信号中,不可能出现二进制0B000和0B111的,所以在一定程度上避免了因霍尔零件故障而导致的误操作。因为霍尔元件是开路输出,高电平依靠电路上的提供,一旦霍尔零件断电,霍尔信号输出就是0B111。一旦霍尔零件短路,霍尔信号输出就是0B000,而60°的霍尔信号在正常工作时这两种信号均会出现,所以一定程度上影响了软件判断故障的准确率。目前市面马达已经逐渐舍弃60°相位的霍尔排列。
编程提示:
在程序上,我们综合考虑单片机的处理速度,采用定时中断去检测相位变化,中断采用128μS,中断源可使用TMR0,或者本身的TMR2中断。在同一个中断中,我们还将安排其它更重要的工作,这个在后面的电流控制中再说明。
2。无级调速
由于使用直流,电机的速度得依靠调节加在电机两端的来调整,较简单的办法是使用PWM脉宽来调节加到电机两端的电压。PWM的工作周期根据电机的使用环境,采用64μS,折算成频率大约15。625K,频率太低了会产生人耳能明显感觉到的高频,电流也不容易控制;太高了又增加电子开关的开关损耗。PWM脉冲的{zd0}宽度,这个直接影响到电机的{zg}速度,则由手柄输出的电压决定。
手柄电压检测简单,人对速度的感觉很迟钝,所以手柄的检测不需要很频繁,这个AD检测与电压,刹车等检测均不需要很快的速度,所以每隔10mS-50mS轮番检测一次便足够,AD的检测在定时中断中做,而结果则放在中断外做,这样不会占用中断太多的时间。
编程提示:
由于现在大多采用线性霍尔作为手柄调节速度方案,优点是无触电,故障率极低。缺点是在5V供电的情况下,电压只能在1。1V-4。3V的范围内变化,因此软件的处理相对复杂一点,不过对于硬件处理来讲要简单许多。这只需要我们做一点简单的运算,或者采用查表的方法,将这期间的AD数值转换成PWM占空比的值即可。虽然讲是无级调速,实际上分32级时人已经感觉不出来了。但是有一点,根据手柄得出的PWM脉冲宽度不能直接用来控制PWM占空比,需要在电流允许的情况下才能让占空比达到设定值。
程序中所用关键控制寄存器及其作用:
PR2:决定PWM的工作周期,也就是PWM的调制频率,工作中其值不断地与TMR2中的值相比较,当TMR2的值等于PR2时TMR2归零重新开始另一个周期,由于用到TMR2,所以TMR2的预也同样影响到PWM的工作周期。具体计算公式在数据手册上可以找到,下同。
PR1L及CCP1CON的第4,5位:决定PWM的占空比,单片机在运行时TMR2的值不断与CCPR1L中的值比较,当TMR2= CCPR1L时,PWM输出脚输出低电平。当CCPR1L中的值大于PR2时,PWM输出脚持续输出高电平。注意:CCP1CON中的第4,5位在这里并非无用,在后面的电流调节中可以用来微调PWM的占空比。
T2CON:决定TMR2的预器和后分频器的分频比,预分频器和前面讲过的PR2共同决定PWM频率,后分频器决定TMR2的中断周期。
3。刹车断电:
电动车在刹车手柄附近装了一个微动开关,一方面在刹车时点亮刹车灯,一方面给控制器提供一个刹车高或低电平信号,各厂家不一定,在电路上作一些很容易就可以提供给单片机一个准确的信号,我们可以采用数字测量的方法测量这个电平是高还是低,也可以使用AD去测量有几伏,总之监测到这个信号后必须关闭所有的驱动输出和PWM输出,这就可以实现刹车断电。编程方面我就不多说了。至于如何实现EBS电子刹车,由于篇幅关系,也不再多讲。
4。限流驱动
这是整个控制器的灵魂,如果限流驱动没做好,其他功能再好还是一个字:烧!。
电动车控制器的电子开关均使用功率MOSFET控制,MOSFET的{zd0}允许电流,{zd0}允许功耗都有其限制,如果没有电流控制,或者电流控制不好,均会导致功率MOSFET的烧毁,从而导致整个控制器报废,因此电流控制是本程序的重中之重,这个做不好,其它功能一概免谈。
说起来严重,其实做起来,摸到窍门也是很简单的,其秘诀也只有四个字:准确,及时
电流信号经康铜丝采样之后分两路,一路送至放大器,一路送至比较器。放大器用来实时放大电流信号,放大倍数大约6。5倍,放大后的信号提供给单片机进行 AD采样转换,转换所得数字用来控制电流不超过我们所允许的值。另一路信号送至比较器,当电流突然由于某种原因大大超过允许值,比如一只MOSFET或误导通时,比较器翻转送出低电平,触发单片机的INT0外部中断,使单片机能够快速关断驱动,从而保护MOSFET避免更大伤害。我们这里所要讲述的准确,及时两个要素,主要是针对放大器放大之后的信号处理过程来表述的。
准确
首先一个条件是准确,这里所指的是电流的AD采样和转换的时机。我们现在使用的是PWM脉冲驱动,这种脉冲驱动导致的直接结果是放大后的电流信号与PWM 脉冲频率相同,相位上滞后一定时间的波形,这种波形如果没有经过滤波处理,将会类似于一个梯形,如果我们要获得准确的电流AD转换值,{zh0}的办法就是在梯形波的上边中间采样电流信号,这样所获得的电流AD值才能较为准确地反应电流的实际大小。在本文所选的单片机上,AD转换的采样开始时间由 ADCON0中的ADON位控制开始,AD转换则由ADGO位启动,采样时间,在单片机的数据手册里有明确的规定,在一般控制器放大电路中,采样的时间一般采用10-20μS,在这期间可以做一些固定的事,比如系统计时之类的,以免浪费资源。而转换时间,只要保证不小于数据手册所规定的1。6μS/bit 的{zd1}要求,当然是越快越好,这里设定为2μS/bit。
那么怎样保证采样的准确性呢?这里有一个前面提过的办法,就是使用定时中断,我们可以设定好使定时中断和PWM周期同步,预先设定好AD的通道,将AD转换器切换到检测电流的那个通道,当进入定时中断处理完现场保护,中断源判断等一系列动作之后,开启ADON时刻刚好落在电流梯形波的中央,采样完毕之后马上进行转换。在等待转换结果出来的过程中,我们也不能闲着,毕竟那是>20μS的时间,在资源比较紧张的时候浪费了可惜,我们可以做一些比如"鉴相 "的工作,就是在电子换相中所作必须作的工作。
及时
其次是要及时。如果我们想及时准确地控制电流,采样次数也是要求越多越好,因为电流的变化相当快,在一个PWM周期中变化量可能会很大,所以我们{zh0}是在一个PWM周期里采样数次,但是我们的单片机没有这么快的速度,再说PWM的占空比在一个周期中只接受{zh1}的改变,而且要到下个周期才能发挥作用,所以一个PWM周期采样一次就够了,而且为了更好地处理其它事情,我们两个周期才对电流采样一次。
采样转换之后的工作,就是处理了。怎样根据AD结果去调节电流?我们不需要想到PID控制那么复杂的概念,只需要在电流没达到限制值时逐渐增加 CCPR1L的值,直到等于手柄设定值为止,如果在此过程中电流接近限制值,那么应该不再增加CCPR1L的值,直到电流减小。如果电流超过了限制值,则根据超过的量,找一个比较合适的减小量,比如CCPR1L减1或减3,一切以电流比较稳定为准,不要有太大的波动,但波动越小,我们要求PWM占空比调整精度越高。
这里要提一下的是PWM分辨率,以PIC16F72的条件,在16M时钟的工作频率和15。625K的PWM频率前提下,PWM的占空比调整可以有 10BIT的精度,但10BIT的数据涉及2个字节的运算,所以我们还是只采用8BIT的调整精度,实践证明,8BIT的精度对调整电流来说足够。所以我们只对CCPR1L进行操作就可以,前提是TMR2预分频值为1:1
恒流算法--电流即时值和的矛盾:也许我们注意到大多数控制器的{zd0}电流并没有出现在堵转的时候,这是因为上面我们所检测到的是电流的即时值,我们在电流表上看到的是电源电流的有效值,当PWM占空比不是{bfb}的情况下,电流有效值≈电流即时值*PWM占空比,也就是说,占空比越小,要保证电流有效值达到我们的期望值,电流的即时值要提高,这样就涉及一个算法问题:提高多少?我们可以根据上面那个公式做一个表格,或者根据CCPR1L中的值做一个简单的换算。总之是不能占用太多的系统时间。
电流的测量和控制还涉及到其他两个附加功能:换相消噪和降低温升,降低温升这个要结合硬件讲,我们就把它放在以后《硬件设计要点》部分,先来讲讲换相消噪。
怎样减小换相噪声?
在电动车刚刚起步的时候我们会发现换相时电机会发出很大的突突声,这是由于电机起步时电流比较大,而电机是个感性,换相后由于电机线圈电流不会一下增大到换相前的水平,这样就造成换相前后电流反差非常大,从而导致牵引力的急剧变化,这种变化便会引起电机强烈振动,这种振动噪声我们不能xxxx,但有简单的方法减小,就是在换相后的一段时间使PWM脉冲占空比达到{bfb}来使电流增长快一点,从而减轻振动噪声。需要提醒的是在这个过程中我们需要随时监测电流变化,电流一达到换相前的水平就可以恢复换相前的PWM占空比。如果电流始终达不到以前的水平,那么最多延时十多个PWM周期即可,时间长了也没用,以不影响到鉴相等其它重要工作为度。
编程提示:
以上电子换相,电流检测处理等大部分要紧的工作均在同一个128μS的定时中断中完成。另外中断中还要完成计时工作,由于单片机的AD模块是复用的,所以每隔一段时间还要照顾一下其他需要AD转换的功能,比如手柄,电源电压等,其它对时间,时机要求不严格的则放在中断外空余时间处理。
关于电流的另一点:过流保护,当有MOSFET击穿或MOSFET误导通时,会造成上下桥直通将电源直接短路,这样会有很大的电流,为避免更大的伤害,在电流信号引起比较器翻转时触发INT0中断,由于PIC16F72没有中断嵌套,因此在整个定时中断中均要随时检测INT0中断标志,防止短路发生。
5。堵转保护
为了防止电机发生堵转时电流始终通过同一组MOSFET而造成{yj}损害,因此有必要在堵转发生之后数秒钟之内切断电机的供电。一般时间是2秒。要注意的是有时电机虽然发生堵转,但刚好在换相的临界点,此时会产生频繁的换相动作,这对MOSFET也是有害的,所以也应当作堵转来对待。
6。欠压保护
这是针对电池的保护动作,如果电池过放电,将导致电池的{yj}损坏。注意欠压保护和电池电压上升后恢复供电这两个电压应有一定回差,比如48V电池欠压点在 42V,而恢复供电点在45V,当电池电压回到45V时还应延时数秒,避免控制器频繁进入保护状态使骑行者感到不适。另一点要注意的是,电池是具有内阻的电源,因此在大电流放电的情况下因适当调低欠压值。
电压值的检测也是不需要非常频繁的,所以和手柄,刹车一道,在中断中每隔10-50ms轮流检测一次AD值即可,检测后的结果保存起来放在全局变量中,等到退出中断后,利用单片机的"空余时间"来处理这些值。
7。故障的检测,保护及显示:
使用了单片机这样的可以智能化的零件,我们就可以做一些工作来帮助生产和维修:
由于生产过程中不可避免会造成一些诸如虚焊,连锡之类的缺陷,所以在产品组装成半成品测试时就会出现一些故障,轻则某些功能失效,重的会导致元器件烧毁,这是老板{jd1}不愿意看到的,所以我们可以多做一些工作{zd0}限度上避免此类问题的发生:
我们最担心的是生产过程中由于连锡或虚焊导致MOSFET烧毁,一个MOSFET好几块RMB,谁见了都心疼。幸好现在有单片机,在开机时可以用极短的时间(大概10-20μS)的时间全部开启一下上桥,关闭,然后再开启一下下桥,如果其中有MOSFET短路就会产生比较大的电流,这个电流我们可以用单片机在开启MOSFET的同时检测到,而在这么短的时间内即使某个MOSFET短路,也不至于把另外一个烧掉,所以可以利用这个检验方法来初步检查产品的好坏,也便于修理工修理。其他的故障比较好检测,这里就不一一赘述。
故障检测出来了,需要显示出来以告知人们出了什么故障,目前一般采用闪烁次数来表示,次数可以自己定,也可以采用比较流行的办法:
慢闪:
1秒钟闪一次,表示没有检测出故障。
快闪:
连续闪两次,停一下,表示刹车,或者刹车部分有故障。
连续闪三次,停一下,表示INT0口始终为低电平,很有可能是比较器部分有问题。
连续闪四次,停一下,表示上桥有短路现象
连续闪五次,停一下,表示下桥有短路现象
连续闪六次,停一下,表示电机霍尔信号有故障,或者相位选择有误。
连续闪七次,停一下,表示刚刚发生了过流保护,INT0口有低电平脉冲出现
连续闪八次,停一下,表示电源电压过低或给单片机供电的5V电源电压过高。
缺相
无刷控制器缺相分主相位缺相和霍耳缺相两种情况。
主相位缺相的检测方法可以参照有刷控制器飞车故障排除法,检测MOS管是否击穿,无刷控制器MOS管击穿一般是某一个相位的上下两个一对MOS管同时击穿,更换时确保同时更换。
无刷控制器的霍耳缺相表现为控制器不能识别电机霍耳信号。检测方法是:拔开控制器与无刷电机的霍耳引线,控制器在通电状态,用的+20V直流(DC)档,黑表笔靠在控制器霍耳引线的黑线上,红表笔测量控制器的其它霍耳引线,应该有+5V以上的电压。否则说明控制器内部霍耳处理电路出现故障。通过测量霍耳引线的滤波电容和主控制芯片的相应引脚进一步判断故障位置,更换滤波电容或更换主控芯片可以排除故障。
xx没有输出
用直流电压+50V档检测6路MOS管栅极电压是否与转把的转动角度呈对应关系,如没有对应关系,表示控制器里的PWM电路或MOS管驱动电路有故障。参照无刷控制器主相位检查测量点(见图)电压与转把转动角度的正比关系,判断出是哪些芯片有故障,更换同型号的芯片可以排除故障。
以下是无刷控制器常用芯片的各管脚的作用:
测量各输入输出引脚的电压,是否与转把转动角度有对应关系,能判断出故障元件。
3、更换的方法与注意事项
在检测出集成电路损坏的情况下,就需要更换集成电路了。这里介绍一下常用的操作方法:
1、拆卸集成电路:用酒精灯火焰外焰加热板集成电路引脚焊盘,快速均匀的移动PCB,直至所有焊盘的焊锡融化,用镊子将集成电路从PCB上取下。
2、焊接集成电路:将焊孔里的焊锡xx干净,将集成电路插装好,用接地良好的电烙铁迅速焊接好各引脚。注意速度要快,以免焊接时间长,引起局部温度过高,损坏电路或焊盘。
3、拆卸功率器件:可以将MOS管或三端稳压的管脚剪断,分别焊下它们的引脚,这样可以避免拆卸多管脚元件时损坏PCB的焊盘。
二、不同型号控制器的代换
由于不同控制器厂家生产的控制器内部电路不xx一样,即使同一厂家生产的不同型号的控制器,其内部电路也不xx一样。但是在应急情况下,手头没有同型号的控制器更换,这样维修人员就要用目前手头现有的控制器,根据检测判断各引线功能,对控制器进行改造使用了。
在对有些控制器的引线功能未知的情况下,可以将控制器通电,先测量出转把供电引线(+5V或+6.25V),闸把供电引线(+5V、+12V或+15V)与地线。数一下剩下几个未知功能引线(例如剩下4条引线),在+5V引线上与地线之间,分别串联几路5K的,在串联的中间抽头引出线接到剩下未知功能引线的线头上。按照开关法引线判断表,先判断转把信号线引线。当某个开关闭合或断开时,电机以中等速度旋转,则说明该路引线是转把信号线。判断闸把信号线的引线。当某个开关断开或闭合时,电机停止转动,则说明该该引线是闸把信号线的引线。闸把信号线可能是一根,也可能是两根。另外还有的引线,其电位的高低和电机的转动没有关系,在应急代用的情况下,可以不接这些引线。
无刷控制器和电机有严格的匹配的关系,在不知道电机的控制器相位和相序的情况下,先将控制器的3相霍耳引线与电机的3相引线接好,3相主引线也分别接好,先接好转把与闸把的的引线,此时由于电机和控制器的相角与相位可能不对应,电机不能正常转动,但是只要电机抖动的力量能和转把的电位呈对应关系即可将无刷控制器与无刷电机的引线接对。
根据下面的无刷控制器与无刷电机的36状态接线表,仔细匹配各引线,{zh1}可以找出无刷控制器和无刷电机的正确接线。如果按照36状态接线表接线,电机还是不能正常转动,则说明控制器与电机的相角(120度/60度)不匹配,需要打开控制器对控制器的控制相角进行调换。常用的无刷电机专用驱动芯片型号是MC33035和MC33033。对于MC33035,它的第22脚接地是用于驱动120度无刷电机,第22脚悬空或接高电位是用于驱动60度无刷电机。对于MC33033,它的第18脚接地是用于驱动120度无刷电机,第18脚悬空或接高电位是用于驱动60度无刷电机。
如果无刷电机反转,表明无刷控制器与无刷电机的相角是匹配的,我们可以这样来调整电机的转向,而不必打开控制器进行转向调整:将无刷电机与无刷控制器的霍耳引线的A、C交换接线;同时将无刷电机与无刷控制器的主相线A、B交换接线。1.转把的形式、信号特征及其信号改制
电动车的转把有3根引线:分别是电源(+5V),地线,转把信号线(线形连续变化信号)。
电动车上使用的转把有光电转把和霍耳转把两种,目前采用霍耳转把的电动车占绝大多数。霍耳转把的内部电路如图:
常见线性霍尔元件型号有3501 3503 3508 3515 3516 3517 3518
霍耳转把输出电压的大小,取决于霍耳元件周围的磁场强度。转动转把,改变了霍耳元件周围的磁场强度,也就改变了霍耳转把的输出电压。
在电动车上使用的霍耳转把的信号有以下几种:
其中最常用的是以下两种信号的转把:1-4.2V(俗称正把),4.2-1V(俗称反把)。两种信号的转把中,是1.0V~4.2V的转把占绝大多数。其它输出电压的转把,目前市场中存在很少,已成为事实中的非标产品,这种非标的转把在早期的电动车上使用比较多。因此目前市场上通用的控制器绝大多数是识别1-4.2V转把信号的产品。当电动车的转把或控制器需要维修更换时,一旦遇到转把信号与控制器不匹配的情况时,这就需要对转把进行改制,使其输出信号能匹配控制器。
转把输出信号改制:将转把拆开,改变转把里面磁钢工作面的极性,就可以改变转把输出的电位。如果转把内有两个磁钢,分别将两个磁钢都转180°,再装好;如果转把内只有1个磁钢,将磁钢取出,反转180°后,装好转把,这样就改变了转把里面霍耳元件工作磁场的起始位置,从而实现了转把输出信号的改制。如图:
2.闸把的形式与刹车信号及其信号改制
转把信号是电动车电机旋转的驱动信号,闸把信号是电机停止转动的制动信号。电动车标准要求电动车在刹车制动时,控制器应能自动切断对电机的供电。因此电动车闸把上应该有闸把位置传感元件,在有捏刹车把动作时,将刹车信号传给控制器,控制器接受到刹车信号后,立即停止对电机的供电。
电动车闸把的位置传感元件有机械式微动开关(分机械常开和机械常闭两种)和开关型霍耳感应元件(分刹车低电位和刹车高电位两种)两种。
常见单极性开关霍尔元件型号的型号有:3122 3123 3141 3143 3144 3161 3240 3361 3362
其典型内部电路如下:
(开关霍耳元件电路原理图)
一般机械常开的刹车信号是常高电位,当刹车时,闸把内部的微动开关闭合,其信号变成低电位。
一般机械常闭的刹车信号是常低电位,当刹车时,闸把内部的微动开关打开,其信号变成高电位。
一般电子低电位闸把的刹车信号是常高电位,当刹车时,闸把内部的霍耳元件信号翻转,其信号变成低电位。
一般电子高电位闸把的刹车信号是常低电位,当刹车时,闸把内部的霍耳元件信号翻转,其信号变成高电位。
刹车信号高低电位的变化,是控制器识别电动车是否处于刹车状态,从而判断控制器是否给电机供电。当电动车的闸把或控制器需要维修更换时,会遇到闸把信号与控制器不匹配的情况时,这就需要对闸把进行改制,使其输出信号能匹配控制器。因此在维修实践中,不论闸把的形式如何,也不论控制器识别何种刹车信号,应做到能对各种形式的刹车信号进行适当改进,以匹配成控制器能识别的信号。