历史上的今天
返回首页

历史上的今天

今天是:2024年08月28日(星期三)

正在发生

2020年08月28日 | arm实验报告——步进电机

2020-08-28 来源:elecfans

一、实验目的

1、学习步进电机驱动原理;

2、掌握通过CPU控制步进电机的方法。


二、实验内容

1、了解步进电机的运行控制;

2、了解步进电机运行速度的控制方法;

3、了解步进电机运行方向的控制方法。


三、实验设备DM2410B十实验系统;PC机;JTTAG仿真器;串口线。


2、软件:

PC机操作系统(WINDOWS 2000);

ARM Developer Suite v1.2;

MulTI-ICE V2.2.5;

DNW 2410(或超级终端)。

程序解析:

本实验系统使用5302410的工/0口的GPF的0, 4, 5, 6四个端口。对应的驱动如下:

///////////////////////////////////////////////////////////////////////////////////

// GPF4 GPF0 GPF5 GPF6

//

//A 1 0 0 0

//

//AB 1 1 0 0

//

//B 0 1 0 0

//

//BC 0 1 1 0

//C 0 0 1 0

//CD 0 0 1 1

//D 0 0 0 1

//DA 1 0 0 1

/////////////////////////////////////////////////////////////////

下面的程序段是对各步驱动的设置:

void Avoid)

{

rGPFDAT= rGPFDAT|0x10;//GPF4=1

rGPFDAT= rGPFDAT&0xfe;//GPF0=0

rGPFDAT= rGPFDAT&0xdf;//GPF5=0

rGPFDAT= rGPFDAT&0xbf;//GPF6=0

}

void B(vvid)

{

rGPFDAT=rGPFDATI0xef;//GPF4=0

rGPFDAT=rGPFDAT|0x1;//GPF0=1

rGPFDAT=rGPFDAT&0xdf;//GPF5=0

rGPFDAT=rGPFDAT&0xbf;//GPF6=0

}

void C(void)

{

rGPFDAT=rGPFDAT&0xfe;//GPF0=0

rGPFDAT=rGPFDAT&0xef;//GPF4=0

rGPFDAT=rGPFDAT|0x0;//GPF5=1

rGPFDAT=rGPFDAT&Oxbf;//GPF6=0

}

void D(void)

