请问控制步进电机时,速度运算出来的小数问题,程序解决方法。
小弟才刚刚碰这东东。问题可能离谱,请各位不要笑话。用AVR给步进电机的驱动器下达指令,让步进电机运动。让二个步进电机同时运动就能走“斜线”,是吧。
如果知道X轴要走B步,Y轴要步A步,其速度分别是Vx和Vy;最后就能按照斜线到达C点。如示意图。这里小弟清楚,不清楚的是若只知道步数B和A及它们的之间的任意一个速度量时(Vx、Vy、Vc),怎样才能按照斜线和原有的速度到达C点。此时运算过程中会出现小数点,而AVR运算时是用余数来表示小数的,这点小弟百思而不得其解,大侠们都是怎样实现的。。。。比如A=30步,B=40步;如果Vy=10步/秒,那么Vx则要13.333333333....步/秒才能达到所谓的斜线到C点。而这个Vx在程序中是怎样表达的呢?如果取了整那就不能斜线到C点了,最后总会有一段距离不是斜线。不知道大侠们在做这点时是怎样处理的。
谢谢了
1http://cache.amobbs.com/bbs_upload782111/files_9/ourdev_206917.jpg 楼主看看图形学中的画线子程序的算法就明白了.
小数当然要取整,把步进电机的每步看成是屏幕上每点来处理. 好像有2个叫贝森汉姆算法的,一个画线,一个画圆 乍都是这样高深呀!
有没有现成的小程序或是原理,讲讲。
感谢楼上二位大侠的回复 很象数控里的插补运算。你只要输入X坐标 Y坐标,和计数长度(那个轴长取哪个,你图上的是X)。插补运算就能算出来是否到位。
不过步进有个最小分辨的。不可能无限循环小数。 大侠们能说说运算的原理吗
小弟期待着 刚刚书上翻了下资料还在。可以用逐点比较直线插补。2个步进电机能走出圆弧,斜线,直线。能组成任何2维图形。用空我也想自己做个2轴控制来。 谢谢楼上大侠指点迷迳。
逐点比较法直线插补原理google上查了一些,有点点了解了。谢谢 好像有一年的电子设计竞赛的题目和这个类似,楼主可以搜搜看
页:
[1]