自动控制系统实验报告学号:班级:姓名:老师:一.运动控制系统实验实验一.硬件电路的熟悉和控制原理复习巩固实验目的:综合了解运动控制实验仪器机械结构、各部分硬件电路以及控制原理,复习巩固以前课堂知识,为下阶段实习打好基础。
实验内容:了解运动控制实验仪的几个基本电路:单片机控制电路(键盘显示电路最小应用系统、步进电机控制电路、光槽位置检测电路)ISA运动接口卡原理(搞清楚译码电路原理和ISA总线原理)步进电机驱动检测电路原理(高低压恒流斩波驱动电路原理、光槽位置检测电路)两轴运动十字工作台结构步进电机驱动技术(掌握步进电机三相六拍、三相三拍驱动方法。
)微机接口技术、单片机原理及接口技术,数控轮廓插补原理,计算机高级语言硬件编程等知识。
实验结果:步进电机驱动技术:控制信号接口:(1)PUL:单脉冲控制方式时为脉冲控制信号,每当脉冲由低变高是电机走一步;双脉冲控制方式时为正转脉冲信号。
(2)DIR:单脉冲控制方式时为方向控制信号,用于改变电机转向;双脉冲控制方式时为反转脉冲信号。
(3)OPTO :为PUL 、DIR 、ENA 的共阳极端口。
(4)ENA :使能/禁止信号,高电平使能,低电平时驱动器不能工作,电机处于自由状 态。
电流设定:(1)工作电流设定:(2)静止电流设定:静态电流可用SW4 拨码开关设定,off 表示静态电流设为动态电流的一半,on 表示静态电流与动态电流相同。
一般用途中应将SW4 设成off ,使得电机和驱动器的发热减少,可靠性提高。
脉冲串停止后约0.4 秒左右电流自动减至一半左右(实际值的60%),发热量理论上减至36%。
(3)细分设定:(4)步进电机的转速与脉冲频率的关系电机转速v = 脉冲频率P * 电机固有步进角e / (360 * 细分数m)逐点比较法的直线插补和圆弧插补:一.直线插补原理:如图所示的平面斜线AB ,以斜线起点A 的坐标为x0,y0,斜线AB 的终点坐标为(xe ,ye),则此直线方程为:0000Y Ye X Xe Y Y X X --=-- 取判别函数F =(Y —Y0)(Xe —Xo)—(X-X0)(Ye —Y0)用逐点比较法加工时,每一次只在一个坐标方向给出一个脉冲,使运动件在该坐标方向上进给一步,因此刀具的运动轨迹是折线,而不是斜线AB。
折线拐点M与斜线AB之间的位置关系有如下三种情况:1)M点在AB线的上方.判别函数F>0;2)M点在AB线上,F=03)M点在AB线的下方,F<0象限判别和电机方向方向第一象限第二象限第三象限第四象限Xe-X0 >0 <0 <0 >0Ye-Y0 >0 >0 <0 <0 X向电机正反反正Y向电机正正反反二.圆弧插补原理:图中AB是被加工圆弧。
加工程序中给出的已知条件通常是A点B点的坐标值,圆心O’点相对圆弧起点A的增量坐标值。
由图可知:圆心O’点相对A点的增量坐标值为(—Io,—Jo)。
改变符号后就成为A点相对O’点的增量值Io,Jo。
由此可求出圆弧的半径值R:R2=Io2+Jo2在以圆心O’点为原点的I、J坐标系中,圆的方程可表示为:I2+J2=R2设刀具已位于M1点,则Mi点对圆弧AB的位置有三种情况:1)Mi在圆弧外侧,则0’Mi>R,Ii2+Ji2>R22)Mi在圆弧上,则0’Mi=R,Ii2+Ji2=R23)Mi在圆弧内侧,0’Mi<R,Ii2+Ji2<R2在第一象陨顺时针加工圆弧(顺圆弧)和第二、三、四象限加工顺圆弧和逆圆弧时,判别式都不相同。
带符号运算时,无论在哪个象限工作,顺圆弧或逆圆弧,归纳起来有如下四种情1.+X方向走一步I i+1= Ii+1F i+1 = Fi+2Ii+12.-X方向走一步I i+1= Ii-1F i+1 = Fi-2Ii+13.+Y方向走一步J i+1=Ji+1F i+1 = Fi+2Ji+14.-Y方向走一步J i+1=Ji+1F i+1 = Fi+2Ji+1四个象限进给方向象限判断和电机转向第一象限第二象限第三象限第四象限Ii的符号+ - - +Ji的符号+ + - -X向电机顺圆+ + - - 逆圆- - + +X向电机顺圆- + + - 逆圆+ - - +实验二.键盘显示综合实验实验目的:1、复习单片机键盘显示编制方法2、为下步工作奠定基础实验内容:1、编制键盘扫描程序和数码管的静态显示程序2、编制键盘数据输入程序3、编制十进制到二进制转换程序4、编制二进制到十进制转换程序5、编写显示程序6、编制功能键跳转程序7、联机作总体调试实验结果:#include <reg51.h> //库文件#include <stdio.h>#include <stdlib.h>#include <intrins.h>sbit P32=P3^2;#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 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 lie[][8]={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 = Tick; // 200us记数单元unsigned char Bit = 0;unsigned char SelectLed[LEDLen] ={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 char PC _at_ 0x6002; //8255的PC口xdata unsigned char CTL _at_ 0x6003; //8255控制字地址unsigned char LEDBUFF[8];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=100; i != 0; --i) ;}unsigned char TestKey(){unsigned char i, Temp;Temp = PC; //PC是变化的i = ~Temp & 0x0f;return i;unsigned char GetKey (){unsigned char i, Num=16;if( TestKey() ){for(i=0; i<16; i++){if( KeyTable[i] == PC ) //有键按下时{Num = i; //确定键值do{delay(200); //消除键抖动}while ( TestKey() ); // 等待按键松开return Num; //返回键值}}}return Num;}void DisplayResult(unsigned char Num){LEDBUFF[7] = LEDMAP[ Num ];}void DisplayLED(){unsigned char i;for(i=0; i<8; ++i){LEDSEL = SelectLed[i];PB = LEDBUFF[i];delay(1);}}实验三.步进电机单片机控制实验(1)实验目的:1、掌握步进电机控制基本方法2、测试出步进电机工作频率范围,确定其正常工作中脉冲频率3、掌握步进电机加减速控制方法实验内容:1、编制步进电动机正反转实验:采用三相六拍和三相三拍控制方式分别编写步进电动机正反转程序。
2、步进电动机的频率特性测定实验:改变延时大小,测试步进电动机频率特性,找出不失步的最大频率。
3、编制步进电动机加减速程序,要求实现梯形加减速曲线。
4、结合键盘显示程序编制X、Y轴点动实验:实现+X、+Y、-X、-Y四个方向的点动功能,按下某个功能键+X,工作台即向该正方向运动,松开该键工作台停止运动。
实验结果:控制电机直线插补子程序:void line(int x1, int y1, int x2, int y2){int dx, dy, n, k, i, f;int x, y;dx = abs(x2-x1);dy = abs(y2-y1);n = dx + dy;if (x2 >= 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 < n; i++)if (f >= 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;PA = 0xfd;delay(2);PA = 0xfc;delay(2); //X轴反转break;case 4:f -= dx;PA = 0xdf;delay(2);PA = 0xcf;delay(2); //Y轴反转break;}elseswitch (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 = 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、编制第一象限直线插补程序。