@inventabuild: Based on your first-post photo, and your description, you probably will best solve this by manually iterating through the process of moving the firmware positions of your X and Y towers around the center point of the machine (that is, based on your print results it appears they aren't exactly 120 degrees apart as the firmware expects). You must have patience, because this is a very manual and lengthy process.
Warning: Textbook to follow
I just-last-night fixed this type of issue on my machine using the described process, as a Z-probe wasn't helping. It (z-probe) is not the cure-all it is claimed to be. Certain methods (I think the current development branch of Repetier - 0.90alpha - and at least one other still-in-development Marlin branch) being worked on will perform an automated 4-point calibration and determine your printer radius which should be enough for most. Another z-probe implementation (Johann's Marlin deltabot branch) assumes you have a good calibration and then probes many points of the build surface, correcting for any flatness errors that it measures throughout the print; it doesn't adjust the DELTA_RADIUS.
*Neither* method will help if your tower positions are incorrect in the firmware.
"What the hell is he talking about?," you say? It's hidden in Repetier firmware (not in Configuration.h but in Reptier.h) so most MAX owners won't have seen it, but it's plainly obvious in the Marlin Configuration.h. All three towers are #defined similar to this (this is the X-tower):
Code: Select all
#SIN_60 (actual decimal value for sin(60deg) here)
#COS_60 (you get the point)
#DELTA_TOWER1_X -SIN_60*DELTA_RADIUS
#DELTA_TOWER1_Y -COS_60*DELTA_RADIUS
...and so on for all three towers. These TOWER_{1,2,3}_{X,Y} values are precomputed before compilation of the firmware to save time when performing the Delta conversion later, as that calculation involves a lot of squares and square-roots and is very taxing on the CPU (this is why some of us are looking forward to 32-bit ARM based controllers for Deltas, allowing much faster computation of the Delta positions with higher resolution == smoother motions; it really is amazing so much is squeezed out of these 8-bit micros...).
So you can see that it is possible to "move" the towers. On my machine I had measured and verified distances so many times that I thought that there was no way my towers weren't all 120 degrees apart. But, after getting a perfect 4-point calibration, I had good height opposite the Z-tower, a bit high opposite the X-tower, and that same amount low opposite the Y-tower. From what I've learned elsewhere on the Delta-related interwebz, this meant that my Z-tower needed to move CCW (along the radius toward the low spot).
INTERMISSION....
Ok. I started small and changed the Z-tower position (in Marlin it's DELTA_TOWER3_{X,Y}) by 0.2 degrees CCW. They then looked something like this (the sin/cos values aren't correct for 0.2 degrees, just an example):
Code: Select all
#define DELTA_TOWER3_X -0.00750484533293*DELTA_RADIUS // back middle tower
#define DELTA_TOWER3_Y 0.999971838252*DELTA_RADIUS
instead of this:
Code: Select all
#define DELTA_TOWER3_X 0 // back middle tower
#define DELTA_TOWER3_Y DELTA_RADIUS
What do you know!? After re-adjusting the end-stops, the point opposite the Z-tower stayed mostly the same, the high point opposite X came down some and the point opposite Y came up an equal amount. You can think of the effects like this: by moving the location of the Z-tower closer to the low point, when the processor needs to compute the Z carriage position, given that the arm length hasn't changed, it will need to be higher up the tower in order to reach the same Cartesian Z-height. The opposite logic works for the high point on the other side.
I then increased the CCW shift until after several iterations I settled on 0.43 degrees CCW, where the two points were now consistent with the 4-point calibration. Unfortunately now the point opposite the Z-tower was low, so what now?
I needed to move the Z-tower in a radial direction away from the center. Radial movement most directly influences the point opposite the tower. If it's low, the tower needs to increase its radial distance. If it's high, decrease.
A few more calibration iterations and I've settled on this for my Z-tower position, and things are, dare I say, PERFECT!
Code: Select all
#define DELTA_TOWER3_X -0.00750484533293*(DELTA_RADIUS+0.15) // back middle tower (0.43 deg CCW)
#define DELTA_TOWER3_Y 0.999971838252*(DELTA_RADIUS+0.15)
I have small imperfections in the flat movement, but this is something that I'm quite sure the Marlin version of auto-leveling will solve. I always use a 0.1 mm feeler gauge for calibration, and now I can move to anywhere at Z0.1 and get contact with the gauge. Some spots are a bit more pressure, some less. But really damn good. I still haven't completely reconciled this with regards to the actual physical dimensions of my machine, that is to say I'm not quite sure yet if the firmware now matches the machine, because my physical measurements (with very large dial calipers) don't necessarily agree.
Note: This tower position is unique to my machine. DO NOT blindly copy it into your source files.
Most of my understanding of this process came from this thread, specifically the linked post:
http://forums.reprap.org/read.php?178,2 ... msg-238009 (well, the post specific link doesn't seem to work; it's about half way down the thread by the user 'hercek') The 'edwardh' user in that thread is me. I'm currently trying to get the hercek's offline calibration code running out of curiosity. I guess I want to know if the math will confirm my tower positions, and because I like using computer tools to solve my problems (if only there was a DE solver for women...).
Back to inventabuild's photo
Based on what I see, you probably could try to "move" your X and Y towers in equal angular distances toward the low spots. That is, in the orientation of your photo, tower X should move CW and tower Y should move CCW. I would guess less than half of a degree each. Since your problem spots aren't directly across from a tower I would try this first, incrementally. Start with 0.1 degrees each and see what happens. This is why I use feeler gauges, because I can keep referencing the same point and by finding the correct gauge, determine the exact effect of the parameter change.
This method is probably also not a cure-all, because, well, it's just not easy (intuitive might be better). Only at the beginning of last week I was ready to throw my printer off the roof, or shoot it, burn it, or other horrible things. Then yesterday (Sunday) I had some kind of epiphany regarding the Delta configuration, where these adjustments just made sense. Trust me, a Z-probe won't magically fix things if your geometry is bad. I tried that and proved myself wrong. I don't necessarily recommend that everyone just start moving their firmware tower positions, but if you really feel that *everything* else is in check, you might give it a try. I mean EVERYTHING. Check that your arm pairs are truly parallel. Ensure that the towers are perpendicular. Be very particular when calibrating the end stops and adjusting the DELTA_RADIUS, etc., etc., etc.
It's also quite likely that if you attempt this it will make things worse because, again, the delta configuration is not as intuitive as a Cartesian machine. If it were, I suppose we wouldn't be having this discussion.
Because this issue was so similar to what I experienced, I wanted to vocalize that there are more methods for "tuning" these machines beyond the end stops and the DELTA_RADIUS.
Lastly, I'm traveling through late Thursday night (10/3), so my responses might be somewhat slow. That's why I elaborated quite a bit, hoping to be clear enough as to not require too many immediate follow-up posts. Ask away, though. I'll do my best to answer
Edit: Fixed some tupos.