直流电机控制实验.docx

上传人:b****5 文档编号:6372645 上传时间:2023-01-05 格式:DOCX 页数:11 大小:270.68KB
下载 相关 举报
直流电机控制实验.docx_第1页
第1页 / 共11页
直流电机控制实验.docx_第2页
第2页 / 共11页
直流电机控制实验.docx_第3页
第3页 / 共11页
直流电机控制实验.docx_第4页
第4页 / 共11页
直流电机控制实验.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

直流电机控制实验.docx

《直流电机控制实验.docx》由会员分享,可在线阅读,更多相关《直流电机控制实验.docx(11页珍藏版)》请在冰豆网上搜索。

直流电机控制实验.docx

直流电机控制实验

实验一直流、步进电机综合控制系统设计

一、实验目的

1.初步熟悉实验GPIO口的初始化设置,并熟悉实验箱各个模块的功能

2.掌握步进机的控制原理及利用延时脉冲来改变步进电机速度

3.掌握直流电机的控制原理及利用pwm占空比控制来改变速度

4.学习IIC总线读取和写数据原理,并掌握对CAT1025E2PROOM操作

方法

5.学会控制数码管的显示UART串口函数,并初步掌握中断处理函数的写法

二、实验要求

以MagicARM2410为实验平台,设计一个通过串口通信交互控制的综合型控制系统。

具体来说,可在启动时,自动列出一些选项,通过键盘选择某个选项而实现其功能;考虑到实时性,再按某个控制键能立刻停止当前功能而回到初始的待选状态。

具体功能要求如下:

1.实现四个LED灯按照十六进制的规则依次亮灭;

2.在超级终端上输入两个两位数,实现两位数的加减乘除并显示运算结果;

3.显示当前的年月日、星期、时分秒;

4.实现步进电机的调速和正反转;可用旋转按钮W1或按键控制调速,在超级终端和数码管上同步显示其正反转和转速信息;

三、实验基本原理

1.S3C2410A具有117个通用I/O口,分为A—H等8个端口,由于每个I/O口都有第2功能,甚至第3功能,所以需要通过设置GPxCON寄存器来选择GPx口I/O口功能,其中x可以为A、B、C、D、E、F、G表示相应的I/O端口。

当I/O口设置为GPIO输出模式(Output模式)时,可以通过写GPxDAT控制相应I/O口输出高电平或低电平,GPxDAT为1的位对应I/O输出高电平,为0的位对应输出低电平。

2.工程模板中包含有串口软件包UART.C,用户可以调用相应的接口函数】进行串口数据发送和接收,串口的波特率需要在config.h文件中进行设置,本实验使用默认的115200波特率。

对串口进行初始化时,首先要设置相应I/O口为TXD0,TRD0功能引脚,然后通过ULCON0来设置通讯波特率。

3.S3C2410A具有实时时钟(RTC)功能,能够提供时、分、秒,年、月、日的计时功能,还具有定时报警功能。

RTC单元采用独立的后备电池供电,独立是时钟源(采用32.768KHz晶振),即使系统关闭电源,RTC还可以正常工作。

要初始化RTC的时间值,首先要给RTCON寄存器写为0x01,使能RTC接口(即允许写RTC操作),然后对年寄存器BCDYEAR、月寄存器BCDMON、日寄存器BCDDATE、时寄存器BCDHOUR、分寄存器BCDMIN、秒寄存器BCDSEC、星期寄存器BCDDAY进行初始化,时间值为BCD格式。

初始化完成,将RTCCON寄存器写为0x00,禁能RTC接口(即禁止写RTC操作),接下来就可以直接读取RTC时间寄存器的值来使用了。

4.步进电机是一种将电脉转化为角位移的数据控制电机,即给它一个脉冲信号,它就按设定的方向转动一个固定的角度。

用户可以通过设置脉冲的个数来控制角位移量,从而实现准确的定位操作;另外,通过控制脉冲频率来控制电机转动速度和加速度,从而实现调速的目的。

当然,对于步进电机各组绕组(即内部线圈)的控制脉冲要有一定的顺序,否则电机无法正常旋转。

MagicARM2410试验箱上的步进电机为四项步进电机,电机驱动为18°。

S3C2410A的GPIO驱动能力有限,必须通过ULCN2003达林顿集成驱动芯片驱动步进电机,在步进电机和驱动电路之间连接了电阻,防止控制紊乱造成电机的损坏。

四、主要仪器设备及耗材

硬件:

PC机一台,MagicARM2410教学实验开发平台一套

软件:

Windows98/XP/2000系统,ADS1.2集成开发环境,超级终端程序,JTAG仿真器

五、实验步骤

1.安装WigglerJTAG仿真器并打开;

2.运行超级终端,新建一个连接;

3.启动ADS1.2,建立工程,在src组中的main.c中编写主程序代码;

4.选用DebugRel生成目标,编译链接工程,选择【Debug】,进行JTAG仿真;

5.按照超级终端上的提示信息操作;

