Auto Bed Leveling with SG90 Servo for E3D V6


SummaryI made this quick design to mount an SG90 servo with an endstop to use as a bed leveling probe on an E3D V6 fanduct. I also included the single files for mounting the servo, so you can glue / screw them onto your existing fanduct. Here is an video of the auto bed leveling process on my Tevo Tarantula: SettingsPrinter: Tevo TarantulaRafts: NoSupports: YesResolution: 0.2 mmInfill: 25 %, 2 ShellsNotes: I used manual support for the part on which the SG90 mounts.Post-PrintingSetup auto bed leveling (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). start here if your board DOESN'T expose PWM-compatible pins 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' start here if your board exposes PWM-compatible pins 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' //you have to measure the actual values! '#define Y_PROBE_OFFSET_FROM_EXTRUDER -35' '#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

27.3 KB
729 KB
860 KB


Your browser is out-of-date!

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