步进电机实训报告Word文件下载.docx
《步进电机实训报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《步进电机实训报告Word文件下载.docx(11页珍藏版)》请在冰豆网上搜索。
连续输入一定频率的脉冲时,电动机的转速与输入脉冲的频率保持严格的对应关系,不受电压波动和负载变化的影响。
由于步进电动机能直接接收数字量的输入,所以特别适合于微机控制。
此实训中用到的其他知识如下:
常用的步进电机
❑反应式步进电动机(VR):
结构简单,生产成本低,步距角可以做的相当小,但动态性能相对较差。
❑永磁式步进电动机(PM):
出力大,动态性能好;
但步距角一般比较大。
❑混合步进电动机(HB):
综合了反映式和永磁式两者的优点,步距角小,出力大,动态性能好,是性能较好的一类步进电动机。
半步模式
脉冲信号图:
脉冲分配信号:
整步模式
步进电机驱动电路:
2、嵌入式GUI
图形用户系统是由显示模型接口程序、窗口模型接口程序和用户模型接口程序共同组成的。
3、触摸屏
触摸屏相关寄存器初始化;
voidTouch_Init(void)
{
rADCDLY=(50000);
//ADCStartorIntervalDelayrADCTSC=(0<
<
8)|(1<
7)|(1<
6)|(0<
5)|(1<
4)|(0<
3)|(0<
2)|(3);
//tarkDown,YM:
GND,YP:
AIN5,XM:
Hi-z,XP:
AIN7,XPpullup
//En,Normal,Waiting
//设置成为等待中断模式,disableint
rADCCON=(1<
14)|(39<
2)|(0<
1)|(0);
}
触摸屏控制器初始化,及其中断初始化
Touch_Init(),TouchINT_Init()
中断服务程序
Touch_ISR
坐标转换为像素坐标,保存状态坐标,(窗体事件调用处理)
GUI_TOUCH_Exec()
五、实训流程
显示界面
主要程序的流程图
六、实训步骤
(一)先选择一张图片作为界面的背景,然后利用画图软件使其转化为“.C”文件,并添加到此项目的文件夹中;
(二)在背景图片上添加功能按钮,共有六个,分别开始、停止、正转、反转、加速、减速;
(三)编写界面上的显示姓名、学号
(四)分别编写能够控制步进电机正转、反转、加速、减速四个功能的代码;
(五)调试运行。
七、实训主要程序
#include"
gui.h"
#include"
FRAMEWIN.h"
button"
teeth"
//头文件
externGUI_CONST_STORAGEGUI_BITMAPbm789;
//图片
intfan=0;
//定义变量
#defineGUI_ID_OK10x801
#defineGUI_ID_OK20x802
#defineGUI_ID_OK30x803
#defineGUI_ID_OK40x804
#defineGUI_ID_OK50x805
unsignedchartab[]={0x05,0x09,0x0a,0x06};
//正转脉冲
unsignedchartab1[]={0x06,0x0a,0x09,0x05};
//反转脉冲
unsignedcharrow=0;
void_cbControl(WM_MESSAGE*pMsg)
{
intNCode,Id;
switch(pMsg->
MsgId)
{
caseWM_NOTIFY_PARENT:
Id=WM_GetId(pMsg->
hWinSrc);
NCode=pMsg->
Data.v;
switch(NCode)
{
caseWM_NOTIFICATION_RELEASED:
if(Id==GUI_ID_OK)
{
fan=0;
//GUI_DEBUG_LOG("
开始\n"
);
//测试
}
if(Id==GUI_ID_OK1)
fan=1;
停止\n"
if(Id==GUI_ID_OK2)
fan=2;
正转\n"
}
if(Id==GUI_ID_OK3)
fan=3;
反转\n"
}
if(Id==GUI_ID_OK4)
fan=4;
加速\n"
}
if(Id==GUI_ID_OK5)
fan=5;
减速\n"
break;
}
break;
}
WM_DefaultProc(pMsg);
}
voiddelay(intt)
inti,j;
for(i=t;
i>
0;
i--)
for(j=100000;
j>
j--);
voidMain(void*pdata)
chark;
WM_HWINhf;
BUTTON_Handlehb,hb1,hb2,hb3,hb4,hb5,hb6;
//定义
TEXT_Handlehb0;
Target_Init();
GUI_Init();
//驱动初始化
GUI_DrawBitmap(&
bm789,0,0);
//画图
hf=WM_CreateWindowAsChild(0,0,640,480,WM_HBKWIN,WM_CF_SHOW,&
_cbControl,0);
//(intx0,inty0,intxsize,intysize,WM_HWINhParent,intId,intFlags,constchar*s,intAlign);
hb0=TEXT_CreateAsChild(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,
TEXT_SetText(hb0,"
远程控制电机"
TEXT_SetFont(hb0,&
GUI_FontHZ_Song_16);
TEXT_SetTextColor(hb0,GUI_YELLOW);
TEXT_SetText(hb1,"
35011203刘娜35011109李佳"
TEXT_SetFont(hb1,&
TEXT_SetTextColor(hb1,GUI_YELLOW);
hb=BUTTON_CreateAsChild(240,200,80,30,hf,GUI_ID_OK,WM_CF_SHOW);
BUTTON_SetFont(hb,&
BUTTON_SetText(hb,"
开始"
hb1=BUTTON_CreateAsChild(340,200,80,30,hf,GUI_ID_OK1,WM_CF_SHOW);
BUTTON_SetFont(hb1,&
BUTTON_SetText(hb1,"
停止"
hb2=BUTTON_CreateAsChild(290,250,80,30,hf,GUI_ID_OK1,WM_CF_SHOW);
BUTTON_SetFont(hb2,&
BUTTON_SetText(hb2,"
正转"
hb3=BUTTON_CreateAsChild(290,300,80,30,hf,GUI_ID_OK1,WM_CF_SHOW);
BUTTON_SetFont(hb3,&
BUTTON_SetText(hb3,"
反转"
hb4=BUTTON_CreateAsChild(290,350,80,30,hf,GUI_ID_OK1,WM_CF_SHOW);
BUTTON_SetFont(hb4,&
BUTTON_SetText(hb4,"
加速"
hb5=BUTTON_CreateAsChild(290,400,80,30,hf,GUI_ID_OK1,WM_CF_SHOW);
BUTTON_SetFont(hb5,&
BUTTON_SetText(hb5,"
减速"
while
(1)
{
switch(fan)
case0:
//开始设置为正转
if(row==4)row=0;
(*(volatileunsignedchar*)0x28000006)=tab[row++];
if(row==4)row=0;
delay(10);
break;
case1:
//停止
break;
case2:
//正转
case3:
//反转
if(row==4)row=0;
(*(volatileunsignedchar*)0x28000006)=tab1[row++];
if(row==4)row=0;
case4:
//正转减速
delay(30);
case5:
//反转加速
delay(7);
default:
break;
}
GUI_Exec();
八、调试过程
1、delay(m)中m太小,延迟时间不够,导致步进电机运行时不确定,有时很慢,有时很快眼睛看不清楚;
2、调试时出现许多错误,原因是引用的头文件没加;
3、有时候忘记定义变量,编译时也会出现错误;
4、BUTTON_SetFont(hb1,&
字体不对应的错误
九、实训小结
通过这一周的实训,给我感觉很充实,学到了比平时更多的东西,也觉得时间过的太快了,一下就过去,回顾这一周,给我很大的启发。
我们本来是要做贪吃蛇这个小游戏的,从网上找了许多的资料,也分析了贪吃蛇这个游戏的运行过程,可惜不会将代码转化成ARM环境能够运行的代码,所以就改做控制步进电机的实验了。
做完步进电机这个实训任务,使我对课本上关于步进电机的结构的知识有了更加深刻的理解,而且对其用法掌握得更加熟练。
在实训的过程中,不断地发现问题,并想办法解决,因此提高了我自己解决问题的能力。
在编写程序方面,我对ARM编程结构和技巧也有了深刻的理解和领会。
还有让我明白了流程图的重要性,以前在编程的时候,我一般不写流程图,直接开始写程序,这样出现了不该出现的问题。
但这次实训过程中,根据老师的提示我试着先画出流程图然后按照流程图编写程序,结果错误少了很多,即使有错误只要根据流程图一查就知道错在哪里,这让我节省了大量的时间和精力。
所以我认识到,以后要编写程序时,先写流程图是很有必要的。
不仅节约时间,而且能够使代码的结构很清晰。
总体来说我感觉这一周的时训我收获很多,以前在调试代码
时一出现错误就很烦躁,,有时候被些问题困惑了很久,后来老
师叫我们如何改错,我才恍然大悟,原来只要换个方式思考问题就能想到很好的方法,并且在改错中学到了许多。
非常感谢老师的帮助。