Auto Bed Leveling with SG90 Servo for Tevo Tarantula

Prints (0)


SummaryI made this design on base of the fanduct by Elzariant. I just added a mount for the SG90 servo to use it for auto bed leveling. I also added a single version of the SG90 Mount, so you can glue / solvent weld the part to your existing fanduct / hotend and my configuration.h file for reference. What do you need? SG90 servo (and the accessoires it came with) the printed parts (arm + servo mount) a ready to use configuration of Marlin or your prefered firmware Print SettingsPrinter: Tevo TarantulaRafts: NoSupports: YesResolution: 0.2Infill: 25 %, 3 ShellsNotes: I used manual support on the mount for the SG90 - don't use support anywhere else!Post-PrintingGet the MKS Base to use the Servo (Marlin 1.1.0)The MKS Base does not have any exposed pins that are compatible with servos (PWM). So you have to use the x-max pin-out, which is defind as digital pin 2. To do so, we have to change the assigned pins in the firmware. Open up Marlin and go to the 'pins_RAMPS_14.h' tab (pins_MKS-13.h redirects you to pins_RAMPS_14_EFB.h redirects you to pins_RAMPS_14.h). Search for (without ' '): '#define X_MAX_PIN 2' and change it to: '#define X_MAX_PIN -1' then search for '#define SERVO0_PIN 11' and change it to: '#define SERVO0_PIN 2' Go to configuration.h and uncomment the following: '#define NUM_SERVOS 3' (Note: I had to change the line to: '#define NUM_SERVOS 1' otherwise my x-Axis had problems moving - don't know why, just for your information) Also you have to uncomment (in configuration.h): '#define AUTO_BED_LEVELING_FEATURE' And define the 'spots' where the probe should level (I use this values with the large bed): '#define LEFT_PROBE_BED_POSITION 30' '#define RIGHT_PROBE_BED_POSITION 130' '#define FRONT_PROBE_BED_POSITION 30' ' #define BACK_PROBE_BED_POSITION 200' Define the probes offset from nozzle (especially the Z_PROBE_OFFSET_FROM_EXTRUDER is important and should be accurate to about 0.1mm, I ended up using -9.1, your value may differ): ' #define X_PROBE_OFFSET_FROM_EXTRUDER -55' '#define Y_PROBE_OFFSET_FROM_EXTRUDER -35' // ~0 for V2 '#define Z_PROBE_OFFSET_FROM_EXTRUDER -8' Define the angles which the servo has to 'hold' for probing and parking (the last two numerics, the values depend on how you mount the servo arm - use M280-command to find the right values): '#define Z_ENDSTOP_SERVO_NR 0' '#define SERVO_ENDSTOP_ANGLES {{0,0}, {0,0}, {80,180}}' Also change: '#define Z_RAISE_BEFORE_PROBING 5' to Also change: '#define Z_RAISE_BEFORE_PROBING 20' At last, make sure the following is uncommented, or the servo will 'wobble' around while printing: '#define DEACTIVATE_SERVOS_AFTER_MOVE' Upload your new firmware. Plug in the servo. Be carefull, you have to change the servos wires (the plug is s/+/-, the pins on the board are s/-/+). Now you can use the M280-command to test the servo, e.g. M280 P0 S20 (sets servo 0 to position 20). With this command you can also find the correct values for the servo angles. After homing your X and Y-Axis (G28 X0 Y0) and running the auto bed leveling process you cann use G1 Z0 to lower the nozzle onto the bed. If the Nozzle is to far away from your bed, lower the value, if the nozzle crashes into your bed, raise the value. At last, change the start script in your slicer. Replace: G28 //home all axis with: G28 X0 Y0 //home X and Y-axis G29 //auto level build plate

Design Files

File Size

13 KB
27.3 KB
7.4 MB


Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now