DSP2407A开发的开关磁阻电机控制程序的源代码

合集下载

基于DSP的开关磁阻电机调速系统的软硬件设计方案

基于DSP的开关磁阻电机调速系统的软硬件设计方案
轻一工一设一计l0 年 o 1 第6 21
电 力 工 程
基于DP 开关磁阻电 S的 机调速系统的 软硬件设计方案
章 余 思
( 州 电业局 , 建 福 州 30 0 ) 福 福 5 0 0
摘 要 : 文介 绍 了以 T S 2 F 4 7 片 为核 心的 高性 能 数 字化 S D控 制 器 的设 计 , 出 了硬件 电路 设 计 和软 件设 计 策略 。 本 M 30 20 芯 R 给 关键 词 : 字信 号 处理 器 ; 关磁 阻电机 调速 系统 ; M 3 0 2 0 芯 片 数 开 T S 2 F4 7
1引 言 组也 构 成 回路 , B相 电流 增 大 , 使 中性点 电位 必 然增 高 , 使 A相续 促 2 O多年 来 ,开 关 磁 阻 电机 的研 究在 国 内外都 取 得 了很 大 的发 流迅 速 衰减 , 行换 相 。 强 紧接 着关 断 v , 3 开通 V , C D相 导通 , 4则 , 依 展 , 且 作为 一 种 新 型调 速 驱 动 系 统 , 而 它兼 有 直 流 传 动 和 普通 交 流 次循 环 导通 , 电机就 连续 运行 起 来 。 传 动 的优 点 , 已经 广 泛 应 用 于 工 业 、 用 电 器 、 家 电动 车 辆 等诸 多 领 2 主 开关 驱动 电路 的设 计 . 2 域 。 随 着微 电子 技术 的迅速 发 展 和数 字信 号处 理 理论 与技 术 的不 伴 本 系统 采 用 的驱 动 电路 模 块 是 E B 4 ,该 电路 的 优 点是 驱 动 X 8I 抗 速 保 可 断完善 ,数字信号处理器作 为电子信息领域的新型高科技产品, 更 电路 集 成 化 , 干 扰 能 力 强 , 度 较 高 , 护 功 能 较 完 善 , 实 现 为 电机 系 统 的数 字 化控 制 注 入 了新 的生 机 。 随着 D P在 电机 控 制 I B S G T的最 优驱 动 。 领域 的应用 ,基 于 D P的开 关 磁 阻 电机 调 速 系统 的研 究 已 如火 如 S I B、 驱 动 电路 的要 求注 意 以下几 个 问题 : G q对 荼。 ( 1 态驱 动 能 力强 。 为 I B 栅 极 提供 具 有 陡峭 前后 沿 的驱 )动 能 GT 2 硬件设 计 方案 动脉 冲。IB G T的开关 速度 与 其栅 极控 制 信号 的 变化 速 度密 切相 关 。 开 关磁 阻 电机调 速 系统 是 由 S M、 率 变换 电路 、S 控 制 器 、 IB R 功 DP G T的栅 极 电压 源 特性 呈 非线 性 电 容性 质 ,用小 内阻 的 驱动 源 对 位 置传 感器 等组 成 。本 系统 的硬件 框 图如 图 : 栅极 电容 充放 电 , 以保证 栅 极 控制 电压有 足 够 陡 的前后 沿 , I B 使 GT 的 开关 损耗 尽量 小 。 ( 2 向 IB )能 G T提供 适 当 的正 向栅 压 。 ( 3 向 IB )能 G T提 供 足 够 的反 向栅 压 。在 IB G T关 断期 间 , 由于 电路 中其它 部分 工 作 ,会 在栅 极 电路 中产 生一 些 高频 振荡 信 号 , 这 些信 号 轻则 会使 本 该截 止 的 I B G T处于 微通 状 态 , 加 管 子 的功耗 , 增 重 则将 使 逆 变 电路 处 于 短 路直 通 状 态 , 因此 , 好 给 应处 于截 止 状 最 态 的 IB G T加 反 向栅 压 f 一 般 为 :V lV , IB 幅值 5 ~ 5 ) G T在 栅 极 出现 使 开关 噪 声时 仍能 可靠 截 止 。 图 1开 关磁 阻电机 调速 系统框 图 ( 4 )有 足够 的输 入 、 出 电隔 离能 力 。驱 动 器具 有 电 隔离 能力 , 输 21功率 变换 器 的设 计 . 可 以保 证设 备 的正 常T 作 , 是这 种 隔离 不 应影 响 驱 动信 号 的正 常 但 功 率变 换 主 电路 的结构 型式 很 多 , 不 对 称半 桥 型 、 有 双绕 组 型 、 传输 。 电容裂 相 型 、 型 、 H 电容转 储 型等 。 ( 5 )具 有 栅压 限幅 电路 , 护 栅极 不 被击 穿 。I B 保 G T栅 极极 限电 可 以用 来 构成 S D功 率变 换 器 的 主开 关 器件 主要 有 普通 晶闸 压 为+ 0 驱 动信 号超 出此范 围就 可 能破 坏栅 极 。 R _ V, 2 管 、 功 率 晶 体 管 (T )可 关 断 晶 闸管 (T )MO 场 效 应 晶 体 管 大 G R、 GO、 S ( 6 )理想 的驱动 电路 要 求输 入 、 出信 号传 输无 延 时 。 一方 面 输 这 f SE ) MO F T和绝 缘栅 双 极 晶体 管( B ) I T。电动机 功 率变 换 器主 开关 器 能够 减 少系 统 响应滞 后 , G 另一 方 面 能提 高保 护 的快速 性 。 件 的选 择 与 电 动机 的功 率 等级 、 电 电压 、 值 电 流 、 本 等有 关 ; 供 峰 成 23位置 传感 器设 计 - 另 外还 与 主开关 器 件本 身 的 开关 速度 、 发难 易 、 损 耗 、 冲击 触 开关 抗 位 置检 测器 作用 是 向 D P端 口正确 提供 转子 位 置信 息 。 S 性、 耐用 性及 市 场普 及 性有关 系。 本 系统 的转 子位 置 信号 传感 器 是 由光 电 传感 元件 f 部 分) 固定 和 双 极 型 功率 晶体 管 ( T 的 开 关 频率 高 , 有 自关 断 能力 , G R) 具 在 光 电盘 ( 转部 分) 成 。 构如 图 3齿 盘上 6 间 隔 3 o 旋 构 结 , 个 0的齿槽 , 与 中 、 容量 的 S D应 用 广 泛 , 其 电压 、 流过 载 能 力差 , 受浪 涌 电机 转 子 同轴 。 电传 感 器 S 小 R 但 电 承 光 、P固定 在 电机 机壳 上 , 遮 挡传感 当齿 电流 的能力 差 , 二 次击 穿 现象 , 易保 护 。 存在 不 器 的光 路 , 敏 管处 于 截止 状 态 ; 光敏 管受 光 导 通 。电机 旋 转 时 , 光 当 0的方 可 关 断 晶 闸管 ( T 在 不 断 关 断 时要 求 相 当大 的反 向控 制 电 传感 器 输 出 3 。 波信 号 ,如 图 4表示 电机转 动 时两 个 位 置传 感 G O) 流 , 控 制实 现有 难 度 , 存 在 管 压 降 比普通 晶闸管 高 等 不足 , 关断 并 因 器输 出信号 。 此作 为 功率 电路 的开关 的应 用 并 不广 泛 。 功 率场 效 应管 M S E O F T是 一种 单 极 型的 电压控 制 器 件 ,具 有 驱 动 电路简 单 、 速 度快 、 稳 定性 好 等优 点 , 是容 量 有 限制 并 开关 热 但 S 且 比双极 型 功 率 晶体 管 通 态 压 降大 , 只适 用 于低 电压 、 功率 的开 小 关 磁 阻电机 系 统 中。 绝 缘 栅 双极 型 晶 体 管 (G T) 8 I B 是 0年代 出现 的新 型 复合 开关 器 件 , 有工 作 频率 较 高 , 具 控制 实 现 比较 简 单 , 而且 单 管 的电 压定 额 与 电流 定额 也 已经 做得 很 大 , 已经 可 以满 足 对本 装 置 功率 器 件 的要 图 3 转子 位 置信 号传 感 器结 构 图 图 4 位 置传 感 器信 号 图 求, 因此经 综 合考 虑 选用 I B G T作 为本 系 统 S D功 率 变换 器 的 主开 R 电机 速 度 的检测 主 要是 通过 检 测传 感器 输 出信 号来 实 现 的。 可 关 器件 。本 文采 用 H型 的功 率 电路 , 图 2所示 。 如 以采 用检 测 脉 冲 宽 度 、 压 转 换 或 其它 方 式 来 实 现 , 文 采用 的是 频 本 脉 冲 宽度测 速 法 。 图 4中高 电平 部 分 表示 电机转 子 转 过 3 即一 0度 周 的 11 所 需 的时 间 l 对应 的 电机 转速 为 1则 有 : /2 , 设 1 ,

DSP2407无刷直流电机控制

DSP2407无刷直流电机控制
二、无刷直流电机的组成及工作原理
2.1 无刷直流电机的组成
2.1.1 电动机本体
2.1.2 电子换相电路
控制电路:无刷直流电动机通过控制驱动电路中的功率开关器件,来控制电机的 转速、转向、转矩 以及保护电机,包括过流、过压、过热等保护。控制电路最初采用模拟电路,控制比较简单。如果将电路 数字化,许多硬件工作可以直接由软件完成,可以减少硬件电路,提高其可靠性,同时可以提高控制电路 抗干扰的能力,因而控制电路由模拟电路发展到数字电路。
2.5 系统总体结构 系统采用速度环和电流环以实现电机的双闭环控制,其外环为速度环,内环采用电流环,速度反馈是 通过检测霍尔位置传感器信息计算电机的转速,电流反馈是通过采样电机的相电流来实现的。给定速度与 速度反馈量形成偏差,经速度调节后产生电流参考值,它与电流反馈量的偏差经电流调节后形成相应的 PWM 占空比,最后经过电压逆变将电源电压加到电机三相绕组,实现电机的速度控制,系统的总体结构 框图如 图 2.5.1 所示。
调速时改变了控制脉冲的周期(或频率),当控制脉冲的频率与系统的固有频率接近时,将会引起振荡,因 此这两种方法使用比较少。所以在本控制器的电机控制系统中,使用定频调宽法。
PWM 技术又可分为单极性 PWM 控制和双极性 PWM 控制。单极性 PWM 控制的控制信号如图 2.4.2(a) 所示,在每个 60。电角度的区域内,一个功率开关管一直处于开通状态,另一个处于 PWM 状态;双极性 PWM 控制的控制信号如图 4(b)所示,在每个 60º电角度区域内,两个工作的功率管都工作在 PWM 状态, 它们同时开通,同时关断。
图 2.4.1 PWM 调速控制原理和电压波形图
电机电枢绕组两端的电压平均值U为:
式中,α ——占空比。 α = t1 T

DSP2407实验指导书

DSP2407实验指导书

DSP原理及应用实验指导书实验一:熟悉CCS,编写一个以C语言为基础的DSP程序一、实验目的1.认识TMS320LF2407 DSP实验开发系统的硬件结构。

2.了解TMS320LF2407 DSP应用程序的开发调试流程。

3.学习使用CCS3.3调试TMS320LF2407 DSP程序。

4.学习用标准C语言编制程序:了解常用的C语言程序设计方法和组成部分。

二、实验设备PC兼容机一台,操作系统为Windows2000(或Windows98,Windows XP,以下默认为Windows2000),CCS3.3编译软件,TMS320LF2407 DSP实验开发板和仿真器。

三、实验原理1.标准C语言程序:CCS支持使用标准C语言开发DSP应用程序。

当使用标准C语言编制程序时,其源文件名的后缀应为.C(如:volume.c)。

