<p><strong>For future reference.</strong></p>

<p>My issue about the servo not moving was caused by a wiring mistake.
The Exp. 3 has 14 pins has per this diagram.</p>

<p><a href="https://i.sstatic.net/g4yyn.png" rel="nofollow noreferrer"><img src="https://i.sstatic.net/g4yyn.png" alt="enter image description here"></a></p>

<p>However when phisically looking at the board, what you see is this:
<a href="https://i.sstatic.net/51eF6.jpg" rel="nofollow noreferrer"><img src="https://i.sstatic.net/51eF6.jpg" alt="enter image description here"></a></p>

<p>I took the first 2 pins on the right of such connector and the 3rd one of the first row thinking that I was connecting pins 2-4-5 of Exp. 3.
I was wrong, because the first 2 (1-2) pins are not part of Exp. 3.</p>

<p>The right way to connect the servo is as following:
<a href="https://i.sstatic.net/nDWcX.jpg" rel="nofollow noreferrer"><img src="https://i.sstatic.net/nDWcX.jpg" alt="enter image description here"></a></p>

<p>Then use PWM1 (pin 5 Ext.3)
I decided to leave trace of this issue and the relevant solution for someone that may experience the same issue.</p>

CC BY-SA 3.0
2016-11-05T09:42:03.643Z
2016-11-05T09:42:03.643Z
FeliceM
<p>General note, I do not have this board so I cannot test these steps myself, read the documentation in configuration.h, it is very detailed and should guide you pretty well. I am specifically looking at Marlin 1.1 RC7 on Github, so the lines below may vary slightly from what you see.</p>

<p>As to the pins to connect on the board for the servo, pins_RUMBA.h is where they are defined/mapped. For other boards, there is a pins_[your_board_name].h that will define the pins for any given board. </p>

<p>The default Servo pin for Rumba is:</p>

<pre><code>#define SERVO0_PIN         5
</code></pre>

<p>Pin 6 appears to be used for a third extruder heater.</p>

<pre><code>#define HEATER_2_PIN        6   // EXTRUDER 3
</code></pre>

<p>In configuration.h you must uncomment (delete the slashes "//" at the beginning) the lines and fill in your stow and deploy angles in the second line for the servo. Find these lines under the Z probe options heading.</p>

<pre><code>//#define Z_ENDSTOP_SERVO_NR 0
//#define Z_SERVO_ANGLES {70,0} // Z Servo Deploy and Stow angles
</code></pre>

<p>Define your probe offsets from your extruder nozzle:</p>

<pre><code>#define X_PROBE_OFFSET_FROM_EXTRUDER 10  // X offset: -left  +right  [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 10  // Y offset: -front +behind [the nozzle]
#define Z_PROBE_OFFSET_FROM_EXTRUDER 0   // Z offset: -below +above  [the nozzle]
</code></pre>

<p>Based on your comment for using two z end stop switches, there is an option you must enable to use the standard end stop switch for homing, and only use the probe end stop for mesh bed leveling type operations. The config.h file has a lot of information on this, please read it for your own and your printers safety. </p>

<p>Uncomment this line:</p>

<pre><code>//#define Z_MIN_PROBE_ENDSTOP
</code></pre>

<p>and comment this line:</p>

<pre><code>#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN
</code></pre>

<p>Then set the carriage height to allow the z probe room to swing down and move:</p>

<pre><code>#define Z_PROBE_DEPLOY_HEIGHT 15 // Raise to make room for the probe to deploy / stow
#define Z_PROBE_TRAVEL_HEIGHT 5  // Raise between probing points.
</code></pre>

<p>For autobed leveling uncomment:</p>

<pre><code>//#define AUTO_BED_LEVELING_FEATURE // Delete the comment to enable
</code></pre>

<p>Then set probe points corners: </p>

<pre><code>#if ENABLED(AUTO_BED_LEVELING_GRID)

#define LEFT_PROBE_BED_POSITION 15
#define RIGHT_PROBE_BED_POSITION 170
#define FRONT_PROBE_BED_POSITION 20
#define BACK_PROBE_BED_POSITION 170

