schmttc / EasyThreeD-K7-STM32

Firmware and settings for the EasyThreeD K7 3D Printer, motherboard ET4000+ (STM32)
GNU General Public License v3.0
47 stars 15 forks source link

EasyThreed K9 version #10

Closed JohnTheCoolingFan closed 1 month ago

JohnTheCoolingFan commented 1 year ago

I have an EasyThreed K9 with ET4000+ board, but it has a few differences. Some perfipherals are missing and wifi board connector is used by the front panel buttons. Would you be interested in making another repo for K9 if I provide photos and pin/button mappings?

schmttc commented 1 year ago

Hi, I have been thinking that it would make sense to have a central repo to manage the different device firmwares. I need to think about the best way to organise this to keep maintenace low, but happy to provide a branch you can PR to in the mean time? I don't have time at the moment to do any development work.

JohnTheCoolingFan commented 1 year ago

Yeah, both of thsoe are great ideas. I'll do what I can in the meantime. I was planning to mod my printer anyways. Thanks for the response!

schmttc commented 1 year ago

https://github.com/schmttc/EasyThreeD-K7-STM32/tree/ET4000PLUS-K9

I've put a few pointers in the README to get started, check the master branch READMA for additional details, and the Additional-Files branch for board schematics

JohnTheCoolingFan commented 1 year ago

Finally got to have a look. From what I can see, controls are mostly the same but I think the 4 front leveling buttons need to be added. I'll check the pins later. Also will take a better look at what STM32 model is installed in my printer.

schmttc commented 1 year ago

@JohnTheCoolingFan have you/can you email Easythreed support and ask for a copy of the source code for your printer? They were a bit hesitant for me but it would make the development work a lot easier.

JohnTheCoolingFan commented 1 year ago

That's an interesting suggestion. Probably worth a try. I'm a bit concerned whether this printer model is even real as it's not displayed at easythreed website.

Ajimaru commented 8 months ago

Which Firmware can I use for testing on a K9?

JohnTheCoolingFan commented 8 months ago

Are you asking for a compiled file @Ajimaru? I can compile it if you want.

Ajimaru commented 8 months ago

Yes @JohnTheCoolingFan , I have an K9, upgraded with an heatbed and would like to test your firmware.

JohnTheCoolingFan commented 8 months ago

Here you go, uploaded it to my web server: https://jtcf.ru/EasyThreed-K9-firmware/mksLite-c4def742.bin

Ajimaru commented 8 months ago

Here you go, uploaded it to my web server: https://jtcf.ru/EasyThreed-K9-firmware/mksLite-c4def742.bin

I have installed this firmware via the sd-card.

Firmware Name: Marlin 2.1.2.1 (Mar 7 2024 22:21:12)
Extruder Count: 1
Machine Type: 3D Printer
Protocol Version: 1.0
Source Code Url: github.com/MarlinFirmware/Marlin
Uuid: cede2a2f-41a2-4748-9b12-c55c62f367ff 

Good news, headbet is working. Bad news, the four bed leveling buttons and the home button on the printer does not work anymore. COntroling via USB does not work either. In addition all theese settings are on zero.

[Steps]
[Feedrate]
[Acceleration]
[Offsets]
[PID]
[Material]
[Linear Advance]
[Advanced]
JohnTheCoolingFan commented 8 months ago

That's weird. Can you open the printer and read a model of the board to make sure it is ET4000+?

Photos of the board and the extension board on the place of the wifi module would be nice for finding the culprit too.

Ajimaru commented 8 months ago

Yes the board is an ET4000+ , here are some pictures.

IMG_7932 IMG_7933 IMG_7934 IMG_7935 IMG_7936

I have set the missing values according to EasyThreed K9 Marlin factory firmware configuration

M503 shows this, after powercylce of the printer, the values are back to zero.