CCS在编译标准C语言程序时,首先将其编译成相应汇编语言程序,再进一步编译成目标DSP的可执行代码。

最后生成的是COFF格式的可下载到DSP 中运行的文件,其文件名后缀为.out。

由于使用C语言编制程序,其中调用的标准C的库函数由专门的库提供,在编译链接时编译系统还负责构建C运行环境。

所以用户工程中需要注明使用C 的支持库。

2.命令文件的作用:命令文件(文件后缀为.cmd)为链接程序提供程序和数据在具体DSP硬件中的位置分配信息。

通过编制命令文件,我们可以将某些特定的数据或程序按照我们的意图放置在DSP所管理的内存中。

命令文件也为链接程序提供了DSP外扩存储器的描述。

在程序中使用CMD文件描述硬件存储区,可以只说明使用部分,但只要是说明的,必须和硬件匹配,也就是只要说明的存储区必须是存在的和可使用的。

3.内存映射(map)文件的作用:一般的,我们设计、开发的DSP程序在调试好后,要固化到系统的ROM 中,为了更精确的使用ROM空间,我们就需要知道程序的大小和位置,通过建立目标程序的map文件可以了解DSP代码的确切信息。

基于TMS320LF2407A的开关磁阻电动机调速系统硬件电路的设计

基于TMS320LF2407A的开关磁阻电动机调速系统硬件电路的设计
c n e so ic i, p sto ina d tci n ic i ,c re t sg l d tci n ic i n t e ke b a d, d s l y o v ri n cr u t o iin sg l e e to cr u t u r n ina e e t cr u t a d h y o r o ip a cr u t T a d r ic i i r v d b e t h e i n i o r c n h y tm r ssa l ic i. he h r wa e cr u t S p o e y t s .t e d sg S c re ta d t e s se wo k t be.
( .c ol f l tcl n o e E g er g T i a nvri f ehooy T i a 30 4 h a 1Sh o o e r a adPw r n i ei , a u nU iesyo T cnlg , a un0 0 2 ,C i ; E ci n n y t y n 2 Sho o fr a o .col f nom t n& E gneig T i a n esyo T cnlg , a un0 0 2 , h a I i nier , a unU i ri f eho y T i a 30 4 C i ) n y v t o y n
De in o sg fSRD Ha d r r utBa e n TMS 2 L 2 0 A r wa e Ci i c s do 30 F4 7
J u—o g ,O inceg , UB n —i,l Z i i I H i n IS NGJa — n Q i n J A y h g 。 h— n xI
发 了一 套 开关磁 阻 电 动机 调 速 系 统 硬件 电路 , 提 既

基于DSP的开关磁阻电机调速系统的软硬件设计

基于DSP的开关磁阻电机调速系统的软硬件设计

基于DSP的开关磁阻电机调速系统的软硬件设计赵贺亮(黑龙江八一农垦大学信息技术学院05级电气工程及其自动化专业,黑龙江大庆163000)1概述20多年来,开关磁阻电机的研究在国内外都取得了很大的发展,而且作为一种新型调速驱动系统,它兼有直流传动和普通交流传动的优点,已经广泛应用于工业、家用电器、电动车辆等诸多领域。

伴随着微电子技术的迅速发展和数字信号处理理论与技术的不断完善,数字信号处理器作为电子信息领域的新型高科技产品,更为电机系统的数字化控制注入了新的生机。

随着DSP在电机控制领域的应用,基于DSP的开关磁阻电机调速系统的研究已如火如荼。

2硬件设计方案开关磁阻电机调速系统是由SRM、功率变换电路、DSP控制器、位置传感器等组成。

本系统的硬件框图如图1:2.1功率变换器的设计功率变换主电路的结构型式很多,有不对称半桥型、双绕组型、电容裂相型、H型、电容转储型等。

可以用来构成SRD功率变换器的主开关器件主要有普通晶闸管、大功率晶体管(GTR)、可关断晶闸管(GTO)、MOS场效应晶体管(MOS-FET)和绝缘栅双极晶体管(IGBT)。

电动机功率变换器主开关器件的选择与电动机的功率等级、供电电压、峰值电流、成本等有关;另外还与主开关器件本身的开关速度、触发难易、开关损耗、抗冲击性、耐用性及市场普及性有关系。

普通晶闸管是使用时间最长、伏安容量最大,并且价格比较便宜,但是因为没有自关断能力,开关频率低,强迫换相电路成本高、可靠性差,故不适宜做功率电路中开关元件。

双极型功率晶体管(GTR)的开关频率高,具有自关断能力,在中、小容量的SRD应用广泛,但其电压、电流过载能力差,承受浪涌电流的能力差,存在二次击穿现象,不易保护。

可关断晶闸管(GTO)在不断关断时要求相当大的反向控制电流,关断控制实现有难度,并存在管压降比普通晶闸管高等不足,因此作为功率电路的开关的应用并不广泛。

功率场效应管MOSFET是一种单极型的电压控制器件,具有驱动电路简单、开关速度快、热稳定性好等优点,但是容量有限制并且比双极型功率晶体管通态压降大,只适用于低电压、小功率的开关磁阻电机系统中。

基于DSP2407的无刷直流电动机驱动控制系统设计(含外文翻译)

基于DSP2407的无刷直流电动机驱动控制系统设计(含外文翻译)

基于DSP2407的无刷直流电动机驱动控制系统设计(含外文翻译)此文档为WORD格式,下载后可随意编辑修改2017年9月修订摘要本课题介绍了基于DSP的无刷直流电机控制系统的设计和工作原理。

文中重点分为系统原理分析,数学算法设计,硬件电路搭建,软件模块组成,实物及课题相关实践阐述等5个部分,根据设计要求,选用TMS320LF2407A作为控制芯片。

文中首先对无刷直流电机的发展历程、前景做了简要阐述,介绍了它基本组成和工作原理,着重介绍了电机换相和PWM对逆变桥路的逻辑控制过程。

在认识了电机工作原理和数学模型的基础上,第三章详细分析了控制系统总体方案设计研究,对速度、电流双闭环PID调节方式进行优化,采用积分分离的PID控制算法以满足无静差平稳调速的需求。

硬件设计部分,根据控制需求并参照DSP引脚定义和性能,完成DSP最小系统、驱动控制电路、采样电路、控制键盘显示电路、保护电路等,并进行详细的原理阐述和过程分析。

在此基础上,提出基于DSP带位置传感器的无刷直流电机控制系统设计方案。

同时,对软件模块进行初步设计——包括主程序的初始化,利用中断子程序完成PWM信号触发、测速、换相、PID算法实现等功能,使设计达到基本要求。

同时,为了更好地理解本课题在实践中应用,设计过程中有幸到“苏州博世技术中心有限公司”对基于XC866 BLDC控制器进行研发测试,真正接触到“无刷直流电机驱动控制系统”在产品中的应用。

关键词:无刷直流电机;DSP;PWM;电子换相ABSTRACTThis thesis describes the design and working principle of the Permanent Magnet Brushless DC (BLDC) motor control system based on DSP. This article is composed of 5parts—system principle, mathematical algorithm design, hardware circuit structures, software modules and practices about this paper. According to the design requirements, the DSP-TMS320LF2407A is chosen as the control chip.Firstly, the thesis introduces course of development and prospect of the BLDC motor. Presents a brief exposition of the basic composition and working principle, which mainly focus on motor commutation and PWM inverter bridge logic control. After this, Chapter III detailed analysis of the overall plan of the control system design. Optimized the speed, current double-loop PID regulation mode to Integral Separation PID control algorithm, which can meet the needs of a smooth speed control without static error. Then, as to the hardware design. DSP minimum system drive circuit module, the current speed sampling module, protection module, control the keyboard display module are completed referring to the control requirements and DSP definitions. For the software part,with the introduction of main program and interrupt subroutine, some flow charts and procedure are provided.Through all the design process ,I had an internship in RBAC(BOSCH)where I can do some research on Electric Control Unit of E-bike (equipped with BLDC)based on Infineon XC866 . The BLDC control system has the characteristic of simple structure, high dependability, and can be used in many fields.KEY WORDS: Permanent Magnet Brushless DC ; DSP ; PWM ; Electronic commutation目录1 绪论 (1)1.1课题背景及意义 (1)1.2国内外相关情况研究综述 (1)1.3论文主要内容 (3)2 无刷直流电机的工作原理和数学模型 (4)2.1无刷直流电机的基本结构 (4)2.1.1电机本体 (4)2.1.2转子位置传感器 (5)2.1.3驱动控制电路 (5)2.2无刷直流电机工作原理 (6)2.3星形全桥驱动 (6)2.4无刷直流电机数学模型 (9)3 控制系统总体方案设计研究 (11)3.1控制系统总体方案 (11)3.2控制结构 (11)3.3 PID控制研究 (12)3.3.1 PID基本原理 (12)3.3.2 PID算法设计 (13)3.4控制技术 (14)3.4.1调速原理 (14)3.4.2电枢电压调节 (15)3.4.3 PWM相关技术 (16)4 控制系统硬件设计 (18)4.1总体硬件结构 (18)4.1.1 TMS320LF2407芯片介绍 (18)4.2 DSP控制模块硬件设计 (19)4.2.1电源电路 (19)4.2.2外围电路 (19)4.3驱动方案和器件选择 (22)4.3.1主功率逆变电路 (22)4.3.2驱动芯片及选型 (22)4.3.3驱动电路设计 (26)4.4采样电路 (27)4.4.1位置信号及速度信号采样 (27)4.4.2电流采样 (30)4.5键盘及显示电路 (31)4.6保护电路 (32)4.6.1过压、欠压保护 (32)4.6.2光耦合隔离 (33)5 控制系统软件设计 (34)5.1软件设计总述 (34)5.2主程序设计 (34)5.2.1初始化子程序 (34)5.3中断服务程序设计 (35)5.3.1捕捉中断模块 (35)5.3.2 PWM波形比较生成模块 (36)5.3.3定时器中断模块 (38)5.3.4电机保护中断模块 (40)6 结论及课题相关实践 (41)6.1课题相关实践 (41)6.2全文总结 (43)参考文献 (45)附录 (47)翻译部分 (48)外文原文 (48)中文译文 (54)致谢 (60)1 绪论1.1课题背景及意义众所周知,日常生活中直流电机因其良好的启制动性能,大范围内平滑调速等优点而被广泛使用,但其电刷和换向器严重影响了它的性能(容量、速度等),从而限制了它的发展空间;交流电机的优点是结构简单,运行稳定,适用特大容量、极高转速的调速系统,但其启动、调速性能差使得应用范围再次受到制约。

基于DSP的开关磁阻电机的数字系统设计

基于DSP的开关磁阻电机的数字系统设计

关 键 词 : 关磁 阻 电机 , 字信 号 处理 器 , WM 开 数 P
Absr t t ac
T i p p r n rd c s te S t h d R lc a c Mo o D i s se hs a e it u e h wi e eu t n e o c t r r e y t m sr c ue a d o o io , e rs a c o v tu t r n c mp st nt e e r h n , 江苏 镇江 2 2 0 ) 10 3

摘 要
介 绍 了开 关磁 阻 电机 驱 动 系统 的 结构 及 组 成 ,研 究 了以 TMS 2 F 4 3 0 2 0数 字信 号 处理 器为 为 核 心 的 开 关磁 阻 电机 控 制
系统的 设 计 , 出 了其硬 件 电路 设 计 方案 和 软 件 实现 策 略 。 给
做 电子 技 术 和 电机 控制 技 术 于 一 体 , 有 优 良的调 速 性 能 。 具 近年
来随 着 微 处理 器 技 术 和功 率 电子 技 术 的 发 展 ,为 电 机驱 动系 统
绝 缘 栅 双 极 型 晶 体 管( T作 为 功 率 开 关 元件 , T为 电压 型 I ) GB I GB 驱 动 器件 ,为 保 证 可靠 开通 或 关 断 .采 用 富 士 电 机公 司生 产 的
《 业控 制 汁算 机) 0 1年第 2 工 21 4卷 第 1期
11 0
基于 D P的开关磁阻电机的数字系统设计 S
S t h d Reu t n e Mo o a e n DSP Di t lS s e wi e lca c t r B s d o c gi y t m a
字量 , 而构 成 电流 环 。 从

