wordpress淘客插件破解,seo 推广服务,建筑人才网一砖一瓦,赣州91人才网官网摘要#xff1a;前面章节主要介绍单个电机控制#xff0c;本节内容介绍两个电机完成直线插补运动
一、 Bresenham直线算法介绍 Bresenham直线算法由Jack Elton Bresenham于1962年在IBM开发#xff0c;最初用于计算机显示直线#xff0c;它确定应该选择的n维光栅的点#…摘要前面章节主要介绍单个电机控制本节内容介绍两个电机完成直线插补运动
一、 Bresenham直线算法介绍 Bresenham直线算法由Jack Elton Bresenham于1962年在IBM开发最初用于计算机显示直线它确定应该选择的n维光栅的点以便形成两点之间的直线的近似。因为它仅使用整数加法减法和位移非常适合单片机系统
二、算法推导 关于该算法的视频推导教程非常多推荐B站洛阳鸿卓课工场-白洋老师的Bresenham算法教程讲解十分详细链接如下 https://www.bilibili.com/video/BV1eE411p7tn/?spm_id_from333.337.search-card.all.clickvd_sourcecbda27af6174dc53fd338dba3ab7dc66
三、算法移植 根据单片机步进电机系统的特点将bresenham算法移植到单片机系统与上述视频教程方式有区别单片机系统适合整数处理将坐标原点移动至左下角即整个可移动区域为第一象限 第一种情况直线在第一象限前半区0θ≤45 1、计算斜率k k Y 2 − Y 1 X 2 − X 1 Δ Y Δ X k\frac{Y_{2}-Y_{1}}{X_{2}-X_{1}}\frac{\Delta Y}{\Delta X} kX2−X1Y2−Y1ΔXΔY
2、判断主方向 Δ X ≥ Δ Y , 主方向为 X \Delta X\ge \Delta Y,主方向为X ΔX≥ΔY,主方向为X
3、比较Y与Middle大小 Y直线实际值 Middle中点值
① 赋初值 Y k x Δ Y Δ X ∗ 1 Δ Y Δ X Ykx\frac{\Delta Y}{\Delta X} *1\frac{\Delta Y}{\Delta X} YkxΔXΔY∗1ΔXΔY M i d d l e 0.5 Middle0.5 Middle0.5 I N T X 0 INTX0 INTX0 I N T Y 0 INTY0 INTY0
② 判别式整数化乘公倍数2△X Y 2 △ Y Y2△Y Y2△Y M i d d l e △ X Middle△X Middle△X
③ 循环判断 如果 Y ≥ M i d d l e 成立 如果Y≥Middle成立 如果Y≥Middle成立 M i d d l e M i d d l e 2 △ X Middle Middle2△X MiddleMiddle2△X I N T Y I N T Y 1 INTYINTY1 INTYINTY1
④ 更新参数 I N T X I N T X 1 INTXINTX1 INTXINTX1 Y Y 2 △ Y Y Y 2△Y YY2△Y
4、取坐标INTX,INTY为结果
第二种情况直线在其他位置
统一转换到第1区处理处理流程如下 第1步判断直线方向 通过直线起点坐标P1X1,Y1,终点坐标P2X2,Y2可以判断向量P1 P2 位于哪个方位
第2步判断主轴与电机方向 1/4/5/8四个方位主轴为X副轴为Y其中1/8主轴电机方向为正4/5主轴电机方向为负 2/3/6/7四个方位主轴为Y副轴为X其中2/3主轴电机方向为正6/7主轴电机方向为负
第3步根据Bresenham算法判断是否有副轴移动 让主轴匀速移动根据Bresenham的算法,判断移动主轴的每一步是否需要移动副轴最终实现直线插值运动
四、实测 烧录hex文件后单片机上电步进电机直线插补运动从起点0,0直线插补到终点1000,2000,单位步 Proteus仿真 五、功能扩展 扩展1 ① 增加4个按键控制电机启动、终点坐标 ② 增加数码管显示信息
扩展2 ① 增加4个按键控制电机启动、终点坐标 ② 增加1602LCD显示信息
扩展3 ① 连续绘制模式绘制一个正五角星
六、附件网盘内keil源码为付费资源提供答疑Proteus免费 链接: https://pan.baidu.com/s/1anUuH0-IYHlZZ12a2SDgNw 提取码: jku6
↓↓↓点击下方目录查看L298N系列全部文章