本帖最后由 chenwenjie 于 2023-7-4 20:26 编辑
一、 作品功能介绍 本产品是基于迪文串口屏内核开发,通过keil编写插补算法,控制对应电机引脚,并显示当前不同电机所处位置坐标,同时带有主轴速度调节功能。在项目中设置了直线插补算法和圆弧插补算法。在直线插补中,输入目标点坐标,电机“启动”按钮后,会进行直线插补运动。在圆弧插补中,输入目标点坐标、圆弧中心和半径,点击“启动”按钮后,程序会惊醒圆弧插补运动。 二、 工作原理 直线插补采用逐点比较法,在每次进给后都会得到一个新的当前坐标点,并和目标坐标点作比较,根据误差来判定进给方向,进行该方向移动一定单位量。循环执行这一过程,直至到达目标点坐标。直线插补虽然在每次运动时只会沿着某一轴方向移动,但可以将两轴的运动次序和运动量进行合理的调节,进而得到较高的加工效果。其运动原理如图所示: 图1 直线插补运动原理图 数学公式推导: 原点坐标O:(xs,ys) 终点坐标E:(xe,ye) 加工点坐标P:(xi,yj)(i j 为对应轴进给次数) 由于加工点只存在三种情况:在线段上方,在线段中,在线段下方。比较线段OP的斜率和OE的斜率即可知道加工点处于哪一种情况:KOP>KOE,位于线段上方;KOP=KOE:在线段中;KOE<KOP:在线段下方。公式如下: 化简公式并与 0 作比较 由此可以定义偏差函数: 以第一象限为例,当点P位于线段下方时,进给向上,沿着y轴进给;点P位于线段下方时,进给向前,沿着x轴进给;同时规定点P在线段中的情况,归属于位于线段上方,沿着x轴进给。 在运动后得到新的P点坐标,需要重新计算新的偏差,公式如下: 由公式(4)(5)可得:新的偏差函数只和原偏差函数和终点坐标有关,无需计算点P坐标。 关于终点的判断中,采用总步长法,即将得到的轨迹图本质上为x y轴向运动图,当步长达到一定时,即到达终点,公式如下: 同理,圆弧插补也是相应算法: 图1 圆弧插补运动原理图 当F>0时,加工点位于圆弧线段外;当F<0时,加工点位于圆弧线段内;当F=0时,加工点位于圆弧线段上。 同直线插补算法的偏差函数,圆弧的偏差函数也是与进给方向有关。 在逆圆插补中,偏差函数公式如下: 同理,在顺圆插补中,偏差函数如下: 在终点判别中,采用分别判断各坐标轴的进给步数: 三、 设计思路 1、 硬件部分 老师在课堂上提供的迪文屏幕,带有CPU_GUI和CPU_OS双核,可以同时满足运行程序和提供人机交互功能。同时由于芯片的输出电流较低,无法驱动步进电机正常运转, 添加电机驱动模块(L298),通过芯片引脚向驱动模块输出控制信号,来间接控制步进电机的启停与运转。本次项目中,需要用到三个步进电机,分别是主轴转速电机,X轴电机,Y轴电机。 2、 软件部分 通过keil编写直线插补算法,和圆弧插补算法,并且时刻监听屏幕按钮状态,当点击“启动”按钮后,读取屏幕中终点坐标和当前点坐标,进行插补运算。在圆弧插补中除了上述坐标,还会读取圆弧半径和圆弧中心点坐标,进行圆弧插补运算。 3、 GUI设计 首先设置了屏幕保护界面,点击固定按钮才会进入到主界面,可以避免相关人员在上电后误操作。在主界面中,设置了“转速调节”、“直线插补”、“圆弧插补”按钮,点击不同的按钮会进入到相应的界面中。在主轴转速界面,设置了不同倍率的调节按钮,并且通过“+”、“-”按钮对主轴转速以相应的倍率进行调节。在直线插补界面,点击坐标显示栏,可以调出键盘,输入终点坐标。在圆弧插补界面会可以输入终点坐标,圆弧半径,以及圆心坐标。 四、工程代码和演示视频 |