The X-axis I bent was on the E3D toolchanger. It has a very heavy cantilever bed design and just a single z stepper. The stock bed was PCB and glass and it was a potato chip. So I had a custom Alu plate made which made it even heavier. It couldnāt do 5mm/s because the stepper would de-sync. I believe it was limited to 2 or 3mm/s.
So I modified the z axis with a balls screw, a larger stepper motor and a belt reduction. The ball screw had a steeper pitch than the lead screw (so less mechanical advantage) but it was a lot smoother. This also means it was easier to apply torque at lower speeds, since there was less friction.
You tune the stepper current to achieve axis performance, not to prevent crashes. The user shouldnāt crash the machine, but we know they will, so we try to prevent that as much as possible. E.g. in commercial CNC they have load monitors on the spindles that will E-stop the machine if it gets too high.
Changing current for probing isnāt really practical for a couple of reasons:
- itās slow, the drivers take time to switch, the messages take time to send etc. People that want to āgo fastā would just turn it off. So even if it existed we couldnāt assume it was on.
- The Z probing direction of travel might be up, in which case you donāt have gravity helping you and you want all the current anyway. You usually need peak current to accelerate the axis against gravity.
Klipper Philosophy
Making assumptions about the physical printer is risky. This is worse in the case of Klipper where we donāt own the hardware. In a complete product you might assume physical characteristics because they are known for that product. But Klipper is used so widely in so many different machines you cant make assumptions. If you are going to make assumptions about the underlying system the best you can do is expose that to users in the config and ask that they specify them.
Klipper has lots of code around accommodating for less than ideal systems and environmental conditions. There is lots of retrying, de-bouncing, polling, validating and timeouts going on. The code is written from the point of view that everything is broken or might become broken at some point. āassuming an ideal printerā is not how it works.
The config system lets you defeat almost all of these safety systems, either to make them tighter or to turn them off.
Itās a system that lets hobbyists and commercial vendors alike build printers. As such it has to take into account a LOT of different things these different groups do. It also has to account for the different skill levels of each. The documentation is largely for hobbyists. Manufacturers are more able to have someone on staff to read code and to design a test campaign for their printers.
And then or course there is development of new features. Manufacturers can just change the code. Some devs are just hobbyists and would be really upset if they broke their only working printer. We even have to think about what happens when there are bugs in a subsystem. e.g this discussion, we are going to implement a watchdog sytstem in trsync
so we donāt trust the sensors to work correctly. One of the ways they donāt work correctly is when you develop a new sensor driver and have a bug, ask me how I know.
Load Cell Probing
Iām asking for the calibration of the load cell so I donāt make any assumptions about:
- the sensorās scale
- the magnitude of the noise
- the load cellās āsizeā
- your physical printerās kinematics
- what is too much force for your printer
Basic assumptions like these have all proven to be false over time in various printers:
- The tare value is constant or near constant
- Noise will be less than the trigger force
- Any significant force is easily differentiable from noise
- 1 gram is more than 1 sensor count
- Force will be applied linearly
- Anywhere you probe will have the same results
- ESD wont zap the sensor and restart it multiple times a second
- The noise level wont drastically change between probes. Like say when someone rests a hand on the printers enclosureā¦
In short, I assume your machine is a total turd
until you prove otherwise. You can lie about it to the config if you want to.