SPLK      #0000H,B2COUNT

SPLK      #0000H,STALL

SPLK      #0000H,ASYM

SPLK      #0000H, V_ERRORK

SPLK      #0000H,TIME

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

LDP       #0

LACC      COMP                ;装载比较初值

LDP       #0E8H               ;反相驱动

SPLK      #03FDH,ACTRA

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

SACL      CMPR1               ;A相入,C相出,B相不通电

SPLK      #0000H,CMPR2

SPLK      #0000H,CMPR3

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

MAGSTALL

LDP       #0

LACC      STALL               ;检测磁定位是否结束

BCND      MAGSTALL,EQ         ;没结束继续等待

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

LACC      COMP

LDP       #0E8H .

SPLK      #03DFH,ACTRA

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

SACL      CMPR2               ;B相入,C相出,A不通电

SPLK      #0000H,CMPR3

SPLK      #0000H,CMPR1

LDP       #0

SPLK      #4,CAPT             ;CAPT初值

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

LOOP

LDP       #0

LACC      FLAGCUR             ;检测是否更新比较值

BCND      LOOP,EQ             ;不更新跳转

SPLK      #0,FLAGCUR          ;更新,清标志

CALL      SEQUENCE            ;调用更新子程序

B         LOOP                ;等待下次更新

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

PHANTOM

CLRC     INTM

RET

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

SEQUENCE

LDP       #0

LACC      TIME               ;每转时间计数器

ADD       #1

SACL      TIME

LACC      CAPT                ;换相控制字

ADD       #CAPT_DETER         ;加起始地址

BACC

CAPT_DETER

B         RISING1             ;相当于H1上升沿

B         FALLING3            ;相当于H3下降沿

B         RISING2             ;相当于H2上升沿

B         FALLING1            ;相当于H1下降沿

B         RISING3             ;相当于H3上升沿

FALLING2                               ;相当于H2下降沿

LACC      COMP

LDP       #0E8H

SPLK      #0D3FH,ACTRA

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

SACL      CMPR3               ;C相入,B相出,A相不通电

SPLK      #0000H,CMPR2

SPLK      #0000H,CMPR1

LDP       #0                  ;延时过滤干扰

LACC     ASYM                 ;延时计数器

ADD       #1                  ;加1

SACL     ASYM

SUB       #10                 ;检测是否到计数值

BCND      END,LEQ             ;没到,退出

SPLK      #10,ASYM            ;计数值已到,测量感应电动势过零点

LACC      FLAG                ;感应电动势符号变化?

BCND      END,NEQ             ;变了,退出

LACC      V1,1                ;没变,检测.V1乘2

ADD       V1                  ;ACC=3*(BEMFA + NEUTRAL)

SUB       NEUTRAL             ;ACC=3*BEMFA

BCND      END,LT              ;<0符号没变,退出

SPLK      #1,FLAG             ;否则符号改变,置过零标志

LACC      BCOUNT

SACL      B2COUNT             ;更新延迟时间

B         END                 ;退出

RISING3

LACC      COMP

LDP       #0E8H

SPLK      #0DF3H,ACTRA

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

SACL      CMPR3               ;C相入, A相出, B相不通电

SPLK      #0000H,CMPR2

SPLK      #0000H,CMPR1

LDP       #0                  ;延时过滤干扰

LACC      ASYM                ;延时计数器

ADD       #1                  ;加1

SACL      ASYM

SUB       #10                 ;检测是否到计数值

BCND      END,LEQ             ;没到,退出

SPLK       #10,ASYM           ;计数值已到,测量感应电动势过零点

LDP        #0

LACC      FLAG                ;感应电动势符号变化?

BCND      END,NEQ             ;变了,退出

LACC      V2,1                ;没变,检测.V2乘2

ADD       V2                  ;ACC=3*(BEMFB + NEUTRAL)

SUB       NEUTRAL             ;ACC=3*BEMFB