{

rGPFDAT=rGPFDAT&0xfe;//GPF0=0

rGPFDAT=rGPPDAT&0xef;//GPF4=0

rGPFDAT=rGPFDAT&0xdf;//GPF5=0

rGPFDAT=rGPFDAT|0x40://GPF6=1

void AB(void)

{

rGPFDAT=rGPFDATI0x10;//GPF4=1

rGPFDAT=rGPFDATI0x1;//GPF0=1

rGPFDAT=rGPPDAT&0xdf;//GPF5=0

rGPFDAT=rGPFDAT&0xbf;//GPF6=0

}

void BC(void)

{

rGPFDAT=rGPFDAT&0xef;//GPF4=0

rGPFDAT=rGPFDATI0x1;//GPF0=1

rGPFDAT=rGPFDATI0x20;//GPF5=1

rGPFDAT=rGPFDAT&Oxbf://GPF6=0

}

Void BC(void)

{

rGPFDAT=rGPFDAT&0xfe;//GPF4=0

rGPFDAT=rGPFDAT&0xef; //GPF0=1

rGPFDAT=rGPFDAT|0x20;//GPF5=1

rGPFDAT=rGPFDAT|0x40;//GPF6=0

}

void DA(void)

{

rGPFDAT=rGPFDATI0x10;//GPF4=l

rGPFDAT=rGPFDAT&0xfe;//GPF0=0

rGPFDAT=rGPFDAT&0xdf;//GPF5=1

rGPFDAT=rGPFDAT|0x40;//GPF6=l

}

下面的程序段通过调用上面的函数实现8拍的驱动:

void Moter_ Test(void)

{int z,i,j=7;

int begin,end,direction,x;//direction麦示转向左句

int time=20;1/time表示延迟时间,决定速度

Step_Ini t () ; //保护步进电机与驱动电路

//GPFOW GPF0 [1:0]二01:Output

//GPFOW GPF4 [1:0]二01:Output

// GPFOW GFF5 [1:01=01:Output

//GPFOW CPF6 [1:0]=01:Output

rGPFCON=INkrGPF07N&Oxd5fd;

rGPFCON=rGPFCGNI0x1501;

Uart Printf(“nINPUT DELAY TIME :1一1000:”

time=Uart_GetIntNum();

Uart Printf(“nINPUTDERECTION:I/0:”

direction=Uart _GetIntNum();

if (direction=1)

begin=1;

end=8;

x=1;

else

begin=8

end=1;

x=1:

Uart_ Printf(“nPRESSANY KEY功STOP.”);

wh ile(!Uart_GetKey())//被PC机上的任意键停止

{

i=begin;

while(!(i=end+x))//是否完成一个相位循环

{

Step_8(i);

Delay(time);

i=i十x;

}

Step_Init();//保护步进电机与驱动电路

Uart_ Printf(“nTEST FINISHED!!”);

}

//*********************************************

//功能:step_8

//名称:确定各拍的相位

//参数:s

//返回值:void

//**********************************************

void Step_8(int s)//4褶8者

[switch(s)

f

case(1):A(); break;

case(2):AB();break;

case(3):B(); break;

case(4):BC();break;

case(5):C(); break;

case(6):CD();break;

case(7):D(); break;

case(8):DA();break;

注意:不同于使用专用驱动芯片驱动步进电机,我们为了演示驱动步骤采用了通用驱动芯片L293D,同时驱动的CPU引脚是复用的。这样存在一个问题:当步进电机不处在驱动状态时有可能在某一个相位长时间加上驱动电流,因为步进电机没有旋转,阻抗极小,非常容易损坏驱动电路和步进电机。为此,我们在扩展板上设置了步进电机控制开关,进行其它实验时应确保开关处在。FF的位置,仅当驱动步进电机的程序运行后才可拨至ON的位置。

四、实验步骤

1、仔细阅读实验说明部分,熟悉步进电机的原理及驱动机制;

2、将实验系统光盘中“ADS实验指导步进电机驱动实验”目录拷贝到本地硬盘,用ADS组件中的CodeWarrior for ARM Developer Suite S具软件打开其中的MOTER.mcp T -程文件。用实验一中的方法选用相对地址中的:cat. scf文件;

3、在DebugRel目标路径下编译源文件。(详见实验一),分析并熟悉程序。

4、按实验二的方法正确连接硬件并打开”Multi-ICE Server“和”AXDDebugger”对CPU进行初始化,导入本地硬盘上“ADS实验指导步进电机驱动实验”中“MOTERDatalDehugRellmoter.axf“文件或光盘上的实验项目文件。(详见实验一);

5、打开DNW2410. exe并建立PC机与实验系统的连接(见实验二)。运行程序并根据DNW241D.exe串口终端提示进行操作。运行中首先输入延迟时间以决定旋转时间,然后输入数字1或0决定旋转方向。实验中的运行界面如图14-7:

arm实验报告——步进电机

五、实验心得与体会

此次实验让我了解了如何使用C语言编程驱动步进电机,。掌握通过CPU控制步进电机的方法,步进电机的运行控制,步进电机运行速度的控制方法,了解步进电机运行方向的控制方法。通过看指导书,也让我熟悉了步进电机的驱动原理,熟悉了ADS实验环境的操作流程。

推荐阅读

史海拾趣

EDO Corp公司的发展小趣事

进入1950年代,Eclipse Magnetics迎来了一次重要的创新。公司决定将磁铁涂上红色,这一独特的红色磁铁迅速在市场上获得了认可。同时,公司还设计了与红色磁铁相配的马蹄形标志,这一标志后来成为Eclipse Magnetics的国际通用标记。随着品牌的国际化,Eclipse Magnetics的产品开始进入全球市场。

Aearo Technologies公司的发展小趣事

尽管Aearo Technologies在行业中享有盛誉,但近年来也面临了一些挑战。公司生产的一款名为“Combat Arms”的军用耳塞被指存在设计缺陷和质量问题,导致部分使用者听力受损。这一事件引发了广泛的关注和诉讼。面对这一挑战,Aearo Technologies积极应对,与相关部门合作进行调查,并采取了一系列措施改进产品质量和确保用户安全。

ETC公司的发展小趣事

速通科技始终将用户体验放在首位。公司不断完善ETC系统的服务功能,提高了系统的稳定性和易用性。同时,速通科技还建立了完善的客户服务体系,为用户提供24小时不间断的在线客服支持。这些举措大大提高了用户对ETC系统的满意度和信任度。

Discrete Semiconductor Industries公司的发展小趣事

“创新动力”是Discrete Semiconductor Industries公司中一家以创新驱动发展的典范。该公司注重研发投入,积极引进和培养科技人才,建立了完善的研发体系。通过不断的技术创新和产品升级,创新动力不断推出具有市场竞争力的新产品。同时,公司还积极探索新的应用领域和市场机会,不断拓展业务范围。这种创新驱动的发展战略使得创新动力在激烈的市场竞争中保持了强劲的发展势头。

DFRobot公司的发展小趣事

DFRobot公司于2008年由叶琛创立,当时主要致力于将国外的开源硬件项目引入中国。起初,公司规模较小,团队由几位热爱机器人和开源硬件的工程师组成。他们凭借对技术的热情和不懈的努力,逐渐在电子行业崭露头角。叶琛作为公司的创始人,不仅拥有深厚的工程学背景,还具备前瞻性的商业眼光,为公司的发展奠定了坚实的基础。

DB Lectro Inc公司的发展小趣事

DB Lectro Inc公司自创立之初,就致力于气体检测技术的研发与创新。在公司总部的加利福尼亚州研发中心,一群充满激情的工程师们夜以继日地工作,成功研发出了首款高精度、高稳定性的气体检测仪器。这款产品凭借其卓越的性能和精准的检测结果,迅速在污水处理、化工等领域打开了市场。随着技术的不断进步和产品的不断升级,DB Lectro Inc逐渐在气体检测领域树立了领先地位。

问答坊 | AI 解惑

51开发板典藏版和俗人斗气儿说51

这是我自己设计的51单片机学习开发板,可以供初中级单片机爱好者学习和实验.包含了几乎所有的基本实验和常见的外围器件.有以下器件: 1.双核CPU,AT89C52和AT89C4051 2.16X2液晶显示器 3.数码管和发光二极管 4.ADC0804 5.DAC0808 6.DS18B2 ...…

查看全部问答>

“E”如反掌 奇瑞A3平稳过人

对于一款运动型家轿而言,为驾驶者提供操控乐趣,自然也和为乘车者带来舒适享受同样重要。奇瑞A3不仅采用了与AVL公司联合开发的ACTECO发动机,保证了车辆在行驶时的充沛动力,同时搭载了多项高端的智能配置,在保证行车安全的同时,也让操控变得驾 ...…

查看全部问答>

EVC编译出错,请教。

Generating Code... Linking... CVTRES : fatal error CVT1102: out of memory; 42 bytes required LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt Error executing link.exe. hello.exe - 2 error ...…

查看全部问答>

WinCE的IE浏览器支持视频吗

各位大虾好!小弟最近做一个pda开发,需要把服务器端的视音频通过gprs请求过来,然后在手机上播放,打算基于IE播放视音频,不知道WinCE的IE浏览器支不支持呢?或者有更好的办法?大家指点一下。…

查看全部问答>

SDRAM SelfRefresh 的迷惑

最近小弟在学习 SDRAM ,有些资料讲到“发出SelfRefresh命令时,将CKE置于无效状态,就进入了SR模式,此时不再依靠系统时钟工作,而是根据内部的时钟进行刷新操作。在SR期间除了CKE之外的所有外部信号都是无效的(无需外部提供刷新指令),只有重新 ...…

查看全部问答>

单片机无法对外部时钟分频

8M晶振,9分频后单片机频率还是8M同样程序换个单片机,为72M。频率由RCC_GetClocksFreq(&Clock);测得想问下什么原因,硬件原因可能性大不大?…

查看全部问答>

CAN通讯中不断配置邮箱,发送数据有没有问题?

本帖最后由 dontium 于 2015-1-23 13:34 编辑 我用的是28系列芯片,CAN通讯,发送数据很多,COB-ID也不一样,只用一个发送邮箱完成不同数据的发送,每次发送数据前,先要重新配置此邮箱的COB-ID、数据长度等,不知道这样做有没有问题? 现在我遇 ...…

查看全部问答>

FPGA波形仿真结果问题

下面的图是我写的一个程序的仿真结果,本来程序中式希望在clk的上升沿将y1的值赋值给y_out,结果却出现了图中所示的情况,很奇怪,y_out不仅不是在时钟的上升沿被赋值,而且中间还出现了很多多余的变量~~~~~~不知道有没有同仁遇到过,帮忙答疑解惑~…

查看全部问答>

如何在Q2中将IO口设置为开漏输入呢?

如题,看到Q2 中有自动编译为开漏的选项,但是不知道如何将IO设置为开漏输入,不知道是否有这一项功能呢?…

查看全部问答>

ALTERA V5开发板可用PCIe例程

供PCIe初学研究用,altera研讨会资料。…

查看全部问答>