Delta for Dummies
Before I start this tutorial, one very important detail to know before you start stripping wires and cranking on your Delta is:
Wiring up the steppers/end stops...
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!
My goal here is to give a quick rundown of how to get your Delta going... If you need help with wiring, WiFi, SSH'ing into your BBB, or generally linking your printer with Octoprint there are plenty of documentation within the Wiki, and we also have plenty of skilled guys over at: Slack and Google+ to offer help.
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!
Before we make any moves with the machine, let's wrap our brains around the Profile Configurations which are located in <Settings> <Redeem Plugin> These guys are what tells Redeem (the software) what kind of printer it's dealing with. 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... Ok, close that window... above that, you'll see Printer.cfg... these particular configurations are tweaked for specific printers, and whatever is written to this configuration will override 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 configurations, and that's a good thing, let me tell you!
OK... if you have a typical Kossel Mini, you can go ahead and make "kossel_mini.cfg" in the list of Printer.cfg's 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 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 local.cfg overrides the printer.cfg, and the default.cfg, so make sure you're not too pickled while you're dealing with this config!
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!!
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!
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. I suggest getting yourself a probing system of some kind if you haven't already... 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 ;-) I'm using FSR's currently, and have a BLTouch that I plan to start using. I'll add info here in the future about the BLTouch. These systems are super cheap, and if you're new to all of this, your chances of successfully printing without one is pretty slim.
FSR's... super easy to use... if you've found a way to mount them below your bed, they work great. Another option is physically holding the FSR and allowing 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 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... Let's open our local.cfg once again and go down to the [Endstop] section. Let's add the following command there:
end_stop_z2_stops = x_ccw,y_ccw,z_ccw
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 enter "G33"... 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! Once autocalibration is finished, you can enter "M500" into your Terminal and your printer will 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. It doesn't hurt to rerun G33 once you've made this change.
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: 08-18-2017