无传感器无刷程序Word文档下载推荐.docx

上传人:b****2 文档编号:3989921 上传时间:2023-05-02 格式:DOCX 页数:20 大小:18.91KB
下载 相关 举报
无传感器无刷程序Word文档下载推荐.docx_第1页
第1页 / 共20页
无传感器无刷程序Word文档下载推荐.docx_第2页
第2页 / 共20页
无传感器无刷程序Word文档下载推荐.docx_第3页
第3页 / 共20页
无传感器无刷程序Word文档下载推荐.docx_第4页
第4页 / 共20页
无传感器无刷程序Word文档下载推荐.docx_第5页
第5页 / 共20页
无传感器无刷程序Word文档下载推荐.docx_第6页
第6页 / 共20页
无传感器无刷程序Word文档下载推荐.docx_第7页
第7页 / 共20页
无传感器无刷程序Word文档下载推荐.docx_第8页
第8页 / 共20页
无传感器无刷程序Word文档下载推荐.docx_第9页
第9页 / 共20页
无传感器无刷程序Word文档下载推荐.docx_第10页
第10页 / 共20页
无传感器无刷程序Word文档下载推荐.docx_第11页
第11页 / 共20页
无传感器无刷程序Word文档下载推荐.docx_第12页
第12页 / 共20页
无传感器无刷程序Word文档下载推荐.docx_第13页
第13页 / 共20页
无传感器无刷程序Word文档下载推荐.docx_第14页
第14页 / 共20页
无传感器无刷程序Word文档下载推荐.docx_第15页
第15页 / 共20页
无传感器无刷程序Word文档下载推荐.docx_第16页
第16页 / 共20页
无传感器无刷程序Word文档下载推荐.docx_第17页
第17页 / 共20页
无传感器无刷程序Word文档下载推荐.docx_第18页
第18页 / 共20页
无传感器无刷程序Word文档下载推荐.docx_第19页
第19页 / 共20页
无传感器无刷程序Word文档下载推荐.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

无传感器无刷程序Word文档下载推荐.docx

《无传感器无刷程序Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《无传感器无刷程序Word文档下载推荐.docx(20页珍藏版)》请在冰点文库上搜索。

无传感器无刷程序Word文档下载推荐.docx

磁定位结束标志,1-结束,0-没结束

.BSSASYM,1;

延时计算感应电动势计数器

.BSSSPEEDFLAG,1;

第一转时禁止速度调节标志,1-禁止,0-允许

.BSSTIME;

每转时间计数器

.BSSSTACK,6;

软堆栈区

--------------------------------------定义主向量-------------------------------------------------------------

.SECT"

VECTORS"

RSVECTB_C_INT0;

复位

INT1BPHANTOM;

INT1

INT2BPHANTOM;

INT2

INT3BPHANTOM;

INT3

INT4BPHANTOM;

INT4

INT5BPHANTOM;

INT5

INT6BADCINT;

ADC中断

…             ;

--------------------------------------以下是程序-------------------------------------------------------------

.TEXT

--------------------------------------初始化程序--------------------------------------------------------------

_C_INT0

SETCCNF

CLRCOVM

SETCSXM;

符号扩展

SETCINTM;

关中断

LARAR1,#STACK

LDP#0E0H

SPLK#68H,WDCR;

不用看门狗

SPLK#0284H,SCSR1;

10MCLKIN,20MCLKOUT

LDP#0E8H

SPLK#500,T1PR;

PWM设置,周期50微秒

SPLK#0000H,T1CNT

SPLK#0FFFH,ACTRA;

PWM1~6全部高电平输出

SPLK#01F4H,DBTCONA;

死区1.6微秒

SPLK#500,CMPR1;

占空比为0

SPLK#500,CMPR2

SPLK#500,CMPR3

SPLK#8200H,COMCONA;

允许比较,T1下溢重载

SPLK#0840H,T1CON;

连续增减计数,内部时钟,不分频

SPLK#0100H,GPTCONA;

T1周期中断标志启动AD转换

LDP#0E1H

SPLK#0FC0H,MCRA;

引脚设置为PWM

LDP#0

LACC#020H

SACLIMR;

允许INT6中断

LACCIFR;

清标志

SACLIFR

LACCEVAIFRA;

SACLEVAIFRA

LACCEVAIFRB

SACLEVAIFRB

LACCEVAIFRC

SACLEVAIFRC

SPLK#0,EVAIMRA;

屏蔽中断

SPLK#0,EVAIMRB