#define MIN_PROBE_EDGE 10 // The Z probe minimum square sides can be no smaller than this.
</code></pre>

<p>Set the number of points to probe in each direction (x and y), default is 2, so it will probe 4 locations, the other common choice is 3, so it will probe a grid of 9 locations.</p>

<pre><code>// Set the number of grid points per dimension.
// You probably don't need more than 3 (squared=9).
#define AUTO_BED_LEVELING_GRID_POINTS 2
</code></pre>

<p>That should be everything you need for a basic setup, although there are more options that I did not go through. Please look at all the documentation comments in configuration.h file as it is very comprehensive, even if it can be a bit confusing.</p>

<p>I hope this helps!</p>

CC BY-SA 3.0
2016-10-31T07:53:01.717Z
Thanks for your answer. The main issue I am experiencing is to get the servo to move. If I connect it as per my question it does not move. Reading your answer looks like I should connect it to 2, 4 and the PWM to 5 and then use Servo0 in the config and in the Gcode. Is this what you mean? I have added a pic in my question showing the ext.3 diagram.
FeliceM
CC BY-SA 3.0
2016-10-31T23:40:29.593Z
Yes, the best I can tell you should connect the signal line to pin 5, which is pwm1.
Jexoteric
CC BY-SA 3.0
2016-11-01T12:24:04.027Z
I have done everything as per your answer. I had also to activate the servo support where I have defined the SERVO NR 1. I have checked the servo functionality with an arduino board and it is fine. However when I send the Gcode M280 P0 S90 the servo does not move! Not sure about what to do.
FeliceM
CC BY-SA 3.0
2016-11-02T01:56:29.490Z
What angle is your servo currently at? If it is already at 90 it will not move, you can try another angle to check. Also are you sure the servo index starts at 0 on that board? Try M280 P1 S80, and M280 P0 S80. Between those two commands it will check both of my suggestions. Other than that I think I've gone as far as I can to help without having ever used the Rumba board.
Jexoteric
CC BY-SA 3.0
2016-11-02T05:54:58.140Z
Thanks for your help. Since I had to defined the number of servos in the section Servo support, I used 1, if I give a P1 it returns "servo out of range" while with P0 nothing is happening. Not defining the servo number, the firmware does not compile and returns the error "define number of servo". I have tested the servo again with an Arduino and it is fine. I tried both pins 6 and 5 ext. 3, but it does not move. If I run G29, the printer execute the ABL but the servo does not move. I moved it manually in an intermediate position to avoid having it already in the end position. Nothing!
FeliceM
CC BY-SA 3.0
2016-11-04T12:48:13.310Z
I have not resolved my issue about the servo, however you have given me a good answer in reply to my question and therefore you have deserved the bounty. Thanks for the effort.
FeliceM
CC BY-SA 3.0
2016-10-30T19:46:00.573Z
2016-10-30T19:46:00.573Z
Jexoteric
<p>Has anyone succeeded in installing the auto bed levelling on a Rumba board with Marlin firmware?</p>

<p>I have the last stable version <a href="https://github.com/MarlinFirmware/Marlin/releases/tag/1.1.0-RC6" rel="nofollow noreferrer">1.1.0 RC6</a>.</p>

<p>I would appreciate some direction especially about:</p>

<ul>
<li>How and which pin to activate for the servo?</li>
<li>How to test it with G-code before I move to settings of the probe sequence?</li>
</ul>

<p>I have only installed the hardware for now (5 V servo) connected to Ext. 3 (EXP3):</p>

<ul>
<li>Pin 2 (+5V);</li>
<li>Pin 4 (GND), and;</li>
<li>Pin 6 (PWM),</li>
</ul>

<p><a href="https://i.sstatic.net/ETHOL.png" rel="nofollow noreferrer"><img src="https://i.sstatic.net/ETHOL.png" alt="Servo and RAMPS 1.4 and RUMBA connections"></a></p>

<p><a href="https://i.sstatic.net/ZGvw0.jpg" rel="nofollow noreferrer"><img src="https://i.sstatic.net/ZGvw0.jpg" alt="RUMBA EXP3 pinout"></a></p>

