Setting up Replicape for Deltas
Before I start this tutorial, one very important detail to know before you start stripping wires and cranking on your Delta is:
X-axis in the back Y-axis to the left Z-axis to the right
Get this wrong, and you'll be chasing your tail for a while! So look at it one more time!!
X-axis in the back Y-axis to the left Z-axis to the right
Got it? OK! Let's get started!
My goal here is to give a quick rundown of how to get your Delta moving correctly, homing, and then autocalibrated... If you need help with wiring, WiFi, SSH'ing into your BBB, or generally linking your printer with Octoprint there is plenty of documentation within the Wiki, and we also have plenty of skilled guys over at: Slack and Google+ to offer help. I also suggest you take some time to look over all of the G/MCodes and Redeem in general over at http://wiki.thing-printer.com/index.php?title=Redeem
OK, so you have your towers figured out? Good.. and you've wired everything up to the best of your knowledge? Great! Your printer is connected to Octoprint? Fantastic!
Ok, let's wrap our brains around the Profile Configurations which are located in <Settings> <Redeem Plugin> These guys are what tells Redeem (the software) everything it needs to know about your printer. At the bottom you'll see Default.cfg... Click on the little eyeball and check out all of the commands in that file. This configuration contains all of the necessary commands that tells the software the size of the printer, how much power to send to your steppers, how fast it can move, and how slow, just to name a few... Ok, close that window... above Default.cfg, you'll see Printer.cfg... these particular configurations are tweaked for specific printers, and whatever is written to this configuration will override the commands within the Default.cfg... you with me so far? Excellent! Beers for everyone! Wait, we're not finished yet! You may have noticed that you can't make any changes to those two configurations, and that's a good thing, let me tell you! "Default.cfg" lives up to it's name and has a full list of the available commands for your printer... when the time comes, you can copy/paste those commands to your "Local.cfg" and tweak those commands to suit your printer.
OK... if you have a typical off the shelf delta printer like a Kossel Mini, you're in luck! Look for Kossel Mini in the list of configurations under Printer.cfg and make it your default configuration by clicking the star symbol... things should be very close up to this point... but before we go printing, let's talk a little more about that profile up top called "local.cfg"... What? There's nothing in that file? You're right! Something must be wrong... Let me find that toll free hot-line... Just kidding... this is where you, yes, you get to make changes to the configuration... and this configuration overrides the Printer.cfg, and the Default.cfg, so make sure you're not too pickled while you're dealing with this config! So does all of that make sense? The "hierarchy" Local.cfg > Printer.cfg > Default.cfg...
OK... let's get to the fun stuff!
So let's say you're the adventurous type, and you've built yourself an oversized custom delta... 300mm bed, 1M tall...
Before we open up the local.cfg, lets go to "Terminal" tab in Octoprint and make sure your XYZ endstops are wired correctly... Remembering the tower positions of XYZ up above, you should see a notification pop up in the terminal when you manually push the endstops... "X1 Endstop hit" "Y1 Endstop hit" "Z1 Endstop Hit"... if you see this notification for each endstop, then great! We're on the right track. If not, we're going to fix them in the [Endstop] section of your local.cfg... if they don't work after that, then you may have wired them incorrectly!
Let's open up our local.cfg file in Octoprint and start from the top with what you will need to enter initially... Do not copy/paste anything within parentheses... these are only explanations...
[Geometry] axis_config = 3 (The 3 here means that we are using a Delta printer... 0 would be used for normal Cartesian)
[Steppers] microstepping_x = 3 (The 3 here means we are microstepping at 1/4 steps for each stepper...) microstepping_y = 3 (Microstepping is explained here: http://wiki.thing-printer.com/index.php?title=Redeem#Microstepping ) microstepping_z = 3 microstepping_e = 3 current_x = 0.5 (This setting is 0.5 amps... anything above this will require cooling and the addition of heat sinks...) current_y = 0.5 (I would highly recommend adding heatsinks to the stepper drivers and a fan for cooling the board...) current_z = 0.5 (There will probably come a time when you need more current, which requires mandatory cooling...) current_e = 0.5 steps_pr_mm_x = 5.0 (This should get you in the ballpark with 1.8 degree steppers...) steps_pr_mm_y = 5.0 (When the time comes, you will need to calibrate your X, Y, and Z for accurate prints) steps_pr_mm_z = 5.0 steps_pr_mm_e = 6.0 (You will need to calibrate your steps here... see: https://toms3d.org/2014/04/06/3d-printing-guides-calibrating-your-extruder/ ) in_use_x = True (By adding "True" here, it means that you do have a stepper in use for this axis...) in_use_y = True in_use_z = True in_use_e = True direction_x = 1 (You can change direction of your steppers by entering -1 but I suggest when you) direction_y = 1 (wire your steppers, have them all connected to the Replicape so that they are all) direction_z = 1 (wired and connected identically http://wiki.thing-printer.com/index.php?title=Replicape_rev_B#Steppers )
[Endstops] has_x = True (Chances are, you have an endstop for each of these axes... therefore "True"!) has_y = True has_z = True end_stop_x1_stops = x_cw (Most deltas will have the endstop stopping the cw rotation of your stepper... end_stop_y1_stops = y_cw (but if yours is different, change it to "ccw"... I also suggest having all of your steppers) end_stop_z1_stops = z_cw (rotating in the same direction... things get confusing otherwise) soft_end_stop_min_x = -0.150 (Since X0 and Y0 are in the center, you'll use a negative radius for minimum X and Y,) soft_end_stop_min_y = -0.150 soft_end_stop_max_x = 0.150 (And a positive radius for your maximum X and Y...) soft_end_stop_max_y = 0.150 invert_x1 = False (Remembering your X,Y,Z tower positions mentioned above... if everything was working, then we can leave) invert_y1 = False (these as "False... If you weren't receiving the "Endstop hit" notifications, then change this to "True"... save your) invert_z1 = False (local.cfg, restart Redeem, and check them again manually...)
Ok... back to Endstops... if you had the "Endstop hit" notifications in your Terminal then you can move on to the next step... however, if you didn't get the notifications, change the "invert_x1/y1/z1 =" from "False" to "True" and check the Terminal again for the notifications after restarting Redeem.
At this point, you should be able to save your changes in the local.cfg, restart Redeem, and at least get movement from your machine... once you're reconnected to Octoprint, go to your Terminal tab and enter M18 (to disengage your steppers). Physically move your printhead so that your carriages are at about half the distance to your endstops. The software is going to think you're Z axis is at "0", so enter G1 Z20 and see if all three motors are raising the carriages. If any of your carriages are moving down, then I suggest physically flipping the plug connecting that stepper to the Replicape. To be safe, power down the machine beforehand... remove the plug, flip it 180°, and plug it back in. Do this for any steppers that were not moving upwards. Once finished, power up your machine and check the movement again just like before.
If your machine was working correctly, then you're ready to move on to the next step!!
Checking Your Endstops
OK... if your machine is moving as it should, let's open up the Terminal once more and enter M18 again to disengage the steppers. Physically move the printhead near bottom center and then enter "G92 Z0"... this will zero your Z axis so we can use the next command... now enter "G1 Z75 F1000"... this should be enough movement at a slow enough speed for you to physically press the endstop switches before it stops. Theoretically with our current local.cfg, there shouldn't be a problem, and I need to investigate further before going much further with suggestions if they aren't... I'd say refer to this section of the original wiki: http://wiki.thing-printer.com/index.php?title=Redeem#Steppers ... if your endstops are working correctly, then let's move on!
If you've made it this far, then congratulations! The easy stuff is basically finished... Now we need to get your delta to home properly. Let's start by adding a [Homing] section to your local.cfg
[Homing] home_x = 0.0 (Home is at center X) home_y = 0.0 (Home is at center Y) home_z = 0.200 (This homes Z towards the top... once you have your endstop offsets, we'll change this number to pull off of the endstops) home_e = 0.0 (Homes extruder to 0) home_speed_x = 0.08 (This moves your stepper at 80mm/s during the homing routine) home_speed_y = 0.08 (I suggest homing XYZ at the same speed) home_speed_z = 0.08 home_speed_e = 0.01
With this particular [Homing] set up, if you enter "G28" at the Terminal, your carriages should move up until they hit the endstops. It will think your endstops are at 200mm from the bed until you have your "endstop offsets" set up... we'll get into that later. I've set this number to 0.200 in hopes to keep you from accidentally smashing your hotend into your bed. If you want, try entering "G1 Z100" then "G1 Z50"... Your tip should be a safe distance from the bed, so I suggest continuing by using the Octoprint Control Panel to move the tip down by 10mm and on to 1mm and 0.1mm until it's just above the bed by 1mm or so. Once it's there, you can go to the Terminal in Octoprint and enter "M114" to get the position of your Z axis... change the negative to positive and add that number to 0.200... you now know approximately what your total height between your bed and endstops is. You can enter this new number as your "home_z" in the [Homing] section of your local.cfg for now. Don't forget to restart Redeem after making any changes to the local.cfg. If you'd like to check your new "home_z" entry, you can home (G28) your printer and try moving the print head again in small moves towards the bed until you get to "G1 Z0"... if we did it correctly, you should be right above the bed by 1mm or so. Good job!
Before we go any further, you need to make sure you have a working Z2 endstop. This endstop will stop your nozzle from crashing into your build plate, and also allow you to autocalibrate your delta. There are a few options for adding a Z2 endstop... BLTouch, FSR system, a servo with a switch, etc... I won't go into detail with "how-to's" on installing these systems... if you already have a probing system, then great! We can continue! If not, then do some research and come back ;-)
- Just like the previous endstops, you may need to change the invert_Z2 = False to True if you don't get the endstop hit message in your terminal.
- Here is a link that explains how to set up a BLTouch: BLTouch
- FSR's are usually set up just like one of the endstops above. FSR Kit @ Ultibots
- With FSR's, one option is to physically hold the FSR and allow it to get squeezed between your hotend and bed... whatever the case, use caution not to drive your hotend through your bed! We take no responsibilty!
- One more quick note... If you're using a JohnSL FSR system, I'm pretty sure you'll need to use a jumper on the NO pins for it to work properly with the Replicape. Make sure to connect your FSR to the Z2 Endstop connection of your Replicape...
- In your local.cfg , go down to the [Endstop] section and add the following command there... this will be the opposite of your Z1 command
end_stop_z2_stops = x_ccw,y_ccw,z_ccw
Adjusting Your Z2-Probe Gap
If you are using a BLTouch sensor, you need to run a G34 before doing the autocalibration.
First carefully place your nozzle's tip at Z0 (X0,Y0)
Next, punch G34 into your Terminal.
The extruder should lift up, the BLTouch probe should drop down, and then the extruder will lower until the BLTouch sensor is tripped.
Now the printer knows the distance between the tip of your nozzle and the tip of your BLTouch sensor!
OK, we're doing great, but we're still not ready to print. There are a few more very important steps to take before your delta will be anywhere close to being able to print successfully. At this point we need to get into calibrating your delta.
Just like the other endstops, once you've restarted Redeem, let's go to the Terminal within Octoprint and make sure we see the notification "Z2 Endstop Hit" while pressing the FSR... if you see the notification, then hopefully we have everything connected properly. Home your Z-axis to the top, and enter "G1 Z50"... while it's heading down, press on the FSR and see if the printhead stops moving. If it does, then we're in good shape! Theoretically with our configuration so far, it should work. If it's not working, check your wiring, and you can enter "M574" in the Terminal to make sure your endstops are activated.
If your probing system is working properly, then we're ready to Autocalibrate your machine! The first thing we need to do is go into the Terminal and use the G29C command to generate a circular probing pattern. We also need to give the machine some information so it can properly set this pattern for us. Here's a breakdown of how to use G29C from http://wiki.thing-printer.com/index.php?title=Redeem#G29:_Probe_the_bed_at_specified_points :
Generate a circular G29 Probing pattern D = bed_diameter_mm, default: 140 C = Circles, default = 2 P = points_pr_circle, default: 8 S = probe_start_height, default: 6.0 Z = add_zero, default = 1 K = probe_speed, default: 3000.0
Here's what I suggest for a 300mm bed:
"G29C D250 C2 P8 S15 Z1 K1500" Don't include the parentheses of course...
This will give you slightly longer and slower moves, and it keeps the probe from getting to far to the edges. Once you've run this routine, you're going to see a new section added to your local.cfg called [Macros] and your new G29 routine will be in this section.
Now that you have the routine in place, we need to add two more small macros to your [Macros] section in order for the autocalibration routine to work properly... what I'm offering here is specific to the JohnSL FSR system, so you may need to figure this out for your system.
Add the following to your [Macros]:
G32 = M574 Z2 x_ccw,y_ccw,z_ccw ; Enable FSR System. G31 = M574 Z2 ; Disable FSR System.
This can go above or below the G29 routine. These two macros are used within the G29 routine to enable and disable your FSR system.
Once all of this information is entered in the local.cfg, you're ready to run your autocalibration command! Of course you'll need to restart Redeem, and once everything is ready, just go to the Terminal and you're ready to use the "G33" autocalibration tool!
The G33 autocalibration routine probes the points defined in your G29 macro and then performs a linear least squares optimization to minimize the regression residuals.
Fn Number of factors to optimize: 3 factors (endstop corrections only) 4 factors (endstop corrections and delta radius) (Default and recommended) 6 factors (endstop corrections, delta radius, and two tower angular position corrections) 8 factors (endstop corrections, delta radius, two tower angular position corrections, and two tower radial position corrections) 9 factors (endstop corrections, delta radius, two tower angular position corrections, two tower radial position corrections, and diagonal arm length) S Do NOT update the printer configuration. P Print the calculated variables
"G33 F3" will only correct your endstop values... "G33 F9" will correct values for everything... * Adding S at the end (G33 F3 S) will only simulate the autocalibration routine and not update the values.. * Adding P at the end (G33 F3 P) will show the calculated variables inside the terminal window once the routine is completed.
Our suggestion is running each factor twice in order of F3, F4, F6, and F8... then you can run F9, and once F9 is completed, use M500 to save the autocalibration.
Caution! If you're manually using your FSR pad, get ready to place it in the path of the tip! You don't want your nice new bed or hotend to be damaged!
Your printer should be 99% ready to print! You're going to see a few things automatically added to your local.cfg... You'll see a new [Delta] section that looks similar to this:
[Delta] hez = 0.0 l = 0.288 r = 0.145606041232 ae = 0.0 be = 0.0 ce = 0.0 a_tangential = 0 a_radial = 0.0 b_radial = 0.0 c_radial = 0.0
And you'll also see offsets similar to these added to your [Geometry] section:
offset_x = -0.316440484471 offset_y = -0.31603573114 offset_z = -0.316766815853
You may also notice that your Z2 endstop just says "end_stop_z2_stops =" with no entry... that's because your macro has cleared it out, and that is normal. Otherwise, this endstop would be engaged while you are printing and causing all kinds of trouble!
You also need to change your "home_z = 0.xxx" to about 10 or 15 mm lower than your XYZ offsets. This will pull your carriages off of the endstops which I've been told can create issues.
Well, I'm sure I'm forgetting something, or something seems crazy, or heck, maybe I'm even wrong somewhere! My suggestion is shoot me an email at email@example.com, or hitting any of us up on Slack or G+! Don't hesitate to ask questions!
Good luck with your printing, and I hope this was helpful!
Author: Dancook (OCD3D)
Updated: 10-19-2017 (How-To Written)
Updated: 02-24-2020 (G-34 Added)