文档详情

电动车无刷电机控制器软件设计详解

hs****ma
实名认证
店铺
DOCX
99.70KB
约35页
文档ID:404887756
电动车无刷电机控制器软件设计详解_第1页
1/35

电动车无刷电机控制器软件设计详解AA(乍者: 谢渊斌 原作发表在《电子报 2007 年合订 本》下册版权保留,转帖请注明出处A本文以MICROCHIP 公司所生产的PIC16F72 为基础说明软件编程方面所涉及的要点, 此文所涉及的源程序均以PIC的汇编语言 为例a由于软件不可避免需与硬件相结合, 所以此文可能出现硬件电路图或示意图 AA 本文适合在单片机编程方面有一定经验的 读者,有些基础知识恕不一一介绍金我们先 列一下电动车无刷马达控制器的基本要求: 功能性要求:1. 电子换相2直无级调速3. 刹车断电4. 附加功能a. 限速b. 1+1助力ac.EBS柔性电磁刹车Ad.定速 巡航畑.其它功能(消除换相噪音,倒车等)a安全性要求:1A限流驱动2. 过流保护a 3 .堵转保护3. 电池欠压保护a4.节能和降低温升a5 .附加功能(防盗锁死,温升限制等)62附加故障 检测功能A从上面的要求来看,功能性要求和安全性要 求的前三项用专用的无刷马达驱动芯片加 上适当的外围电路均不难解决,代表芯片是 摩托罗拉的MC33 0 35,早期的控制器方案均 用该集成块解决但后来随着竞争加剧,很 多厂商都增加了不少附加功能 ,一些附加功 能用硬件来实现就比较困难,所以使用单片 机来做控制的控制器迅速取代了硬件电路 芯片。

但是硬件控制和软件控制有很大的区 别,硬件控制的反应速度仅仅受限于逻辑门 的开关速度,而软件的运行则需要时间要 使软件跟得上电机控制的需求,就必须要求 软件在最短的时间内能够正确处理换相 ,电 流限制等各种复杂动作 ,这就涉及到一个对 外部信号的采样频率,采样时机 ,信号的内 部处理判断及处理结果的输出,还有一些抗 干扰措施等 ,这些都是软件设计中需要再三 仔细考虑的东西PIC1 6F72是一款哈佛结构,精简指令集 的MCU,由于其数据总线和指令总线分开, 总共3 5条单字指令,0-20M的时钟速度, 所以其运算速度和抗干扰性能都非常出 色,2K字长的F LASH程序空间,22个可用 的10 口,同时又附加了 3个定时/计数器,5 个 8 位 AD 口,1 个比较/捕捉/脉宽调制器, 8个中断源,这些优异的性能为电动车控制 器控制提供了良好的硬件环境和软件基础, 一经推出就赢得众多设计人员的热捧那么如何使用PIC16F7 2来设计一个电动 车控制器呢?我们下面以目前市面流行的硬 件设计为基础 ,尽量通俗易懂地介绍一下程 序设计思路和注意点要使无刷电机转起来 ,并且听从驾驶者的调 速、刹车等基本指挥,最基本的要求就是要 实现硬件所能实现的电子换向和调速,刹车 等功能。

实际上软件的整体设计也和硬件一 样,也是一个模块化堆砌的过程,问题在于 模块的合理化堆砌,使堆砌后形成的整体能 够坚固,协调、高效率运作我们先说一说 各种模块功能的简单实现 ,然后再来讨论如 何使这些模块协调运转首先说说电子 换相模块我们知道,直流永磁电机在运转时需要一对 电刷和与线圈相对应的换向整流子来使线 圈中的电流方向根据磁场方向来不断改变 , 从而转子持续向一个方向运转,我们称这种 电机为有刷电机,在电动车刚刚面世时一般 均使用这种电机,但有刷电机有一个致命的 缺陷,就是用作电刷的碳刷非常容易磨损, 换向整流子也非常容易被油污 ,碳刷碎屑填 满空隙而漏电 ,而且功率越大 ,这种毛病越 严重,导致有刷电机维护量和故障率急剧上 升,严重影响其推广 ,因此在较大功率的场 合,无刷电机应运而生A无刷电机,顾名思 义就是没有了电刷,不能自动换向,因此要 依靠传感器检测转子的位置、用电子开关来 改变线圈中电流的方向 ,所以其控制器要对 转子永磁体位置进行精确检测 ,并用电子开 关切换不同绕组通电以获得持续向前的动 力转子位置检测传感器有很多,比如光传 感器,磁感应传感器等 ,电子开关可以用大 功率三极管、功率型场效应管、IGBT等制作, 在目前的绝大多数电动车三相无刷电机中 均使用三个开关式的霍尔传感器检测永磁 体相对于定子线圈的位置,控制器跟据三个 霍尔传感器输出的六种不同信号输出相应 的控制信号驱动功率型场效应管(MOSFET) 组成的电子开关向马达供电。

这就是所谓六 步换相法从电机原理可以看出,这种电机 是一种特殊的同步电机,因此换相必须及时 否则会导致电机失步,从而使电机噪音增大 效率降低,严重的还会导致控制器 ,电机烧 毁鉴于以上要求,我们先必须测一下市面上普 通的无刷马达在最高转速时 (考虑到顺风和 下坡的情况)的换向情况,这个比较简单,用 示波器测量之后得到在最高速时每相霍尔 传感器输出的频率大概在14 0HZ左右,折 合到换向的最小时间,那么应该是 1.2mS 左 右换相一次,根据际的使用效果,软件的反 应时间必须在0.12mS左右,也就是说在检 测到换相信号的改变并且输出换相驱动信 号时的过程必须在 0.1-0.2mS 之内完成另 一个需要考虑的是,电机驱动是一个大电流 驱动,又是一个电感性负载,控制器在运行 时不可避免有干扰引入,因此除了在硬件布 局,布线上注意外 ,软件上也要做相应的抗 干扰措施以避免错误的换向动作考虑到输 入到单片机的换相信号容易受干扰 ,加上线 路上滤波电容的影响 ,单片机程序在读取换 相信号时应至少连续读取 3 次,以 3 次信号 完全一致时才采用该值作为换相信号的真 值,如果其中一次不对 ,那么干脆就重新再 读 3 次,这就是一个有抗干扰措施的鉴相过 程。

取得换相信号后,我们将其与上次读到 的值做对比,如果相同 ,则表示没有换相, 如果不同,则要跟据这个值去取得一个相对 应的驱动信号,从而驱动电子开关动作这 个过程可以使用逐项比较法 ,查表法等来实 现鉴于查表法比较快捷,一般使用查表法 其中需要考虑的是,一旦获得的信号与所有 的六个信号都不相同 ,可能表示电机中霍尔 元件或者其连接线路出现故障 ,此时我们应 该让电机断电以避免误操作市面上有两种电机,即所谓的1 2 0°和60° 霍尔信号,这个角度代表三个霍尔器件输出 的三相电信号其相位角相差的角度,其实这 里面的区别仅仅是电平的不一样,在马达内 部的安装上,位置没什么不同,只是中间一 相的相位相反,所以仍然是六种信号对应六 种驱动,软件上将表稍作调整即可需要提 一下的是,在120的霍尔信号中,不可能 出现二进制0B000 和 0Bill的编码,所以在 一定程度上避免了因霍尔零件故障而导致 的误操作因为霍尔元件是开路输出,高电 平依靠电路上的上拉电阻提供 ,一旦霍尔零 件断电,霍尔信号输出就是0 Bill一旦霍 尔零件短路,霍尔信号输出就是0 B000,而 6 0°的霍尔信号在正常工作时这两种信号 均会出现,所以一定程度上影响了软件判断 故障的准确率。

目前市面马达已经逐渐舍弃 6 0°相位的霍尔排列编程提示:a在程序 上,我们综合考虑单片机的处理速度,采用 定时中断去检测相位变化 ,中断周期采用 128US,中断源可使用TMR0,或者PWM本身的 TMR2中断在同一个中断中,我们还将安排 其它更重要的工作 ,这个在后面的电流控制 中再说明编程技巧: 从硬件电路图中我们看到,位置霍尔信号在PORTC 口的 RC4、RC5、RC6 三个口输入, 以12 0°相位为例,如果直接读出来,对 应十六进制值是0 X 10-0 X60,考虑到霍尔 出错的可能,那么对应的值是0 X00-0 X70,显然这个值对今后的查表处理造成非 常大的麻烦,我们不可能去弄一个0X70这 么大的表格而其中只放仅仅8个元素,所以 有必要考虑编程时的优化,且看下面一个例 程:读取相位值的例程:aREADHALL:SWAPF PORTC, W ;将 PORTC 的高,低半 字节交换后读至WaANDLW 0X07 ;屏蔽掉 不必要的位,aMOVWF halltemp ;存人 暂存器SWAPF PORTC,W ;再次读aANDLW 0X 0 7aSUBWF HAL L TEMP,W ;与旧值比较aBTFS s statu s ,zGOTO READHALL ;如果与第一次读取 的不一样,则从头再来aSWAPF portc,w ; 第三次读ANDLW 0X07SUBWF HALLTEMP,W ;再次比较 aBTF SS STATUS,ZGOTO READHALL ;不一样则从头再来RETURN ;三次读取值一致,返回。

这个程序中,最关键是 SWAPF PORTC, W 这句,这句语句一方面读取了霍尔值, 另一方面与下句语句结合还将此值变为0-7 的最小值,这样使得我们后面的查表只需要 8个空间的元素以上程序,也有人认为有可能会导致程序陷 入死循环,但不必担心,因为要导致这个程 序进入死循环的信号频率必须非常高,有兴 趣的读者可计算一下有了上面的霍尔读取 程序,我们下面的查表读取相应驱动值就会 变的比较方便,但查表也有很多种,在P I C16F7 2中,查表可以用RETLW在程序 空间查,也可以用专用的读取FLASH空 间的指令去读,考虑到我们这个表格一共只 有8个元素,我们可以将器放在内存寄存器 中,利用用FSR去读取表内容这样做有 好处,就是查表时不用去考虑查表偏移量造 成程序计数器溢出,另一方面是120°和6 0° 可以使用同一个表格而不用切换这个表格 我们可以放在寄存器空间不太方便使用的BANK1,在程序初始化时预先写入正确的换 向对应值这个程序在时间上并不比其它两 种查表法显得快多少,而且程序空间也不节 省,在这里只是作为一个方法示例,可以让 我们看到实现同一个功能可以走不同的路M吏用内存查表法的驱动值获取例程:;aHALLSTART EQU 0XA1 ;定义霍尔一驱动 表格的起始地址在BANK1的0XA1开始处 ;aHALL_DRIVER:;由霍尔值取得对应驱 动值的内存查表例程MOVF HALLTEMP,W ;取得 H ALL 的真 值ADDLW HALLSTART ;加上表格的起始地 址aMOVWF fsr ;放到间接读内存的指针中。

aMOVF IND F,W ;读出驱动值 aMOVWF P ortb ;不管返回值如何,先写入驱动端口, SUBLW STOP_D ;与电机停止值相比较, BTFSC status, Z aGOTO hall_err ; 如果获得停止电机值,那么表示霍尔信号有问题RETUR N无级调速模块部分鼻由于使用直流电源,电 机的速度得依靠调节加在电机两端的电压 来调整,较简单的办法是使用PWM脉宽调制 来调节加到电机两端的电压PWM的工作周 期根据电机的使用环境,采用6 4uS,折算 成频率大约15. 6 2 5 KHz,频率太低了会产 生人耳能明显感觉到的高频噪声,电流也不 容易控制;太高了又增加电子开关的开关损 耗;PWM脉冲的宽度是调节加到电机两端有 效电压高低的手段,直接影响到电机的输出 功率,我们可以根据手柄输出的电压决定最 终应该分配给电机多高的电压手柄电压检测比较简单,人对速度的感觉很 迟钝,所以手柄的检测不需要很频繁,这个 AD 检测与电源电压 AD 等检测均不需要很快 的速度,所以每隔10mS-50mS轮番检测一次 便足够,AD的检测在定时中断中做,而结果 则放在中断外做 ,这样不会占用中断太多的 时间。

编程提示:a由于现在大多采用线性霍尔作为 手柄调节速度方案 ,优点是无触电 ,故障率 极低缺点是在 5V 供电的情况下,电压只能 在1.1V — 4. 3V的范围内变化,因此软件的 处理相对复杂一点这只需要我们做一点简 单的运算,或者采用查表的方法,将这期间 的AD数值转换成PWM占空比的值即可虽 然讲是无级调速,实际上分 32 级时人已经 感觉不出速度的细微变化了但是有一点, 根据手柄得出的PWM脉冲宽度不能。

下载提示
相似文档
正为您匹配相似的精品文档