BCND      END,GEQ             ;≥0符号没变,退出

SPLK      #1,FLAG             ;否则符号改变,置过零标志

LACC      BCOUNT

SACL      B2COUNT             ;更新延迟时间

B         END                 ;退出

FALLING3

LACC      COMP

LDP       #0E8H

SPLK      #03FDH,ACTRA

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

SACL      CMPR1               ; A相入, C相出, B相不通电

SPLK      #0000H,CMPR2

SPLK      #0000H,CMPR3

LDP       #0                  ;延时过滤干扰

LACC      ASYM                ;延时计数器

ADD       #1                  ;加1

SACL      ASYM

SUB       #10                 ;检测是否到计数值

BCND      END,LEQ             ;没到,退出

SPLK      #10,ASYM            ;计数值已到,测量感应电动势过零点

LDP       #0

LACC      FLAG                ;感应电动势符号变化?

BCND      END,NEQ             ;变了,退出

LACC      V2,1                ;没变,检测.V2乘2

ADD       V2                  ;ACC=3*(BEMFB + NEUTRAL)

SUB       NEUTRAL             ;ACC=3*BEMFB

BCND      END,LT              ;<0符号没变,退出

SPLK      #1,FLAG             ;否则符号改变,置过零标志

LACC      BCOUNT

SACL      B2COUNT             ;更新延迟时间

B         END                 ;退出

RISING2

LACC      COMP

LDP       #0E8H

SPLK      #03DFH,ACTRA

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

SACL      CMPR2               ;B相入, C相出, A相不通电

SPLK      #0000H,CMPR3

SPLK      #0000H,CMPR1

LDP       #0                  ;延时过滤干扰

LACC      ASYM                ;延时计数器

ADD       #1                  ;加1

SACL      ASYM

SUB       #10                 ;检测是否到计数值

BCND      END,LEQ             ;没到,退出

SPLK      #10,ASYM            ;计数值已到,测量感应电动势过零点

LDP       #0

LACC      FLAG                ;感应电动势符号变化?

BCND      END,NEQ             ;变了,退出

LACC      V1,1                ;没变,检测.V1乘2

ADD       V1                  ;ACC=3*(BEMFA + NEUTRAL)

SUB       NEUTRAL             ;ACC=3*BEMFA

