直流电机控制实验_第1页
直流电机控制实验_第2页
直流电机控制实验_第3页
直流电机控制实验_第4页
直流电机控制实验_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验一 直流、步进电机综合控制系统设计一、 实验目的1. 初步熟悉实验GPIO口的初始化设置,并熟悉实验箱各个模块的功能2. 掌握步进机的控制原理及利用延时脉冲来改变步进电机速度3. 掌握直流电机的控制原理及利用pwm占空比控制来改变速度4. 学习IIC总线读取和写数据原理,并掌握对CAT1025 E2PROOM操作方法5. 学会控制数码管的显示UART串口函数,并初步掌握中断处理函数的写法二、 实验要求以MagicARM2410为实验平台,设计一个通过串口通信交互控制的综合型控制系统。具体来说,可在启动时,自动列出一些选项,通过键盘选择某个选项而实现其功能;考虑到实时性,再按某个控制键能立刻

2、停止当前功能而回到初始的待选状态。具体功能要求如下:1. 实现四个LED灯按照十六进制的规则依次亮灭;2. 在超级终端上输入两个两位数,实现两位数的加减乘除并显示运算结果;3. 显示当前的年月日、星期、时分秒;4. 实现步进电机的调速和正反转;可用旋转按钮W1或按键控制调速,在超级终端和数码管上同步显示其正反转和转速信息;三、 实验基本原理1. S3C 2410A具有117个通用I/O口,分为AH等8个端口,由于每个I/O口都有第2功能,甚至第3功能,所以需要通过设置GPxCON寄存器来选择GPx口I/O口功能,其中x可以为A、B、C、D、E、F、G表示相应的I/O端口。当I/O口设置为GPI

3、O输出模式(Output模式)时,可以通过写GPxDAT控制相应I/O口输出高电平或低电平,GPxDAT为1的位对应I/O输出高电平,为0的位对应输出低电平。2. 工程模板中包含有串口软件包UART.C,用户可以调用相应的接口函数】进行串口数据发送和接收,串口的波特率需要在config.h文件中进行设置,本实验使用默认的115200波特率。对串口进行初始化时,首先要设置相应I/O口为TXD0,TRD0功能引脚,然后通过ULCON0来设置通讯波特率。3. S3C2410A具有实时时钟(RTC)功能,能够提供时、分、秒,年、月、日的计时功能,还具有定时报警功能。RTC单元采用独立的后备电池供电,独

4、立是时钟源(采用32.768KHz晶振),即使系统关闭电源,RTC还可以正常工作。要初始化RTC的时间值,首先要给RTCON寄存器写为0x01,使能RTC接口(即允许写RTC操作),然后对年寄存器BCDYEAR、月寄存器BCDMON、日寄存器BCDDATE、时寄存器BCDHOUR、分寄存器BCDMIN、秒寄存器BCDSEC、星期寄存器BCDDAY进行初始化,时间值为BCD格式。初始化完成,将RTCCON寄存器写为0x00,禁能RTC接口(即禁止写RTC操作),接下来就可以直接读取RTC时间寄存器的值来使用了。4. 步进电机是一种将电脉转化为角位移的数据控制电机,即给它一个脉冲信号,它就按设定的

5、方向转动一个固定的角度。用户可以通过设置脉冲的个数来控制角位移量,从而实现准确的定位操作;另外,通过控制脉冲频率来控制电机转动速度和加速度,从而实现调速的目的。当然,对于步进电机各组绕组(即内部线圈)的控制脉冲要有一定的顺序,否则电机无法正常旋转。MagicARM2410试验箱上的步进电机为四项步进电机,电机驱动为18°。S3C2410A的GPIO驱动能力有限,必须通过ULCN2003达林顿集成驱动芯片驱动步进电机,在步进电机和驱动电路之间连接了电阻,防止控制紊乱造成电机的损坏。四、 主要仪器设备及耗材 硬件:PC机一台, MagicARM2410教学实验开发平台 一套 软件:Win

