MakerLab创客实验室 — Let's Make something.
现在注册
已注册用户请 登入
Bello large avatar
MakerLab创客实验室  ›  固件

马琳固件【移植】——步进电机速度控制问题:加减速控制问题

By Bello at 一年前 , 2116 次浏览

在移植固件到Nios ii平台时遇到了问题:固件里面的速度控制采用的是梯形速度控制法,有加速,匀速和减速。在实际测试中发现,当feedrate在1500-3000时,电机能正常运行,但当feedrate上7000甚至10000后,电机加速和匀速正常,但在减速时,电机一震一震的,但也在转动,感觉像是失步了,不知道这是什么问题,请教@Andy。不知道是不是电源的功率不够,我用的电源是12V-3A的开关电源。

14 回复
Bello medium avatar
#1 - 一年前
Bello

移植是没有动马琳固件速度控制的部分。是不是还需要设置什么呢?请教@Andy ,谢谢!

Andy medium avatar
#2 - 一年前
Andy

有一个计算速度的函数,里面的计算方式改了吧?还有一个planner.cpp文件用plan_buffer_line函数有一个地方是用了F_CPU这个宏,arduino都是16Mhz,如果你的这个宏定义不是16MHz,可能会出现加减速问题。我移植时也漏掉过这个地方,导致加减速有问题,修改后可以解决这个问题。可以看看我的移植commit:https://github.com/MakerLabMe/Marlin_STM32/commit/f24d01efd3f9f88d7baded638bf9b717e7d6e003

Bello medium avatar
#3 - 一年前
Bello

@Andy 嗯,两个地方都改了。我的F_CPU用的是100M的。后来仔细检查了下,原来是变量的类型定义错了,导致了溢出。现在好了。但在调试的时候发现减速的步数有点长,是不是和加速度有关?还有就是打印机最大能给的feedrate能达到多大呢,我给到10000后,电机就失步了。但原机器是可以通过旋钮来调节速度的,貌似可以到100%,如果原来是3000的feedrate那么,实际能上到30000。是不是这样的呢?

Andy medium avatar
#4 - 一年前
Andy

lcd上面的旋钮调节?100%是乘1,你的意思是乘10了。marlin原版最快脉冲速度是40khz。10000mm/min的feedrate我好想试过,机械情况允许的情况下不会失步。你要排除机械原因导致的情况。

Bello medium avatar
#5 - 一年前
Bello

@Andy 嗯,是LCD上的旋钮调节,最高可以调到999%,近似是1000%,那不就是乘10了?如果G代码中有3000的feedrate,那不就是30000了。不过我之前在原版上试了,它的速度会有个极限,好像是到600%以后,速度的提升就不明显了。到了999%也是可以运行,是不是在固件里面有一个最大feedrate的限定?或许我用的不是原版的Marlin吧。

Andy medium avatar
#6 - 一年前
Andy

@Bello 示波器观察一下跟原版什么区别吧

Bello medium avatar
#7 - 一年前
Bello

@Andy 嗯,目前手头上没有示波器,看来得去借一个了。但现在还有一个问题,就是在步进电机减速时,它运动的时间有点长,人眼能看得到。每次连续G指令执行时,在两个G指令期间,都会有这样一个减速的过程。这个问题不知道是不是原版的就是这个样子,还是我在移植的时候,忘记改哪个参数了?请问您在移植的时候有没出现这样的情况呢?

Andy medium avatar
#8 - 一年前
Andy

@Bello 原版不明显,过度很平滑。你最好是接上原版,对比同一情况下的运动状态是否一样

Bello medium avatar
#9 - 一年前
Bello

@Andy 按照您的建议,我接上之后对比了下,确实原版的没有这个过程,很是平滑。但不知道 是什么原因,估计我是哪里改动了,准备再去好好检查下。现在又出现了一个新的问题:z轴电机本来是有两个的,但我在实际测试时发现 速度过快,两个 电机会只有一个转动,另一个感觉 是堵住了,但如果速度过小,比如feedrate为60左右,就可以两个同时转。我只用1个L298在驱动这两个电机,不知道是不是驱动电流不够,但原版的也只是用了一个A4982驱动的,不知道是个什么原因导致了。真的很感谢您的关注和耐心回答,谢谢啦!!

Andy medium avatar
#10 - 一年前
Andy

检查机械是不是一个的阻力太大,另外可以试试将电机串联,可以保证两个电机流过的电流是一样的。

Bello medium avatar
#11 - 一年前
Bello

@Andy z轴电机是串联着。我把电机上螺杆去掉,让它空转,也是这种情况。不知道是不是L298只能驱动一个电机,但并联也应该相当于一个电机的吧。

Andy medium avatar
#12 - 一年前
Andy

@Bello 不知道什么原因了。

Bello medium avatar
#13 - 一年前
Bello

@Andy 另外电机在空载转的时候一卡一卡的,这是不是叫失步了吧?

Andy medium avatar
#14 - 一年前
Andy

@Bello 确保电机相线都接正确。如果是空转,除非速度太快,一般不会失步吧