Printer geometry limitations?
I am certainly hoping this to not be the case, as everything I thought would work just fine (hell inventor could calculate the correct carriage positions!)
So what I've got is a bit of a long carriage to reduce the length of the delta arms. This of course means there has to be acute angles under the carriage to reach the full radius. Delta radius seems to subtract the carriage length and effector offsets from the printer radius, making me believe my design won't work with repetiier (and likely not any firmware out there). Is this the case? Do I have to get into the code to make my printer work! I knew I was in for a world of pain when I looked at the highway leading to 3d printer city and decided to veer off into the dirt to get there instead, but I didn't expect this level of work. Is there something I'm missing?
So what I've got is a bit of a long carriage to reduce the length of the delta arms. This of course means there has to be acute angles under the carriage to reach the full radius. Delta radius seems to subtract the carriage length and effector offsets from the printer radius, making me believe my design won't work with repetiier (and likely not any firmware out there). Is this the case? Do I have to get into the code to make my printer work! I knew I was in for a world of pain when I looked at the highway leading to 3d printer city and decided to veer off into the dirt to get there instead, but I didn't expect this level of work. Is there something I'm missing?
Comments
Hmmm going through the code I'm becoming more convinced of the limitation. To put it another way, I need my effector to be able to be beneath and "behind" the carriage. The carriage is long, static. The radius calculated is just the horizontal area under the rods. I think I'm going to try overriding the whole thing and just setting it to what it should be given my setup and see if the rest of the math still works, but I'm not sure. I'm adding some debug output to my printer to see if my understanding of the whole thing is correct. I thought there used to be some good discussions about the variables, and how they were used, but it seems the search engines have been flooded with calibration procedures based on shoddy builds using endstops to correct for it. Mine should be within .2mm everywhere in the worst case. Just releveled the bed to be sure and its now to within 0.04mm. I'm not a fan of adjusting the endstops, and I don't think that's the problem here anyhow!
I just had to dig into the code and see whats going on. I had actually thought there was more to the code than there is. That's not to say its simple by any means, especially considering the wide range of printers supported.....I do kinda want to try and refactor some stuff and check the performance...ifdefs are great for performance, but annoying to read. I'm a programmer for performance first, optimizing assembly code when necessary sacrificing all sorts of readability, but I do appreciate readability Anyhow, I'm pretty sure I have it 100% now, and its much less a deal than I thought it was!
I want a concise post, and one for people doing their own printers also stuck, but there's a lot to go over for a custom printer. So I may end up doing a writeup somewhere later on the gotcha's of going way off the beaten path! What I'll say is the delta_radius variable has nothing to do with the radius of the printer. Its used as a radius in calculating moves. So don't be shocked to see delta_radius (rod_radius) doesn't line up with anything on the printer itself! If you add the effector radius back in, then it will line up with the center of rotation of the rods at the carriage point, but only then will it appear as a radius related to anything on the printer itself. Calling it a radius makes sense when its used in calculations, but I for one, would much rather the word radius be totally removed from the configuration end of things since I know I thought it had to be lined up with the center of the printer! But I digress....
What is it? Basically, its just used to precalculate some values to make move calculations easier. As was said, its just simple Pythagorean theorem stuff. The quick version is that all positions can be thought of in a lot of ways. Most convenient for the math of a delta printer is to think of it as a vector from 0,0,0. With the effector at 0,0,0 the rods make a really simple right triangle, delta_radius is the straight line distance from the center of rotation of the rod at the carriage to the center of rotation of the rod at the effector platform. In other words, looking down at the top of the printer, cast it to 2 dimensions, the length of the line that is the rod plus its pivots is the "delta or rod radius". With that distance, and the hypotenuse distance, finding the distance of the other leg is pretty simple. Its a radius because we're working in 3D and each tower has input into the x, y, and x positions of the platform, so you have to think of it as points on a circle. Regardless, short answer is, don't think of it as anything practical on the printer. Its not centered. with the printer radius, it doesn't let you see the printable area, or anything of the sort. Its supposed to be the easiest thing to measure to get enough of a triangle to perform calculations on. (Remember good old geometry, you need ASA, SAS, SSS, or Hypotenuse, leg (Which is really SAS since one angle is 90) for congruence? Well, congruence also means you can calculate the missing numbers of the triangle, its the minimum set of information to define a triangle. So you can take your pick on what you want to measure, but unless you have some super ludicrously accurate means of measuring the angles, I suggest staying away from the angle versions!) The pictures don't do a particularly good job illustrating this, because too many things overlap on most printer designs. (it works well if you use the linear motion components everyone else uses!) Perhaps I'll attempt to draw up a better picture to use in the configurator So, if you're like me, trying to get some whacko design working, don't worry about the delta radius too much. Chances are you already have the design in cad and can get a pretty good idea of what it should be measuring the horizontal distance the rods cover. Just remember, its not the "rod" length, its the length of the rods to the center of rotation. In my case, using magnetic joints where the magnets are in the rod, and the balls are screwed into studs on the effector and the platform, the center of rotation is the centers of the balls. At least, this seems to be relatively accurate.
As I said, when I actually get everything working, I'll do a writeup about it somewhere and try and cover the gotchas in doing something very different from everyone else. I'll see if I can't make a more informative graphic for the configurator, while not adding any more confusion as well. I'll know if it all works soon, but I have to level my bed. Turns out, the insulation I used, ceramic fiber paper with rigidizer, isn't the most level of insulation. Since I don't have anything for z probing yet (I have the load cell, but I'm using a heated bed, so I don't want to do it the way deltas are doing it now with an FSR under the bed.) I'm planning on going to the older retractable z probe route once I can get decent accuracy leveling the old fashioned way, so I can print out the parts to hold/retract the load cell.