实验一直流步进电机综合控制系统设计文档格式.docx
《实验一直流步进电机综合控制系统设计文档格式.docx》由会员分享,可在线阅读,更多相关《实验一直流步进电机综合控制系统设计文档格式.docx(17页珍藏版)》请在冰豆网上搜索。
二、实验基本原理
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来设置通讯波特率。
设置UCON0寄存器时,要设置串口工作模式为查询模式,即UCON[3:
0]应为0101b。
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达林顿集成驱动芯片驱动步进电机,在步进电机和驱动电路之间连接了电阻,防止控制紊乱造成电机的损坏。
5、S3C2410A具有一个硬件I/O接口,可以配置为主发送、主接收、从发送和从接收等4种工作模式。
I/O接口包含4个寄存器,控制寄存器IICCON用于设置IIC总线时钟和中断(标志)使能,还有一位中断标志位;
状态寄存器IICSTAT除了指示当前IIC总线状态外,还有2位IIC操作模式控制位和总线启动/结束控制位;
数据寄存器IICDS用来发送数据或接收数据;
从机地址寄存器IICADD用来保存S3C2410A作从机时的器件地址。
对IIC接口进行初始化时,首先要设置相应的I/O为IICSDA、IICSCL功能引脚,然后通过对IICCON寄存器来设置IIC总线时钟,并使能IIC中断(标志),通过IICSTAT寄存器来设置IIC接口为主发送模式。
6、外部中断:
设置GPF4引脚为外部中断EINT4功能,下降沿触发方式。
初始化S3C2410A中断控制器,设置EINT4为IRQ中断,并使能中断允许。
初始化完成后,等待外部中断产生。
7、设计过程
本实验为多个实验的综合,可先编辑好各个函数后,在主函数中用switch分为8种情况,分别调用实验要求的8种功能函数。
实现四个LED灯按照十六进制的规则依次亮灭,主要是在各LED灯按16进制在其相应GPxDAT上写1或0。
编写加减乘除函数时因为数据在超级终端上是一位一位发送的,所以要考虑到各种结果的最大可能位数,运算时将接收到的ASCⅡ码转化为相应数字进行运算,发送结果时将各位数对应的ASCⅡ码,从最高位到最低位逐位发送出来,在超级终端上显示的就是其操作结果。
显示当前系统时间值可调用实验教材2.16RTC实验SendRTC工程中的函数实现。
步进电机靠延时来控制其转速,本实验用旋转按钮W1来调速,这是通过A/D转换实现的,将W1旋转一周分为10个档,进行A/D转换后为0~1024中的一个数,再除以10,分为10个档。
W1从最左边旋转至中间位置时,电机反转,并且电机转速不断减小。
中间位置,电机停止转动。
从中间位置旋转至最右边时,电机正转,并且速度不断增大。
三、主要仪器设备及耗材
1、硬件:
PC机一台,MagicARM2410教学实验开发平台一套
2、软件:
Windows98/XP/2000系统,ADS1.2集成开发环境
四、实验步骤
1、安装WigglerJTAG仿真器并打开;
2、运行超级终端,新建一个连接;
3、启动ADS1.2,建立工程,在src组中的main.c中编写主程序代码;
4、选用DebugRel生成目标,编译链接工程,选择【Debug】,进行JTAG仿真;
5、按照超级终端上的提示信息操作;
6、根据实验箱及超级终端上的反馈结果调试程序。
五、实验主程序
/****************************************Copyright(c)**************************************************
**
**
**--------------
**:
main.c
**LastmodifiedDate:
2014-0415
**LastVersion:
v1.0
**Description:
**------------------------------------------------------------------------------------------------------
**CreatedBy:
廖丽
**Createddate:
2014-04-115
**Version:
v1.0
**Descriptions:
1LED_DispAllOn
2LED_DispAllOff
3LED_OnebyOne
4LED_DispNume
5Addsubmuldiv_Test
6Dateweektime_Display
7StepMOTO_Test
8EXIT_AllTest
**Modifiedby:
**Modifieddate:
********************************************************************************************************/
#include"
config.h"
main.h"
//功能测试选择数组
charselect_test[][50]=
{
"
\n\nPleaseinput1~10toselecttest:
\n"
1LED_DispAllOn\n"
2LED_DispAllOff\n"
3LED_OnebyOne\n"
4LED_DispNume\n"
5Addsubmuldiv_Test\n"
6Dateweektime_Display\n"
7StepMOTO_Test\n"
8EXIT_AllTest\n"
Pleaseinputanumyouwanttotest:
"
};
/*********************************************************************************************************
**Functionname:
DelayNS
长软件延时。
**延时时间与系统时钟有关。
**Input:
dly延时参数,值越大,延时越久
**Output:
无
**Createdby:
**CreatedDate:
2014-04-15
**-------------------------------------------------------------------------------------------------------
**ModifiedDate:
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;
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("
);
LED_DispAllOn();
//LED灯全亮
DelayNS(10);
\nTestLED_DispAllOnisOver!
bre