echo:; Linear Units:
echo:  G21 ; (mm)
echo:; Temperature Units:
echo:  M149 C ; Units in Celsius
echo:; Filament settings (Disabled):
echo:  M200 S0 D0.00
echo:; Steps per unit:
echo:  M92 X606.00 Y606.00 Z600.00 E1040.00
echo:; Max feedrates (units/s):
echo:  M203 X40.00 Y40.00 Z10.00 E70.00
echo:; Max Acceleration (units/s2):
echo:  M201 X100.00 Y100.00 Z50.00 E100.00
echo:; Acceleration (units/s2) (P<print-accel> R<retract-accel> T<travel-accel>):
echo:  M204 P100.00 R100.00 T100.00
echo:; Advanced (B<min_segment_time_us> S<min_feedrate> T<min_travel_feedrate> J<junc_dev>):
echo:  M205 B0.00 S0.00 T0.00 J0.00
echo:; Home offset:
echo:  M206 X0.00 Y0.00 Z0.00
echo:; Hotend PID:
echo:  M301 P22.20 I1.08 D114.00
echo:; Linear Advance:
echo:  M900 K0.00
echo:; Stepper motor currents:
echo:  M907 X0 Z0 E0
echo:; Backlash compensation:
echo:  M425 F0.00 S0.00 X0.00 Y0.00 Z0.00

Still only nozzle and bed heating works, all functions related to motors are dead. Do you have the stock firmware?

JohnTheCoolingFan commented 8 months ago

Yes, I have the stock firmware which I got from the manufacturer. I also uploaded it to my webserver: http://jtcf.ru/EasyThreed-K9-firmware/EasyThreed-K9-factory-firmware.bin

JohnTheCoolingFan commented 8 months ago

Your daughter board for the front levelling buttons looks different. Can you please use a multimeter to map the contacts on the daughter board on the front to the contacts on the board in the wifi module slot? pins_to_map

Ajimaru commented 7 months ago

Yes, I have the stock firmware which I got from the manufacturer. I also uploaded it to my webserver: http://jtcf.ru/EasyThreed-K9-firmware/EasyThreed-K9-factory-firmware.bin

The Printer is working again with the factory firmware!

Ajimaru commented 7 months ago

Your daughter board for the front levelling buttons looks different. Can you please use a multimeter to map the contacts on the daughter board on the front to the contacts on the board in the wifi module slot? pins_to_map

Here are the mapped contact:

Pin U3 Pin U4
1 1
2 N.C.
3 N.C.
4 3
5 4
6 N. C.
7 5
8 6
9 2
10 N. C.
11 N. C.
12 N. C.
13 N. C.
14 N. C.
15 N. C.
16 N. C.

K9_Pins_U3_to_U4

JohnTheCoolingFan commented 7 months ago

Hmm, the buttons are mapped the same way. I don't know what the cause of the issue is and I'm out of ideas, sorry

Ajimaru commented 7 months ago

Hmm, the buttons are mapped the same way. I don't know what the cause of the issue is and I'm out of ideas, sorry

I may have to copy the lite_cfg.txt also on the SD-Card?

JohnTheCoolingFan commented 7 months ago

I don't know, my firmware worked without issues. Sorry, but I can't help much without actual hardware that has the issue to experiment with.

schmttc commented 7 months ago

@Ajimaru I've compiled the code from the K9 branch here and the file size is different to the file John uploaded (134KB vs 118KB) Can you try this one? (remove the .txt when you put it on the SD card) mksLite.bin.txt

lite_cfg.txt doesn't do anything in this version of the firmware.

Ajimaru commented 7 months ago

@Ajimaru I've compiled the code from the K9 branch here and the file size is different to the file John uploaded (134KB vs 118KB) Can you try this one? (remove the .txt when you put it on the SD card) mksLite.bin.txt

lite_cfg.txt doesn't do anything in this version of the firmware.

@schmttc with your compiled bin file the leveling buttons on the K9 are working. To make some things clear, I use Octoprint to control the printer. With the factory firmware Octoprint can control all functions of the K9. But with your compiled Marlin Firmware only heating the Nozzle and the Bed is working. Moving the X, Y & Z axis does not work.

I would love to the the K9 fully functional with Marlin to make use of the heat bed.

schmttc commented 7 months ago

@schmttc with your compiled bin file the leveling buttons on the K9 are working. To make some things clear, I use Octoprint to control the printer. With the factory firmware Octoprint can control all functions of the K9. But with your compiled Marlin Firmware only heating the Nozzle and the Bed is working. Moving the X, Y & Z axis does not work.

