背景:
我刚刚在 Prusa i3 上成功安装了 RepRapDiscount Full Graphic Display;在这样做的过程中,我已将所有固件升级到最新版本的 Marlin,1.1.0-RC7。使用我之前的 Marlin 版本 1.0.2-1,一切正常。我已经将旧版本的每个参数都转移到了新版本中。代码的某些方面的编写方式有所不同,但基本上除了 Z 轴之外的所有内容都可以正常工作。
问题:
我似乎遇到的一个问题是 Z 轴的任何类型的运动。当它移动时,无论是从 LCD 还是 Repetier,它似乎都按预期加速,但随后卡住/跳过了一堆步骤,然后按预期缓慢减速。无论我指示它移动的距离如何,它都会正常加速相同的时间/距离/步数,相对于它的指示进入这种邪恶模式一段时间/距离/步数,然后平稳减速每次都使用完全相同的时间。例如,如果它应该移动10000步,它会平滑移动100步,然后跳过9800步,然后再平滑完成100步。例如,如果它需要移动 5000 步,它也会平滑移动 100 步,然后跳过 4800 步,并顺利完成最后 100 步。请记住,这些数字完全来自太空;无论如何,它们都不准确。我只是想尽可能清楚地描绘出一幅画。
故障排除:
起初我检查以确保一切都在机械上完好无损。
- 螺母可在 5 毫米螺纹杆上自由上下移动。在杆的整个长度上没有任何点使螺母不能非常自由地移动。
- 不锈钢棒对齐良好,整个 Z/X 轴托架沿垂直导轨非常自由地移动。轴承看起来没问题。
然后我想把它缩小到固件,而不是电气。为了记录,也许我遗漏了一些明显的东西,所以请告诉我。
- 我测量了 RAMPS 1.4 板上 A4988 步进驱动器的电压,它位于 Arduino Mega2560 R3 上,读数为 350mV。即使我将电位器调整到 550mV,我仍然遇到同样的问题。
- 下面的跳线似乎紧贴到位,A4988 上的所有引脚似乎也很好。
- 我在本节中没有检查的一件事,逻辑分析,是从电路板到电机本身的电线,但基于以下内容,我认为这不是问题所在。(虽然之前我错了)
转到固件。
我在 Configuration.h 中使用了默认设置部分,但无济于事。无论多低或多高,我使用任何最大加速度设置,我似乎都无法解决问题。它加速较慢,但整体效果是一样的。
#define DEFAULT_AXIS_STEPS_PER_UNIT {80,80,3840,90}
#define DEFAULT_MAX_FEEDRATE {500, 500, 5, 25}
#define DEFAULT_MAX_ACCELERATION {2000,2000,10,2000}
#define DEFAULT_ACCELERATION 1000
#define DEFAULT_RETRACT_ACCELERATION 1000
#define DEFAULT_TRAVEL_ACCELERATION 1000
#define DEFAULT_XYJERK 20.0
#define DEFAULT_ZJERK 0.4
#define DEFAULT_EJERK 5.0
理论:
在这一点上,如果我不得不猜测,它与最大速度设置或微步进有关。这些是我在新固件上的一些设置。
#if ENABLED(ULTIPANEL)
#define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60} // Feedrates for manual moves along X, Y, Z, E from panel
#define ULTIPANEL_FEEDMULTIPLY // Comment to disable setting feedrate multiplier via encoder
#endif
// minimum time in microseconds that a movement needs to take if the buffer is emptied.
#define DEFAULT_MINSEGMENTTIME 20000
// If defined the movements slow down when the look ahead buffer is only half full
#define SLOWDOWN
// Frequency limit
// See nophead's blog for more info
// Not working O
//#define XY_FREQUENCY_LIMIT 15
// Minimum planner junction speed. Sets the default minimum speed the planner plans for at the end
// of the buffer and all stops. This should not be much greater than zero and should only be changed
// if unwanted behavior is observed on a user's machine when running at very slow speeds.
#define MINIMUM_PLANNER_SPEED 0.05// (mm/sec)
// Microstep setting (Only functional when stepper driver microstep pins are connected to MCU.
#define MICROSTEP_MODES {16,16,16,16,16} // [1,2,4,8,16]
// Motor Current setting (Only functional when motor driver current ref pins are connected to a digital trimpot on supported boards)
#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)
// Motor Current controlled via PWM (Overridable on supported boards with PWM-driven motor driver current)
//#define PWM_MOTOR_CURRENT {1300, 1300, 1250} // Values in milliamps
// uncomment to enable an I2C based DIGIPOT like on the Azteeg X3 Pro
//#define DIGIPOT_I2C
// Number of channels available for I2C digipot, For Azteeg X3 Pro we have 8
#define DIGIPOT_I2C_NUM_CHANNELS 8
// actual motor currents in Amps, need as many here as DIGIPOT_I2C_NUM_CHANNELS
#define DIGIPOT_I2C_MOTOR_CURRENTS {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0}
解决方案:
如果有人可以帮助我,甚至为我指明正确的方向,我将不胜感激。我对这个新固件版本感到绝望。它具有我的另一个中不存在的所有这些条件选项卡,我无法弄清楚。