黄静怡
基于DSP的电机控制
前言
随着科学技术的飞速发展,人们对控制模型、控制算法要求越来越高,传统意义上的处理器很难满足发展的需求,而数字信号处理器DSP经历了20多年的发展与普及,应用领域几乎涵盖了所有的行业:通信、信息处理、自动控制、雷达、航空航天、医疗、日常消费品等。德州仪器(TI)占据了整个DSP市场的50%左右,很多高校、研究所、公司大量采用TI的方案与芯片进行开发与研究。
为了更好地配合学校的理论教学,达到理论与实践完美的结合,合众达公司总结了10多年在DSP领域中的开发与应用经验,推出了双DSP教学系统SEED-DTK教学实验箱系列产品。它设计新颖、独特,为师生提供了一个完整的教学实验平台,为学生加速学习与系统掌握DSP的开发与应用提供了强有力的手段。SEED-DTK教学实验箱采用模块化设计理念,涵盖了TI所有的主流DSP系列:C2000、C3X、C5000和C6000系列。其中SEED-DTK实验箱中的主控板SEED-DECxxxx采用统一的系统结构、模块结构、机械结构和标准的总线接口以及相同的物理尺寸,实验箱上的主控板可以替换为不同系列SEED-DECxxxx,
英语四级准考证打印入口官网以适应不同院系在同一实验箱上开展不同的实验内容,大大节省了校方的设备经费。本次课题正是基于合众达公司的一整套设备得以完成。
bbkxw net>netlink一、实验目标
新建一个工程,编写相应的程序,以实现如下功能:通过串口调试助手向DSP发送相应的指令,实现对直流电机和步进电机不同运动状态的控制,并在CCS中显示相应的运行状态,同时发送给上位机。
niece
二、 实验前准备及操作步骤
1. 将DSP仿真器与计算机连接好;
2. 将DSP仿真器的JTAG插头与SEED-DEC6437单元的J9flagship相连接;
3. 打开SEED-DTK6437的电源。观察SEED-DTK_Mboard单元的+5V、+3.3V、+15V、-15V的电源指示灯以及SEED-DEC6437单元电源指示灯D4是否均亮;若有不亮的,断开电源,检查电源。
4. 用串口线将SEED-DEC6437 的J13 与PC 机相连。
三、实验的关键
丹顶鹤的英文
十天突破雅思写作该实验的核心在于,由于该实验要求当串口软件向DSP发送数据之后,实验箱上的直流电机和步进电机要按所接收的数据的不同,显示出不同的运行状态,所以在程序中需要将DSP接收的串口发送的数据所存放的变量与控制电机运行模式的变量对应统一,这样才能够实现由串口来控制电机运行模式的功能。
四、实验具体内容
对于本实验,我们小组讨论后认为,要实现实验目标,首先要明确整个程序的组成部分。我们的程序主要包括三部分:步进电机控制部分,直流电机控制部分以及串口通信部分。编程所需要解决的关键问题是将DSP接收的串口发送的数据所存放的变量与控制电机运行模式的变量对应统一,这样才能达到实验目标所要求的串口指令控制电机。
根据讨论确定的程序主要组成部分,我们确定了编程所需的宏定义,包括控制步进电机、直流电机所需的各项宏定义,具体如下:
#define ce *( volatile Uint8* )0x44000002
#define DEC6437_CNTL *( volatile Uint8* )0x44000001
#define DEC6437_DTK_BASE 0x46000000
#define DEC6437_DTK_ENABLE 0x0A>>1 //DTK写使能位
#define DEC6437_DTK_STEP 2 //步进电机地址
#define DEC6437_DTK_TRF 2>>1 //交通灯地址
#define DEC6437_DTK_DC 4 //直流电机地址
#define DCMTRRUN 0xAA28//直流电机运行
#define DCMTRBRK 0xAA39//直流电机刹车
#define DCMTRRVS 0xAA3B//直流电机反向
#define MTRCONFIG 0xAA3C//电机设置
#define FULLSTEP 0x0 //步进电机全步
#define HALFSTEP 0x1 //步进电机半步
#define CLOCKWISE 0x0 //电机正向
#define ANTICLOCKWISE 0x1 //电机反向
#define ROTATE 0x0 //旋转
#define LOCATE 0x1 //定位
/*电机运行方式*/
#define STPMTRHALT 0xAA24 //步进电机停止
#define STPMTRRUN 0xAA25 //步进电机运行
#define STPMTRRVS 0xAA26 //步进电机反向
同时,要实现程序的整体功能,需包含如下头文件:
#include "stdio.h"
#include "evmdm6437.h"
手机英语词典#include "evmdm6437_uart.h"
由于我们需要在程序中要将DSP所接收的数据所存放的变量与控制相应电机运行模式的变量相统一,针对实验所要控制的两个电机,设置如下测试变量:
Uint32 TestCommand=0,TestCommand1=0; //测试命令变量
TestCommand表示步进电机,TestCommand1表示直流电机,根据命令变量的不同指令值确定相应电机的运行状态。
此外,我们还需要先定义一个函数如下:
void DEC6437_DTK_rt(Int8 regnum, Uint8 regval)
{
enthusiastically Uint8 *pdata;
/* Write lower 16 bits of register */
pdata = (Uint8 *)(DEC6437_DTK_BASE + regnum);
*pdata = (regval & 0xFFFF);