SPLK#0,EVAIMRC

LDP#0E1H;

AD设置

SPLK#0500H,ADCTRL2;

允许EVA启动AD转换

SPLK#0900H,ADCTRL1;

10分频

SPLK#0003H,MAXCONV;

4个转换通道

SPLK#3210H,CHSELSEQ1;

ADCIN00-03通道

CLRCINTM;

开总中断

--------------------------------------变量初始化---------------------------------------------------------

LDP#0;

变量初始化

SPLK#020H,IDC_REF;

磁定位电流

SPLK#0,IDC_ERRORK

SPLK#0300H,SPEED_REF;

转速初值

SPLK#00112,COMP;

最小占空比

SPLK#0000H,FLAGCUR

SPLK#0000H,SPEED_COUNT

SPLK#0000H,CAPT

SPLK#0000H,V1

SPLK#0000H,V2

SPLK#0000H,V3

SPLK#0000H,NEUTRAL

SPLK#0000H,FLAG

SPLK#0001H,FLAGUP;

没转过一转

SPLK#0001H,SPEEDFLAG;

禁止速度调节

SPLK#0000H,BCOUNT

SPLK#0000H,B2COUNT

SPLK#0000H,STALL

SPLK#0000H,ASYM

SPLK#0000H,V_ERRORK

SPLK#0000H,TIME

--------------------------------------准备磁定位-------------------------------------------------------------

LACCCOMP;

装载比较初值

LDP#0E8H;

反相驱动

SPLK#03FDH,ACTRA;

PWM1低有效,PWM6低电平,其它高电平

SACLCMPR1;

A相入,C相出,B相不通电

SPLK#0000H,CMPR2

SPLK#0000H,CMPR3

--------------------------------------等待磁定位结束------------------------------------------------------

MAGSTALL

LDP#0

LACCSTALL;

检测磁定位是否结束

BCNDMAGSTALL,EQ;

没结束继续等待

--------------------------------------磁定位结束换相----------------------------------------------------

LACCCOMP

LDP#0E8H.

SPLK#03DFH,ACTRA;

PWM3低有效,PWM6低电平,其它高电平

SACLCMPR2;

B相入,C相出,A不通电

SPLK#0000H,CMPR1

SPLK#4,CAPT;

CAPT初值

--------------------------------------主循环-----------------------------------------------------------------

LOOP

LACCFLAGCUR;

检测是否更新比较值

BCNDLOOP,EQ;

不更新跳转

SPLK#0,FLAGCUR;

更新,清标志

CALLSEQUENCE;

调用更新子程序

BLOOP;

等待下次更新

--------------------------------------假中断处理-------------------------------------------------------------

PHANTOM

CLRCINTM

RET

--------------------------------------更新比较值或换相子程序-----------------------------------------

SEQUENCE

LACCTIME;

ADD#1

SACLTIME

LACCCAPT;

ADD#CAPT_DETER;

加起始地址

BACC

CAPT_DETER

BRISING1;

相当于H1上升沿

BFALLING3;

相当于H3下降沿

BRISING2;

相当于H2上升沿

BFALLING1;

相当于H1下降沿

BRISING3;

相当于H3上升沿

FALLING2;

相当于H2下降沿

SPLK#0D3FH,ACTRA;

PWM5低有效,PWM4低电平,其它高电平

SACLCMPR3;

C相入,B相出,A相不通电

延时过滤干扰

LACCASYM;

延时计数器

ADD#1;

加1

SACLASYM

SUB#10;

检测是否到计数值

BCNDEND,LEQ;

没到,退出

SPLK#10,ASYM;

计数值已到,测量感应电动势过零点

LACCFLAG;

感应电动势符号变化?

BCNDEND,NEQ;

变了,退出

LACCV1,1;

没变,检测.V1乘2

ADDV1;

ACC=3*(BEMFA+NEUTRAL)

SUBNEUTRAL;

ACC=3*BEMFA

BCNDEND,LT;

<

0符号没变,退出

SPLK#1,FLAG;

否则符号改变,置过零标志

LACCBCOUNT

SACLB2COUNT;

更新延迟时间

BEND;

退出

RISING3

LACCCOMP

SPLK#0DF3H,ACTRA;

PWM5低有效,PWM2低电平,其它高电平

C相入,A相出,B相不通电

LACCV2,1;

没变,检测.V2乘2

ADDV2;

ACC=3*(BEMFB+NEUTRAL)

ACC=3*BEMFB

BCNDEND,GEQ;