<p>but I cannot move it with the G-code command <code>M280 P0 S180</code>. I have no idea where to put my hands on firmware to get this going. However my ultimate goal is to set the ABL.</p>

CC BY-SA 3.0
2016-10-30T18:36:00.120Z
To have two Z min switches you would have to wire them in parallel so that if either are triggered the board would see it, but this is not the standard way of implementing auto leveling, and you will want to ensure under normal operation that the mesh leveling switch will always hit first, and maybe set the second switch .5 mm lower, so there would be a light but not detrimental collision with the bed, It will be nearly impossible to get them both to trigger at the same time and still get the benefits of mesh leveling.
Jexoteric
<calibration><z-probe>
Auto bed levelling with Rumba board - Servo not deploying
FeliceM
# Auto bed levelling with Rumba board - Servo not deploying

(Asked by: username_0 on 2016-10-26)

Has anyone succeeded in installing the auto bed levelling on a Rumba board with Marlin firmware?

I have the last stable version [1.1.0 RC6](https://github.com/MarlinFirmware/Marlin/releases/tag/1.1.0-RC6).

I would appreciate some direction especially about:

* How and which pin to activate for the servo?
* How to test it with G-code before I move to settings of the probe sequence?

I have only installed the hardware for now (5 V servo) connected to Ext. 3 (EXP3):

* Pin 2 (+5V);
* Pin 4 (GND), and;
* Pin 6 (PWM),

[![Servo and RAMPS 1.4 and RUMBA connections](https://i.sstatic.net/ETHOL.png)](https://i.sstatic.net/ETHOL.png)

[![RUMBA EXP3 pinout](https://i.sstatic.net/ZGvw0.jpg)](https://i.sstatic.net/ZGvw0.jpg)

but I cannot move it with the G-code command `M280 P0 S180`. I have no idea where to put my hands on firmware to get this going. However my ultimate goal is to set the ABL.

**Tags:** calibration, z-probe
> **Comments:**
> **username_1**: To have two Z min switches you would have to wire them in parallel so that if either are triggered the board would see it, but this is not the standard way of implementing auto leveling, and you will want to ensure under normal operation that the mesh leveling switch will always hit first, and maybe set the second switch .5 mm lower, so there would be a light but not detrimental collision with the bed, It will be nearly impossible to get them both to trigger at the same time and still get the benefits of mesh leveling.  

---

## 2 answers

### Answer by username_1 on 2016-10-30. Score: 3 | Accepted answer

General note, I do not have this board so I cannot test these steps myself, read the documentation in configuration.h, it is very detailed and should guide you pretty well. I am specifically looking at Marlin 1.1 RC7 on Github, so the lines below may vary slightly from what you see.
As to the pins to connect on the board for the servo, pins_RUMBA.h is where they are defined/mapped. For other boards, there is a pins_[your_board_name].h that will define the pins for any given board. 
The default Servo pin for Rumba is:
#define SERVO0_PIN         5

Pin 6 appears to be used for a third extruder heater.
#define HEATER_2_PIN        6   // EXTRUDER 3

In configuration.h you must uncomment (delete the slashes "//" at the beginning) the lines and fill in your stow and deploy angles in the second line for the servo. Find these lines under the Z probe options heading.
//#define Z_ENDSTOP_SERVO_NR 0
//#define Z_SERVO_ANGLES {70,0} // Z Servo Deploy and Stow angles

Define your probe offsets from your extruder nozzle:
#define X_PROBE_OFFSET_FROM_EXTRUDER 10  // X offset: -left  +right  [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 10  // Y offset: -front +behind [the nozzle]
#define Z_PROBE_OFFSET_FROM_EXTRUDER 0   // Z offset: -below +above  [the nozzle]

Based on your comment for using two z end stop switches, there is an option you must enable to use the standard end stop switch for homing, and only use the probe end stop for mesh bed leveling type operations. The config.h file has a lot of information on this, please read it for your own and your printers safety. 
Uncomment this line:
//#define Z_MIN_PROBE_ENDSTOP

and comment this line:
#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN

Then set the carriage height to allow the z probe room to swing down and move:
#define Z_PROBE_DEPLOY_HEIGHT 15 // Raise to make room for the probe to deploy / stow
#define Z_PROBE_TRAVEL_HEIGHT 5  // Raise between probing points.

For autobed leveling uncomment:
//#define AUTO_BED_LEVELING_FEATURE // Delete the comment to enable

Then set probe points corners: 
#if ENABLED(AUTO_BED_LEVELING_GRID)

#define LEFT_PROBE_BED_POSITION 15
#define RIGHT_PROBE_BED_POSITION 170
#define FRONT_PROBE_BED_POSITION 20
#define BACK_PROBE_BED_POSITION 170

#define MIN_PROBE_EDGE 10 // The Z probe minimum square sides can be no smaller than this.

Set the number of points to probe in each direction (x and y), default is 2, so it will probe 4 locations, the other common choice is 3, so it will probe a grid of 9 locations.
// Set the number of grid points per dimension.
// You probably don't need more than 3 (squared=9).
#define AUTO_BED_LEVELING_GRID_POINTS 2

That should be everything you need for a basic setup, although there are more options that I did not go through. Please look at all the documentation comments in configuration.h file as it is very comprehensive, even if it can be a bit confusing.
I hope this helps!

> **Comments:**
> **username_0**: Thanks for your answer. The main issue I am experiencing is to get the servo to move. If I connect it as per my question it does not move. Reading your answer looks like I should connect it to 2, 4 and the PWM to 5 and then use Servo0 in the config and in the Gcode. Is this what you mean? I have added a pic in my question showing the ext.3 diagram.  
> **username_1**: Yes, the best I can tell you should connect the signal line to pin 5, which is pwm1.  
> **username_0**: I have done everything as per your answer. I had also to activate the servo support where I have defined the SERVO NR 1. I have checked the servo functionality with an arduino board and it is fine. However when I send the Gcode M280 P0 S90 the servo does not move! Not sure about what to do.  
> **username_1**: What angle is your servo currently at? If it is already at 90 it will not move, you can try another angle to check. Also are you sure the servo index starts at 0 on that board? Try M280 P1 S80, and M280 P0 S80. Between those two commands it will check both of my suggestions. Other than that I think I've gone as far as I can to help without having ever used the Rumba board.  
> **username_0**: Thanks for your help. Since I had to defined the number of servos in the section Servo support, I used 1, if I give a P1 it returns "servo out of range" while with P0 nothing is happening. Not defining the servo number, the firmware does not compile and returns the error "define number of servo". I have tested the servo again with an Arduino and it is fine. I tried both pins 6 and 5 ext. 3, but it does not move. If I run G29, the printer execute the ABL but the servo does not move. I moved it manually in an intermediate position to avoid having it already in the end position. Nothing!  
> **username_0**: I have not resolved my issue about the servo, however you have given me a good answer in reply to my question and therefore you have deserved the bounty. Thanks for the effort.  

---

### Answer by username_0 on 2016-11-05. Score: 4

**For future reference.**

My issue about the servo not moving was caused by a wiring mistake.
The Exp. 3 has 14 pins has per this diagram.

[![enter image description here](https://i.sstatic.net/g4yyn.png)](https://i.sstatic.net/g4yyn.png)

However when phisically looking at the board, what you see is this:
[![enter image description here](https://i.sstatic.net/51eF6.jpg)](https://i.sstatic.net/51eF6.jpg)

I took the first 2 pins on the right of such connector and the 3rd one of the first row thinking that I was connecting pins 2-4-5 of Exp. 3.
I was wrong, because the first 2 (1-2) pins are not part of Exp. 3.

The right way to connect the servo is as following:
[![enter image description here](https://i.sstatic.net/nDWcX.jpg)](https://i.sstatic.net/nDWcX.jpg)

Then use PWM1 (pin 5 Ext.3)
I decided to leave trace of this issue and the relevant solution for someone that may experience the same issue.


---

