步进电机实训报告.docx

上传人:小飞机 文档编号:3603743 上传时间:2023-03-14 格式:DOCX 页数:10 大小:40.79KB
返回 下载 相关 举报
步进电机实训报告.docx_第1页
第1页 / 共10页
步进电机实训报告.docx_第2页
第2页 / 共10页
步进电机实训报告.docx_第3页
第3页 / 共10页
步进电机实训报告.docx_第4页
第4页 / 共10页
步进电机实训报告.docx_第5页
第5页 / 共10页
亲,该文档总共10页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《步进电机实训报告.docx》由会员分享,可在线阅读,更多相关《步进电机实训报告.docx(10页珍藏版)》请在三一办公上搜索。

1、步进电机实训报告ARM实训 报告 淮安信息职业技术学院(计算机与通信工程学院) 步进电机实训报告 一、 实训目的 1、了解步进电机的结果以及工作原理 2、掌握步进电机控制系统的设计方法及其调试方法 二、 实训设备 1、硬件:教学实验箱,pc机 2、软件:pc机操作系统Windows XP,ADT IDE集成开发环境 三、 实验内容 1、编写程序实现对步进电机的驱动 2、编写程序实现对步进电机的速度调整 四、 实训原理 1、 步进电机 步进电机是将电脉冲信号转换成角位移或线位移的开环控件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个

2、脉冲信号,电机就转过一个步距角。这一线性关系的存在,加上步进电机只有周期性的误差而无累积误差等特点,使得在速度、位置等控制领域使用步进电机来控制变得非常简单。 步进电机是一种能够将电脉冲信号转换成角位移或线位移的机电元件,它实际上是一种单相或多相同步电动机。单相步进电动机有单路电脉冲驱动,输出功率一般很小,其用途为微小功率驱动。多相步进电动机有多相方波脉冲驱动,用途很广。使用多相步进电动机时,单路电脉冲信号可先通过脉冲分配器转换为多相脉冲信号,在经功率放大后分别送入步进电动机各相绕组。每输入一个脉冲到脉冲分配器,电动机各相的通电状态就发生变化,转子会转过一定的角度。正常情况下,步进电机转过的总

3、角度和输入的脉冲数成正比;连续输入一定频率的脉冲时,电动机的转速与输入脉冲的频率保持严格的对应关系,不受电压波动和负载变化的影响。由于步进电动机能直接接收数字量的输入,所以特别适合于微机控制。此实训中用到的其他知识如下: 常用的步进电机 q 反应式步进电动机:结构简单,生产成本低,步 距角可以做的相当小,但动态性能相对较差。 q 永磁式步进电动机:出力大,动态性能好;但步距角一般比较大。 q 混合步进电动机:综合了反映式和永磁式两者的 优点,步距角小,出力大,动态性能好,是性能较好的一类步进电动机。 半步模式 脉冲信号图: 脉冲分配信号: 整步模式 脉冲信号图: 脉冲分配信号: 步进电机驱动电

4、路: 2、嵌入式GUI 图形用户系统是由显示模型接口程序、窗口模型接口程序和用户模型接口程序共同组成的。 3、触摸屏 触摸屏相关寄存器初始化; void Touch_Init(void) rADCDLY = (50000); / ADC Start or Interval Delay rADCTSC=(08)|(17)|(16)|(05)|(14)|(03)|(02)|(3); /tark Down,YM:GND,YP:AIN5,XM:Hi-z,XP:AIN7,XP pullup / En,Normal,Waiting /设置成为等待中断模式,disable int rADCCON = (11

5、4)|(396)|(03)|(02)|(0MsgId) case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg-hWinSrc); NCode = pMsg-Data.v; switch (NCode) case WM_NOTIFICATION_RELEASED: if(Id = GUI_ID_OK) fan=0; /GUI_DEBUG_LOG(开始n);/测试 if(Id = GUI_ID_OK1) fan=1; /GUI_DEBUG_LOG(停止n); if(Id = GUI_ID_OK2) fan=2; /GUI_DEBUG_LOG(正转n); if(Id =

6、 GUI_ID_OK3) fan=3; /GUI_DEBUG_LOG(反转n); if(Id = GUI_ID_OK4) fan=4; /GUI_DEBUG_LOG(加速n); if(Id = GUI_ID_OK5) fan=5; /GUI_DEBUG_LOG(减速n); break; break; WM_DefaultProc(pMsg); void delay(int t) int i,j; for(i=t;i0;i-) for(j=100000;j0;j-); void Main(void *pdata) char k; WM_HWIN hf; BUTTON_Handle hb,hb1,

7、hb2,hb3,hb4,hb5,hb6;/定义 TEXT_Handle hb0; Target_Init; GUI_Init;/驱动初始化 GUI_DrawBitmap(&bm789,0,0);/画图 hf=WM_CreateWindowAsChild(0,0,640,480,WM_HBKWIN,WM_CF_SHOW,&_cbControl,0); /(int x0, int y0, int xsize, int ysize, WM_HWIN hParent, int Id, int Flags, const char * s, int Align); hb0=TEXT_CreateAsChi