≥0符号没变,退出

FALLING3

LDP#0E8H

A相入,C相出,B相不通电

RISING2

B相入,C相出,A相不通电

LACCBCOUNT

RISING1

SPLK#0F3DH,ACTRA;

PWM1低有效,PWM4低电平,其它高电平

A相入,B相出,C相不通电

LACCV3,1;

没变,检测.V3乘2

ADDV3;

ACC=3*(BEMFC+NEUTRAL)

ACC=3*BEMFC

FALLING1

SPLK#0FD3H,ACTRA;

PWM3低有效,PWM2低电平,其它高电平

B相入,A相出,C相不通电

SPLK#0,FLAGUP;

转过一机械转,置标志

END

--------------------------------------速度计算和调节子程序------------------------------------------------

SPEED_REG

SPLK#32,SPEED_COUNT;

25

CLRCSXM

LACC#0

OR#0FFFFH;

ACC=FFFFH无符号数

RPT#15

SUBCBCOUNT;

除1/12机械转时间

AND#0FFFFH;

屏蔽高位

SETCSXM

SUBSPEED_REF

NEG;

速度偏差=SPEED_REF-SPEED

BCNDPOS,GEQ;

检测偏差是否超限.≥0跳转

ABS;

0则取绝对值

SPLK#-32,SPEED_COUNT;

-25

POS

SACLV_ERRORK;

保存速度偏差

SUB#03FFH;

检测上限

BCNDOKPOS,LEQ;

不超上限则跳转

SPLK#03FFH,V_ERRORK;

否则=3FFH

OKPOS

LTV_ERRORK;

-1024<

速度偏差<

1024

MPYSPEED_COUNT;

乘25

PAC

5

速度比例调节

MPY#KPS;

乘比例系数

ADDIDC_REF,16

SACHIDC_REF;

IDC_REF(K)=IDC_REF(K-1)+KPS*V_ERRORK

LACCIDC_REF;

检测IDC_REF是否超限

BCNDRES,GEQ;

≥0跳转

SPLK#0,IDC_REF;

超下限则=0

RES

SPLK#0,SPEED_COUNT;

速度调节环计数器清0

--------------------------------------ADC中断子程序---------------------------------------------------

ADCINT;

每50微秒转换一次

MAR*,AR1;

保存现场

MAR*+

SST#1,*+;

保存ST1

SST#0,*+;

保存ST0

SACH*+;

保存ACC高16位

SACL*;

保存ACC低16位

--------------------------------------速度调节与否---------------------------------------------------------------

检测磁定位是否完成?

BCNDVDC__IDC,QE;

STALL=0(磁定位没完成)禁止速度调节

LACCSPEEDFLAG;

禁止速度调节?

BCNDVDC__IDC,NQE;

SPEEDFLAG=1,禁止速度调节

LACCSPEED_COUNT;

检测是否该速度调节?

SUB#2000;

每100ms进行一次速度调节

BCNDNO_SPEED_REG,NQE;

时间没到,跳转

CALLSPEED_REG;

时间到,调速度调节子程序

NO_SPEED_REG

LACCSPEED_COUNT

SACLSPEED_COUNT;

SPEED_COUNT+1

--------------------------------------读ADC转换结果-------------------------------------------------------

VDC__IDC

LACCPIVR;

清ADC中断标志

清T1周期中断标志

LACCADCTRL2

OR#0202H

SACLADCTRL2

LACCRESULT0,10;

读电流值

SACHIDC_ERRORK

LACCRESULT1,10;

读A相电压

SACHV1

LACCRESULT2,10;

读B相电压

SACHV2

LACCRESULT3,10;

读C相电压

SACHV3

--------------------------------------电流比例调节-----------------------------------------------------------

LACCIDC_ERRORK,5;

Q5格式

SUBIDC_REF,5

SACLIDC_ERRORK;

保存电流偏差,Q5格式

LTIDC_ERRORK;

电流比例调节

MPY#KP;

Q11格式

PAC;

ACC=KP*IDC_ERRORK

ADDCOMP,16

SACHCOMP;

KP*IDC_ERRORK+COMP(K-1)

检测是否超限

BCNDSUP_LIM,GT

SPLK#0,COMP;

超过下限,COMP=0

BCOMP_OK

SUP_LIM

SUB#0500

BCNDCOMP_OK,LT

SPLK#0500,COMP;

超过上限,COMP=500

COMP_OK;

在上下限内

--------------------------------------换相准备-----------------------------------------------------------------

LACC

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2