gcode everywhere... a user friendly approach to config?
-
Many thanks for the replies and well wishes. The forum is great. I couldn't have got as far as I did without it, no doubt about that at all, so many thanks to all.
My comments are not meant as a criticism of the Duet board, I'm just wondering if there is a better way to help users who may not have all the technical specs of their machine get a working system up and running.
I feel what might help a lot of users coming to the Duet eco-system is perhaps a repository of template config.g plus homing files for various printers. I totally get that everyone here is likely to have customised the heck out of their printer, but there might still be some common elements that could be of use.
For example, I'm starting to wonder if my z stepper values are correct. The IR z probe returns different z offsets each time I try to calibrate it, I don't know why. I don't know if the mesh bed compensation is correct, it's different each time I run it. The first layer is always wrong and it's hard to know where to start.
Personally, I think it would be a help to me if there were a repository that contained someone else's K8400 config files for a Duet, even if (like me) their printer was a long way from how it was originally built, there might still be something of value in there that could help me debug issues with my printer. Perhaps there could be a repository of K8400 type printers, e.g. Cartesian bowden set ups...
Yes, the RRF config tool is fine. But even that can be daunting - how do you know if your endstop is high or low type? Is your stepper going forward or backwards? What are the right acceleration rates, max speed, etc? If you have a common printer, you'll probably get dig this stuff up pretty easily online.
If you don't, you can be stuck with a mystifying black box of tricks and a thousand ways to misconfigure it!
-
I think you have very valid points all around. The experience of a neophyte user can be rather daunting. It's difficult to tailor something as complex as RRF and the Duet to all skill levels. The power and flexibility it offers kind of targets it towards more advanced users, but it's not impossible to pick up.
A repository of configs would be helpful. The documentation tries to go through the general setup of each machine type, cartesian, corexy, delta, etc but it doesn't account for the particular quirks of each individual design. Perhaps you can be the first to contribute for the K8400? I think there was an attempt to gather some example configs at some point, but the trouble with that is they get frozen in time. The firmware is always evolving and a config for a printer 2 years ago will be a bit stale if used with a current firmware. Rapid feature development is a double edged sword.
The configurator is a starting point but not perfect. I was in the same boat as you when I started. I had no idea what motor direction or endstop type to choose, etc. But that just forced me to learn the difference and how the firmware treated each type. Commissioning a printer from scratch on RAMPS and Marlin would have similar pitfalls. At some point you need to know the mechanical and electrical specifics of your printer in order to tell the firmware how to operate. And sometimes that requires trial and error.
-
@biscuitlad said in gcode everywhere... a user friendly approach to config?:
The IR z probe returns different z offsets each time I try to calibrate it, I don't know why. I don't know if the mesh bed compensation is correct, it's different each time I run it.
What bed surface are you using? If by "IR sensor" you mean the mini differential one from me or Duet3d, it works well with some surfaces, not so well with others. If you post a screenshot of your height map, I should be able to tell whether compatibility between the sensor and bed surface is likely to be part of the problem.
-
For many of the values, I looked at the known values from the Repetier Firmware or Marlin Firmware available for my printer.
Things like the axis steps/mm values, endstop configuration etc can easily be checked manually:
Endstops (2-wire micro-switches): If possible, using a multi-meter check the continuity of the 2 wires and trigger it. If the multi-meter get continuity prior to the trigger, it is Normally Closed (which is better than Normally Open). Connect the endstops between Ground and the Signal and ensure the Endstop is configured for Active HIGH (this way, if the endstop is disconnected, it is read as triggered since the Duet will use a Pull-up Resistor to keep it high; unless it is actively pulled Low by a direct connection to ground, it is triggered). If yours is Normally Open, the same 2 pins is used (Ground and Endstop), but you configure it to be Active LOW - since only when triggered, will the endstop be pulled LOW (to ground). More details at https://duet3d.dozuki.com/Wiki/Connecting_endstop_switches
Steps/mm: For a Belt System, you need the number of teeth on the pulley, the belt pitch (so far I have came across GT2 [2mm] and MXL [0.08" / 2.03mm]; but others also exist and are used). You also need to know the number of full-steps/rotation from your stepper motor (usually found by a Google search for the stepper model number; also possible to use the number of microsteps/mm at a specific microstepping level [usually 16x]). The configuration tool can calculate what you need from this information.
Motor Currents: If you get the motor information, this will be in the datasheet (though it is a good idea to calculate an 80-90% of the rated and use that).
Motor Going Backwards? This is one of the things one should test and then change if needed: 1 got my head in the center of the build volume (around 50% in all axis), then command a single move at a time for a short distance (use the S2 option on these moves, for example "G1 X10 S2" to ensure it will move even though it is not homed). If it moves in the correct direction, it is correctly configured; if it moves in the wrong direction, invert its direction (Drive 0 is X; then Y and Z; finally P3 is E0, and if used, P4 is E1 - on standard Cartesian) by changing the Sn value between 0 and 1 for the M569 (for example "M569 P1 S0" makes the Y motor move inverted). It is also possible to invert the motor by changing the order of the 4 wires leading to it.
Acceleration rates: If you can find them in previous firmware, that is a good starting point; if not, start conservative and build up from there. The heavier the head (like a Direct Extruder), the lower your acceleration needs to be, otherwise it may skip steps on starting and stopping.
Maximum speed, once again a heavier head will need lower speeds, otherwise ringing may be caused. If found in firmware use that as a basis. Your head type also have a limit (MK10 heads, for example can only do about 60mm/s sustained; so limiting the printer a bit higher, like 100mm/s is good). Your voltage plays a role (due to Back EMF) - more information on https://duet3d.dozuki.com/Wiki/Choosing_and_connecting_stepper_motors (How to work out the power supply voltage you need; they have a spreadsheet to calculate an absolute maximum).
Look for "3d printer k8400 firmware" I found a few places that posted firmware, and from there (https://github.com/birkett/Vertex-K8400-Firmware/blob/velleman-official/Marlin/Configuration.h)
- Maximum Speed (called XY_TRAVEL_SPEED): 6000 mm/min (or 100mm/s)
- Acceleration (called DEFAULT_ACCELERATION): 6000 mm/s^2
- Jerks (XY, Z): 10, 0.5
- Motor Directions: X and Z is inverted (note that how you connect them to the connectors will also affect this).
- Endstops: X and Y is at MAX, and Z is at MIN (unless you changed its locations). I could not find if endstops are Normally Open or Normally Closed.
- Steps/mm (possibly 32x due to DRV8825; X, Y, Z, E0): 134.74, 134.74, 4266.66, 200
-
@dc42 I'm away on holiday next week, but when I get back I will happily do this. It's the original black buildtak supplied by Velleman.
-
@biscuitlad From the buildtak I've seen it seems to have a bit of a reflective shine to it. Perhaps it is scattering the IR light? To test, could you place a sheet of paper on top of the buildtak and try homing and probing again?
Enjoy your holiday!
-
Sorry you are frustrated, but for me (coming from Smoothie and previously from Marlin) the gcode method was a refreshing breath of fresh air. The forum responses are also a breath of fresh air from what I percieve as arrogance on the Smoothie side. Anyway, I'm sure the fine folks here can help you get your machine going.
-
@jacotheron said in gcode everywhere... a user friendly approach to config?:
What helped me the most, was the Configuration Tool (https://configurator.reprapfirmware.org/ - just note its SSL certificate expired very recently [admins, can you perhaps go take a look]).
Thanks for reporting this, It is renewed now. Odd that Let's Encrypt did not auto renew as it was set to.
-
@T3P3Tony Thought it may just have been a simple cause. Thanks.
-
@jacotheron said in gcode everywhere... a user friendly approach to config?:
- Endstops: X and Y is at MAX, and Z is at MIN (unless you changed its locations). I could not find if endstops are Normally Open or Normally Closed.
According to the config you linked they are Normally Open:
// The pullups are needed if you directly connect a mechanical endswitch between the signal and ground pins. const bool X_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop. const bool Y_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop. const bool Z_MIN_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop. const bool X_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop. const bool Y_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop. const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
Having these set to
false
means Normally Closed andtrue
stands for Normally Open. This get's a bit clearer in the original Marlin comment of this part// Mechanical endstop with COM to ground and NC to Signal uses "false" here (most common setup).
How to proceed from here
My personal recommendation on this topic would be to start from scratch regarding your
config.g
and other files. Create a fresh set using the Configuration Tool using the values you can find in the Marlin config as already posted by @Jacotheron above. If anything is missing or you cannot find a value yourself, just ask here we have kind of 24/7 support here.It seems to me that somewhere on your - sadly - bumpy way you took a wrong turn and never found back but just found more places to do wrong turns. When something is as wrong as you described your setup it is time to start fresh IMHO.
But as others already stated, we are happy to help here.