直流无刷电机c语言程序,无位置传感器的直流无刷电机调速控制程序(一)相关推荐

  1. 向串口助手发送数据c语言程序,利用DSP2812编写直流电机PID调速程序(C语言)

    ==57) { Scia_VarRx=9; } kb=Scia_VarRx[0]*1000; hd=Scia_VarRx[1]*100; de=Scia_VarRx[2]*10; un=Scia_Va ...

  2. 直流电机调速c语言程序,分享一个51单片机直流电机调速源程序

    /*******************************************************************/ /* 程序名:PWM直流电机调速 */ /* 晶振:11.0 ...

  3. pwmc语言调速程序_51单片机的直流电机PWM调速系统设计,正转反转,加减速,急停等,仿真和代码...

    设计思路 直流电机PWM控制系统的主要功能包括:实现对直流电机的加速.减速以及电机的正转.反转和急停,并且可以调整电机的转速,能够方便的实现电机的智能控制. 主体电路:即直流电机PWM控制模块.这部分 ...

  4. 学习无霍尔传感器的BLDC方波调速

    无霍尔传感器的BLDC方波调速 基本原理 反电动势法 无感BLDC的转子位置检测 无感BLDC换相 在功率开关管关断状态时采样 无感BLDC的"三段式"启动 程序应用 按键读取 六 ...

  5. matlab中电流调节器仿真模型,直流调速系统的matlab仿真(课程设计作业).docx

    直流调速系统的matlab仿真(课程设计作业).docx 运动控制系统课程设计班级自动化0802姓名王有录学号0806050231摘要直流调速系统具有调速范围广.精度高.动态性能好和易于控制等优点,所 ...

  6. 直流伺服电机调速控制系统解析,直流伺服电机的调速控制方式

    目录 晶闸管调速系统 晶体管直流脉宽(PWM)调速系统 全数字直流调速系统 直流伺服电机速度控制单元的作用是将转速指令信号转换成电枢的电压值,达到速度调节的目的.现代直流电机速度控制单元常多采用晶闸管 ...

  7. 【毕业设计】双闭环直流调速系统的建模与仿真【源码+论文】

    摘 要 直流调速系统在工业控制中扮演着重要角色,因其平滑调速性能适用范围广.其中,双闭环结构的控制效果最佳.本文深入探讨了双闭环直流调速系统的组成结构和动态结构图,并采用工程设计方法对电流调节器和转速 ...

  8. BLDC无刷直流电机和PMSM永磁同步电机 基于stm32F1的有传感器和无传感驱动 直流无刷电机有传感器和无传感驱动程序

    BLDC无刷直流电机和PMSM永磁同步电机 基于stm32F1的有传感器和无传感驱动 直流无刷电机有传感器和无传感驱动程序, 无传感的实现是基于反电动势过零点实现的,有传感是霍尔实现. 永磁同步电机有 ...

  9. 易语言程序假死优化_易语言假死无响应采用处理事件解决办法

    易语言假死无响应采用处理事件解决办法 处理事件() 一个比较简单的理解是:让程序反应过来 这个函数一般是用在延时前面或后面,如果不用的话程序很容易形成假死,造成程序无响应 如下图,虽然这个程序还在运行 ...

最新文章

  1. 人群密度估计--CNN-based Cascaded Multi-task Learning of High-level Prior and Density Estimation for Crowd
  2. 全球顶级语音技术比赛中获双料冠军,这家中国公司靠什么?
  3. Don‘t support broadcast for binaryOp,
  4. sqlite的控制台中文显示问题
  5. 科研人必备的学术导航,不看后悔!
  6. SharedPreferences 的使用,commit和apply两个方法的区别
  7. 真狠!10000mAh超大电池手机发布,真的神机...
  8. Linux系统的用途
  9. epub 深入linux内核架构_深入分析Linux内核源代码6-Linux 内存管理(2)
  10. centos 6.5安装extundelete软件报错
  11. CentOS 6.5安装Tomcat-9.0.0.M19
  12. python2.0安装教程_Python2.7 【安装教程】
  13. 红米6pro刷Android原生,红米6 Pro 魔趣OS 安卓9 MagiskV21版 完美ROOT 纯净完美 原生极简 纯净推荐...
  14. 调节e18-d80nk的测量距离_没有倒车影像,用这个方法判断后方墙壁距离,这个距离感这样练习...
  15. PostgreSQL命令行常用命令psql
  16. sql中between and 用法
  17. jle汇编_JNB, JBE, JGE, JLE 指令的转移条件 5
  18. 最新版本供需指标介绍,自动识别有价值的K线,超级好用
  19. perl dbi mysql 参数_perl dbi mysql-值精度 -问答-阿里云开发者社区-阿里云
  20. 4.1 Linux之初识Linux

热门文章

  1. Plant Design Review Based on AnyCAD
  2. Common Lisp学习之一:初识CL的语法与语义
  3. 排查Java宕机,weblogic宕机问题排查
  4. 《Google Android 开发入门与实战》
  5. SpringBoot-项目4-购物车(添加入购物车,购物车列表,购物车商品数量加减操作)
  6. 苹果几是双卡双待_苹果史上首款实体双卡双待小屏iPhone诞生,值得入手吗?
  7. teraterm乱码linux,[Unity3D][转] 关于Assets资源目录结构管理
  8. 地域环境对就业的影响_地域对于职业发展的影响
  9. 自动驾驶感知——红外传感器
  10. 宝峰对讲机16频率表_宝峰uv5r系列对讲机出厂预置频率表-手工编辑版