Recently gotten a custom build of mriscoc’s professional firmware working on the ender 3 S1 (based off 2.1.3 Marlin). The default firmware is heavily limited and the source for the latest hasn’t been released so I made the switch and a few key changes;
Fast fan pwm enabled to increase the frequency the laser can be cycled at
Inline mode enabled
Air assist enabled (mapped to an unused pin) to avoid errors processing the M8/M9 commands that you get in stock
Increased max accel and feed etc so I can tune to what the max should be with the lighter laser attached in place of the print head
Baud for this firmware is 250000, can be switched to 115,200 via the printers screen, switching has had no noticeable effect on the issue.
When sending a grayscale file over usb (so far only grayscale has shown the issue), the machine will lase fine for the first say 5-10mm block of lines then there will be a visible shift of a few mm along the scan angle (I.e left or right at 0 degrees), this process will repeat, sometimes having one axis offset by as much as 50mm between a single line. Normally I’d think this is hardware being pushed too hard, or loose pulleys & belts etc. but I assure you, it’s not. Machine is tight, I’ve tested against lower than stock accel and even sat there for a 10mm/s test and still had the shifting. It appears to be random in interval, though more likely to happen if the line has a lot of high powered areas. Switching to a 45° scan angle is what caused the 50mm+ differences.
But that same file saved to an SD and inserted into the machine runs absolutely fine.
Both 250k and 115,200 baud experience about the same random interval of line shifts. I’ve tried different USB-C cables and different ports on the laptop. This issue did not happen previously on the old stock firmware when attempting grayscale, though I couldn’t get inline to work on that firmware either and used standard M03/M05.
It is a genuine physical offset that it ends up with, as when it comes back out of relative positioning mode the coordinates are still messed up so it’ll hit the end stops when trying to return to the starting position. Exactly what you’d expect from missed steps or slipped belts… but it’s not… and it’s frying my brain… it’s as if the machine loses track of its timing during a move and sends the gantry too far, but doesn’t realise it’s done that and carries on its merry way in a new physical coordinate space. Synchronous and Buffered transfer modes make no difference to the issue, though synchronous does seem to stutter slightly whilst buffered remains smooth, as you’d expect. The shift always happens when moving to the next line, and never during the middle of a line. The shift is always parallel to the scan angle.
3D printing shows no signs of this issue with the current firmware either so I’m at a bit of a loss as to what else may be causing it. The board is a creality V24S1 with an STM32 F401RC (256k mem version). Just too much data for the serial bus with all the S power commands being sent maybe?
Any tips or avenues to look at and hopefully help find a diagnosis are greatly appreciated!