I would love to the the K9 fully functional with Marlin to make use of the heat bed.

If the levelling buttons are working, then the motion steppers are configured OK. I wonder if there is an issue between Octoprint and some setting in the firmware.

@Ajimaru

  1. "Moving the X, Y & Z axis does not work." is this when manually controlling motion with the Octoprint GUI?
  2. Does motion work when running a print job from gcode?
Ajimaru commented 7 months ago

@schmttc with your compiled bin file the leveling buttons on the K9 are working. To make some things clear, I use Octoprint to control the printer. With the factory firmware Octoprint can control all functions of the K9. But with your compiled Marlin Firmware only heating the Nozzle and the Bed is working. Moving the X, Y & Z axis does not work. I would love to the the K9 fully functional with Marlin to make use of the heat bed.

If the levelling buttons are working, then the motion steppers are configured OK. I wonder if there is an issue between Octoprint and some setting in the firmware.

@Ajimaru

1. "Moving the X, Y & Z axis does not work." is this when manually controlling motion with the Octoprint GUI?

2. Does motion work when running a print job from gcode?

@schmttc I have found the rootcause, after update the firmware a file named EEPROM.DAT was created on the SD Card. To use the Marlin firmware an SD Card with this file on it need to inserted.

schmttc commented 7 months ago

@schmttc I have found the rootcause, after update the firmware a file named EEPROM.DAT was created on the SD Card. To use the Marlin firmware an SD Card with this file on it need to inserted.

Thanks for your persistence. I have an outstanding action to implement EEPROM correctly #5

Ajimaru commented 7 months ago

Well I should have a closer look to the closed issues next time. Besides the EEPROM everything is working as expected, thanks for the work.

schmttc commented 6 months ago

@Ajimaru I have enabled the onboard EEPROM and uploaded the new binary to the K9 branch https://github.com/schmttc/EasyThreeD-K7-STM32/commit/9338b4863de90db6eae2fcedd507d36d76772c6b, if you try it please let me know the results

novadaemon1 commented 6 months ago

@Ajimaru I have enabled the onboard EEPROM and uploaded the new binary to the K9 branch 9338b48, if you try it please let me know the results

Just wanted to let you know that the firmware works with the buttons just fine, but it has some quirks. For example, Z axis homing takes way too long and grinds the motor significantly more than stock firmware. Once I figure out all the issues I will let you know.

Ajimaru commented 6 months ago

@Ajimaru I have enabled the onboard EEPROM and uploaded the new binary to the K9 branch 9338b48, if you try it please let me know the results

I can confirm that this firmware is working now with out the EEPROM.DAT file spresent on the SD-Card. I also noticed the grinding noise when the Z-Motor has reached the physical endstop. This behaviour is not present in the stock firmware.

As a request can you please add Host Action Commands ?

JohnTheCoolingFan commented 6 months ago

I also noticed the grinding noise when the Z-Motor has reached the physical endstop.

I have noticed something similar, which is that it twitches when reaches the physical end stop, trying to step further and I think skipping steps/sequences of steps because of that. The original firmware might have had some mechanism to detect when a motor is not moving the axis any further, or they just drive it differently so that it reaches the end smoothly.

Speaking of motors: I have noticed that my motors are heating up a lot even at idle! I didn't test with the stock firmware, though. The screw that holds the cam in place is very hot, as is the bracket that holds down the motor. Is it a common thing in 3d printing? Should I be worried about damage to motors or parts of the printer?

JohnTheCoolingFan commented 6 months ago

Ah, and another note, regarding the main button behavior. Holding it down when printing is in progress doesn't stop the print immediately, but probably stops the queue from filling up, a number of operations sill still execute. The sock firmware stops the print immediately.

Also, after the print is finished, the button is still flashing like it's in printing mode, but it had already finished the routine (homed x and y axes). Holding down the button would stop the print and then revert to the default behavior of moving the print head 1cm up when held down for 3 seconds.

