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

所需积分/C币:32 2012-08-14 15:53:26 7.35MB PDF
100
收藏 收藏
举报

对电动车无刷电机控制器软件设计详解,对软件设计有非常好的借鉴作用,避免设计中的问题
芯片。 但是硬件控制和软件控制有很大的区别,硬 件控制的反应速度仅仅受限于逻辑门的开 关速度,而软件的运行则需要时间。要使软 件跟得上电机控制的需求,就必须要求软件 在最短的时间内能够正确处理换相,电流限 制等各种复杂动作,这就涉及到一个对外部 信号的采样频率,采样时机,信号的内部处 理判断及处理结果的输出,还有一些抗干扰 措施等,这些都是软件设计中需要再三仔细 考虑的东西 PICI6F72是一款哈佛结构,精简指令集的 MCU,由于其数据总线和指令总线分开,总 共35条单字指令,0-20M的时钟速度,所以 其运算速度和抗干扰性能都非常出色,2K字 长的 FLASH程序空间,22个可用的I0口, 同时又附加了3个定时/计数器,5个8位 AD口,1个比较/捕捉/脉宽调制器,8个中 断源,这些优异的性能为电动车控制器控制 提供了良好的硬件环境和软件基础,一经推 出就赢得众多设计人员的热捧。 那么如何使用PIC16F72来设计一个电动车 控制器呢?我们下面以目前市面流行的硬 件设计为基础,尽量通俗易懂地介绍一下程 序设计思路和注意点。 要使无刷电机转起来,并且听从驾驶者的调 速、刹车等基本指挥,最基本的要求就是要 实现硬件所能实现的电子换向和调速,刹车 等功能。实际上软件的整体设计也和硬件 样,也是一个模块化堆砌的过程,问题在于 模块的合理化堆砌,使堆砌后形成的整体能 够坚固,协调、高效率运作。我们先说一说 各种模块功能的简单实现,然后再来讨论如 何使这些模块协调运转。 1.首先说说电子换相模块 我们知道,直流永磁电机在运转时需要一对 电刷和与线圈相对应的换向整流子来使线 圈中的电流方向根据磁场方向来不断改变, 从而转子持续向一个方向运转,我们称这种 电机为有刷电机,在电动车刚刚面世时一般 均使用这种电机,但有刷电机有一个致命的 缺陷,就是用作电刷的碳刷非常容易磨损, 换向整流孑也非常容易被油污,碳刷碎屑填 满空隙而漏电,而且功率越大,这种毛病越 严重,导致有刷电机维护量和故障率急剧上 升,严重影响其推广,因此在较大功率的场 合,无刷电机应运而生 无刷电机,顾名思义就是没有了电刷,不能 自动换向,因此要依靠传感器检测转子的位 置、用电子开关来改变线圈中电流的方向, 所以其控制器要对转子永磁体位置进行精 确检测,并用电子开关切换不同绕组通电以 获得持续向前的动力。转子位置检测传感器 有很多,比如光传感器,磁感应传感器等, 电子开关可以用大功率三极管、功率型场效 应管、IGBT等制作,在目前的绝大多数电动 车三相无刷电机中均使用三个开关式的霍 尔传感器检测水磁体相对于定子线圈的位 置,控制器跟据三个霍尔传感器输出的六种 不同信号输出相应的控制信号驱动功率型 场效应管( MOSFET)组成的电子开关向马达 供电。这就是所谓六步换相法。从电机原理 可以看出,这种电机是一种特殊的同步电机, 因此换相必须及时,否则会导致电机失步, 从而使电机噪音增大,效率降低,严重的还 会导致控制器,电机烧毁 鉴于以上要求,我们先必须测一下市面上普 通的无刷马达在最高转速时(考虑到顺风和 下坡的情况)的换向情况,这个比较简单, 用示波器测量之后得到在最高速时每相霍 传感器输出的频率大概在140HZ左右,折 合到换向的最小时间,那么应该是1.2mS左 右换相一次,根据际的使用效果,软件的反 应时间必须在0.12mS左右,也就是说在检 测到换相信号的改变并且输出换相驱动信 号时的过程必须在0.1-0.2mS之内完成 另一个需要考虑的是,电机驱动是一个大电 流驱动,又是一个电感性负载,控制器在运 行时不可避免有干扰引入,因此除了在硬件 布局,布线上注意外,软件上也要做相应的 抗干扰措施以避免错误的换向动作。考虑到 输入到单片机的换相信号容易受干扰,加上 线路上滤波电容的影响,单片机程序在读取 换相信号时应至少连续读取3次,以3次信 号完全一致时才采用该值作为换相信号的 真值,如果其中一次不对,那么干脆就重新 再读3次,这就是一个有抗干扰措施的鉴相 过程。取得换相信号后,我们将其与上次读 到的值做对比,如果相同,则表示没有换相, 如果不同,则要跟据这个值去取得一个相对 应的驱动信号,从而驱动电子开关动作。这 个过程可以使用逐项比较法,查表法等来实 现。鉴于查表法比较快捷,一般使用查表法 其中需要考虑的是,一日获得的信号与所有 的六个信号都不相同,可能表示电机中霍尔 元件或者其连接线路出现故障,此时我们应 该让电机断电以避免误操作。 市面上有两种电机,即所谓的120°和60 霍尔信号,这个角度代表三个霍尔器件输出 的三相电信号其相位角相差的角度,其实这 里面的区别仅仅是电平的不一样,在马达内 部的安装上,位置没什么不同,只是中间 相的相位相反,所以仍然是六种信号对应 种驱动,软件上将表稍作调整即可。需要提 一下的是,在120°的霍尔信号中,不可能 出现二进制0B000和0B111的编码,所以在 定程度上避免了因霍尔零件故障而导致 的误操作。因为霍尔元件是开路输出,高电 平依靠电路上的上拉电阻提供,一旦霍尔零 件断电,霍尔信号输出就是OB111。一霍 尔零件短路,霍尔信号输出就是OB000,而 60°的霍尔信号在正常工作时这两种信号 均会出现,所以一定程度上影响了软件判断 故障的准确率。目前市面马达已经逐渐舍弃 60°相位的霍尔排列 编程提示 在程序上,我们综合考虑单片机的处理速度, 采用定时中断去检测相位变化,中断周期采 用128μS,中断源可使用TMRO,或者PWM 本身的TMR2中断。在同一个中断中,我们 还将安排其它更重要的工作,这个在后面的 电流控制中再说明。 编程技巧: 从硬件电路图中我们看到,位置霍尔信号在 PORTO口的RC4、RC5、RC6三个口输入,以 120°相位为例,如果直接读出来,对应十 六进制值是0X10-0X60,考虑到霍尔出错的 可能,那么对应的值是0X00-0X70,显然这 个值对今后的查表处理造成非常大的麻烦, 我们不可能去弄一个0X70这么大的表格而 其中只放仅仅8个元素,所以有必要考虑编 程时的优化,且看下面一个例程: 读取相位值的例程: READHALL SWAPF PORTO,W;将 PORTO的高,低半字节 交换后读至W ANDLW0X07;屏蔽掉不必要的位, MOVWF HALLTEMP;存人暂存器 SWAPF PORTO,W;再次读 ANDLW 0XO7 SUBWE HALLTEMP,W;与旧值比较 BTFSS STATUS Z GOTO READHALL;如果与第一次读取的不 样,则从头再来 SWAPF PORTC,W;第三次读 ANDLW 0XO7 SUBWE HALLTEMP,W;再次比较 BTESS STATUS Z GOTO READHALL;不一样则从头再来 RETURN;三次读取值一致,返回 这个程序中,最关键是 SWAPF PORTO,W这 句,这句语句一方面读取了霍尔值,另一方 面与下句语句结合还将此值变为0-7的最小 值,这样使得我们后面的查表只需要8个空 间的元素 以上程序,也有人认为有可能会导致程序陷 入死循环,但不必担心,因为要导致这个程 序进入死循环的信号频率必须非常高,有兴 趣的读者可计算一下 有了上面的霍尔读取程序,我们下面的查表 读取相应驱动值就会变的比较方便,但查表 也有很多种,在PICl6F72中,查表可以用 RETLW在程序空间查,也可以用专用的读取 FLASH空间的指令去读,考虑到我们这个表 格一共只有8个元素,我们可以将器放在内 存寄存器中,利用用FSR去读取表内容。这 样做有好处,就是査表时不用去考虑査表偏 移量造成程序计数器溢出,另一方面是120 和60°可以使用同一个表格而不用切换。这 个表格,我们可以放在寄存器空间不太方便 使用的BANK1,在程序初始化时预先写入正 确的换向对应值。这个程序在时间上并不比

...展开详情
试读 36P 电动车无刷电机控制器软件设计详解
立即下载 低至0.43元/次 身份认证VIP会员低至7折
一个资源只可评论一次,评论内容不能少于5个字
DAIVIDLI 该资源很适合入门都参考,但也只能是参考而已
2016-02-21
回复
cjp88811283 不值3分,大家别浪费
2014-05-18
回复
jafck 其实就是别人论坛发表的文章复制黏贴
2012-12-28
回复
  • 签到新秀

    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 分享精英

    成功上传11个资源即可获取
关注 私信 TA的资源
上传资源赚积分or赚钱
    最新推荐
    电动车无刷电机控制器软件设计详解 32积分/C币 立即下载
    1/36
    电动车无刷电机控制器软件设计详解第1页
    电动车无刷电机控制器软件设计详解第2页
    电动车无刷电机控制器软件设计详解第3页
    电动车无刷电机控制器软件设计详解第4页
    电动车无刷电机控制器软件设计详解第5页
    电动车无刷电机控制器软件设计详解第6页
    电动车无刷电机控制器软件设计详解第7页
    电动车无刷电机控制器软件设计详解第8页

    试读结束, 可继续读3页

    32积分/C币 立即下载 >