DSP2407A开发的开关磁阻电机控制程序的源代码(2)

DSP2407A开发的开关磁阻电机控制程序的源代码(2)

NOCOMCALL DATAINT;--------------------------------------电流调节-----------------------------------------------------------LACC #SECTOR_TABLE ;表头地址ADD GPR0 ;加偏移量TBLR ADDRESS ;查表LACC ADDRESS ;取跳转地址BACC ;跳转PHASE_00LACC #0DEADH ;干扰陷阱B PPP ;退出;--------------------------------------A相----------------------------------------------------------------- PHASE_A ;A相电流调整LACC CMDAC ;A/C相电流参考值SUB CURRAC ;与测量值比较BCND DEC_A, LT ;测量值大于参考值则跳转LACC COMAC ;否则小于参考值SUB NUM ;减修正值,使占空比增加SACL COMAC ;保存新比较值LACC MIN ;检测是否超出上限SUB COMACBCND SET_A, GEQ ;超过则跳转B GOON_A ;没超过则退出DEC_A ;测量值大于参考值LACC COMACADD NUM ;加修正值,使占空比减小SACL COMAC ;保存新比较值LACC MAX ;检测是否超出下限SUB COMACBCND GOON_A, GEQ ;没超过则退出LACC MAX ;超出SACL COMAC ;比较值等于下限(占空比=0%)B GOON_ASET_ALACC MINSACL COMAC ;比较值等于上限(占空比=100%) GOON_ALACC COMACLDP #0E8HSACL CMPR1 ;更新A相比较值SPLK #000EH, ACTRA ;PWM1高有效,PWM2强制高,其它强制低LDP #0LACC MINSACL COMBD ;B/D相占空比初值=100%LACC #0SACL CURRBD ;电流检测值清零B PPP ;退出;--------------------------------------B相--------------------------------------------------------------------- PHASE_B ;B相电流调整LACC CMDBD ;B/D相电流参考值SUB CURRBD ;与测量值比较BCND DEC_B, LT ;测量值大于参考值则跳转LACC COMBD ;否则小于参考值SUB NUM ;减修正值,使占空比增加SACL COMBD ;保存新比较值LACC MIN ;检测是否超出上限SUB COMBDBCND SET_B, GEQ ;超过则跳转B GOON_B ;没超过则退出DEC_B ;测量值大于参考值LACC COMBDADD NUM ;加修正值,使占空比减小SACL COMBD ;保存新比较值LACC MAX ;检测是否超出下限SUB COMBDBCND GOON_B, GEQ ;没超过则退出LACC MAX ;超出SACL COMBD ;比较值等于下限(占空比=0%)B GOON_BSET_BLACC MINSACL COMBD ;比较值等于上限(占空比=100%) GOON_BLACC COMBDLDP #0E8HSACL CMPR2 ;更新B相比较值SPLK #00E0H, ACTRA ;PWM3高有效,PWM4强制高,其它强制低LDP #0LACC MINSACL COMAC ;A/C相占空比初值=100%LACC #0SACL CURRAC ;电流检测值清零B PPP ;退出;--------------------------------------C相------------------------------------------------------------------- PHASE_C ;C相电流调整LACC CMDAC ;A/C相电流参考值SUB CURRAC ;与测量值比较BCND DEC_C, LT ;测量值大于参考值则跳转LACC COMAC ;否则小于参考值SUB NUM ;减修正值,使占空比增加SACL COMAC ;保存新比较值LACC MIN ;检测是否超出上限SUB COMACBCND SET_C, GEQ ;超过则跳转B GOON_C ;没超过则退出DEC_C ;测量值大于参考值LACC COMACADD NUM ;加修正值,使占空比减小SACL COMAC ;保存新比较值LACC MAX ;检测是否超出下限SUB COMACBCND GOON_C, GEQ ;没超过则退出LACC MAX ;超出SACL COMAC ;比较值等于下限(占空比=0%)B GOON_CSET_CLACC MINSACL COMAC ;比较值等于上限(占空比=100%) GOON_CLACC COMACLDP #0E8HSACL CMPR3 ;更新C相比较值;SPLK #020CH, ACTRA ;PWM5高有效,PWM2强制高,其它强制低LDP #0LACC MINSACL COMBD ;B/D相占空比初值=100%LACC #0SACL CURRBD ;电流检测值清零B PPP ;退出;--------------------------------------D相-------------------------------------------------------------- PHASE_D ;D相电流调整LACC CMDBD ;B/D相电流参考值SUB CURRBD ;与测量值比较BCND DEC_D, LT ;测量值大于参考值则跳转LACC COMBD ;否则小于参考值SUB NUM ;减修正值,使占空比增加SACL COMBD ;保存新比较值LACC MIN ;检测是否超出上限SUB COMBDBCND SET_D, GEQ ;超过则跳转B GOON_D ;没超过则退出DEC_D ;测量值大于参考值LACC COMBDADD NUM ;加修正值,使占空比减小SACL COMBD ;保存新比较值LACC MAX ;检测是否超出下限SUB COMBDBCND GOON_D, GEQ ;没超过则退出LACC MAX ;超出SACL COMBD ;比较值等于下限(占空比=0%)B GOON_DSET_DLACC MINSACL COMBD ;比较值等于上限(占空比=100%) GOON_DLACC COMBDLDP #0E8HSACL CMPR3 ;更新D相比较值SPLK #08C0H, ACTRA ;PWM6高有效,PWM4强制高,其它强制低LDP #0LACC MINSACL COMAC ;A/C相占空比初值=100%LACC #0SACL CURRAC ;电流检测值清零PPPMAR *, AR1 ;恢复现场LST #0, *- ;恢复ST0LST #1, *- ;恢复ST1CLRC INTMRET;--------------------------------------电流采样和AD转换子程序--------------------------------------------DATAINTLDP #0E1HSPLK #2000H,ADCTRL2 ;启动AD转换CONVERSIONBIT ADCTRL2,3 ;将忙状态位复制到TCBCND CONVERSION,TC ;等待转换结束LACC RESULT0,10 ;读A/C相电流转换结果LDP #0SACH CURRAC ;保存LDP #0E1HLACC RESULT1,10 ;读B/D相电流转换结果LDP #0SACH CURRBD ;保存RET;--------------------------------------T2周期和比较中断处理子程序-------------------------------T2PERIOD_ISRMAR *,AR1 ;保存现场MAR *+SST #1, *+ ;保存ST1SST #0, * ;保存ST0LDP #0E0HLACC PIVR ;清中断标志LDP #0E8HSPLK #0FH,EVAIFRBSPLK #07FFFh, T2CNT ;T2编码器计数器赋初值LDP #0LACC #0SACL GPR3 ;允许换相(GPR3=0)MAR *, AR1 ;恢复现场LST #0, *- ;恢复ST0LST #1, *- ;恢复ST1CLRC INTMRET;--------------------------------------初始化转子位置子程序-------------------------------------------START2NOPLDP #0E8HSPLK #000EH, ACTRA ;A相通电SPLK #0CA00H, COMCONA ;立即比较SPLK #0400, CMPR1 ;占空比=50%SPLK #0,T1CNTSPLK #800,T1PR ;T1周期寄存器SPLK #9040H,T1CON ;连续增减计数方式,预分频为1,允许T1LDP #0LACC #0FFFFH ;准备延时,等待转子到A相对极位置SACL TMPLOOPLACL TMPSUB #1SACL TMPBCND LOOP, NEQLACC #0FFFFH ;再延时SACL TMPLOOP2LACL TMPSUB #1SACL TMPBCND LOOP2, NEQLDP #0E8HSPLK #0, ACTRA ;关闭PWMRET;--------------------------------------换相处理程序地址表-----------------------------------------SECTOR_TABLE.WORD PHASE_00 ;干扰陷阱程序地址.WORD PHASE_A ;换相A相处理程序地址 .WORD PHASE_B ;换相B相处理程序地址 .WORD PHASE_C ;换相C相处理程序地址 .WORD PHASE_D ;换相D相处理程序地址 .END。

基于DSP的开关磁阻电机数字控制系统设计

基于DSP的开关磁阻电机数字控制系统设计

