首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 单元电路介绍 > 电视机电路
采用PICl6F72单片机的电动车无刷电机控制器软件设计
来源:本站整理  作者:佚名  2011-01-10 08:34:34



  编程技巧:从硬件电路图中看到,位置霍尔信号在PORTC口的RC4~RC6三个口输入,以120度相位为例、如果直接读出来。对应十六进制值是OXlO~OX60,考虑到霍尔出错的可能,那么对应的值是OX00-0X70,显然这个值对今后的查表处理造成非常大的麻烦,不可能去弄一个OX70这么大的表格而其中只放仅仅8个元素,所以有必要考虑编程时的优化,先看下面一个例程:

  读取相位值的例程:

  READHALL:

  SWAPF PORTC,W  :将PORlTC的高,低半字节交换盾读至WANDLW OX07  屏蔽掉不必要的位MOVWF HALLTEMP:存人暂存器SWAPF PORTC,W  ;再次读ANDLW OX07SUBWF HALLTEMP,W ;与旧值比较BTFSS STATUS,ZGOTO READHALI;如果与第一次读取的不一样,则从头再来SWAPF PORTC,W;第三次读ANDLW OX07SUBWF HALLTEMP。W;再次比较BTFSS  STATUS,ZGOTO READHALL    ;不一样则从头再来RETURN    ;三次读取值一致,返回    、这个程序中,最关键是SWAPF PORTC,W这条指令,该指令一方面读取了霍尔值,另一方面与下旬指令结合还将此值变为0~7的最小值。这样使得查表只需要8个空间的元素。

  有了上面的霍尔读取程序,下面的查表读取相应驱动值就会更加方便,但查表也有很多种,在PICl6F72中,查表可以用RETLW在程序空间查,也可以用专用的读取FLASH空间的指令去读,考虑到这个表格一共只有8个元素,可以将表格放在内存寄存器中。利用FSR去读取表中内容。这样做的好处,就是查表时不用去考虑查表偏移量造成程序计数器溢出,另一方面是120度和60度可以使用同一个表格而不用切换。这个表格可以放在寄存器空间不太方便使用的BANKl中。在程序初始化时预先写入正确的换向对应值。这个程序在时间上并不比其他两种查表法显得快多少,而且程序空间也不节省,在这里只是作为一个方法示例,可以看到实现同一个功能可以走不同的路。

  使用内存查表法的驱动值获取例程:

  HALLSTART EQU OXAl  ;定义霍尔一驱动表格的起始地址在BANKl的OXAl开始处HALL_DRIVER:  ;由霍尔值取得对应驱动值内存查表例程MOVF HALLTEMP,W  ;取得HALL的真值ADDLW HALLSTART  ;加上表格的起始地址MOVWFFSR。;放到间接读内存的指针中,MOVF INDF,W;读出驱动值MOVWFPORTB  ;不管返回值如何,先写入驱动端口SUBLW STOPl_D; 与电机停止值相比较BTFSC STATUS,ZGOTO HALL_ERR.;如获得停止电机值,则表示霍尔信号有误RETURN
  
  3.无级调速模块部分
  
  由于使用直流电源,电机的速度得依靠调节加在电机两端的电压来调整。较简单的办法是使用PWM脉宽调制来调节加到电机两端的电压。PWM的工作周期根据电机的使用环境,采用64μs,折算成频率大约15.625kHz,频率太低了会产生人耳能明显感觉到的高频噪声,电流也不容易控制;太高了又增加电子开关的开关损耗;PWM脉冲的宽度是调节加到电机两端有效电压_高低的手段,直接影响到电机的输出功率,根据手柄输出控制信号电压决定最终应该分配给电机多高的电压。

  手柄电压检测比较简单,人对速度的感觉很迟钝,所以手柄的检测不需要很频繁,这个AD检测与电源电压AD等检测均不需要很快的速度。所以每隔10ms~50ms轮番检测一次便足够,AD的检测在定时中断中做,而结果则放在中断外做,这样不会占用中断太多的时间。

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

  程序中所用关键控制寄存器及其作用:PR2:决定PWM的工作周期,也就是PWM的调制频率。工作中其值不断地与TMR2中的值相比较。当TMR2的值等于PR2时TMR2归零重新开始另一个周期,由于用到TMR2,所以TMR2的预分频器也同样影响到PWM的工作周期。具体计算公式在数据手册上可以找到,下同。CCPR1L及CCPICON的第4、5位:决定PWM的占空比,单片机在运行时TMR2的值不断与CCPRlL中的值比较。当TMR2=CCPRlL时,PWM输出脚输出低电平。当CCPRlL中的值大于PR2时,PWM输出脚持续输出高电平。注意:CCPlCON中的第4、5位在这里并非无用。在后面的电流调节中可以用来微调PWM的占空比。T2CON:决定TMR2的预分频器和后分频器的分频比,预分频器和前面讲过的PR2共同决定PWM频率,后分频器决定TMR2的中断周期。PWM输出的一些初始化设置:

  CLRF CCPRlL  :PWM占空比为零MOVLW B'00001 100'

  MOVWF T2CON    ;TMR2预分频值为1:1。后分频值为1:2(128μs一次中断,作为整个系统的时钟中断周期。)BSF T2CON,TMR20N  :开启TMR2BSF STATUS,R10;BANKlMOVLW D'255'

  MOVWF PR2  ;PWM作周期=64μs=[(PR2)+1]×Tcy×(TMR2预分频值),其中Tcy是系统时钟振荡周期。

  BCF TRISC,2;将PWM输出脚设置成输出状态BCF STATUS,Rt0;BANK0
  
  4.刹车断电模块
  
  电动车在刹车手柄附近装了一个微动开关,一方面在刹车时点亮刹车灯,另一方面给控制器提供一个刹车(高或低)电平信号。虽然各厂家不一样,但在电路上作一些电平转换很容易提供给单片机一个准确的信号,可以采用数字测量的方法测量这个电平是高还是低,也可以使用A/D去测量有几伏,总之监测到这个信号后必须关闭所有的驱动输出和PWM输出,这样就可以实现刹车断电。

上一页  [1] [2] [3] [4]  下一页

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)
Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:19,695.31000 毫秒