1、自动控制系统实验报告自动控制系统实验报告学号: 班级: 姓名:老师:1运动控制系统实验实验一.硬件电路的熟悉和控制原理复习巩固实验目的:综合了解运动控制实验仪器机械结构、各部分硬件电路以及控制原理,复习巩固以前课堂知识,为下阶段实习打好基础。实验内容:了解运动控制实验仪的几个基本电路:单片机控制电路(键盘显示电路最小应用系统、步进电机控制电路、光槽位置检测电路)ISA运动接口卡原理(搞清楚译码电路原理和ISA总线原理)步进电机驱动检测电路原理(高低压恒流斩波驱动电路原理、光槽位置检测电路)两轴运动十字工作台结构步进电机驱动技术(掌握步进电机三相六拍、三相三拍驱动方法。)微机接口技术、单片机原理
2、及接口技术,数控轮廓插补原理,计算机高级语言硬件编程等知识。实验结果:步进电机驱动技术:控制信号接口:(1)PUL:单脉冲控制方式时为脉冲控制信号,每当脉冲由低变高是电机走一步;双脉冲控制方式时为正转脉冲信号。(2)DIR:单脉冲控制方式时为方向控制信号,用于改变电机转向;双脉冲控制方式时为反转脉冲信号。(3)OPTO:为PUL、DIR、ENA 的共阳极端口。(4)ENA:使能/禁止信号,高电平使能,低电平时驱动器不能工作,电机处于自由状态。电流设定:(1)工作电流设定:(2)静止电流设定:静态电流可用SW4 拨码开关设定,off 表示静态电流设为动态电流的一半,on 表示静态电流与动态电流相
3、同。一般用途中应将SW4 设成off,使得电机和驱动器的发热减少,可靠性提高。脉冲串停止后约0.4 秒左右电流自动减至一半左右(实际值的60),发热量理论上减至36。(3)细分设定:(4)步进电机的转速与脉冲频率的关系电机转速v = 脉冲频率P * 电机固有步进角e / (360 * 细分数m)逐点比较法的直线插补和圆弧插补:1直线插补原理:如图所示的平面斜线AB,以斜线起点A的坐标为x0,y0,斜线AB的终点坐标为(xe,ye),则此直线方程为: 取判别函数F(YY0)(XeXo)(X-X0)(YeY0) 用逐点比较法加工时,每一次只在一个坐标方向给出一个脉冲,使运动件在该坐标方向上进给一步
4、,因此刀具的运动轨迹是折线,而不是斜线AB。折线拐点M与斜线AB之间的位置关系有如下三种情况:1)M点在AB线的上方判别函数F0;2)M点在AB线上,F=03)M点在AB线的下方,F000Ye-Y0000R,Ii2+Ji2R22) Mi在圆弧上,则0Mi=R,Ii2+Ji2=R23) Mi在圆弧内侧,0MiR,Ii2+Ji2R2 在第一象陨顺时针加工圆弧(顺圆弧)和第二、三、四象限加工顺圆弧和逆圆弧时,判别式都不相同。带符号运算时,无论在哪个象限工作,顺圆弧或逆圆弧,归纳起来有如下四种情1.+X方向走一步 Ii+1 Ii+1Fi+1 = Fi+2Ii+12.-X方向走一步 Ii+1 Ii-1F
5、i+1 = Fi-2Ii+13.+Y方向走一步Ji+1=Ji+1Fi+1 = Fi+2Ji+14.-Y方向走一步Ji+1=Ji+1Fi+1 = Fi+2Ji+1 四个象限进给方向 象限判断和电机转向第一象限第二象限第三象限第四象限Ii的符号+-+Ji的符号+-X向电机顺圆+-逆圆-+X向电机顺圆-+-逆圆+-+ 实验二.键盘显示综合实验实验目的:1、复习单片机键盘显示编制方法 2、为下步工作奠定基础实验内容:1、编制键盘扫描程序和数码管的静态显示程序 2、编制键盘数据输入程序 3、编制十进制到二进制转换程序 4、编制二进制到十进制转换程序 5、编写显示程序 6、编制功能键跳转程序 7、联机作总
6、体调试实验结果:#include /库文件#include #include #include sbit P32=P32;#define LEDLen 8 /六个八段管#define mode 0x81 /8255工作模式 /方式0,A口、B口及上C口作为输出,下C口作为输入#define LEDSEL P2#define LEDSEL_0 0x60 /八段管地址#define LEDSEL_1 0x64#define LEDSEL_2 0x68#define LEDSEL_3 0x6C#define LEDSEL_4 0x70#define LEDSEL_5 0x74#define LEDS
7、EL_6 0x78#define LEDSEL_7 0x7C#define uchar unsigned char#define uint unsigned int/code uchar hang = 0X01,0X02,0X04,0X08,0X10,0X20,0X40,0X80;code uchar lie8=0xFF,0x99,0x00,0x00,0x00,0x81,0xC3,0xE7, 0xFF,0xFF,0xDB,0x81,0x81,0xC3,0xE7,0xFF;#define Tick 200 #define T100us (256-200) unsigned int C100us
8、= Tick; / 200us记数单元unsigned char Bit = 0;unsigned char SelectLedLEDLen = LEDSEL_0, LEDSEL_1, LEDSEL_2, LEDSEL_3, LEDSEL_4, LEDSEL_5, LEDSEL_6, LEDSEL_7;xdata unsigned char CS8255 _at_ 0x60; /8255xdata unsigned char PA _at_ 0x6000; /8255的PA口xdata unsigned char PB _at_ 0x6001; /8255的PB口xdata unsigned
9、char PC _at_ 0x6002; /8255的PC口xdata unsigned char CTL _at_ 0x6003; /8255控制字地址unsigned char LEDBUFF8; code unsigned char KeyTable = /键值表 0x7E, 0xBE, 0xDE, 0xEE, 0x7D, 0xBD, 0xDD, 0xED, 0x7B, 0xBB, 0xDB, 0xEB, 0x77, 0xB7, 0xD7, 0xE7;code unsigned char SWEEP = /扫描信号 0x7f, 0xBf, 0xDF, 0xEF ;code unsigne
10、d char LEDMAP = /八段显示管键码 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71;/延时void delay( unsigned int CNT ) unsigned char i; while ( CNT- != 0) for( i=100; i != 0; -i) ;unsigned char TestKey() unsigned char i, Temp; Temp = PC; /PC是变化的 i = Temp & 0x0f; re
11、turn i; unsigned char GetKey () unsigned char i, Num=16; if( TestKey() ) for(i=0; i16; i+) if( KeyTablei = PC ) /有键按下时 Num = i; /确定键值 do delay(200); /消除键抖动 while ( TestKey() ); / 等待按键松开 return Num; /返回键值 return Num; void DisplayResult(unsigned char Num) LEDBUFF7 = LEDMAP Num ;void DisplayLED() unsig
12、ned char i; for(i=0; i= x1) k = y2 = y1 ? 1: 4; x = x1; y = y1; else k = y2 = y1 ? 2: 3; x = x2; y = y2; for (i = 0, f = 0; i = 0) switch (k) case 1: f -= dy; PA = 0xff;delay(2); /X轴正转 PA = 0xfe;delay(2); break; case 2: f -= dx; PA = 0xff;delay(2); PA = 0xef;delay(2); /Y轴正转 break; case 3: f -= dy; P
13、A = 0xfd;delay(2); PA = 0xfc;delay(2); /X轴反转 break; case 4: f -= dx; PA = 0xdf;delay(2); PA = 0xcf;delay(2); /Y轴反转 break; else switch (k) case 1: f += dx; PA = 0xff;delay(2); PA = 0xef;delay(2); /Y轴正转 break; case 2: f += dy; PA = 0xfd;delay(2); PA = 0xfc;delay(2); /X轴反转 break; case 3: f += dx; PA =
14、0xdf;delay(2); PA = 0xcf;delay(2); /Y轴反转 break; case 4: f += dy; PA = 0xff;delay(2); /X轴正转 PA = 0xfe;delay(2); break; 实验四.步进电机单片机控制实验(2)实验目的:1、掌握运动控制系统常用控制方法 2、掌握直线的逐点比较插补方法实验内容:1、编制第一象限直线插补程序。 2、结合键盘显示程序,输入直线的终点坐标值Xe、Ye,按下直线键后进行插补运动,检验图纸上所走轨迹是否与设定直线相符合。 3、加入插补过程数据动态显示功能,插补过程中动态显示X、Y任意某轴坐标,或者总步数值。 4
15、、编制四象限直线插补程序。 5、编制一象限圆弧插补程序。实验结果:圆弧插补子程序:void circle(int x0,int y0,int xe,int ye) int xm,ym,rns; int nxy; int fm=0; xm=x0; ym=y0; nxy=abs(xe-xm)+abs(ye-ym); if(xexm) if(yeym) if(xm=0) rns=8; else rns=2; else if(xm=0) rns=1; else rns=7; else if(yeym) if(xe=0) rns=5; else rns=3; else if(xe=0) rns=4; e
16、lse rns=6; while(nxy-) if(fm=0) if(rns=1|rns=3|rns=6|rns=8) if(rns=1|rns=6) PA = 0xdf;delay(5); PA = 0xcf;delay(5);/-y else if(rns=3|rns=8) PA = 0xff;delay(5); PA = 0xef;delay(5);/+y fm=fm-2*abs(ym)+1; ym=abs(ym)-1; else if(rns=2|rns=4|rns=5|rns=7) if(rns=2|rns=7) PA = 0xff;delay(5);/+x PA = 0xfe;de
17、lay(5); else if(rns=4|rns=5) PA = 0xfd;delay(5);/-x PA = 0xfc;delay(5); fm=fm-2*abs(xm)+1; xm=abs(xm)-1; else if(rns=1|rns=3|rns=6|rns=8) if(rns=1|rns=8) PA = 0xff;delay(5);/+x PA = 0xfe;delay(5); else if(rns=3|rns=6) PA = 0xfd;delay(5);/-x PA = 0xfc;delay(5); fm=fm+2*abs(xm)+1; xm=abs(xm)+1; else i
18、f(rns=2|rns=4|rns=5|rns=7) if(rns=2|rns=5) PA = 0xff;delay(5);/+y PA = 0xef;delay(5); else if(rns=4|rns=7) PA = 0xdf;delay(5);/-y PA = 0xcf;delay(5); fm=fm+2*abs(ym)+1; ym=abs(ym)+1; 实验五.单片机控制位置检测实验实验目的:1、熟悉光电开关的用法 2、掌握一般运动控制系统中位置检测方法 3、掌握相应检测电路原理。实验内容:1、测试各个光电开关对应位2、编制运动中的检测程序实验六、单片机运动控制系统总体实验实验目的:
19、1、培养学生系统设计能力。 2、掌握一般系统功能模块集成方法和调试方法。 3、了解单片机应用系统从设计到应用实际操作流程。实验内容:1、由键盘显示程序将各个功能模块综合到一起。2、调试好程序后,烧入EPROM,脱机运行。实验总结:通过这次实验,复习了去年单片机实习的内容,巩固了对单片机各模块的编程操作,掌握了电机驱动器的工作原理和步进电机的工作方式等知识,在实习过程中,理论与实践相结合,加强了对理论知识的理解和掌握,和同学进行团队合作完成实验,也锻炼了我们的团队意识,为在以后的学习和工作能够更好地利用书本知识打下基础。在实验中,单片机控制位置检测实验这个部分完成地不是很好,需要在以后的学习中,
20、加强这方面知识的学习,使自己的实验结果更加完美。程序附录:#include /库文件#include #include #include #include #include sbit P32=P32;#define LEDLen 8 /六个八段管#define mode 0x81 /8255工作模式 /方式0,A口、B口及上C口作为输出,下C口作为输入#define LEDSEL P2#define LEDSEL_0 0x60 /八段管地址#define LEDSEL_1 0x64#define LEDSEL_2 0x68#define LEDSEL_3 0x6C#define LEDSEL_
21、4 0x70#define LEDSEL_5 0x74#define LEDSEL_6 0x78#define LEDSEL_7 0x7C #define uchar unsigned char#define uint unsigned int/code uchar hang = 0X01,0X02,0X04,0X08,0X10,0X20,0X40,0X80;code uchar lie8=0xFF,0x99,0x00,0x00,0x00,0x81,0xC3,0xE7, 0xFF,0xFF,0xDB,0x81,0x81,0xC3,0xE7,0xFF;#define Tick 200 #defi
22、ne T100us (256-200) unsigned int C100us = Tick; / 200us记数单元unsigned char Bit = 0;unsigned char SelectLedLEDLen = LEDSEL_0, LEDSEL_1, LEDSEL_2, LEDSEL_3, LEDSEL_4, LEDSEL_5, LEDSEL_6, LEDSEL_7;xdata unsigned char CS8255 _at_ 0x60; /8255xdata unsigned char PA _at_ 0x6000; /8255的PA口xdata unsigned char
23、PB _at_ 0x6001; /8255的PB口xdata unsigned char PC _at_ 0x6002; /8255的PC口xdata unsigned char CTL _at_ 0x6003; /8255控制字地址unsigned char LEDBUFF8; code unsigned char KeyTable = /键值表 0x7E, 0xBE, 0xDE, 0xEE, 0x7D, 0xBD, 0xDD, 0xED, 0x7B, 0xBB, 0xDB, 0xEB, 0x77, 0xB7, 0xD7, 0xE7;code unsigned char SWEEP = /扫描信号 0x7f, 0xBf, 0xDF, 0xEF ;code unsigned char LEDMAP = /八段显示管键码 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71;void delay( unsigned int CNT ) unsigned char i; while ( CNT- != 0) for( i=10
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2