鬟 蒺
_ _ _ _
维普资讯
2 0 第 4期 0 6年
沈仪 ,等 :基 于 D P的 开 关磁 阻 电机 数 字控 制 系统 设 计 S
・l l・ O
1 2 1 功 率转换 ..
当续 流 时 ,( L 以 为例说 明 )电流通 过 D1和 D2
以 DS P为核心 的控 制单元 组 成 。系 统结 构见 图 1 ,其 中虚线 部分 主要 由 T 3 O F 4 7来完 成 。 MS 2 L 2 O 由图 1可
l ! - 大路l 一 竺! r一 电 要
1隔 离放 l / D舔 A
兰 上 g蓑
见 ,本 系统 的大部 分 :作都 是 由软件 实现 的 ,包 括 转 [
回路 向 电容 C充 电 , 现续流 。 实 同理 D3和 D4 D , 5和 D 6为 L 和 L 绕组 的续 流 回路 。 此 电路 虽 然没有用 到 T1、T3、T5和 T2 4 、T 、
采 用 日本 三 菱 公 司生 产 的 P 2 5 4智 能功 率模 S 16 块组 成本 系统 的功率 电路 ,电路 结构 如 图 3 示 ,下 所 面介 绍其 工作原 理 。


P M l '
l 莓
图 1 系统 结构 框 图
收 稿 日期 :2 0 —22 ;修 回 日期 :2 0 — 31 0 51— 1 0 60 — 5 作 者 简介 : 沈仪 (9 9) 男 , 西 北 海 人 , 士 研 究 生 。 1 7 一, 广 硕
隔电 离路
图 2 D P控 制 系统 组 成 S
速 调节 、 电流调节 、电机转 向控 制 等和 最后 直接输 出 逻辑 电平 型 的脉宽 调 制信号 驱 动功率 模块 。

DSP2407控制320240大液晶显示的源程序

DSP2407控制320240大液晶显示的源程序

DSP2407控制320*240大液晶显示的源程序作者:61IC文章来源:本站原创点击数:606 更新时间:2007-1-16#include <__LF240x.h>#include <Led.h>//#define rbadd1 XBYTE[0xF000] /* 读忙状态地址 *///#define wdadd1 XBYTE[0xF000] /* 写参数及显示数据地址 *///#define rdadd1 XBYTE[0xF001] /* 读参数及显示数据地址 *///#define wcadd1 XBYTE[0xF001] /* 写指令代码地址 */ioport unsigned portF000;ioport unsigned portF001;#define rbadd1 portF000#define wdadd1 portF000#define rdadd1 portF001#define wcadd1 portF001#define PARA 0x29; /* 程序参数定义,根据用户选择的LCM型号修改 */const unsigned charCGTAB[4][32]={0x00,0x40,0x37,0x10,0x83,0x60,0x2F,0x08, /* 清 */0x13 ,0x22,0xE3,0x22,0x23,0x22,0x22,0x22,0x40 ,0x48,0xFC,0x40,0xF8,0x40,0xFE,0x08,0xFC ,0x08,0xF8,0x08,0xF8,0x08,0x28,0x10,0x04 ,0x04,0x08,0x08,0x18,0x29,0x4A,0x08, /* 华 */0x09 ,0x01,0xFF,0x01,0x01,0x01,0x01,0x01,0x40 ,0x48,0x58,0x60,0xC0,0x40,0x44,0x44,0x3C ,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x04 ,0xFF,0x05,0x41,0x33,0x14,0x01,0xF6, /* 蓬 */0x1B ,0x10,0x13,0x10,0x17,0x10,0x28,0x47,0x44 ,0xFE,0x40,0xF8,0x10,0xE0,0x18,0x46,0xF8 ,0x40,0xF8,0x40,0xFC,0x40,0x46,0xFC,0x00 ,0x43,0x30,0x10,0x00,0x07,0xF1,0x11, /* 远 */0x11 ,0x11,0x12,0x12,0x14,0x28,0x47,0x00,0x10 ,0xF8,0x00,0x00,0x08,0xFC,0x20,0x20,0x20 ,0x24,0x24,0x1C,0x00,0x06,0xFC,0x00 };unsigned char SYSTAB[8]={0x30,0x87,0x07,0x27,0x42,0xf0,0x28,0x00}; //系统设置指令参数unsigned char SCROLLTAB[10]={0,0,0xf0,0xb0,0x04,0xf0}; //SCROLL指令参数void INT_1(void){unsigned char i;wcadd1=0x40; /* SYSTEM SET代码 */for(i=0;i<8;i++){wdadd1=SYSTAB[i]; /* 写入参数 */}wcadd1=0x44; /* SCROLL代码 */for(i=0;i<10;i++){wdadd1=SCROLLTAB[i]; /* 写入参数 */}wcadd1=0x5a; /* HDOT SCR 代码 */asm(" NOP");wdadd1=0x00; /* 设置参数P1 */asm(" NOP");asm(" NOP");wcadd1=0x5b; /* OVLAY 代码 */asm(" NOP");asm(" NOP");asm(" NOP");wdadd1=0x00; /* 设置参数:显示一,三区为文本属性 */CLEAR(0,0,0x00); /* 调清屏函数显示一区清屏*/CLEAR(0xb0,0x04,0x00); /*显示二区清屏*/wcadd1=0x59; /* 显示状态设置 */asm(" NOP");wdadd1=0x54; /* 设置参数:显示一~四区开显示 */ }/*void CLEAR(){unsigned int i,j;wcadd1=0x4c; CSRDIR 代码wcadd1=0x46; CSRW 代码wdadd1=0x00; 设置参数光标指针低8位wdadd1=0x00; 设置参数光标指针高8位wcadd1=0x42; MWRITE 代码for(j=0;j<2195;j++){for(i=0;i<30;i++){wdadd1=0x00; 写入数据}}}*/void CGRAM(void){unsigned char i,j;wcadd1=0x5c; /* CGRAMADR 代码 */wdadd1=0x00; /* 设置SAG=0x3000 */wdadd1=0x30;wcadd1=0x46; /* CSRW 代码 */wdadd1=0x00; /* 设置CSR=0x3400(字符代码=80H) */ wdadd1=0x34;wcadd1=0x4c; /* CSRDIR 代码 */wcadd1=0x42; /* MWRITE 代码 */for(j=0;j<4;j++){for(i=0;i<32;i++){wdadd1=CGTAB[j][i]; /* 写入字模数据 */}}}void CCW1_PR(char O_X,char O_Y,unsigned char code_1){unsigned int i,j;i=PARA;j=i*O_Y+O_X;wcadd1=0x4f; /* CSRDIR 代码(下移) */wcadd1=0x46; /* CSRW 代码 */wdadd1=j%256; /* 设置光标地址 */wdadd1=j/256;wcadd1=0x42; /* MWRITE 代码 */wdadd1=code_1; /* 写入汉字代码 */wdadd1=code_1+1; /* 写入汉字代码 */j++;wcadd1=0x46; /* CSRW 代码 */wdadd1=j%256; /* 设置光标地址 */wdadd1=j/256;wcadd1=0x42; /* MWRITE 代码 */wdadd1=code_1+2; /* 写入汉字代码 */wdadd1=code_1+3; /* 写入汉字代码 */}/*void W_DOT(int O_X,int O_Y){unsigned char i,j,dat;unsigned int k;j=PARA;i=O_X%8;O_X=O_X/8;k=j*O_Y+O_X;wcadd1=0x4f;wcadd1=0x46; /* 设置光标地址wdadd1=k%256; /* 计算光标地址wdadd1=k/256;if(O_Y==0)O_Y=0x80;else{O_Y=1;for(;i<7;i++) /* 计算显示位{O_Y=O_Y*2;}}wcadd1=0x43; /* MREAD 代码dat=rdadd1; /* 读取当前显示数据wcadd1=0x46; /* 设置光标地址wdadd1=k%256; /* 计算光标地址wdadd1=k/256;wcadd1=0x42; /* MWRITE 代码wdadd1=dat|O_Y; /* 写入合成数据}*/static void CLEAR(unsigned short csrl,unsigned short csrh,unsigned short data1){unsigned char i,j;wcadd1=0x46;wdadd1=csrl;wdadd1=csrh;wcadd1=0x4c;wcadd1=0x42;for(i=0;i<240;i++){for(j=0;j<320;j++){wdadd1=data1;}}}void main(){unsigned char i,j,code_1;unsigned short wCount;unsigned int O_X,O_Y;DISABLE();IMR = 0x0000; /*初始化*/IFR = IFR;SCSR1 = 0x04fd;SCSR2 = (SCSR2&0x000c)|0x0002;WDCR = 0x006f;INT_1(); /* 调初始化函数 */OnInit8255();/* k=0;for(j=0;j<240;j++) /* 绘点显示{O_X=k;O_Y=j+0x10;W_DOT(O_X,O_Y); /* 调绘点函数k++;if(k>320)break;}for(j=240;j>0;j--){O_X=k;O_Y=j+0x10;W_DOT(O_X,O_Y); /* 调绘点函数k++;if(k>320)break;}*//*------- 中文显示(文本方式)----------- */ while(1){CGRAM(); /* 调CGRAM子程序*/code_1=0x80; /* 取字模 */O_X=0x00;O_Y=0x02;CCW1_PR(O_X,O_Y,code_1); /* 调中文显示函数(文本方式) */code_1=0x84; /* 取字模 */O_X=0x1c;O_Y=0x04;CCW1_PR(O_X,O_Y,code_1); /* 调中文显示函数(文本方式) */code_1=0x88; /* 取字模 */O_X=0x00;O_Y=0x0e;CCW1_PR(O_X,O_Y,code_1); /* 调中文显示函数(文本方式) */code_1=0x8c; /* 取字模 */O_X=0x1c;O_Y=0x0e;CCW1_PR(O_X,O_Y,code_1); /* 调中文显示函数(文本方式) */ }}void c_int1(void){}void c_int2(void){}void c_int3(void){}。

基于TMS320LF2407A开关磁阻电机控制系统的研究及实现

基于TMS320LF2407A开关磁阻电机控制系统的研究及实现
北 京交通 大 学
摘要 : 首先 介 绍 了开 关 磁 阻 电机 调 速 系统 及 各 运 行 状 态 控 制 , 次在 分 析 开关 磁 阻 电机 运 行 原理 、 速 特 其 凋
性和控 制方 法的基础上 , 出了高速变角度 电压斩波控制一低 速定角度 电流斩波 电压斩 波控制 的控制策略 , 提 P WM控 制采用双闭环调节器来实现 电压斩波 。针对实验用 3 W 开关磁 阻 电机驱 动系统 , 0k 基于 T 公 司的 I TMS 2 I 2 0 A, 30 4 7 设计 了控制 器的硬件 电路及 软件流程 , F 最后 给 出了系统在不 同转速下 的绕组 电流 及不 同
r n n o t g fe c h s n d fe e ts e d a e g v n n lz d e ta d v la eo a h p a e i i r n p e r a e a d a ay e . f Kewo d ; wi h d rl ca c tr DS h r wa e cru t s f r lwc a t P M h p ig c n r l y r s s t e eu tn e mo o c P a d r i i c ot ef wa o h r W c o p n o to
c o p n o t g o t o th g p e h p ig v la e c n r la ih s e d,f e h n u a o iin c o p n u r n n ቤተ መጻሕፍቲ ባይዱ p i g v l g o i d t e a g l rp s t h p i g c r e ta d c o p n o t e c n x o a
开关磁 阻 电动 机 ( R 调速 系 统 , 融新 型 S M) 是 电动 机结 构与 现代 电力 电子 技 术 、 控制 技 术 于 一 体, 兼有 交流变 频调 速系 统 的电动 机结构 简单 、 坚

DSP2407A开发的开关磁阻电机控制程序的源代码

DSP2407A开发的开关磁阻电机控制程序的源代码

DSP2407A开发的开关磁阻电机控制程序的源代码(1).INCLUDE "240x.H";--------------------------------------以下定义变量---------------------------------------------------- .DATA.BSS ADDRESS,1 ;换相处理程序地址.BSS GPR0,1 ;当前通电相标志(1,2,3,4---A,B,C,D).BSS GPR2,1 ;转向标志,1(CW),0(CCW).BSS GPR3,1 ;换相标志,1(不允许),0(允许).BSS CMD,1 ;电流参考值.BSS CMDAC,1 ;A/C相电流参考值.BSS CMDBD,1 ;B/D相电流参考值.BSS MAX,1 ;最小占空比(0%)比较值.BSS MIN,1 ;最大占空比(100%)比较值.BSS COMAC,1 ;A/C相比较值.BSS COMBD,1 ;B/D相比较值.BSS CURRAC,1 ;A/C相电流检测值.BSS CURRBD,1 ;B/D相电流检测值.BSS NUM,1 ;电流修正值.BSS TMP,1 ;临时变量.BSS STACK,6 ;软堆栈初始地址;--------------------------------------定义主向量段------------------------------------------------------ .SECT ".VECTORS" ;定义主向量段RESET B START ;地址0000H,复位,优先级1INT1 B PHANTOM ;地址0002H,INT1,优先级4INT2 B T1PERIOD_ISR ;地址0004H,INT2,优先级5INT3 B T2PERIOD_ISR ;地址0006H,INT3,优先级6INT4 B PHANTOM ;地址0008H,INT4,优先级7INT5 B PHANTOM ;地址000AH,INT5,优先级8INT6 B PHANTOM ;地址000CH,INT6,优先级9RESERVED B PHANTOM ;地址000EH,测试,优先级10SW_INT8 B PHANTOM ;地址0010H,自定义软中断SW_INT9 B PHANTOM ;地址0012H,自定义软中断SW_INT10 B PHANTOM ;地址0014H,自定义软中断SW_INT11 B PHANTOM ;地址0016H,自定义软中断SW_INT12 B PHANTOM ;地址0018H,自定义软中断SW_INT13 B PHANTOM ;地址001AH,自定义软中断SW_INT14 B PHANTOM ;地址001CH,自定义软中断SW_INT15 B PHANTOM ;地址001EH,自定义软中断SW_INT16 B PHANTOM ;地址0020H,自定义软中断TRAP B PHANTOM ;地址0022H,TRAP矢量NMI B PHANTOM ;地址0024H,NMI,优先级3EMU_TRAP B PHANTOM ;地址0026H,仿真Trap,优先级2SW_INT20 B PHANTOM ;地址0028H,自定义软中断SW_INT21 B PHANTOM ;地址002AH,自定义软中断SW_INT22 B PHANTOM ;地址002CH,自定义软中断SW_INT23 B PHANTOM ;地址002EH,自定义软中断SW_INT24 B PHANTOM ;地址0030H,自定义软中断SW_INT25 B PHANTOM ;地址0032H,自定义软中断SW_INT26 B PHANTOM ;地址0034H,自定义软中断SW_INT27 B PHANTOM ;地址0036H,自定义软中断SW_INT28 B PHANTOM ;地址0038H,自定义软中断SW_INT29 B PHANTOM ;地址003AH,自定义软中断SW_INT30 B PHANTOM ;地址003CH,自定义软中断SW_INT31 B PHANTOM ;地址003EH,自定义软中断;--------------------------------------以下是主程序------------------------------------------------------ .TEXT;--------------------------------------系统初始化程序-------------------------------------------------- STARTSETC INTM ; 屏蔽中断LDP #0E0HSPLK #0068H, WDCR ;不用看门狗SPLK #0284H, SCSR1 ;CLKIN=10MHz,CLKOUT=20MHz;--------------------------------------中断初始化程序-------------------------------------------------- LDP #0SPLK #0FFH,IFR ;清所有系统中断标志SPLK #00000110B,IMR ;开INT2, INT3中断LDP #0E8HLACC EVAIFRA ;清事件管理器A所有中断标志SACL EVAIFRALACC EVAIFRBSACL EVAIFRBLACC EVAIFRCSACL EVAIFRCSPLK #0,EVAIMRA ;屏蔽所有中断SPLK #0,EVAIMRBSPLK #0,EVAIMRC;--------------------------------------初始化转子位置为A相-------------------------------------------CALL START2 ;调用初始化转子位置子程序;--------------------------------------ADC初始化-----------------------------------------------------LDP #0E1HSPLK #0900H,ADCTRL1 ;ADC预分频10,1MHZSPLK #0001H,MAXCONV ;两个通道SPLK #0010H,CHSELSEQ1 ;选择ADCIN0和ADCIN1通道LACC MCRAOR #0FD8H ;设置PWM1-6,QEP1-2SACL MCRA;--------------------------------------初始化事件管理器A程序--------------------------------------LDP #0E8HSPLK #0000H,ACTRA ;引脚PWM1-6强制低SPLK #0,CMPR1 ;占空比初值为100%SPLK #0,CMPR2SPLK #0,CMPR3SPLK #8200H,COMCONA ;定时器下溢比较器重载,允许比较SPLK #0800,T1PR ;周期寄存器值800(25kHzPWM)SPLK #0,T1CNTSPLK #9040H,T1CON ;连续增计数方式,预分频为1,允许T1SPLK #9872H,T2CON ;定向增减,允许编码接口SPLK #0803BH, T2PR ;T2周期寄存器(7FFFH+60)SPLK #07FC3H, T2CMPR ;T2比较寄存器(7FFFH-60)SPLK #07FFFH, T2CNT ;编码器计数器初值;--------------------------------------开中断---------------------------------------------------------------- LDP #0E8HLACC EVAIFRA ;清事件管理器A所有中断标志SACL EVAIFRALACC EVAIFRBSACL EVAIFRBLACC EVAIFRCSACL EVAIFRCSPLK #0080H,EVAIMRA ;开T1周期中断SPLK #0003H,EVAIMRB ;开T2周期中断和比较中断SPLK #0,EVAIMRCLAR AR1,#STACK ;软堆栈指针CLRC INTM ;开中断;--------------------------------------变量初始化---------------------------------------------------------- LDP #0HLACC #0SACL CMD ;电流参考初值(通过速度环求得)SACL CMDAC ;A/C相电流参考值SACL CMDBD ;B/D相电流参考值LACC #10SACL NUM ;电流修正值LDP #0E8HLACC T1PRLDP #0SACL MAX ;MAX =T1PR,占空比=0%LACC #00SACL MIN ;MIN = 0,占空比=100%LACC MINSACL COMAC ;A/C相占空比=100%SACL COMBD ;B/D相占空比=100%LACC #0SACL CURRAC ;A/C相电流=0SACL CURRBD ;B/D相电流=0LACC GPR2 ;转向,由用户外部输入SUB #1BCND X3, EQ ;正转(CW)则跳转LACC #4 ;反转(CCW)SACL GPR0 ;当前换相是D相B XXX3 LACC #2 ;正转(CW)SACL GPR0 ;当前换相是B相XX LACC #1SACL GPR3 ;禁止换相;--------------------------------------初始化结束----------------------------------------------------------;--------------------------------------用户可添加包括转速和转向输入的应用程序------------WAIT B WAIT ;;--------------------------------------主模块结束----------------------------------------------------------;--------------------------------------假中断处理子程序-------------------------------------------------- PHANTOMCLRC INTMRET;--------------------------------------T1周期中断处理子程序-----------------------------------------T1PERIOD_ISRMAR *,AR1 ;保存现场MAR *+SST #1, *+ ;保存ST1SST #0, * ;保存ST0LDP #0E0HLACC PIVR ;清中断标志LDP #0E8HSPLK #0FFFH,EVAIFRA;--------------------------------------检测是否换相------------------------------------------------LDP #0LACC GPR3SUB #1BCND NOCOM, EQ ;不换相则跳转;--------------------------------------转向识别,调整当前换相标志-----------------------------------LACC GPR2 ;换相SUB #1BCND FORWARD, EQ ;正转则跳转REVERSE ;反转(CCW)LACC GPR0 ;调整当前换相标志SUB #1SACL GPR0BCND X1, EQ ;GPR0=0跳转B GOOUTX1 LACC #4 ;修改GPR0=4SACL GPR0B GOOUTFORWARD ;(CW)LACC GPR2 ;检查转向是否改变SUB #0BCND REVERSE, EQ ;如果转向改变则跳转LACC GPR0 ;调整当前换相标志ADD #1SACL GPR0SUB #5BCND X2, EQ ;GPR0>5跳转B GOOUTX2 LACC #1 ;修改GPR0=1SACL GPR0GOOUTLACC #1SACL GPR3 ;修改换相标志为不换相;--------------------------------------调用电流检测子程序---------------------------------------------。

基于DSP的开关磁阻电机控制系统设计

基于DSP的开关磁阻电机控制系统设计
信号的驱动功率模块。
定 稿 日 期 :2008-09-16 作者简介:袁 驰 (1961-),女 ,辽 宁 辽 中 人 , 教 授 ,研 究 方 向
为电机拖动技术、变流技术、机电一体化技术等。
图 2 系统结构图
27
第 43 卷第 2 期 2009 年 2 月
电力电子技术 Power Electronics
Induction Heated Fixed Roller[J].IEE Proceedings Electric Power Applications,2003,150(2):237-244. [2] 沈锦飞,惠 晶,吴 雷.2 MHz /1 kW 超高频感应加热电 源[J].电力电子技术,2002,36(6):13-15 . [3] LIANG Yan,LIU Wen-duo,LU Bing,et al.Design of Integrat-
Vol.43 No.2 February,2009
3 控制系统设计
图 3 示出基于 TMS320LF2407 的 SRM 控制电 路组成。由于智能功率模块中集成了功率保护电路 和 IGBT 触发电路,故简化了系统结构。由霍尔元件 检测到的电流经过隔离放大后被 DSP 的 A/D 转换模 块采样,采样电流作为电流环的反馈;位置信号为 TMS320LF2407 的捕获单元所获取;本系统还可以通 过 CAN 控制器模块与网络上的其它设备进行通讯。
参考文献
[1] Moissseev S,Muraoka H,Nakamura M,et al.Zero Voltage Soft Switching PWM High -frequency Inverter using IGBTs for
根据设计方案参数选用 IRF740 功率 MOSFET (400 V/10 A)作为谐振变换器开关管。谐振电感选 用空心电感器以减少磁心损耗。根据以上实验参数, 得到了如图 5 的实验波形。

基于DSP2407的电动汽车感应电机控制系统硬件设计

基于DSP2407的电动汽车感应电机控制系统硬件设计

摘要基于DSP2407A的电动汽车感应电机控制系统硬件设计第一章绪论1.1选题的背景与意义在未来的一段时间内,我国将成为世界最大的汽车消费国,去年我国的汽车保有量为7802万辆。

不过空气污染源也随之大幅度提高,空气污染将有64%来自于汽车尾气的排放,如一氧化碳、碳氢化合物、硫化物以及由于二氧化碳排放等,这些气体都会造成温室效应,对我国经济健康发展起到一定得阻碍影响;在2020年左右,我国石油消费量将超过4.5亿吨,而我国能源系统效率平均低于国际先进水平10%,但是我国60%石油消费量依赖于进口,要是仍然采用传统的内燃机技术发展汽车工业将会使我国为此付出巨大代价和对环境保护也会造成巨大的压力。

在这种严峻的形势下,我国汽车工业的未来发展需要我们好好思考。

根据现在世界人口和汽车的增长趋势来看,今后50年中,世界人口和汽车数量分别从60亿增加到100亿和10亿增加到40亿辆以上。

若这些车辆都采用内燃机,能源需求和空气污染将会给人类造成巨大的压力和损坏。

因此我们必须开发节能环保型以及高效智能型的交通车辆,只有这样才能在本世纪实现交通的可持续发展。

现在世界上各国汽车现有数量加在一起超过10亿辆,每年新增加的各种汽车约3500万辆,按平均每辆汽车年消耗10~15桶石油及石油制品计算,汽车的石油消耗量每年达到100~150亿桶,可见就光汽车每年消耗的石油量都要占世界石油产量的一半以上,这样石油资源要是长期按现在的每年几十亿吨大规模地开采,那么石油资源枯竭的日子将会越来越近。

根据科学家的预测,如果按目前地球上石油资源的消耗水平,仅仅可以维持60~100年左右。

能源危机曾经对世界经济带来严重影响,因此石油资源的争夺更加强烈,石油纠纷在国际上也不断发生,甚至为了争夺石油资源而爆发的战争在近几年也不断发生。

因此石油资源的解决是当今世界每个国家所面临的首要考虑的问题,石油资源解决的好坏是当今世界是否稳定的重要因素。

电动汽车是将机算机、电子与化学各学科领域中的高新技术于一体,是汽车、计算机、电力拖动、新材料、新能源、功率电子、自动控制、化学电源等工程技术中最新成果的集成产物。

DSP2407A开发的开关磁阻电机控制程序的源代码

DSP2407A开发的开关磁阻电机控制程序的源代码

DSP2407A开发的开关磁阻电机控制程序的源代码(1).INCLUDE "240x.H";--------------------------------------以下定义变量---------------------------------------------------- .DATA.BSS ADDRESS,1 ;换相处理程序地址.BSS GPR0,1 ;当前通电相标志(1,2,3,4---A,B,C,D).BSS GPR2,1 ;转向标志,1(CW),0(CCW).BSS GPR3,1 ;换相标志,1(不允许),0(允许).BSS CMD,1 ;电流参考值.BSS CMDAC,1 ;A/C相电流参考值.BSS CMDBD,1 ;B/D相电流参考值.BSS MAX,1 ;最小占空比(0%)比较值.BSS MIN,1 ;最大占空比(100%)比较值.BSS COMAC,1 ;A/C相比较值.BSS COMBD,1 ;B/D相比较值.BSS CURRAC,1 ;A/C相电流检测值.BSS CURRBD,1 ;B/D相电流检测值.BSS NUM,1 ;电流修正值.BSS TMP,1 ;临时变量.BSS STACK,6 ;软堆栈初始地址;--------------------------------------定义主向量段------------------------------------------------------ .SECT ".VECTORS" ;定义主向量段RESET B START ;地址0000H,复位,优先级1INT1 B PHANTOM ;地址0002H,INT1,优先级4INT2 B T1PERIOD_ISR ;地址0004H,INT2,优先级5INT3 B T2PERIOD_ISR ;地址0006H,INT3,优先级6INT4 B PHANTOM ;地址0008H,INT4,优先级7INT5 B PHANTOM ;地址000AH,INT5,优先级8INT6 B PHANTOM ;地址000CH,INT6,优先级9RESERVED B PHANTOM ;地址000EH,测试,优先级10SW_INT8 B PHANTOM ;地址0010H,自定义软中断SW_INT9 B PHANTOM ;地址0012H,自定义软中断SW_INT10 B PHANTOM ;地址0014H,自定义软中断SW_INT11 B PHANTOM ;地址0016H,自定义软中断SW_INT12 B PHANTOM ;地址0018H,自定义软中断SW_INT13 B PHANTOM ;地址001AH,自定义软中断SW_INT14 B PHANTOM ;地址001CH,自定义软中断SW_INT15 B PHANTOM ;地址001EH,自定义软中断SW_INT16 B PHANTOM ;地址0020H,自定义软中断TRAP B PHANTOM ;地址0022H,TRAP矢量NMI B PHANTOM ;地址0024H,NMI,优先级3EMU_TRAP B PHANTOM ;地址0026H,仿真Trap,优先级2SW_INT20 B PHANTOM ;地址0028H,自定义软中断SW_INT21 B PHANTOM ;地址002AH,自定义软中断SW_INT22 B PHANTOM ;地址002CH,自定义软中断SW_INT23 B PHANTOM ;地址002EH,自定义软中断SW_INT24 B PHANTOM ;地址0030H,自定义软中断SW_INT25 B PHANTOM ;地址0032H,自定义软中断SW_INT26 B PHANTOM ;地址0034H,自定义软中断SW_INT27 B PHANTOM ;地址0036H,自定义软中断SW_INT28 B PHANTOM ;地址0038H,自定义软中断SW_INT29 B PHANTOM ;地址003AH,自定义软中断SW_INT30 B PHANTOM ;地址003CH,自定义软中断SW_INT31 B PHANTOM ;地址003EH,自定义软中断;--------------------------------------以下是主程序------------------------------------------------------ .TEXT;--------------------------------------系统初始化程序-------------------------------------------------- STARTSETC INTM ; 屏蔽中断LDP #0E0HSPLK #0068H, WDCR ;不用看门狗SPLK #0284H, SCSR1 ;CLKIN=10MHz,CLKOUT=20MHz;--------------------------------------中断初始化程序-------------------------------------------------- LDP #0SPLK #0FFH,IFR ;清所有系统中断标志SPLK #00000110B,IMR ;开INT2, INT3中断LDP #0E8HLACC EVAIFRA ;清事件管理器A所有中断标志SACL EVAIFRALACC EVAIFRBSACL EVAIFRBLACC EVAIFRCSACL EVAIFRCSPLK #0,EVAIMRA ;屏蔽所有中断SPLK #0,EVAIMRBSPLK #0,EVAIMRC;--------------------------------------初始化转子位置为A相-------------------------------------------CALL START2 ;调用初始化转子位置子程序;--------------------------------------ADC初始化-----------------------------------------------------LDP #0E1HSPLK #0900H,ADCTRL1 ;ADC预分频10,1MHZSPLK #0001H,MAXCONV ;两个通道SPLK #0010H,CHSELSEQ1 ;选择ADCIN0和ADCIN1通道LACC MCRAOR #0FD8H ;设置PWM1-6,QEP1-2SACL MCRA;--------------------------------------初始化事件管理器A程序--------------------------------------LDP #0E8HSPLK #0000H,ACTRA ;引脚PWM1-6强制低SPLK #0,CMPR1 ;占空比初值为100%SPLK #0,CMPR2SPLK #0,CMPR3SPLK #8200H,COMCONA ;定时器下溢比较器重载,允许比较SPLK #0800,T1PR ;周期寄存器值800(25kHzPWM)SPLK #0,T1CNTSPLK #9040H,T1CON ;连续增计数方式,预分频为1,允许T1SPLK #9872H,T2CON ;定向增减,允许编码接口SPLK #0803BH, T2PR ;T2周期寄存器(7FFFH+60)SPLK #07FC3H, T2CMPR ;T2比较寄存器(7FFFH-60)SPLK #07FFFH, T2CNT ;编码器计数器初值;--------------------------------------开中断---------------------------------------------------------------- LDP #0E8HLACC EVAIFRA ;清事件管理器A所有中断标志SACL EVAIFRALACC EVAIFRBSACL EVAIFRBLACC EVAIFRCSACL EVAIFRCSPLK #0080H,EVAIMRA ;开T1周期中断SPLK #0003H,EVAIMRB ;开T2周期中断和比较中断SPLK #0,EVAIMRCLAR AR1,#STACK ;软堆栈指针CLRC INTM ;开中断;--------------------------------------变量初始化---------------------------------------------------------- LDP #0HLACC #0SACL CMD ;电流参考初值(通过速度环求得)SACL CMDAC ;A/C相电流参考值SACL CMDBD ;B/D相电流参考值LACC #10SACL NUM ;电流修正值LDP #0E8HLACC T1PRLDP #0SACL MAX ;MAX =T1PR,占空比=0%LACC #00SACL MIN ;MIN = 0,占空比=100%LACC MINSACL COMAC ;A/C相占空比=100%SACL COMBD ;B/D相占空比=100%LACC #0SACL CURRAC ;A/C相电流=0SACL CURRBD ;B/D相电流=0LACC GPR2 ;转向,由用户外部输入SUB #1BCND X3, EQ ;正转(CW)则跳转LACC #4 ;反转(CCW)SACL GPR0 ;当前换相是D相B XXX3 LACC #2 ;正转(CW)SACL GPR0 ;当前换相是B相XX LACC #1SACL GPR3 ;禁止换相;--------------------------------------初始化结束----------------------------------------------------------;--------------------------------------用户可添加包括转速和转向输入的应用程序------------WAIT B WAIT ;;--------------------------------------主模块结束----------------------------------------------------------;--------------------------------------假中断处理子程序-------------------------------------------------- PHANTOMCLRC INTMRET;--------------------------------------T1周期中断处理子程序-----------------------------------------T1PERIOD_ISRMAR *,AR1 ;保存现场MAR *+SST #1, *+ ;保存ST1SST #0, * ;保存ST0LDP #0E0HLACC PIVR ;清中断标志LDP #0E8HSPLK #0FFFH,EVAIFRA;--------------------------------------检测是否换相------------------------------------------------LDP #0LACC GPR3SUB #1BCND NOCOM, EQ ;不换相则跳转;--------------------------------------转向识别,调整当前换相标志-----------------------------------LACC GPR2 ;换相SUB #1BCND FORWARD, EQ ;正转则跳转REVERSE ;反转(CCW)LACC GPR0 ;调整当前换相标志SUB #1SACL GPR0BCND X1, EQ ;GPR0=0跳转B GOOUTX1 LACC #4 ;修改GPR0=4SACL GPR0B GOOUTFORWARD ;(CW)LACC GPR2 ;检查转向是否改变SUB #0BCND REVERSE, EQ ;如果转向改变则跳转LACC GPR0 ;调整当前换相标志ADD #1SACL GPR0SUB #5BCND X2, EQ ;GPR0>5跳转B GOOUTX2 LACC #1 ;修改GPR0=1SACL GPR0GOOUTLACC #1SACL GPR3 ;修改换相标志为不换相;--------------------------------------调用电流检测子程序---------------------------------------------。

开关磁阻电机matlab程序设计

开关磁阻电机matlab程序设计

开关磁阻电机设计程序%开关磁阻电机设计程序%%电机给定数据:功率7.5KW,电源电压380V,额定转速1500r/min,额定效率0.88,%调速范围200——2000r/min,4相8/6极结构。

%clear allformat short e%1.功率,转速PN=7.5*10^3;n=1500;%2.相数q=4;%3.定子极数、转子极数Ns=8;Nr=6;%4.绕组端电压(单位V)U=280;%5.主要尺寸选择,电磁功率eta=0.88;Pem=PN*((1+eta)/(2*eta));%6.细长比lambda=1.2;%7.电磁负荷初选值A1=28000;Bdelta1=0.4;%8.转子外径Daki=0.5;km=0.8;Da=6.1/(Bdelta1*A1)*(ki/km)*(Pem/n)/(1.05*lambda);Da=Da^(1/3);%9.铁芯叠长la=0.1355;%10.定子外径Ds=0.21;%11.气隙g=0.0004;%12.定转子极弧betas=21*pi/180;betar=23*pi/180;%13.定转子极宽bps=(Da+2*g)*sin(betas/2);bpr=Da*sin(betar/2);%14.第二气隙,设%%%%%%%%%%%% 此处可以输入数值 %%%%%%%%%%%%%%%%%%%例如:gi=input('输入第二气隙gi=')gi=0.01615;%15.定转轭高hcs=1.3*bps/2;hcr=1.4*bpr/2;%16.轴径。

%%%%%%%%%%%% 此处可以输入数值 %%%%%%%%%%Di=0.05;%17.定子槽深ds=(Ds-Da-2*g-2*hcs)/2;%19.有效铁芯长度kFe=0.93;lFe=kFe*la;%20.转子极距taur=pi*Da/Nr;%21.控制参数。

开通脚,关断角,导通角thetaon=0;thetau=0;thetaoff=(1/2)*(2*pi/Nr-betar)+thetau;thetahr=thetaoff;thetac=thetaoff-thetaon;%22.每相绕组串联匝数,取Bps=1.6T,重新校验BdeltaBps=1.6;ldelta=1.05*la;Bdelta=0.805*bps*Bps/taur;Nph=3.04*Nr*U*thetac/(n*Bdelta*Da*ldelta);%%%%%%%%%%%% 此处可以输入数值 %%%%%%%%%%%23.磁化曲线计算,选择DR510-50硅钢片冲片,delta=0.0005,计算机计算得:%不对齐位置电感Lu=0.00918; %%%%%%%%%%%% 此处可以输入数值 %%%%%%%%%%%25.额定电磁转矩omega=2*pi*n/60;Tem=Pem/omega;%26.额定电磁转矩Tem所需的理想方波电流幅值Ims%在图6-17中,取Ims=28A时,W1=13.61J,Ims=28;W1=13.61;Tem1=Ns*Nr*W1/4/pi; %%%%%%%%%%%% 此处可以输入数值 %%%%%%%%%%%27.绕组电流有效值I=Ims/(2^(1/2));%28.实际电流峰值ki=0.5;im=I/ki;%29.定子极间窗口面积SW=(1/2)*(pi/Ns)*((Ds/2-hcs)^2-(Da/2+g)^2)-bps*ds/2;%30.导线规格、导线截面积Sa和槽满率ks%预取电流密度J1=5A/mm^2,J1=5;Sa1=I/J1;Sa=3.94; %%%%%%%%%%%%%%%%%%%%此处可以输入数值%%%%%%%%%%%每槽导体净截面积SCu=Nph*Sa/2;%槽满率ks=SCu/SW;%31.电流密度J=5; %%%%%%%%%%%%%%%%%%%%此处可以输入数值%%%%%%%%%%%32.绕组平均匝长lavbw=(Da+2*g)*sin(pi/Ns)-bps/2;a=bps+bw;b=la+2*5*10^(-3)+bw;r=5*10^(-3)+bw/2;lav=2*la+2*(bps-2*5*10^(-3))+2*pi*r;%33.每相绕组导线总长l=Nph*lav;%34.每相绕组电阻Rp=0.0217*l/Sa;%参数计算%35.铜重GCu=q*Sa*l*10^(3)*8.9*10^(-6);%36.定子铁芯体积VSFe=((1/2)*(pi/Ns)*((Ds/2)^2-(Ds/2-hcs)^2)+bps*ds)*2*Ns*lFe;%37.转子铁芯体积VRFe=((1/2)*(pi/Nr)*((Di/2+hcr)^2-(Di/2)^2)+bpr*(gi-g)/2)*2*Nr*lF e;%38.铁芯重GFe=(VSFe+VRFe)*10^(9)*7.8*10^(-6);%39.电负荷Dsi=Da+2*g;A=q*Nph*I/(pi*Dsi);%40.铜耗PCu=q*I^2*Rp;%41.电机利用系数TN=PN/(2*n*pi/60);K=TN/(Da^2*la);。

无刷直流电机控制系统的DSP设计方案

无刷直流电机控制系统的DSP设计方案

无刷直流电机控制系统的DSP设计方案作者:吴玮玮来源:《科技经济市场》2015年第09期摘要:为了能够使无刷直流电机的控制效果得以提升,本文以TMS320LF2407A微控制器作为核心,对基于DSP的电机控制系统进行了设计,该方案具有高可靠性、低成本以及电路简单的特点,因此应用价值较高。

关键词:TMS320LF2407A;DSP;电机控制系统无刷直流电机芯片具备高性能、低功耗以及低成本的特点,在数字化控制系统中其外设资源只需利用少量的外围芯片就可以完成所需功能,特别是其双事件管理模块可以有效地控制多个逆变器,因此极大的提升了系统的可靠性。

1 无刷直流电机控制系统结构分析无刷直流电机控制系统通过对脉宽调制方式的利用控制电机的转向和转速,其主控制器为TMS320LF2407A芯片。

外围电路主要包括数码显示、串行通信、驱动电路以及电源管理等。

首先2407A 控制器利用三个CAP 端口对霍尔元件的高速脉冲信号进行捕捉,随后对转子的转动位置进行检测,并以转子的位置为根据激发相应的控制,使PWM信号的值得以改变。

在经过相应的隔离之后,PWM信号就能够到达逆变桥,对其中IGBT 的开通和关断进行控制。

霍尔元件 H1、H2、H3会随着电机转子的转动形成六种状态,DSP能够以每一种状态为依据将相应的控制字发出,从而使电机的通电相序得以改变,最终有效地控制电机的转动方向、转速以及连续运行。

2 电机控制系统模块(1)电源管理电源管理就是提供所需电压,确保各单元电路能够稳定工作,其主要包括以下几个部分:①选择+24V直流电源作为无刷直流电机供电电源,然后利用 LM7815 稳压器将其转换为+15V,向相关电路和驱动芯片 IR2136供电;②选择3.3V为2407A供电,这样就能够对其芯片功耗进行有效控制。

在本方案中采用了与TPS75733相同的电源专用芯片,可以将5V 电压转换成3.3V[1]。

(2)时钟输入由于DSP 的内部指令具有较高的周期,外部晶振缺乏充足的主频,因此 PLL被配备到了多数芯片中,这个模块通过对外部滤波器回路的利用对电磁干扰和信号抖动进行抑制,滤波器回路主要包括电容、电阻,如果由 l0MHz 有源晶振提供外部时钟信号,那么状态寄存器和系统控制对4倍频因子进行设置,这时2407A DSP工作在最大时钟频率。

基于DSP2407的矢量控制三相异步电动机变频调速系统设计

基于DSP2407的矢量控制三相异步电动机变频调速系统设计

1 系统硬件结构
基于 T MS320C2407ADSP 的全数字交 流 调速系统由控制部分、功率驱动部分以及其他 辅助芯片组成外, 我们为它扩展了一块外部数 据/ 程序存储器 ( 64k @16 位) 以及 译码电路、 EPROM 状态存储电路、上电复位电路、手动复 位电路及各种工作模式的跳线设置等. 1. 1 DSP 核心电路
列( D1 , D2 , , , DZ) . 设误差数列的方差为 S, 则有:
Z
E S =
D2i
i= 1
当 S< K 时, 可认为电机的转速是恒定的.
K 是一个较小的数, 具体的数值同测试的环境
有关, 可以由实验确定即为 m2, 则转速为
n = 60f cm1 / P m2 .
3 SPWM 波形和电流波形
测电动 机 定 子 电流、转 速、矢 量 控 制 算 法 和
SPWM 信号的计 算, 计算 结果送 相应 的寄 存
器, 等待调用. 中断服务子程序中调用相应的寄 存器, 最后完成各功能单元的实际输出. 主程序
的流程图如图 3 所示, 矢量变换计算流程图如
图 4 所示, 中断服务子程序的流程如图 5 所示. 中断 1、2、3 子程序都采用时间触发, 用软件定
图 6 是 DSP 实际输出的 SPWM 波形. 图 7、图 8 是采用这种控制模式时的电流波形图.
第 3 期 廖子庭等: 基于 DSP2407 的矢量控制三相异步电动机变频调速系统设计*
29
图 6 SPWM 波形 图 7 35H z 电流波形
图 8 5H z 电流波形
4 结论
当前有关矢量控制变频调速系统的理论研 究已经趋于成熟, 矢量控制变频调速正在从理 论研究向实际应用进行转化, 在这一过程中出 现了许多新技术、新方法, 本文总结了我们研制 的基于 DSP2407 的矢量控制三相异 步电动机 变频调速系统样机的部分经验. 系统只用了一 只单片 DSP, 在软件设计上充分利用了 DSP 资 源, 在速度检测方面加入的校正环节提高了系 统的精度. 设计的系统结构简单, 易于实现. 运 行的性能表明这种设计是可行的.

用DSP2407以及正交编码信号实现电机测速

用DSP2407以及正交编码信号实现电机测速

2007年第4期75用DSP2407以及正交编码信号实现电机测速Motor S p eed Measurin g B ased on DSP2407and Ortho g onal Codes浙江电力ZHE J IANG E LECT RIC POWER光编码器精度高、抗磁干扰性能好、响应速度快,采用光编码组成的电机测速装置能够较好地适应电机周围的环境,提高测量精度。

脉冲边缘振荡容易使电子元件错误判较,导致测速误差。

采用正交编码信号能有效消除脉冲边缘振荡的影响。

普通的单片机几乎不能正确地检出正交编码。

而DSP2407拥有单周期乘法指令,在捕获正交编码信号时能够及时处理正交编码,并方便地进行标幺化处理。

1正交编码及其测速原理通常情况下如果两个周期为T 的信号S1(t )和S2(t )互相正交[1],即每个传感器发出一个方波与另一个传感器发出的方波异相90°,即两个信号为正交编码。

正交编码具有良好的抗噪性能,能有效消除脉冲边缘振荡造成的干扰,在测速时能有效提高准确性。

采用在固定时间间隔内数正交编码器脉冲数量的方法估算速度和加速度[2]。

两个正交编码的输入脉冲的两个边沿均被正交编码器脉冲(QEP )接口计数,QEP 电路产生的时钟频率是每个输入序列频率的四倍[3],并接入到通用定时器2或4。

在计数测量速度的同时,对每周的整倍数波形和不足整数倍的波形分别进行统计,由于码盘上的缝隙是均匀分布的,所以可以根据整圈的码数和当前零散码数的比值得出当前码盘所在的角度,因此只要知道码盘的初始位置就能测算出码盘当前的位置。

通过检验电机轴上的光学编码器产生正交编码脉冲序列中哪个序列领先,即可确定计数器增减。

如果编码器A 序列领先,则计数器增加。

如果编码器B 序列领先,那么计数器减少。

QEP 电路的方向检测逻辑测定哪个脉冲序列的相位领先来产生方向信号作为通用定时器2或4的方向输入。

如果CAP1/QEP1(EV B 为CAP4/QEP3)的输入为领先相位,选定的计数器递增计数;如果CAP2/QEP2(EV B 为CAP5/QEP4)输入的相位领先,则计数器递减计数。

DSP2407

DSP2407

#include "2407c.H"//函数声明unsigned int Motor1_Ctrl(unsigned int Direction,unsigned int Speed); unsigned int Motor2_Ctrl(unsigned int Direction,unsigned int Speed);//L298N电机控制宏#define FORWARD 10#define BACK 01#define STOP 00/**************************************************** FUNCTION: interrupt nothing** PARAMETERS:无** DESCRIPTION:中断服务子程序,用于处理不可预测的内核级中断** RETURNS: 无****************************************************/void interrupt nothing() //中断直接返回子程序{_EINT();return ;}void Timer2(void){static unsigned int timer2_2ms_Counter=0;static unsigned int MK1=0;static unsigned int MK2=0;timer2_2ms_Counter++; //每次进入中断,自加1if(2500==timer2_2ms_Counter){timer2_2ms_Counter=0; //计数达到5秒后,清零MK1+=20;MK2+=20;if(MK1>=100||MK2>=100){Motor1_Ctrl(FORWARD,100);Motor2_Ctrl(BACK,100);MK1=0;MK2=0;}else{Motor1_Ctrl(FORWARD,MK1);Motor2_Ctrl(BACK,MK2);}}EVAIFRB|=0x0001; //清除定时器2的周期中断标志EVAIMRB|=0x0001; //是能定时器2的周期中断}/**************************************************** FUNCTION: interrupt GISR3(void)** PARAMETERS:无** DESCRIPTION:内核级中断** RETURNS: 无****************************************************/void interrupt GISR3(void){_DINT(); //关闭全局中断,不使用中断嵌套switch(PIVR){case 0x002B: //定时器2周期中断{Timer2();}}_EINT(); //开启全局中断}/**************************************************** FUNCTION: initial** PARAMETERS:无** DESCRIPTION:系统初始化函数** RETURNS: 无****************************************************/int initial() //系统初始化子程序{asm(" setc SXM"); //符号扩展位有效asm(" clrc OVM"); //累加其中结果正常溢出asm(" clrc CNF"); //B0被配置为数据存诸空间SCSR1=0x06FC; //CLKIN=20M(详见说明文档)WDCR=0x0068; //不使能看门狗IMR=0x0000; //禁止所有中断IFR=0x003F; //清楚全部中断标志,写1清0WSCR=0x00; //禁止所有的等待状态}/**************************************************** FUNCTION: timelint2** PARAMETERS:无** DESCRIPTION:定时器2初始化,定时长度为2ms,以及改变PWM波的占空比** RETURNS: 无****************************************************/void Timer2Init(){T2CNT=0x0000; //设置定时器1初始计数值为0T2PR=20000; //定时长度为2msT2CON=0x0800; //连续增减计数模式1分频EVAIFRB=0x0001; //清除定时器2的周期中断标志EVAIMRB=0x0001; //使能定时器2的周期中断}/**************************************************** FUNCTION: MotorInit(void)** PARAMETERS:无** DESCRIPTION:初始化事件管理模块A(EVA)的比较单元,使之产生2路的PWM(PWM1,PWM3)* 初始化定时器1,用以产生频率为20KHZ的定时周期初始化IO口,用来输出高低电平,配合L298N驱动两路电机资源分配:PA6、PB0 设置为PWM输出口PA7、PB4设置为IO控制口,属性为输出,控制电机1的转向PB1、PB6设置为IO控制口,属性为输出,控制电机2的转向* RETURNS: 无****************************************************/void MotorInit(void){MCRA|=0x0000; //IOPA6置1,为PWM功能(PWM1)MCRA|=0x0100; //IOPB0置1,为PWM功能(PWM3)MCRA&=~0x0080; //IOPA7置0,为IO口PADATDIR|=0x8000; //IOPA7为输出口,初始输出置为0MCRA&=~0x1000; //IOPB4置0,为IO口PBDATDIR|=0x1000; //IOPB4为输出口,初始输出置为0MCRA&=~0x0200; //IOPB1置0,为IO口PBDATDIR|=0x0200; //IOPB1为输出口,初始输出置为0MCRA&=~0x4000; //IOPB6置0,为IO口PBDATDIR|=0x4000; //IOPB6为输出口,初始输出置为0//初始化定时器1T1CNT=0x0000; //设置定时器1的初始计数值为0T1PR=500; //20KhzPWM(20Mhz/1/20000/2)因为是中心对称PWM,要除以2DBTCONA=0x00; //不使能死去控制ACTRA=0x0022; //设置PWM1、3引脚输出高有效CMPR1=500; //初始PWM1输出的占空比为0CMPR2=500; //初始PWM3输出的占空比为0COMCONA=0x8200; //见说明文档T1CON=0x0800; //见说明文档}/**************************************************** FUNCTION: MotorCtrl(Direction,Speed)** PARAMETERS:Direction:电机转动的方向,Speed:电机转动速度** DESCRIPTION:L298N驱动2路电机的接口函数,Speed:电机速度(0-100)Direction(RORWARD、BACK、STOP)* RETURNS: 如果参数超出控制范围,返回布尔值0****************************************************/unsigned int Motor1_Ctrl(unsigned int Direction,unsigned int Speed){if(FORWARD==Direction){PADATDIR=(PADATDIR&0xFF7F)|0x8080; //设置电机正转PA7:1 PB4:0 PBDATDIR=(PBDATDIR&0xFFEF)|0x1000;if((Speed>=1)||(Speed<=100)) //判断电机速度是否在(1-100内){CMPR1=(unsigned int)(5*(100-Speed));}}else if(BACK==Direction){PADATDIR=(PADATDIR&0xFF7F)|0x8080;PBDATDIR=(PBDATDIR&0xFFEF)|0x1010; //设置电机反转PA7:0 PB4:0if((Speed>=1)||(Speed<=100)) //判断电机速度是否在(1-100内){CMPR1=(unsigned int)(5*(100-Speed));}}else if(STOP==Direction){PADATDIR=(PADATDIR&0xFF7F)|0x8080;PBDATDIR=(PBDATDIR&0xFFEF)|0x1010; //设置电机停转PA7:1 PB4:1 }else{return 0;} //电机控制参数错误,返回}unsigned int Motor2_Ctrl(unsigned int Direction,unsigned int Speed){if(FORWARD==Direction){PBDATDIR=(PBDATDIR&0xFFFD)|0x0202; //设置电机正转PB1:1 PB6:0PBDATDIR=(PBDATDIR&0xFFBF)|0x4000;if((Speed>=1)||(Speed<=100)) //判断电机速度是否在(1-100内){CMPR2=(unsigned int)(5*(100-Speed));}}else if(BACK==Direction){PBDATDIR=(PBDATDIR&0xFFFD)|0x0200;PBDATDIR=(PBDATDIR&0xFFBF)|0x4040; //设置电机正转PB1:0 PB6:1 if((Speed>=1)||(Speed<=100)) //判断电机速度是否在(1-100内){CMPR2=(unsigned int)(5*(100-Speed));}}else if(STOP==Direction){PBDATDIR=(PBDATDIR&0xFFFD)|0x0202;PBDATDIR=(PBDATDIR&0xFFBF)|0x4040; //设置电机正转PB1:1 PB6:1 }else{return 0;} ////电机控制参数错误,返回}/**************************************************** FUNCTION: Main(void)** PARAMETERS:** DESCRIPTION:主函数** RETURNS:****************************************************/void main(void){_DINT(); //关闭全局中断initial();MotorInit();Timer2Init();T1CON|=0x0040; //初始化完毕,启动定时器,产生PWM波T2CON|=0x0040; //开启定时器2,定时5s改变一次占空比IFR=0x0004; //清除INT3中断标志IMR=0x0004; //打开INT3内核级中断_EINT(); //打开全局中断while(1){;}}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

DSP2407A开发的开关磁阻电机控制程序的源代码(1).INCLUDE "240x.H";--------------------------------------以下定义变量---------------------------------------------------- .DATA.BSS ADDRESS,1 ;换相处理程序地址.BSS GPR0,1 ;当前通电相标志(1,2,3,4---A,B,C,D).BSS GPR2,1 ;转向标志,1(CW),0(CCW).BSS GPR3,1 ;换相标志,1(不允许),0(允许).BSS CMD,1 ;电流参考值.BSS CMDAC,1 ;A/C相电流参考值.BSS CMDBD,1 ;B/D相电流参考值.BSS MAX,1 ;最小占空比(0%)比较值.BSS MIN,1 ;最大占空比(100%)比较值.BSS COMAC,1 ;A/C相比较值.BSS COMBD,1 ;B/D相比较值.BSS CURRAC,1 ;A/C相电流检测值.BSS CURRBD,1 ;B/D相电流检测值.BSS NUM,1 ;电流修正值.BSS TMP,1 ;临时变量.BSS STACK,6 ;软堆栈初始地址;--------------------------------------定义主向量段------------------------------------------------------ .SECT ".VECTORS" ;定义主向量段RESET B START ;地址0000H,复位,优先级1INT1 B PHANTOM ;地址0002H,INT1,优先级4INT2 B T1PERIOD_ISR ;地址0004H,INT2,优先级5INT3 B T2PERIOD_ISR ;地址0006H,INT3,优先级6INT4 B PHANTOM ;地址0008H,INT4,优先级7INT5 B PHANTOM ;地址000AH,INT5,优先级8INT6 B PHANTOM ;地址000CH,INT6,优先级9RESERVED B PHANTOM ;地址000EH,测试,优先级10SW_INT8 B PHANTOM ;地址0010H,自定义软中断SW_INT9 B PHANTOM ;地址0012H,自定义软中断SW_INT10 B PHANTOM ;地址0014H,自定义软中断SW_INT11 B PHANTOM ;地址0016H,自定义软中断SW_INT12 B PHANTOM ;地址0018H,自定义软中断SW_INT13 B PHANTOM ;地址001AH,自定义软中断SW_INT14 B PHANTOM ;地址001CH,自定义软中断SW_INT15 B PHANTOM ;地址001EH,自定义软中断SW_INT16 B PHANTOM ;地址0020H,自定义软中断TRAP B PHANTOM ;地址0022H,TRAP矢量NMI B PHANTOM ;地址0024H,NMI,优先级3EMU_TRAP B PHANTOM ;地址0026H,仿真Trap,优先级2SW_INT20 B PHANTOM ;地址0028H,自定义软中断SW_INT21 B PHANTOM ;地址002AH,自定义软中断SW_INT22 B PHANTOM ;地址002CH,自定义软中断SW_INT23 B PHANTOM ;地址002EH,自定义软中断SW_INT24 B PHANTOM ;地址0030H,自定义软中断SW_INT25 B PHANTOM ;地址0032H,自定义软中断SW_INT26 B PHANTOM ;地址0034H,自定义软中断SW_INT27 B PHANTOM ;地址0036H,自定义软中断SW_INT28 B PHANTOM ;地址0038H,自定义软中断SW_INT29 B PHANTOM ;地址003AH,自定义软中断SW_INT30 B PHANTOM ;地址003CH,自定义软中断SW_INT31 B PHANTOM ;地址003EH,自定义软中断;--------------------------------------以下是主程序------------------------------------------------------ .TEXT;--------------------------------------系统初始化程序-------------------------------------------------- STARTSETC INTM ; 屏蔽中断LDP #0E0HSPLK #0068H, WDCR ;不用看门狗SPLK #0284H, SCSR1 ;CLKIN=10MHz,CLKOUT=20MHz;--------------------------------------中断初始化程序-------------------------------------------------- LDP #0SPLK #0FFH,IFR ;清所有系统中断标志SPLK #00000110B,IMR ;开INT2, INT3中断LDP #0E8HLACC EVAIFRA ;清事件管理器A所有中断标志SACL EVAIFRALACC EVAIFRBSACL EVAIFRBLACC EVAIFRCSACL EVAIFRCSPLK #0,EVAIMRA ;屏蔽所有中断SPLK #0,EVAIMRBSPLK #0,EVAIMRC;--------------------------------------初始化转子位置为A相-------------------------------------------CALL START2 ;调用初始化转子位置子程序;--------------------------------------ADC初始化-----------------------------------------------------LDP #0E1HSPLK #0900H,ADCTRL1 ;ADC预分频10,1MHZSPLK #0001H,MAXCONV ;两个通道SPLK #0010H,CHSELSEQ1 ;选择ADCIN0和ADCIN1通道LACC MCRAOR #0FD8H ;设置PWM1-6,QEP1-2SACL MCRA;--------------------------------------初始化事件管理器A程序--------------------------------------LDP #0E8HSPLK #0000H,ACTRA ;引脚PWM1-6强制低SPLK #0,CMPR1 ;占空比初值为100%SPLK #0,CMPR2SPLK #0,CMPR3SPLK #8200H,COMCONA ;定时器下溢比较器重载,允许比较SPLK #0800,T1PR ;周期寄存器值800(25kHzPWM)SPLK #0,T1CNTSPLK #9040H,T1CON ;连续增计数方式,预分频为1,允许T1SPLK #9872H,T2CON ;定向增减,允许编码接口SPLK #0803BH, T2PR ;T2周期寄存器(7FFFH+60)SPLK #07FC3H, T2CMPR ;T2比较寄存器(7FFFH-60)SPLK #07FFFH, T2CNT ;编码器计数器初值;--------------------------------------开中断---------------------------------------------------------------- LDP #0E8HLACC EVAIFRA ;清事件管理器A所有中断标志SACL EVAIFRALACC EVAIFRBSACL EVAIFRBLACC EVAIFRCSACL EVAIFRCSPLK #0080H,EVAIMRA ;开T1周期中断SPLK #0003H,EVAIMRB ;开T2周期中断和比较中断SPLK #0,EVAIMRCLAR AR1,#STACK ;软堆栈指针CLRC INTM ;开中断;--------------------------------------变量初始化---------------------------------------------------------- LDP #0HLACC #0SACL CMD ;电流参考初值(通过速度环求得)SACL CMDAC ;A/C相电流参考值SACL CMDBD ;B/D相电流参考值LACC #10SACL NUM ;电流修正值LDP #0E8HLACC T1PRLDP #0SACL MAX ;MAX =T1PR,占空比=0%LACC #00SACL MIN ;MIN = 0,占空比=100%LACC MINSACL COMAC ;A/C相占空比=100%SACL COMBD ;B/D相占空比=100%LACC #0SACL CURRAC ;A/C相电流=0SACL CURRBD ;B/D相电流=0LACC GPR2 ;转向,由用户外部输入SUB #1BCND X3, EQ ;正转(CW)则跳转LACC #4 ;反转(CCW)SACL GPR0 ;当前换相是D相B XXX3 LACC #2 ;正转(CW)SACL GPR0 ;当前换相是B相XX LACC #1SACL GPR3 ;禁止换相;--------------------------------------初始化结束----------------------------------------------------------;--------------------------------------用户可添加包括转速和转向输入的应用程序------------WAIT B WAIT ;;--------------------------------------主模块结束----------------------------------------------------------;--------------------------------------假中断处理子程序-------------------------------------------------- PHANTOMCLRC INTMRET;--------------------------------------T1周期中断处理子程序-----------------------------------------T1PERIOD_ISRMAR *,AR1 ;保存现场MAR *+SST #1, *+ ;保存ST1SST #0, * ;保存ST0LDP #0E0HLACC PIVR ;清中断标志LDP #0E8HSPLK #0FFFH,EVAIFRA;--------------------------------------检测是否换相------------------------------------------------LDP #0LACC GPR3SUB #1BCND NOCOM, EQ ;不换相则跳转;--------------------------------------转向识别,调整当前换相标志-----------------------------------LACC GPR2 ;换相SUB #1BCND FORWARD, EQ ;正转则跳转REVERSE ;反转(CCW)LACC GPR0 ;调整当前换相标志SUB #1SACL GPR0BCND X1, EQ ;GPR0=0跳转B GOOUTX1 LACC #4 ;修改GPR0=4SACL GPR0B GOOUTFORWARD ;(CW)LACC GPR2 ;检查转向是否改变SUB #0BCND REVERSE, EQ ;如果转向改变则跳转LACC GPR0 ;调整当前换相标志ADD #1SACL GPR0SUB #5BCND X2, EQ ;GPR0>5跳转B GOOUTX2 LACC #1 ;修改GPR0=1SACL GPR0GOOUTLACC #1SACL GPR3 ;修改换相标志为不换相;--------------------------------------调用电流检测子程序---------------------------------------------。

相关文档
最新文档