直流电机控制实验.docx
- 文档编号:23498178
- 上传时间:2023-05-17
- 格式:DOCX
- 页数:13
- 大小:258.01KB
直流电机控制实验.docx
《直流电机控制实验.docx》由会员分享,可在线阅读,更多相关《直流电机控制实验.docx(13页珍藏版)》请在冰豆网上搜索。
直流电机控制实验
实验一直流、步进电机综合控制系统设计
一、实验目的
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;
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 直流电机 控制 实验
![提示](https://static.bdocx.com/images/bang_tan.gif)