8、ld(0,10,640,30,hf,GUI_ID_OK, WM_CF_SHOW,0,TEXT_CF_HCENTER); hb1= TEXT_CreateAsChild(0,40,640,60,hf,GUI_ID_OK, WM_CF_SHOW,0,TEXT_CF_HCENTER); TEXT_SetText(hb0, 远程控制电机 ); TEXT_SetFont(hb0,&GUI_FontHZ_Song_16); TEXT_SetTextColor(hb0,GUI_YELLOW); TEXT_SetText(hb1, 35011203 刘娜 35011109 李佳); TEXT_SetFont(

9、hb1,&GUI_FontHZ_Song_16); TEXT_SetTextColor(hb1,GUI_YELLOW); hb= BUTTON_CreateAsChild(240,200,80,30,hf,GUI_ID_OK,WM_CF_SHOW); BUTTON_SetFont (hb,&GUI_FontHZ_Song_16); BUTTON_SetText(hb,开 始); hb1= BUTTON_CreateAsChild (340, 200, 80, 30, hf, GUI_ID_OK1, WM_CF_SHOW); BUTTON_SetFont(hb1,&GUI_FontHZ_Song

10、_16); BUTTON_SetText(hb1,停 止); hb2= BUTTON_CreateAsChild(290,250,80,30,hf,GUI_ID_OK1,WM_CF_SHOW); BUTTON_SetFont(hb2,&GUI_FontHZ_Song_16); BUTTON_SetText(hb2,正 转); hb3= BUTTON_CreateAsChild(290,300,80, 30,hf,GUI_ID_OK1,WM_CF_SHOW); BUTTON_SetFont(hb3,&GUI_FontHZ_Song_16); BUTTON_SetText(hb3,反 转); hb

11、4= BUTTON_CreateAsChild(290,350,80,30,hf,GUI_ID_OK1,WM_CF_SHOW); BUTTON_SetFont(hb4,&GUI_FontHZ_Song_16); BUTTON_SetText(hb4,加 速); hb5= BUTTON_CreateAsChild(290,400,80,30,hf,GUI_ID_OK1,WM_CF_SHOW); BUTTON_SetFont(hb5,&GUI_FontHZ_Song_16); BUTTON_SetText(hb5,减 速); while(1) switch(fan) case 0:/开始 设置为正

12、转 if(row=4) row=0; (*(volatile unsigned char *)0x28000006)=tabrow+; if(row=4) row=0; delay(10);break; case 1:/停止 break; case 2:/正转 if(row=4) row=0; (*(volatile unsigned char *)0x28000006)=tabrow+; if(row=4) row=0; delay(10);break; case 3: /反转 if(row=4)row=0; (*(volatile unsigned char *)0x28000006)=t

13、ab1row+; if(row=4)row=0; delay(10);break; case 4:/正转减速 if(row=4) row=0; (*(volatile unsigned char *)0x28000006)=tabrow+; if(row=4) row=0; delay(30);break; case 5:/反转加速 if(row=4)row=0; (*(volatile unsigned char *)0x28000006)=tab1row+; if(row=4)row=0; delay(7);break; default: break; GUI_Exec; 八、调试过程 1

14、、delay(m)中m太小,延迟时间不够,导致步进电机运行时不确定,有时很慢,有时很快眼睛看不清楚; 2、调试时出现许多错误,原因是引用的头文件没加; 3、有时候忘记定义变量,编译时也会出现错误; 4、BUTTON_SetFont(hb1,&GUI_FontHZ_Song_16);字体不对应的错误 九、实训小结 通过这一周的实训,给我感觉很充实,学到了比平时更多的东西,也觉得时间过的太快了,一下就过去,回顾这一周,给我很大的启发。 我们本来是要做贪吃蛇这个小游戏的,从网上找了许多的资料,也分析了贪吃蛇这个游戏的运行过程,可惜不会将代码转化成ARM环境能够运行的代码,所以就改做控制步进电机的实验

15、了。做完步进电机这个实训任务,使我对课本上关于步进电机的结构的知识有了更加深刻的理解,而且对其用法掌握得更加熟练。在实训的过程中,不断地发现问题,并想办法解决,因此提高了我自己解决问题的能力。在编写程序方面,我对ARM编程结构和技巧也有了深刻的理解和领会。还有让我明白了流程图的重要性,以前在编程的时候,我一般不写流程图,直接开始写程序,这样出现了不该出现的问题。但这次实训过程中,根据老师的提示我试着先画出流程图然后按照流程图编写程序,结果错误少了很多,即使有错误只要根据流程图一查就知道错在哪里,这让我节省了大量的时间和精力。所以我认识到,以后要编写程序时,先写流程图是很有必要的。不仅节约时间,而且能够使代码的结构很清晰。 总体来说我感觉这一周的时训我收获很多,以前在调试代码 时一出现错误就很烦躁,有时候被些问题困惑了很久,后来老 师叫我们如何改错,我才恍然大悟,原来只要换个方式思考问题就能想到很好的方法,并且在改错中学到了许多。非常感谢老师的帮助。

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号