schmttc commented 6 months ago
  1. @Ajimaru I'll get host action commands added to the binary soon.

  2. Can one of you please upload a copy of the original lite_cfg.txt, I have a theory about the homing and heat issues, maybe the vendor has reduced the current, these steppers are only rated for around 250ma and this firmware provides 1A. I didn't notice an issue on the K7 but the steppers are enclosed. Less current means less heat (steppers are always 'on' even when not moving); and less torque so the motor will stall more easily as the end of homing and not crunch as the belt slips.

Regarding button behaviour

  1. The Marlin devs didn't like the hard stop when I merged into mainline, but happy to change it back because it makes more sense and replicates out of box behaviour.
  2. Button still flashing after print sounds like a bug, can fix the state
schmttc commented 6 months ago

@Ajimaru @JohnTheCoolingFan Here's a binary to test with items 1,2 and 3 addressed plus 5. speed increase on Z homing , can you let me know if it works or what doesn't?

  1. needs more time than I have at the moment

mksLite.bin.txt

Ajimaru commented 6 months ago
  1. @Ajimaru I'll get host action commands added to the binary soon.

    1. Can one of you please upload a copy of the original lite_cfg.txt, I have a theory about the homing and heat issues, maybe the vendor has reduced the current, these steppers are only rated for around 250ma and this firmware provides 1A. I didn't notice an issue on the K7 but the steppers are enclosed. Less current means less heat (steppers are always 'on' even when not moving); and less torque so the motor will stall more easily as the end of homing and not crunch as the belt slips.

Regarding button behaviour 3. The Marlin devs didn't like the hard stop when I merged into mainline, but happy to change it back because it makes more sense and replicates out of box behaviour. 4. Button still flashing after print sounds like a bug, can fix the state

@schmttc here is the factory lite_cfg.txt

Ajimaru commented 6 months ago
  1. @Ajimaru I'll get host action commands added to the binary soon.

    1. Can one of you please upload a copy of the original lite_cfg.txt, I have a theory about the homing and heat issues, maybe the vendor has reduced the current, these steppers are only rated for around 250ma and this firmware provides 1A. I didn't notice an issue on the K7 but the steppers are enclosed. Less current means less heat (steppers are always 'on' even when not moving); and less torque so the motor will stall more easily as the end of homing and not crunch as the belt slips.

Regarding button behaviour 3. The Marlin devs didn't like the hard stop when I merged into mainline, but happy to change it back because it makes more sense and replicates out of box behaviour. 4. Button still flashing after print sounds like a bug, can fix the state

I can confirm that 1. & 2. are fixed, good job thank you!

  1. & 4. I can not test because I use Octoprint to control the printer.
schmttc commented 6 months ago

Thanks for the file and confirming the results @Ajimaru

The stepper current is 750/800ma in your config file, and I've reduced it to 500 from 1000, which is still double the rated 200ma so it should be fine. But if you get layer shifting problems or it feels like the printer is skipping steps, we can return it to the default setting.

These changes are in the 'k9-fixes' branch, I'll merge it with ET4000PLUS-K9 once the other changes are confirmed.

JohnTheCoolingFan commented 5 months ago

@Ajimaru @JohnTheCoolingFan Here's a binary to test with items 1,2 and 3 addressed plus 5. speed increase on Z homing , can you let me know if it works or what doesn't? 4. needs more time than I have at the moment

mksLite.bin.txt

Trying out this firmware right now, immediately can say that it is much more quiet, no noise when reaching ends. The motors are not heating up, but I'm wondering how that would affect performance (skipped steps, layer shifts, lesser acceleration, printing speed). I like how fast the printer is with the custom firmware compared to stock. Doing a test print now, will post an update later

schmttc commented 5 months ago

Trying out this firmware right now, immediately can say that it is much more quiet, no noise when reaching ends. The motors are not heating up, but I'm wondering how that would affect performance (skipped steps, layer shifts, lesser acceleration, printing speed). I like how fast the printer is with the custom firmware compared to stock. Doing a test print now, will post an update later mksLite.bin.txt

Here's one with the out of box current settings you can try as well. Let me know if the homing is still smooth and the heat OK, hopefully this is the right balance.