6、dows98/XP/2000系统,ADS 1.2集成开发环境,超级终端程序,JTAG仿真器五、 实验步骤1. 安装Wiggler JTAG仿真器并打开;2. 运行超级终端,新建一个连接;3. 启动ADS 1.2,建立工程,在src组中的main.c中编写主程序代码;4. 选用DebugRel生成目标,编译链接工程,选择【Debug】,进行JTAG仿真;5. 按照超级终端上的提示信息操作;6. 根据实验箱及超级终端上的反馈结果调试程序。7. 主要参考程序如下int main(void)uint8 g_getch ;int i = 0;UART_Select(0); /选择UART0UART_In

7、it(); /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

8、9;键break;UART_SendStr("nTest LED_DispNum test is Over!n");break;case '2':UART_SendByte(g_getch);UART_SendStr("n"); Addsubmuldiv(); /加减乘除测试模块 UART_SendStr("nTest Addsubmuldiv_Test is Over!n");break;case '3':UART_SendByte(g_getch);UART_SendStr("n"

9、;); DateWeekTime_Test();UART_SendStr("nTest DateWeekTime_Test is Over!n"); break;case '4':UART_SendByte(g_getch);UART_SendStr("n");StepMOTO_Test();UART_SendStr("nTest StepMOTO_Test is Over!n");break;default: break;六、 实验数据及处理结果1、 选择Debug进行JTAG仿真后进入选择操作情况界面选择1,可看到

10、实验箱上4个LED灯按16进制数闪亮,最左边的灯为最低位,最右边的灯为最高位。按esc键返回。2、 输入2,可观察到能实现两位数的加减乘除,按esc键返回。其超级终端显示如下图:加法减法,结果为正值减法,结果为负值除法乘法3、 输入3,按提示信息,按任意键输出当前时间,超级终端显示如下图:4、 输入4,观察步进电机的转动情况,可通过旋转W1调节电机的正反转方向和转速情况。按esc键返回。超级终端显示如下图:转速可调七、 实验心结 由于这是第一次自己设计程序做实验,刚开始总不知道如何下手。之后,我们冷静分析,先用基础实验中的简单实验实现了超级终端的正确显示。之后,又用基础实验中相关的程序,先实现

11、了16进制的显示。加减乘除就按照C语言编写,然后步进机通过延迟控制转速。其实,最难的是把上面实现的各个功能输入到超级终端,通过超级终端显示。我们通过向其他同学请教,并且自己上网查到了相关的实现程序,之后经过多次修改最终得出正确显示。 通过这第一个自己设计的实验,学到了程序的编写,跟MagicARM2410实验箱硬件的实现,受益匪浅,为以后的实验打下了基础。八、参考资料S3C2410实验实验手册嵌入式系统开发与实验教程附录:#include "config.h"#include "main.h"/功能测试选择数组char select_test50 =&q

12、uot;nn Please input 14 to select test:n","1 LED_DispNumen","2 Addsubmuldiv_Testn","3 Dateweektime_Displayn","4 StepMOTO_Testn","Please input a num you want to test:",;void DelayNS(uint32 dly) uint32 i;for(; dly>0; dly-) for(i=0; i<50000; i

13、+);/ 串口接收字符临时变量void fun_test(void)int i = 0;for(i = 0; i < 14; i+)UART_SendStr(select_testi);int main(void)uint8 g_getch ;int i = 0;UART_Select(0); /选择UART0UART_Init(); /UART0初始化LED_init(); /LED相关初始化EINT_init(); /外部中断初始化while(1)fun_test();switch(g_getch = UART_GetKey()case '1':UART_SendBy

14、te(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("nTest LED_DispNum test is Over!n");break;case '2':UART_SendByte(g_getch);UART_SendStr("n"); Addsubmuldiv(); /加减乘除测试模块 UART_SendStr("nTest Addsubmuldiv_Test is Over!n");break;case '3':UART_SendByte(g_getch);UART_SendStr("n"); DateWeekTime_Test();UART_S

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论