6.根据实验箱及超级终端上的反馈结果调试程序。

7.主要参考程序如下

intmain(void)

{

uint8g_getch;

inti=0;

UART_Select(0);//选择UART0

UART_Init();//UART0初始化

LED_init();//LED相关初始化

EINT_init();//外部中断初始化

while

(1)

{

fun_test();

switch(g_getch=UART_GetKey())

{

case'1':

{

UART_SendByte(g_getch);

UART_SendStr("\n");

for(i=0;i<16;i++)

{

LED_DispNum(i);//以二进制形式显示十六进制

DelayNS(5);

if(i==15)

i=0;

if(UART_GetFlag()==0x1B)//检测是否按下'Esc'键

break;

}

UART_SendStr("\nTestLED_DispNumtestisOver!

\n");

break;

}

case'2':

{

UART_SendByte(g_getch);

UART_SendStr("\n");

Addsubmuldiv();//加减乘除测试模块

UART_SendStr("\nTestAddsubmuldiv_TestisOver!

\n");

break;

}

case'3':

{

UART_SendByte(g_getch);

UART_SendStr("\n");

DateWeekTime_Test();

UART_SendStr("\nTestDateWeekTime_TestisOver!

\n");

break;

}

case'4':

{

UART_SendByte(g_getch);

UART_SendStr("\n");

StepMOTO_Test();

UART_SendStr("\nTestStepMOTO_TestisOver!

\n");

break;

}

default:

break;

}

}

六、实验数据及处理结果

1、选择Debug进行JTAG仿真后进入选择操作情况界面选择1,可看到实验箱上4个LED灯按16进制数闪亮,最左边的灯为最低位,最右边的灯为最高位。

按esc键返回。

2、输入2,可观察到能实现两位数的加减乘除,按esc键返回。

其超级终端显示如下图:

减法,结果为正值

减法,结果为负值

除法

3、输入3,按提示信息,按任意键输出当前时间,超级终端显示如下图:

4、输入4,观察步进电机的转动情况,可通过旋转W1调节电机的正反转方向和转速情况。

按esc键返回。

超级终端显示如下图:

转速可调

七、实验心结

由于这是第一次自己设计程序做实验,刚开始总不知道如何下手。

之后,我们冷静分析,先用基础实验中的简单实验实现了超级终端的正确显示。

之后,又用基础实验中相关的程序,先实现了16进制的显示。

加减乘除就按照C语言编写,然后步进机通过延迟控制转速。

其实,最难的是把上面实现的各个功能输入到超级终端,通过超级终端显示。

我们通过向其他同学请教,并且自己上网查到了相关的实现程序,之后经过多次修改最终得出正确显示。

通过这第一个自己设计的实验,学到了程序的编写,跟MagicARM2410实验箱硬件的实现,受益匪浅,为以后的实验打下了基础。

八、参考资料

《S3C2410实验实验手册》

《嵌入式系统开发与实验教程》

附录:

#include"config.h"

#include"main.h"

 

//功能测试选择数组

charselect_test[][50]=

{

"\n\nPleaseinput1~4toselecttest:

\n",

"1LED_DispNume\n",

"2Addsubmuldiv_Test\n",

"3Dateweektime_Display\n",

"4StepMOTO_Test\n",

"Pleaseinputanumyouwanttotest:

",

};

voidDelayNS(uint32dly)

{

uint32i;

for(;dly>0;dly--)

for(i=0;i<50000;i++);

}

//串口接收字符临时变量

voidfun_test(void)

{

inti=0;

for(i=0;i<14;i++)

UART_SendStr(select_test[i]);

}

intmain(void)

{

uint8g_getch;

inti=0;

UART_Select(0);//选择UART0

UART_Init();//UART0初始化

LED_init();//LED相关初始化

EINT_init();//外部中断初始化

while

(1)

{

fun_test();

switch(g_getch=UART_GetKey())

{

case'1':

{

UART_SendByte(g_getch);

UART_SendStr("\n");

for(i=0;i<16;i++)

{

LED_DispNum(i);//以二进制形式显示十六进制

DelayNS(5);

if(i==15)

i=0;

if(UART_GetFlag()==0x1B)//检测是否按下'Esc'键

break;

}

UART_SendStr("\nTestLED_DispNumtestisOver!

\n");

break;

}

case'2':

{

UART_SendByte(g_getch);

UART_SendStr("\n");

Addsubmuldiv();//加减乘除测试模块

UART_SendStr("\nTestAddsubmuldiv_TestisOver!

\n");

break;

}

case'3':

{

UART_SendByte(g_getch);

UART_SendStr("\n");

DateWeekTime_Test();

UART_SendStr("\nTestDateWeekTime_TestisOver!

\n");

break;

}

case'4':

{

UART_SendByte(g_getch);

UART_SendStr("\n");

StepMOTO_Test();

UART_SendStr("\nTestStepMOTO_TestisOver!

\n");

break;

}

default:

break;

}

}

return0;

}

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

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1