JohnTheCoolingFan commented 5 months ago

The motors heat is OK, getting a bit warm to the touch and just that. I haven't noticed layer shifts or skipped steps, only some backlash in the axes, which can be seen on a benchy, for example, and has been in the printer since day one, just a problem of the design. In the compartment behind the cabin the wall might have a consistent gap between it and the edge of the top surface photo Accounting for that would probably require klipper, but it's not a big issue for my prints.

JohnTheCoolingFan commented 5 months ago

There is an issue with the interface though: holding down the button for 3 seconds while printing stops the print, but after that the printer does not react to the action (trying to move the print head up)

schmttc commented 5 months ago

Thanks @JohnTheCoolingFan

Regarding backlash, you can set backlash compensation in Marlin with M425. The Klipper folk don't do backlash compensation, their stance is that it should be resolved in the hardware, which is not possible with these printers. I use this tower to tune backlash settings https://www.thingiverse.com/thing:2371069

I'll look into the interface issue over the next week or two as I find time, will compile for my K7 so I can test before sending it over. If you want to use this firmware until then I suggest a quick power on/off between prints.

JohnTheCoolingFan commented 5 months ago

@schmttc thanks for the tools for backlash compensation, but I've re-encountered https://github.com/MarlinFirmware/Marlin/issues/23741 when I added the gcode, looks like you had or still have this problem too. 2024-05-26 12-06-47 2024-05-26 12-06-53

JohnTheCoolingFan commented 5 months ago

Ah, this is tracked in #2

JohnTheCoolingFan commented 5 months ago

Update on backlash compensation: I've managed to merge backlashfix into k9-fixes and compile that, which resolved the issue. I have calibrated my printer and now I use a 0.32mm backlash compensation value for all axes, as they are completely identical. I can probably put that into the firmware, but I don't want to do that right now. I still have a problem of seemingly squished first few layers. The circles have become noticeably more round and less square, which is very nice to see. Still, a 3mm hole turned out to be 2.75mm on average.

schmttc commented 5 months ago

Great! Regarding squashed first layers, try adding some start gcode to your slicer that raises the head say 0.2mm (or whatever you determine) And for slightly small/large holes, try tweaking Horizontal Expansion (at least that's what it's called in Cura)

JohnTheCoolingFan commented 5 months ago

Well, getting some pretty consistent layer shifts изображение

JohnTheCoolingFan commented 5 months ago

And regarding squashed first layers, I think I am noticing some scratching on my bed surface, even though I leveled it.

JohnTheCoolingFan commented 5 months ago

And here's the gcode file I've been using: CFFFP_3DBenchy.gcode.txt

schmttc commented 5 months ago

Layer Shift Looking back at #2 , this could be a more complex issue that's not fully resolved.

  1. It's hard to tell where the shifting occurs from that photo, can you change the angle to more side on?
  2. Originally the layer shift was only occurring sometimes, but was linked to acceleration. 100mm/s/s always caused shift, 20mm/s/s always didn't. But for my smaller tests the current code fixed the issue. What acceleration and speed are you using? Have you overridden the max speeds and acceleration in your firmware? Can you provide a link to the current code you're using?
  3. The shift would show up soon for smaller layer - I see you're using 0.1 from your gcode. Can you try 0.2 layers and see if the shift shows up later?
  4. Comparing the code I worked on with Tom and what was merged back into Marlin, he made some changes on his end afterwards https://github.com/MarlinFirmware/Marlin/pull/26392 So it might be worth trying that.

Squashed Layers I think the backlash comp should be pushing the head up not further down; but try adding some start gcode to lift the head by say 0.4mm

JohnTheCoolingFan commented 5 months ago

I've re-leveled the bed at 60C and now trying to print benchy with 0.2mm layer height. The heat from the hotbed causes the bottom plastic bracket to warp! That may be the cause of squashed layers, I'll have to see.

Regarding layer shifts, here is a better picture: image I've already broken the piece up into small pieces for 3d printed waste storage, can't take more pictures. I can probably try with different speed, but only on 0.2mm layers, because even with the current speeds it takes much more time than cura predicts.