ImageVerifierCode 换一换
格式:DOCX , 页数:10 ,大小:53.95KB ,
资源ID:17695934      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/17695934.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(电动车无刷电机控制器软件设计详解Word格式.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

电动车无刷电机控制器软件设计详解Word格式.docx

1、PIC1是一款哈佛结构,精简指令集的MCU,由于其数据总线和指令总线分开,总共5条单字指令,0-20的时钟速度,所以其运算速度和抗干扰性能都非常出色,2K字长的LASH程序空间,2个可用的IO口,同时又附加了个定时/计数器,个8位AD口,1个比较/捕捉/脉宽调制器,个中断源,这些优异的性能为电动车控制器控制提供了良好的硬件环境和软件基础,一经推出就赢得众多设计人员的热捧。那么如何使用PIC162来设计一个电动车控制器呢?我们下面以目前市面流行的硬件设计为基础,尽量通俗易懂地介绍一下程序设计思路和注意点。要使无刷电机转起来,并且听从驾驶者的调速、刹车等基本指挥,最基本的要求就是要实现硬件所能实现

2、的电子换向和调速,刹车等功能。实际上软件的整体设计也和硬件一样,也是一个模块化堆砌的过程,问题在于模块的合理化堆砌,使堆砌后形成的整体能够坚固,协调、高效率运作。我们先说一说各种模块功能的简单实现,然后再来讨论如何使这些模块协调运转。1.首先说说电子换相模块我们知道,直流永磁电机在运转时需要一对电刷和与线圈相对应的换向整流子来使线圈中的电流方向根据磁场方向来不断改变,从而转子持续向一个方向运转,我们称这种电机为有刷电机,在电动车刚刚面世时一般均使用这种电机,但有刷电机有一个致命的缺陷,就是用作电刷的碳刷非常容易磨损,换向整流子也非常容易被油污,碳刷碎屑填满空隙而漏电,而且功率越大,这种毛病越严

3、重,导致有刷电机维护量和故障率急剧上升,严重影响其推广,因此在较大功率的场合,无刷电机应运而生。无刷电机,顾名思义就是没有了电刷,不能自动换向,因此要依靠传感器检测转子的位置、用电子开关来改变线圈中电流的方向,所以其控制器要对转子永磁体位置进行精确检测,并用电子开关切换不同绕组通电以获得持续向前的动力。转子位置检测传感器有很多,比如光传感器,磁感应传感器等,电子开关可以用大功率三极管、功率型场效应管、IGBT等制作,在目前的绝大多数电动车三相无刷电机中均使用三个开关式的霍尔传感器检测永磁体相对于定子线圈的位置,控制器跟据三个霍尔传感器输出的六种不同信号输出相应的控制信号驱动功率型场效应管(MO

4、SFT)组成的电子开关向马达供电。这就是所谓六步换相法。从电机原理可以看出,这种电机是一种特殊的同步电机,因此换相必须及时,否则会导致电机失步,从而使电机噪音增大,效率降低,严重的还会导致控制器,电机烧毁。鉴于以上要求,我们先必须测一下市面上普通的无刷马达在最高转速时(考虑到顺风和下坡的情况)的换向情况,这个比较简单,用示波器测量之后得到在最高速时每相霍尔传感器输出的频率大概在14HZ左右,折合到换向的最小时间,那么应该是1.2mS左右换相一次,根据际的使用效果,软件的反应时间必须在0.12左右,也就是说在检测到换相信号的改变并且输出换相驱动信号时的过程必须在0.1-02mS之内完成。另一个需

5、要考虑的是,电机驱动是一个大电流驱动,又是一个电感性负载,控制器在运行时不可避免有干扰引入,因此除了在硬件布局,布线上注意外,软件上也要做相应的抗干扰措施以避免错误的换向动作。考虑到输入到单片机的换相信号容易受干扰,加上线路上滤波电容的影响,单片机程序在读取换相信号时应至少连续读取3次,以3次信号完全一致时才采用该值作为换相信号的真值,如果其中一次不对,那么干脆就重新再读3次,这就是一个有抗干扰措施的鉴相过程。取得换相信号后,我们将其与上次读到的值做对比,如果相同,则表示没有换相,如果不同,则要跟据这个值去取得一个相对应的驱动信号,从而驱动电子开关动作。这个过程可以使用逐项比较法,查表法等来实

6、现。鉴于查表法比较快捷,一般使用查表法。其中需要考虑的是,一旦获得的信号与所有的六个信号都不相同,可能表示电机中霍尔元件或者其连接线路出现故障,此时我们应该让电机断电以避免误操作。市面上有两种电机,即所谓的10和60霍尔信号,这个角度代表三个霍尔器件输出的三相电信号其相位角相差的角度,其实这里面的区别仅仅是电平的不一样,在马达内部的安装上,位置没什么不同,只是中间一相的相位相反,所以仍然是六种信号对应六种驱动,软件上将表稍作调整即可。需要提一下的是,在2的霍尔信号中,不可能出现二进制0B000和0111的编码,所以在一定程度上避免了因霍尔零件故障而导致的误操作。因为霍尔元件是开路输出,高电平依

7、靠电路上的上拉电阻提供,一旦霍尔零件断电,霍尔信号输出就是B111。一旦霍尔零件短路,霍尔信号输出就是B000,而0的霍尔信号在正常工作时这两种信号均会出现,所以一定程度上影响了软件判断故障的准确率。目前市面马达已经逐渐舍弃相位的霍尔排列。编程提示:在程序上,我们综合考虑单片机的处理速度,采用定时中断去检测相位变化,中断周期采用128S,中断源可使用TMR0,或者PWM本身的MR2中断。在同一个中断中,我们还将安排其它更重要的工作,这个在后面的电流控制中再说明。编程技巧:从硬件电路图中我们看到,位置霍尔信号在PORTC口的R4、R5、RC6三个口输入,以0相位为例,如果直接读出来,对应十六进制

8、值是010-06,考虑到霍尔出错的可能,那么对应的值是XX70,显然这个值对今后的查表处理造成非常大的麻烦,我们不可能去弄一个0X70这么大的表格而其中只放仅仅8个元素,所以有必要考虑编程时的优化,且看下面一个例程:读取相位值的例程:READHALL:SWPFPORTC,;将RTC的高,低半字节交换后读至WADL0X07 ;屏蔽掉不必要的位,OWFHTEMP ;存人暂存器SWP PORTC,W ;再次读ANLW0X7SUBWF HALTEMP,W ;与旧值比较BTFS STATU,ZGOO ADHL ;如果与第一次读取的不一样,则从头再来SWA POTC,W ;第三次读ND0X7UWFHALT

9、MP,W ;再次比较TSS STATS,ZGOO RADHLL ;不一样则从头再来RETURN ;三次读取值一致,返回。这个程序中,最关键是SWPFPORC,W这句,这句语句一方面读取了霍尔值,另一方面与下句语句结合还将此值变为0-7的最小值,这样使得我们后面的查表只需要8个空间的元素。以上程序,也有人认为有可能会导致程序陷入死循环,但不必担心,因为要导致这个程序进入死循环的信号频率必须非常高,有兴趣的读者可计算一下。有了上面的霍尔读取程序,我们下面的查表读取相应驱动值就会变的比较方便,但查表也有很多种,在I162中,查表可以用EL在程序空间查,也可以用专用的读取F空间的指令去读,考虑到我们这

10、个表格一共只有个元素,我们可以将器放在内存寄存器中,利用用FR去读取表内容。这样做有好处,就是查表时不用去考虑查表偏移量造成程序计数器溢出,另一方面是120和6可以使用同一个表格而不用切换。这个表格,我们可以放在寄存器空间不太方便使用的BAK1,在程序初始化时预先写入正确的换向对应值。这个程序在时间上并不比其它两种查表法显得快多少,而且程序空间也不节省,在这里只是作为一个方法示例,可以让我们看到实现同一个功能可以走不同的路。使用内存查表法的驱动值获取例程:;HALLSART EQ0XA1 ;定义霍尔驱动表格的起始地址在BAN的0X1开始处HL_DRIVER:;由霍尔值取得对应驱动值的内存查表例

11、程MVF LLT,W ;取得HA的真值ADDLWHALLSRT ;加上表格的起始地址MOVWF FSR ;放到间接读内存的指针中。MOF IND,W ;读出驱动值MOVW ORT ;不管返回值如何,先写入驱动端口,SUB SOPD ;与电机停止值相比较,TS STT,GOO HALL_ER ;如果获得停止电机值,那么表示霍尔信号有问题RETUR无级调速模块部分:由于使用直流电源,电机的速度得依靠调节加在电机两端的电压来调整,较简单的办法是使用WM脉宽调制来调节加到电机两端的电压。PW的工作周期根据电机的使用环境,采用4S,折算成频率大约15.2KHz,频率太低了会产生人耳能明显感觉到的高频噪声

12、,电流也不容易控制;太高了又增加电子开关的开关损耗;PW脉冲的宽度是调节加到电机两端有效电压高低的手段,直接影响到电机的输出功率,我们可以根据手柄输出的电压决定最终应该分配给电机多高的电压。手柄电压检测比较简单,人对速度的感觉很迟钝,所以手柄的检测不需要很频繁,这个AD检测与电源电压AD等检测均不需要很快的速度,所以每隔10mS-50m轮番检测一次便足够,A的检测在定时中断中做,而结果则放在中断外做,这样不会占用中断太多的时间。编程提示:由于现在大多采用线性霍尔作为手柄调节速度方案,优点是无触电,故障率极低。缺点是在5V供电的情况下,电压只能在1.1V4V的范围内变化,因此软件的处理相对复杂一

13、点。这只需要我们做一点简单的运算,或者采用查表的方法,将这期间的D数值转换成PWM占空比的值即可。虽然讲是无级调速,实际上分32级时人已经感觉不出速度的细微变化了。但是有一点,根据手柄得出的PM脉冲宽度不能直接用来控制PW占空比,需要在电流允许的情况下才能让占空比达到设定值。程序中所用关键控制寄存器及其作用:R2:决定PM的工作周期,也就是PM的调制频率,工作中其值不断地与TM2中的值相比较,当TMR的值等于R时TMR2归零重新开始另一个周期,由于用到M2,所以TMR2的预分频器也同样影响到PWM的工作周期。具体计算公式在数据手册上可以找到,下同。CPR1及CP1O的第4,5位:决定PM的占空

14、比,单片机在运行时TMR的值不断与CCPR1L中的值比较,当R2=CPRL时,PWM输出脚输出低电平。当CPR1L中的值大于PR2时,M输出脚持续输出高电平。注意:CCP1CON中的第4,5位在这里并非无用,在后面的电流调节中可以用来微调PW的占空比。T2CO:决定MR的预分频器和后分频器的分频比,预分频器和前面讲过的R2共同决定M频率,后分频器决定TMR2的中断周期。刹车断电模块:电动车在刹车手柄附近装了一个微动开关,一方面在刹车时点亮刹车灯,一方面给控制器提供一个刹车高或低电平信号,各厂家不一定,在电路上作一些电平转换很容易就可以提供给单片机一个准确的信号,我们可以采用数字测量的方法测量这

15、个电平是高还是低,也可以使用D去测量有几伏,总之监测到这个信号后必须关闭所有的驱动输出和M输出,这样就可以实现刹车断电。编程方面我就不多说了。至于如何实现EBS电子刹车,我们后面在附加功能再讲。4。限流驱动这是整个控制器的灵魂,如果限流驱动没做好,其他功能再好还是一个字:烧!。电动车控制器的电子开关均使用功率MOFET控制,MOFE的最大允许电流,最大允许功耗都有其限制,如果没有电流控制,或者电流控制不好,均会导致功率MST的烧毁,从而导致整个控制器报废,因此电流控制是本程序的重中之重,这个做不好,其它功能一概免谈。说起来严重,其实做起来,摸到窍门也是很简单的,其秘诀也只有四个字:准确,及时电

16、流信号经康铜丝采样之后分两路,一路送至放大器,一路送至比较器。具体电路见硬件部分。放大器用来实时放大电流信号,放大倍数大约6.倍,放大后的信号提供给单片机进行A采样转换,转换所得数字用来控制电流不超过我们所允许的值。另一路信号送至比较器,当电流突然由于某种原因大大超过允许值,比如一只MOSET击穿或误导通时,比较器翻转送出低电平,触发单片机的IN0外部中断,使单片机能够快速关断驱动,从而保护MOSFT避免更大伤害。我们这里所要讲述的准确,及时两个要素,主要是针对放大器放大之后的信号处理过程来表述的。准确图首先一个条件是准确,这里所指的是电流的D采样和转换的时机。我们现在使用的是PW脉冲驱动,这

17、种脉冲驱动导致的直接结果是放大后的电流信号与WM脉冲频率相同,相位上滞后一定时间的脉动电流波形,见图。这种波形会类似于一个梯形,如果我们要获得准确的电流D转换值,最好的办法就是在梯形波的上边中间采样电流信号,这样所获得的电流AD值才能较为准确地反应电流的实际大小。在本文所选的单片机上,转换的采样开始时间由ADCN0中的ADON位控制开始,AD转换则由AG位启动,采样时间,在单片机的数据手册里有明确的规定,在一般控制器放大电路中,采样的时间一般采用0S,在这期间可以做一些固定的事,比如系统计时之类的,以免浪费资源。而转换时间,只要保证不小于数据手册所规定的S/t的最低要求,当然是越快越好,这里设

18、定为2S/i。那么怎样保证采样的准确性呢?这里有一个前面提过的办法,就是使用定时中断,我们可以设定好使定时中断和WM周期同步,这里采用TMR2经以PW频率1:2的后分频之后产生的中断。此中断发生在每两个WM信号起始时刻,预先设定好A的通道,将AD转换器切换到检测电流的那个通道,当进入MR2中断处理完现场保护,中断源判断等一系列动作之后,再延时一段时间,开启ADON的时刻,也就是对电流波形采样的时刻刚好落在电流梯形波的前部,采样完毕之后马上进行转换。在等待转换结果出来的过程中,我们也不能闲着,毕竟那是20S的时间,在资源比较紧张的时候浪费了可惜,我们可以做一些比如鉴相的工作,就是在电子换相中所作

19、必须作的工作。中断中D采样时机的掌握例程:CF PIR,TM2IF ;6,T2中断CL ENGIU;恒流查表程序,利用这个程序延时一段时间以便在合适的时间准确采样电流值。BTSC NTCO,INFGT INTB;是否过流MOF A_CHANEL,W ;A检测部分,设置合适的A通道,并且开启AD模块开始采样MOVWF DCON0 ;CALL IME5;大于45S采样时间FOR6F86BTSC INTON,INFTOINTB ;是否过流BSF ACON,O ;开始AD转换CLL RADHALL;利用A转换的间歇做别的事LOOP_TMFSCITON,NTGOTO INTB ;BTFSC ACON0,

20、GOGTO LOOPTM2及时其次是要及时。如果我们想及时准确地控制电流,采样次数也是要求越多越好,因为电流的变化相当快,在一个PWM周期中变化量可能会很大,所以我们最好是在一个PWM周期里采样数次,但是我们的单片机没有这么快的速度,再说PWM的占空比在一个周期中只接受最后的改变,新的占空比参数要到下个周期才能发挥作用,所以一个PWM周期采样一次就够了,但每个采样周期采样单片机还是来不及处理,为了更好地处理其它事情,我们两个WM周期才对电流采样一次。采样转换之后的工作,就是处理了。怎样根据AD结果去调节电流?我们不需要想到PID控制那么复杂的概念,只需要在电流没达到限制值时逐渐增加CR1L的值

21、,直到等于手柄设定值为止,如果在此过程中电流接近限制值,那么应该不再增加CPR1L的值,直到电流减小。如果电流超过了限制值,则根据超过的量,找一个比较合适的减小量,比如CCPR1L减1或减,一切以电流比较稳定为准,不要有太大的波动,但波动越小,我们要求PM占空比调整精度越高。这里要提一下的是PWM分辨率,以PI6F2的条件,在时钟的工作频率和1.625的P频率前提下,PWM的占空比调整可以有10B的精度,可调整的为数越多,电流细调就越精确,但10IT的数据涉及个字节的运算,所以我们还是只采用8BI的调整精度,实践证明,8T的精度对调整电流来说足够。所以我们只对CCPRL进行操作就可以,前提是T

22、M2预分频值为1:恒流算法电流即时值和有效值的矛盾:也许我们注意到大多数控制器的最大电流并没有出现在堵转的时候,这是因为上面我们所检测到的是电流的即时值,我们在电流表上看到的是电源电流的有效值,当PW占空比不是10%的情况下,电流有效值电流即时值*PWM占空比,也就是说,占空比越小,要保证电流有效值达到我们的期望值,电流的即时值要提高,这样就涉及一个算法问题:提高多少?我们可以根据上面那个公式做一个表格,或者根据CPR1L中的值做一个简单的换算。总之是算法不能太复杂,不能占用太多的系统时间。电流的测量和控制还涉及到其他两个附加功能:换相消噪和降低温升。这里就只讲讲换相消噪。怎样减小换相噪声?在

23、电动车刚刚起步的时候我们会发现换相时电机会发出很大的突突声,这是由于电机起步时电流比较大,而电机是个感性负载,换相后由于电机线圈电流不会一下增大到换相前的水平,这样就造成换相前后电流反差非常大,从而导致牵引力的急剧变化,这种变化便会引起电机强烈振动,这种振动噪声我们不能完全消除,但有简单的方法减小,就是在换相后的一段时间使PWM脉冲占空比达到100来使电流增长快一点,从而减轻振动噪声。需要提醒的是在这个过程中我们需要随时监测电流变化,电流一达到换相前的水平就可以恢复换相前的占空比。如果电流始终达不到以前的水平,那么最多延时十多个PWM周期即可,时间长了也没用,以不影响到鉴相等其它重要工作为度。

24、降低温升这个我在硬件电路详解要点中已经初步介绍过,主要的手段就是加入同步续流的概念,那么,在软件中什么时候开始开启同步续流开关呢?在电流小的时候,电机线圈中的感应电流并不大,所以没必要开启;在PWM占空比达到100%时,由于没有上桥的开关损耗,也没必要开,或在PWM占空比接近100%时,下桥没来得及开就被关闭,也没有必要开,所以开启同步续流功能的条件可归纳为:电流超过3-A时,PWM占空比95时开启同步整流,由于硬件电路设计得比较完善,在软件中,开启同步续流只需将R1置为低电平即可。关于电流的另一点:过流保护,当有OSFT击穿或MOSFET误导通时,比如死区发生器有故障时,会造成上下桥直通将电

25、源直接短路,这样会有很大的电流,为避免更大的伤害,在电流信号引起比较器翻转时触发INT0中断,由于PIC16F72没有中断嵌套,因此在整个定时中断中均要随时检测INT0中断标志,防止短路发生。一般说来,上下桥直通不超过0时对管子损害不大,超过30后功率管就会有报销的危险,所以在中断中执行其他程序时,一定要保证每隔S必须去检测一次N0的中断标志,如果发现INT0中断标志置1,应立即关断所有的驱动输出。堵转保护模块为了防止电机发生堵转时电流始终通过同一组MOST而造成永久损害,因此有必要在堵转发生之后数秒钟之内切断电机的供电。一般堵转保护时间是秒。要注意的是有时电机虽然发生堵转,但刚好在换相的临界

26、点,此时会产生频繁的换相动作,这对MOSFE也是有害的,所以也应当作堵转来对待。堵转保护实际与系统计时捆绑在一起,在电动机运行时,如果检测到换向则将堵转计时寄存器清空,如果堵转计时寄存器溢出则进入保护状态,关闭所有驱动输出。欠压保护模块这是针对电池的保护动作,如果电池过放电,将导致电池的永久损坏。注意欠压保护和电池电压上升后恢复供电这两个电压应有一定回差,比如48V电池欠压点在2V,而恢复供电点在45V,当电池电压回到45V时还应延时数秒再恢复供电,避免控制器频繁进入保护状态使骑行者感到不适。另一点要注意的是,电池是具有内阻的电源,因此在大电流放电的情况下因适当调低欠压值。在一些产品中,当电池

27、电压接近欠压时,控制器会减小供给电机的电流,这在一方面可以提醒使用者电池处于亏欠状态,小电流放电避免了电池的损坏;另一方面还可以使电动车继续跑动相当长的距离而不会经常进入保护状态,避免使用者感到不舒适或者要受到推车之苦,这也不失为一种比较好的方法。电压值的检测也是不需要非常频繁的,所以和手柄,刹车一道,在中断中每隔1-5s轮流检测一次AD值即可,检测后的结果保存起来放在全局变量中,等到退出中断后,利用单片机的空余时间来处理这些值。AD通道的切换及基本程序结构安排由于单片机的模块是复用的,在必须的几个功能中,单片机必须完成电流,手柄,电源电压等D检测,由于电流的A检测非常重要,并且在中断中,所以

28、AD通道的切换就必须非常注意,通常,手柄,电源电压变化比较缓慢,为了仅可能把资源让给电流,手柄和电源电压的检测只需要00mS轮换检测一次就够了。还有一个要考虑的是在换向时由于消音程序需要用到电流通道的AD转换,所以所有的AD结果必须安排在换向之前取出,并且根据当时通道将结果放到相应的结果寄存器中保存起来,以避免D结果造成控制紊乱。程序结构的安排涉及两个方面:定时中断中的结构安排和非中断中的结构安排。定时中断中程序结构的一种安排:中断保护系统计时通道选择开始AD采样转换开始检测相位变化AD结果保存电流判断及处理根据相位变化是否换向,消噪中断恢复并返回非中断中的程序结构安排:见图2:主循环流程图图2:故障的检测,保护及告警显示:使用了单片机这样的可以智能化操作的零件,我们就可以做一些工作来帮助生产和维修:由于生产过程中不可避免会造成一些诸如虚焊,连锡之类的缺陷,所以在产品组装成半成品测试时就会出现一些故障,轻则某些功能失效,重的会导致元器件烧毁,这是老板绝对不愿意看到的,所以我们可以多做一些工作最大限度上避免此类问题的发生:我们最担心的是生产过程中由于连锡或虚焊导致MOSE烧毁,一个OS好几块RMB,烧一个谁都心疼。幸好现

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1