chuxue 发表于 2008-1-25 10:02:53

请问控制步进电机时,速度运算出来的小数问题,程序解决方法。

小弟才刚刚碰这东东。问题可能离谱,请各位不要笑话。
用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

binglin 发表于 2008-1-25 10:19:00

楼主看看图形学中的画线子程序的算法就明白了.

小数当然要取整,把步进电机的每步看成是屏幕上每点来处理.

ghost2 发表于 2008-1-25 10:28:19

好像有2个叫贝森汉姆算法的,一个画线,一个画圆

chuxue 发表于 2008-1-25 10:52:24

乍都是这样高深呀!
有没有现成的小程序或是原理,讲讲。
感谢楼上二位大侠的回复

zhq448 发表于 2008-1-25 13:52:39

很象数控里的插补运算。你只要输入X坐标 Y坐标,和计数长度(那个轴长取哪个,你图上的是X)。插补运算就能算出来是否到位。
不过步进有个最小分辨的。不可能无限循环小数。

chuxue 发表于 2008-1-25 15:42:29

大侠们能说说运算的原理吗

小弟期待着

zhq448 发表于 2008-1-25 16:50:40

刚刚书上翻了下资料还在。可以用逐点比较直线插补。2个步进电机能走出圆弧,斜线,直线。能组成任何2维图形。用空我也想自己做个2轴控制来。

chuxue 发表于 2008-1-26 08:19:19

谢谢楼上大侠指点迷迳。
逐点比较法直线插补原理google上查了一些,有点点了解了。谢谢

hyc07209 发表于 2012-5-27 09:21:37

好像有一年的电子设计竞赛的题目和这个类似,楼主可以搜搜看
页: [1]
查看完整版本: 请问控制步进电机时,速度运算出来的小数问题,程序解决方法。