# Specific 3D Printers, Scanners, & Hardware > RepRap Format Printer Forum > MakerFarm Forum >  Rumba and Auto-Bed level

## tsteever

Has anyone done this on a Rumba yet? I have read a lot on this and think I want to give it a try but all of the stuff I see and read looks to be for the Ramps boards. Any tutorials on a Rumba. I googled a few things and found where to plug the servo in...I think.

I just wanna chat with someone who has done it and gotten it working.

----------


## sniffle

you might be the lucky one to figure it out on rumba much like i was on rambo :-D

----------


## tsteever

I think I found on Google where the servo plugs in. The switch on the foot replaces the z end stop correct?

----------


## sniffle

correct, and you will need to make sure the correct pin is identified in pins.h(older versions of marlin) or pins_Rumba.h(current versions of marlin)

----------


## tsteever

I see the section in my firmware in relation to the ABL features. Just wondering what to expect. I have seen multiple vids (nothing for Rambo) the show the probe going to 9 spots, some to 5 and others only 3. Just wondering what actions I can expect with the firmware supplied by Colin.

----------


## sniffle

...if i remember correctly unless he recently updated it that feature wasnt available... 

But... 

To initiate the abl sequence after installing the components and setting up your offsets you run a g28 to home the machine.  If you are using safe homing it will home to the center of the bed.  Then immediately after you run g29 this initiate the athe sequence.  To use it properly you add a g29 to the startup code in your slicer just after the g28.

----------


## rhonal89

Do abl only works with proto or does it work with the lcd too.




> ...if i remember correctly unless he recently updated it that feature wasnt available... 
> 
> But... 
> 
> To initiate the abl sequence after installing the components and setting up your offsets you run a g28 to home the machine.  If you are using safe homing it will home to the center of the bed.  Then immediately after you run g29 this initiate the athe sequence.  To use it properly you add a g29 to the startup code in your slicer just after the g28.

----------


## tsteever

> ...if i remember correctly unless he recently updated it that feature wasnt available... 
> 
> But... 
> 
> To initiate the abl sequence after installing the components and setting up your offsets you run a g28 to home the machine.  If you are using safe homing it will home to the center of the bed.  Then immediately after you run g29 this initiate the athe sequence.  To use it properly you add a g29 to the startup code in your slicer just after the g28.


I did some digging into the config.h file and found that is calls out 4 locations. 

I have the components installed physically on the machine. I just need to enable them in the firmware and that is the tough part as it is the most unfamiliar to me. Working with the Rumba is the hard part even though the firmware should be pretty similar. Can someone with a better grasp of the firmware chime in? I found the schematic of the board and can plug the servo into the EXP3 connector. 

I need to tell/define the firmware what pin to use for the servo pwm signal. There are two located on the board and somewhere I read that you can't use PWM_2 as it is being used for something else even though nothing is hooked up to it. 

Once the servo is setup in the firmware I should be able to get it tuned in a similar fashion to all the tutorials on the webs as I understand it. One thing I find confusion as I read on this are terms like firmware forks. What are these?

----------


## tsteever

So here is an odd question. Doing this mod requires the removal of the factory z endstop and moving it to an articulating foot on the extruder. If I just hit auto home, or use the Home button in pronterface, will the foot move down so the endstop can be measured? Or, does one always need to use the g29 command once you have enabled the autobedlevel? I am not a coder and am trying to learn as much as I can about this feature before fully implementing it.

----------


## tsteever

Ignore this...I am just using this to store for future implementation...

----------


## sniffle

as to what pin to use, i don't know, 

IF pin 6(pwm_2) is used by something else, what is using it?  if it isn't shared by anything potentially important you might still be able to use it you might not... 

you also have pwm_1 which is pin5, I don't know if the servo need 5 or 12 volts though, i think 5... which means you might have to get creative with connectors if 5v is needed by the servo.

as to the firmware i suggest watching the youtube videos by zennmasterM for setting up ABL, they are as close to a step by step guide you can get, for software and procedure to get offesets etc setup correctly.

As to when you home all axis or home Z it will raise the z axis extend the probe and then lower Z until it hits the endstop

----------


## tsteever

I have studies those vids to a point where I think I mutter them in my sleep! Very good info there. The trouble, as you pointed out, is I am using a Rumba and breaking ground. It appears this has been done successfully and I am putting piece together from various threads that will help me complete the picture. 

The first task right now is to get into the firmware and modify it to use the Servo connected to the either pin5 or 6.

I found this chunk of code and it looks like the code Rumba needs in the pins.h file to enable the servo for ABL use. The trouble I run into as I am learning how to read the code is that I don't follow exactly what is going on in this code. I know I need to use either pin 5 or 6 on the Exp3 port but I don't see this called out below. Unless the code actually calls this pin something else. I bolded the part in the code below that I suspect tells the rumba to use pin 5 on the expo port. Can someone confirm my suspicion? Is there a list somewhere that shows what the firmware assigns each pinout? 

//Added to pins.h to control the extra servo at section "Motherboard is 80" (RUMBA).
#ifdef NUM_SERVOS
#define *SERVO0_PIN 4* // For RUMBA PWM_1 is to be used for the servo it is on Epansion slot 3, pin 5  
#define Z_MIN_PIN 33    //For RUMBA pin 33 is used for Z min.
#endif[/i]

If I am reading this code right, it will tell Rumba that for all servo0 commands, output those to pin4, which is physically pin 5 on the exp3 port.

Another benefit for knowing what pins are what is adding some LED lights. There is a line of code in the pins.h file that says...
#defineLED_PIN13
I would like to know what pin 13 is as it would be super cool to add some LEDS lights that turn on while printing as a warning to all bystanders that the bed is HOT!  I assume that a simple g code could be added to the custom slicer setting to turn these on or off accordingly. But, I don't want to get too far off the point of this thread.

----------


## sniffle

You need to research your servo and see what its specs are.  According to that code it calls pin 4 for the servo pin which unless im looking at it wrong is a ground... Lemme see if i can look up some things to help.

What servo are you using?

----------


## tsteever

I am using the Hextronic hxt900 called out in the guides. The pinout is where I am getting confused. I know I need to rewire the jack to get the power and the PWM pins in the write locations, I am not troubled by that. 

What troubles me is the assigning of the signal pin in the firmware. The EXP3 pinout shows pwm_1 as being pin 5 but the road calls out servo0 to be on pin4, which then in the comments it says pin 5. 

Now, as I understand it, there are digital and analogue pins on these boards and it may be calling out pin 4, which is actually pin5. See why I am confused! I cannot find drawing or document that labels this anywhere.

----------


## sniffle

Ok to use pin 5 and yes in the firmware it should be a 5 not a 4 as according to the spec sheet you are quoting which came from the reprap wiki is ground.  The fun part in All of this is you need a 5v power source and a ground which is all well and good they are right together but pin 5 is on the other side of the rail.  So you will need another connector to set that pin up as your servo pwm.

----------


## tsteever

So the code should look something like this...


//Added to pins.h to control the extra servo at section "Motherboard is 80" (RUMBA).
#ifdef NUM_SERVOS
#define *SERVO0_PIN 5* // For RUMBA PWM_1 is to be used for the servo it is on Epansion slot 3, pin 5  
#define Z_MIN_PIN 33 //For RUMBA pin 33 is used for Z min.
#endif[/i]

----------


## sniffle

Sigh it may be sortware pin 4...  They dont have a reference for that on the sheet...  Which is annoying the rambo spec sheet does...

----------


## sniffle

I found where you are getting the reference for that code.  Yes his code would be correct.  

Software pin 4 which is physical pin 5 on the board.

I know confusing... But the software and hardware pin references cant always line up...

----------


## sniffle

After further reading of that post you CAN use pwm_2...  It is logical(software) pin 5...

Pwm_2 is only used if you are using a thermocouple

While using a thermistor pwm2 is not used.

----------


## tsteever

Which post are you referring to? I am wading through the ABL thread on the riprap forums and must not have gotten that far. 

The software vs hardware pins are I think the part I am getting turned around on. When you are just learning these things and there are all these little gotchas, it is confusing. My search for a hardware/software pinout has been fruitless.

Okay, so I understand what you are saying. Since I am not using a thermocouple, this pin is unused. The question is, is it still defined?  Should the following be uncommented to look like this?

*//#define TEMP_1_PIN 5 // ANALOG NUMBERING - connector *K2* on RUMBA thermocouple ADD ON is used*

I found the following code that is different from the code I put in the post above. This code was reportedly added to the pins.h file to get a servo working on the Rumba. The first part, where it defines (software) pin 5 to servo0 is the same. But why the difference in the second part? This was referenced in the same thread on page 8. 

#ifdef NUM_SERVOS
#define SERVO0_PIN 5

#if NUM_SERVOS > 1
#define SERVO1_PIN 4
#endif

#endif

 In order to put a more complete how-to together, I also need to modify the servo section in the config.h tab to activate the servo for ABL use. 

// Number of servos
//
// If you select a configuration below, this will receive a default value and does not need to be set manually
// set it manually if you have more servos than extruders and wish to manually control some
// leaving it undefined or defining as 0 will disable the servo subsystem
// If unsure, leave commented / disabled
//
#define NUM_SERVOS 1 // Servo index starts with 0 for M280 command


// Servo Endstops
//
// This allows for servo actuated endstops, primary usage is for the Z Axis to eliminate calibration or bed height changes.
// Use M206 command to correct for switch height offset to actual nozzle height. Store that setting with M500.
//
#define SERVO_ENDSTOPS {-1, -1, 0} // Servo index for X, Y, Z. Disable with -1
#define SERVO_ENDSTOP_ANGLES {0,0, 0,0, TBD,TBD} // X,Y,Z Axis Extend and Retract angles


Finally, in the videos that Michael (ZenmasterM) posted he listed servo angles for extend and retract. When looking at his setup the probe he is using retracts towards him. The parts I downloaded from Thingiverse has the probe retracting into the extruder, the opposite direction. My guess is my numbers will be flipped compared to his. More like 60, 180. 

I know there was a lot in this post but all your input is appreciated.

----------


## sniffle

it all depends on the servo, you just have to find that bit out when you get there... mine is 90 for extend and 10 for retract...

as to the code, you should slow down and read it, instead of thinking it is gibberish... 

that code is saying if num_servo's is defined, we are going to define servo_0 to pin 5(software), if the number of servos is greater than 1 we are going to define the second servo, Servo_1, to pin 4(software).

let me find it again and i will post a link, it was page 10 if i remember correctly... i'll edit this post with the appropriate post

http://forums.reprap.org/read.php?151,246132,page=10

The posts are by JWD

----------


## tsteever

Yup, (concerning the pin assignment) read that page and that is how I understood it as well. Just was looking for a conformation and it didn't "type" well. Thanks. 

Do I need to uncomment the *#define TEMP_1_PIN 5* line in pins.h in order to use pin5  for the servo? 

Also, what does the following line do?

#define Z_MIN_PIN 33 //For RUMBA pin 33 is used for Z min.

It is listed in an earlier post, page 8 in that thread. This line is not in the post on page 10. I looked in my pins.h file and the z_min is already defined to pin 1.  Or, If I am reading/understanding this correctly if I am plugging in the foot mounted endstop into the old location I wouldn't need this line of code.

----------


## sniffle

correct, the foot probe replaced the Z endstop, so nothing should be required to change that.

and no don't uncomment that line.

the only thing you should be concerned with in that is the #define servo0

the number after that defines the software servo pin.  once that servo pin is defined and you uncomment the ABL stuff and the servo stuff in config.h  and flash it you shoiuld start being able to manipulate your servo so that it will start moving and you can define your servo angles

----------


## tsteever

For my sanity....

Plug in the servo to EXP3 (hardware) pin6 and add the following to the pins.h file...
#ifdef NUM_SERVOS
#define SERVO0_PIN 5 // For RUMBA PWM_1 is to be used for the servo it is on Epansion slot 3, pin 5  
#endif[/i]

Next I need to add uncomment the following in the config.h and insert some harmless numbers into the endstop values for the probe foot.
#define NUM_SERVOS 1 // Servo index starts with 0 for M280 command

#define SERVO_ENDSTOPS {-1, -1, 0} // Servo index for X, Y, Z. Disable with -1
#define SERVO_ENDSTOP_ANGLES {0,0, 0,0, TBD,TBD} // X,Y,Z Axis Extend and Retract angles

 further up in the config.h uncomment the //to enable the ABL feature
#define ENABLE_AUTO_BED_LEVELING // Delete the comment to enable (remove // at the start of the line)


Change the value in the min_software_endstops to be false
#define min_software_endstops false


Change the travel speed to a move conservative value
#define XY_TRAVEL_SPEED 4000 


Once all that is done I can start to test the feature and tweak my probe locations and enter the offsets...Does that about sum it up?

----------


## sniffle

sounds about right yes

oh, don't forget in the servo area //#define num_servos 1  uncomment that as well

----------


## tsteever

Thanks! I added that to the line above for future reference.

----------


## tsteever

Okay, I have got the servo working and have my initial set of numbers entered.

I gave the pronterface a g28 command and one thing I noticed is that it homes the x an y, then puts the probe down, then homes the z. Right after homing however, it lifts the probe without raising the z up and the probe rubs the bed. That doesn't seem right to me.

----------


## sniffle

That is normal sadly... Thts just one of those little niggles...

----------


## tsteever

Really? That seems like a silly thing to keep in the code, I may have to do some reading as it just seems like trouble to me.

----------


## tsteever

I was reading more and came across the following info...

3dprintboard.com

It looks like they are trying to solve the raising issue. In the beginning of the tutorial it says to look for the auto bed level grid. That part doesn't exist in the firmware Colin provides. i am not sure I am capable of changing the firmware. Is it possible to just change the Marlin_Main.cpp? I am not wanting all the extra features, I just want the Z to raise before the probe retracts.

----------


## sniffle

the zennmaster guides explain how to update firmware direct from marlin.

----------


## tsteever

I'll check that out. In all this I just curious why Colin is so behind the curve on firmware and slicer. I think he is doing a wonderful job and his support is better than the premium printers I have used. It was the deciding factor in my decision to get a maker farm printer. 

I I just really need to watch the video as I have no idea what I would even need to do to update the firmware. 

I I just want the z to raise before the probe retract! Getting the servo to stop chattering would be nice too. I thought that uncommenting the servo delay would stop that.

----------


## sniffle

Get the servo wired away from the motor wires.

----------


## tsteever

> the zennmaster guides explain how to update firmware direct from marlin.


I thought these were a video and I just searched his YouTube uploads and found nothing about firmware. Could you point me to these guides?

----------


## hernejj

http://zennmaster.com/random-things/...nd-basic-setup
http://zennmaster.com/random-things/...ting-up-marlin
http://zennmaster.com/random-things/...-3-final-setup

I think post/video 2 is the one that covers Marlin firmware flashing

----------


## Roxy

> I I just want the z to raise before the probe retract! Getting the servo to stop chattering would be nice too. I thought that uncommenting the servo delay would stop that.


I think you are going to find it takes a number of things to get the servo's to not chatter.   First, if it chattering in the not engaged position you can probably change the position.   Instead of using 0 degrees for not engaged, try using 1 degree.  If that doesn't help, try 2 degrees.  If that doesn't help, try 3 degrees.  These cheap servo's have certain spots where they are stable, and they have spots where they chatter.

----------


## pichuete

Regarding the chattering enable the servo delay under the abl settings.  300 to 400 will do the job.  This eliminates the glitch.

----------


## tsteever

I have watched all three of those vids prior to this. If it wasn't for them, I would even be complaining about the servo chattering or hitting the bed.  Those videos help enable bed leveling. I am trying to tweak the behavior for my situation. 

Yes, as stated, I have also uncommented the servo delay. I have it set to 300 at the moment. 

I can can live with the chatter. It isn't too bad. I just notice it on z axis moves when raised. When it is lowered it doesn't chatter. 

My my hope is to get the z axis to raise. I am going to study up on the enhanced version of the firmware. I really have no idea what to do to update the entire firmware. So far my experience has been just tweaking the code a bit here and there. 

I am am not a coder (surprise) and this intimidates me. The last programming language I learned was fortran back in the 90's so bear with me. I don't remember any of it!

is there a step by step tutorial somewhere for updating the firmware?  Is it simply downloading the most recent stable version and then writing my current values into it?  That is the part that I don't like as I don't know what needs to be done? There are so many tabs in the arduino and I have only fiddled with three of them!

----------


## sniffle

thats because those 3 are all you are supposed to touch... 

config.h
config_adv,h
pins_rambo.h

everything else is either other boards or the code running the board... you dont touch that...  pretty much you setting options dont change but things get added or refined just make any settings defined in your 3 main files the same in the new downloaded version it will upload ands work the same... but any added features will now be available to you

----------


## tsteever

So I can just download this "fork" that was posted in my other thread and it has everything I need. After opening it up in arduino I just tweak the three tabs to match my settings and it should work fine? Sounds easy enough.

here is the fork I was told to download in my other thread. I have no idea if it is the most current stable version. I am not looking to experiment at this point. 

https://github.com/beckdac/Marlin

----------


## sniffle

Its close enough for what your after :-)

----------


## tsteever

There are five files in the link. Which do I download? The Zip file on the right?

----------


## tsteever

I went through the Marlin folder in the link provided for the enhanced G29 and made (what I think) are the changes needed for my machine. Many of the changes were made already. Here is the link to the posts for the enhanced G29 thread. 

My plan is to just open the Marlin ino in my Arduino, compile and load it into the Rumba. Hopefully it will work as I really am in unknown water here. I read all about trouble people are having with weird movements and am lucky I haven't had this yet. Fingers crossed! 

In order to get my nozzle closer to the board I reduced my z axis offset to -2.8. This was before the enhanced version so hopefully it will carry over.

----------


## richardphat

Thank god I found this topic.
I myself is working with the BI 2.5 from Boots Industry. The hardware is based on the rumba, and it's quite a pain to initiate the auto level bed. I have yet to make a sucessfull attempt.

----------


## tsteever

That was my hope, that someone else would benefit from me asking so many questions. I think it is funny that in the beginning of this thread Sniffle made the comment that I would be figuring it out. It seems like I just kinda went along with the ride, he and others did the bulk of the work. 

Still gotta get the enhanced firmware loaded. I am hesitant to pull the trigger!

----------


## tsteever

So I uploaded the new firmware and things appear to be working with the one exception, and it is a biggie....

After homing the board's new zero point is actually 10mm or so above the glass. I used the offset numbers generated by following the zenmaster guide. What happening there?

----------


## sniffle

When you input g1 z0 its 10mm above the glass?

----------


## tsteever

yup.  I am a few pages into the enhanced g code thread and haven't come across anything familiar. Gonna have to scour a bit deeper.

So far the only thing I may have to try is the m commands that save setting to the eeprom. Not sure what those actually do. Do they need to be run and inserted into the custom g codes in the slicers?

----------


## Chadd

I keep waiting for you to get this finished up so I can start on it myself :O)

I haven't had the time to dig into it for myself yet, hope you get it all figured out.

----------


## pichuete

disable epprom to start with , having epprom enabled overrides any changes in your abl procedure. also disable chitchat .

----------


## tsteever

> I keep waiting for you to get this finished up so I can start on it myself :O)
> 
> I haven't had the time to dig into it for myself yet, hope you get it all figured out.


Definately getting closer. This weird offset is bugging me and my free time is taxed enough as it is.

----------


## tsteever

> disable epprom to start with , having epprom enabled overrides any changes in your abl procedure. also disable chitchat .


It was my understanding that these should be on for the abl to work? Not that I am doubting you too much (you know more than I) but if it was needed to be disabled, wouldn't the enhanced code have these features uncomented out? 

Or, once it has run successfully I can re enable these features?

----------


## sniffle

Eeprom is useless unless you are making all of you adjustments on the display.  Since you are flashing firmware disable it... It will cause issues with abl.  

Thats probably a part of your problem.  Also make sure max endstops are disabled and software min endstops are disabled.

I

----------


## tsteever

> Eeprom is useless unless you are making all of you adjustments on the display.  Since you are flashing firmware disable it... It will cause issues with abl.  
> 
> Thats probably a part of your problem.  Also make sure max endstops are disabled and software min endstops are disabled.
> 
> I


I disabled the chitchat and the eeprom lines by uncommenting them (//).

I am moving on to the endstop suggestions and am a bit confused. Pasted below is the section in the config.h file that I think is what you are talking about.  Why I am concerned is that if I disable these lines below, does that disable the endstop switches? I have made the changes that I think you are suggesting.






```

// Uncomment the following line to enable CoreXY kinematics// #define COREXY// coarse Endstop Settings#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors#ifndef ENDSTOPPULLUPS  // fine endstop settings: Individual pullups. will be ignored if ENDSTOPPULLUPS is defined  // #define ENDSTOPPULLUP_XMAX  // #define ENDSTOPPULLUP_YMAX  // #define ENDSTOPPULLUP_ZMAX  // #define ENDSTOPPULLUP_XMIN  // #define ENDSTOPPULLUP_YMIN  // #define ENDSTOPPULLUP_ZMIN#endif#ifdef ENDSTOPPULLUPS  //#define ENDSTOPPULLUP_XMAX  //#define ENDSTOPPULLUP_YMAX  //#define ENDSTOPPULLUP_ZMAX  #define ENDSTOPPULLUP_XMIN  #define ENDSTOPPULLUP_YMIN  #define ENDSTOPPULLUP_ZMIN#endif// The pullups are needed if you directly connect a mechanical endswitch between the signal and ground pins.const bool X_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.const bool Y_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.const bool X_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.const bool Y_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.#define DISABLE_MAX_ENDSTOPS#define DISABLE_MIN_ENDSTOPS// Disable max endstops for compatibility with endstop checking routine#if defined(COREXY) && !defined(DISABLE_MAX_ENDSTOPS)  #define DISABLE_MAX_ENDSTOPS#endif// For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1#define X_ENABLE_ON 0#define Y_ENABLE_ON 0#define Z_ENABLE_ON 0#define E_ENABLE_ON 0 // For all extruders// Disables axis when it's not being used.#define DISABLE_X false#define DISABLE_Y false#define DISABLE_Z false#define DISABLE_E false // For all extruders#define DISABLE_INACTIVE_EXTRUDER true //disable only inactive extruders and keep active extruder enabled#define INVERT_X_DIR true    // for Mendel set to false, for Orca set to true#define INVERT_Y_DIR false    // for Mendel set to true, for Orca set to false#define INVERT_Z_DIR true     // for Mendel set to false, for Orca set to true#define INVERT_E0_DIR false   // for direct drive extruder v9 set to true, for geared extruder set to false#define INVERT_E1_DIR false    // for direct drive extruder v9 set to true, for geared extruder set to false#define INVERT_E2_DIR false   // for direct drive extruder v9 set to true, for geared extruder set to false// ENDSTOP SETTINGS:// Sets direction of endstops when homing; 1=MAX, -1=MIN#define X_HOME_DIR -1#define Y_HOME_DIR -1#define Z_HOME_DIR -1#define min_software_endstops false // If true, axis won't move to coordinates less than HOME_POS.#define max_software_endstops true  // If true, axis won't move to coordinates greater than the defined lengths below.// Travel limits after homing#define X_MAX_POS 300#define X_MIN_POS 0#define Y_MAX_POS 298#define Y_MIN_POS 0#define Z_MAX_POS 300#define Z_MIN_POS 0#define X_MAX_LENGTH (X_MAX_POS - X_MIN_POS)#define Y_MAX_LENGTH (Y_MAX_POS - Y_MIN_POS)#define Z_MAX_LENGTH (Z_MAX_POS - Z_MIN_POS) 


```

----------


## sniffle

Gotta do some work at work ill edit this post in a few with tye code im talking about but you can look in the meantime.

I believe it is
#define Max_endstops 

And 
# define software_min_endstop 

Both of those (and all of max endstops permutations) should be set to false.

But try reflashing after disabling eeprom and see if that fixed it... A lot of the time that fixes the problem.  Just dont forget at the end of abl the nozel does drop to the 0 poaition it stays at the offset height until it it commanded to go to the 0 position

----------


## tsteever

Nope. Did not fit my issue. After loading the new code and resetting the board it doesn't zero to the bed. I am still about 3.5mm above the bed. I called up the z-offset in the motion menu of the LCD and it is listed as 2.8mm. The value I have stored in the ABL section is -2.8. I am going to switch the sign to see what happens.


Nope. Changing the sign made it worse. The 2.8 is the correct offset. I double checked it and triple checked it. Somehow, after homing the axis my z0 point is 3.5mm or so above the glass. 

Disclaimer, I am not 100% comfortable having the endstops disabled. I am a dunce sometimes and I hate to over extend the nozzle.

----------


## sniffle

The only endstops that are disabled are the max endstops that are not hooked up to the machine.  Having them enabled without them being hooked up can just cause issues...

Same with the min software endstop.

Is it just sitting above the bed after a g28 or g29? Or are you calling a g1 z0?

----------


## pichuete

you already have the software min endstop disable .so your abl should work . if you Z offset is correct .  (#define min_software_endstops false // If true, axis won't move to coordinates less than HOME_POS.
#define max_software_endstops true)

----------


## tsteever

So, to test I have added the EEPROM lines back in. There is a comment in the code that states the Z offset test has been removed. I wanna try and stick to the enhanced Marlin code as much as possible unless I can firm it works without this feature active. So far having it in or out has made no impact to my initial problem (Z-Axix height).

I have attached the config.h file again is you want to take a look to see what I am using. When I used these offset numbers in the firmware Colin supplied it worked fine. Now I get the weird z height after running the G28 command. I haven't checked a G29. I will do that shortly.



Sniffle, after I run the G28 command I will issue a G1 Z0 and the nozzle is well above the bed.







```

// Uncomment the following line to enable CoreXY kinematics// #define COREXY// coarse Endstop Settings#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors#ifndef ENDSTOPPULLUPS  // fine endstop settings: Individual pullups. will be ignored if ENDSTOPPULLUPS is defined  // #define ENDSTOPPULLUP_XMAX  // #define ENDSTOPPULLUP_YMAX  // #define ENDSTOPPULLUP_ZMAX  // #define ENDSTOPPULLUP_XMIN  // #define ENDSTOPPULLUP_YMIN  // #define ENDSTOPPULLUP_ZMIN#endif#ifdef ENDSTOPPULLUPS  //#define ENDSTOPPULLUP_XMAX  //#define ENDSTOPPULLUP_YMAX  //#define ENDSTOPPULLUP_ZMAX  #define ENDSTOPPULLUP_XMIN  #define ENDSTOPPULLUP_YMIN  #define ENDSTOPPULLUP_ZMIN#endif// The pullups are needed if you directly connect a mechanical endswitch between the signal and ground pins.const bool X_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.const bool Y_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.const bool X_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.const bool Y_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.const bool Z_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.#define DISABLE_MAX_ENDSTOPS//#define DISABLE_MIN_ENDSTOPS// Disable max endstops for compatibility with endstop checking routine#if defined(COREXY) && !defined(DISABLE_MAX_ENDSTOPS)  #define DISABLE_MAX_ENDSTOPS#endif// For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1#define X_ENABLE_ON 0#define Y_ENABLE_ON 0#define Z_ENABLE_ON 0#define E_ENABLE_ON 0 // For all extruders// Disables axis when it's not being used.#define DISABLE_X false#define DISABLE_Y false#define DISABLE_Z false#define DISABLE_E false // For all extruders#define DISABLE_INACTIVE_EXTRUDER true //disable only inactive extruders and keep active extruder enabled#define INVERT_X_DIR true    // for Mendel set to false, for Orca set to true#define INVERT_Y_DIR false    // for Mendel set to true, for Orca set to false#define INVERT_Z_DIR true     // for Mendel set to false, for Orca set to true#define INVERT_E0_DIR false   // for direct drive extruder v9 set to true, for geared extruder set to false#define INVERT_E1_DIR false    // for direct drive extruder v9 set to true, for geared extruder set to false#define INVERT_E2_DIR false   // for direct drive extruder v9 set to true, for geared extruder set to false// ENDSTOP SETTINGS:// Sets direction of endstops when homing; 1=MAX, -1=MIN#define X_HOME_DIR -1#define Y_HOME_DIR -1#define Z_HOME_DIR -1#define min_software_endstops false // If true, axis won't move to coordinates less than HOME_POS.#define max_software_endstops false  // If true, axis won't move to coordinates greater than the defined lengths below.// Travel limits after homing#define X_MAX_POS 300#define X_MIN_POS 0#define Y_MAX_POS 298#define Y_MIN_POS 0#define Z_MAX_POS 300#define Z_MIN_POS 0#define X_MAX_LENGTH (X_MAX_POS - X_MIN_POS)#define Y_MAX_LENGTH (Y_MAX_POS - Y_MIN_POS)#define Z_MAX_LENGTH (Z_MAX_POS - Z_MIN_POS)//============================= Bed Auto Leveling ===========================#define ENABLE_AUTO_BED_LEVELING // Delete the comment to enable (remove // at the start of the line)#define Z_PROBE_REPEATABILITY_TEST  // If not commented out, Z-Probe Repeatability test will be included if Auto Bed Leveling is Enabled.#ifdef ENABLE_AUTO_BED_LEVELING// There are 2 different ways to pick the X and Y locations to probe://  - "grid" mode//    Probe every point in a rectangular grid//    You must specify the rectangle, and the density of sample points//    This mode is preferred because there are more measurements.//    It used to be called ACCURATE_BED_LEVELING but "grid" is more descriptive//  - "3-point" mode//    Probe 3 arbitrary points on the bed (that aren't colinear)//    You must specify the X & Y coordinates of all 3 points  #define AUTO_BED_LEVELING_GRID  // with AUTO_BED_LEVELING_GRID, the bed is sampled in a  // AUTO_BED_LEVELING_GRID_POINTSxAUTO_BED_LEVELING_GRID_POINTS grid  // and least squares solution is calculated  // Note: this feature occupies 10'206 byte  #ifdef AUTO_BED_LEVELING_GRID    // set the rectangle in which to probe    #define LEFT_PROBE_BED_POSITION 30    #define RIGHT_PROBE_BED_POSITION 275    #define BACK_PROBE_BED_POSITION 275    #define FRONT_PROBE_BED_POSITION 20    // set the max number of grid points per dimension    // The G29 command defaults to 3 if nothing is specified.  But setting the number of probed     // points higher is very useful when getting a Bed Topology Report  (G29 n 5 T)    #define AUTO_BED_LEVELING_GRID_POINTS 5    // Uncomment one of the following four lines so the Bed Topology Report can produce a map    // that relates accurately to your bed orientation.      #define ORIGIN_FRONT_LEFT    //#define ORIGIN_BACK_LEFT    //#define ORIGIN_FRONT_RIGHT    //#define ORIGIN_BACK_RIGHT  #else  // not AUTO_BED_LEVELING_GRID    // with no grid, just probe 3 arbitrary points.  A simple cross-product    // is used to esimate the plane of the print bed      #define ABL_PROBE_PT_1_X 15      #define ABL_PROBE_PT_1_Y 180      #define ABL_PROBE_PT_2_X 15      #define ABL_PROBE_PT_2_Y 20      #define ABL_PROBE_PT_3_X 170      #define ABL_PROBE_PT_3_Y 20  #endif // AUTO_BED_LEVELING_GRID  // these are the offsets to the probe relative to the extruder tip (Hotend - Probe)  #define X_PROBE_OFFSET_FROM_EXTRUDER 21.2  #define Y_PROBE_OFFSET_FROM_EXTRUDER 1.8  #define Z_PROBE_OFFSET_FROM_EXTRUDER -2.8  #define Z_RAISE_BEFORE_HOMING 5       // (in mm) Raise Z before homing (G28) for Probe Clearance.                                        // Be sure you have this distance over your Z_MAX_POS in case  #define XY_TRAVEL_SPEED 4000         // X and Y axis travel speed between probes, in mm/min  #define Z_RAISE_BEFORE_PROBING 10    //How much the extruder will be raised before traveling to the first probing point.  #define Z_RAISE_BETWEEN_PROBINGS 3  //How much the extruder will be raised when traveling from between next probing points  //#define Z_PROBE_SLED // turn on if you have a z-probe mounted on a sled like those designed by Charles Bell  //#define SLED_DOCKING_OFFSET 5 // the extra distance the X axis must travel to pickup the sled. 0 should be fine but you can push it further if you'd like.  //If defined, the Probe servo will be turned on only during movement and then turned off to avoid jerk  //The value is the delay to turn the servo off after powered on - depends on the servo speed; 300ms is good value, but you can try lower it.  // You MUST HAVE the SERVO_ENDSTOPS defined to use here a value higher than zero otherwise your code will not compile.  #define PROBE_SERVO_DEACTIVATION_DELAY 300//If you have enabled the Bed Auto Leveling and are using the same Z Probe for Z Homing,//it is highly recommended you let this Z_SAFE_HOMING enabled!!!  #define Z_SAFE_HOMING   // This feature is meant to avoid Z homing with probe outside the bed area.                          // When defined, it will:                          // - Allow Z homing only after X and Y homing AND stepper drivers still enabled                          // - If stepper drivers timeout, it will need X and Y homing again before Z homing                          // - Position the probe in a defined XY point before Z Homing when homing all axis (G28)                          // - Block Z homing only when the probe is outside bed area.  #ifdef Z_SAFE_HOMING    #define Z_SAFE_HOMING_X_POINT (X_MAX_LENGTH/2)    // X point for Z homing when homing all axis (G28)    #define Z_SAFE_HOMING_Y_POINT (Y_MAX_LENGTH/2)    // Y point for Z homing when homing all axis (G28)  #endif#endif // ENABLE_AUTO_BED_LEVELING// The position of the homing switches//#define MANUAL_HOME_POSITIONS  // If defined, MANUAL_*_HOME_POS below will be used//#define BED_CENTER_AT_0_0  // If defined, the center of the bed is at (X=0, Y=0)//Manual homing switch locations:// For deltabots this means top and center of the Cartesian print volume.#define MANUAL_X_HOME_POS 0#define MANUAL_Y_HOME_POS 0#define MANUAL_Z_HOME_POS 0//#define MANUAL_Z_HOME_POS 402 // For delta: Distance between nozzle and print surface after homing.//// MOVEMENT SETTINGS#define NUM_AXIS 4 // The axis order in all axis related arrays is X, Y, Z, E#define HOMING_FEEDRATE {50*60, 50*60, 50, 0}  // set the homing speeds (mm/min)// default settings#define DEFAULT_AXIS_STEPS_PER_UNIT   {80, 80, 4000, 838.5} // customized for MakerFarm i3v 10"#define DEFAULT_MAX_FEEDRATE          {250, 250, 2, 22}    // (mm/sec)#define DEFAULT_MAX_ACCELERATION      {1000,1000,5,1000}    // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older versions raise them a lot.#define DEFAULT_ACCELERATION          500    // X, Y, Z and E max acceleration in mm/s^2 for printing moves#define DEFAULT_RETRACT_ACCELERATION  500   // X, Y, Z and E max acceleration in mm/s^2 for retracts// Offset of the extruders (uncomment if using more than one and relying on firmware to position when changing).// The offset has to be X=0, Y=0 for the extruder 0 hotend (default extruder).// For the other hotends it is their distance from the extruder 0 hotend.// #define EXTRUDER_OFFSET_X {0.0, 20.00} // (in mm) for each extruder, offset of the hotend on the X axis// #define EXTRUDER_OFFSET_Y {0.0, 5.00}  // (in mm) for each extruder, offset of the hotend on the Y axis// The speed change that does not require acceleration (i.e. the software might assume it can be done instantaneously)#define DEFAULT_XYJERK                15.0    // (mm/sec)#define DEFAULT_ZJERK                 0.4     // (mm/sec)#define DEFAULT_EJERK                 5.0    // (mm/sec)//===========================================================================//=============================Additional Features===========================//===========================================================================// Custom M code points#define CUSTOM_M_CODES#ifdef CUSTOM_M_CODES  #define CUSTOM_M_CODE_SET_Z_PROBE_OFFSET 851  #define Z_PROBE_OFFSET_RANGE_MIN -15  #define Z_PROBE_OFFSET_RANGE_MAX -5#endif// EEPROM// The microcontroller can store settings in the EEPROM, e.g. max velocity...// M500 - stores parameters in EEPROM// M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily).// M502 - reverts to the default "factory settings".  You still need to store them in EEPROM afterwards if you want to.//define this to enable EEPROM support#define EEPROM_SETTINGS   //removed to test z offset//to disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out:// please keep turned on if you can.#define EEPROM_CHITCHAT   //removed to test z offset// Preheat Constant#define PLA_PREHEAT_HOTEND_TEMP 180 #define PLA_PREHEAT_HPB_TEMP 70#define PLA_PREHEAT_FAN_SPEED 255   // Insert Value between 0 and 255#define ABS_PREHEAT_HOTEND_TEMP 230#define ABS_PREHEAT_HPB_TEMP 100#define ABS_PREHEAT_FAN_SPEED 255   // Insert Value between 0 and 255 


```

----------


## pichuete

i have similar issues before. i noticed that after a firmware update i need to run a G28 , G28 X0 Y0 , and a G29 . First . if i dont do this my nozzle also stay high when starting a print . 

but in my Case the printer doest do the abl procedure after g28 if i dont do this first after a firmware update.  i havent figure it out whats the cause of this .

----------


## tsteever

I did a G28 command and looked at the location. Still above the bed. I then followed up with a G29 command and after probing the 9 spots I issued a G1 Z0 command and the nozzle did drop to the glass. What is up with that? The G29 command seems to work fine but not the homing funciton. It doesn't matter if I hit the home button in pronterface or issue a G28 command. Both end with the nozzle not zeroing out. It is like it is not calculating the offset?

----------


## tsteever

Weird, So I just watched the G28 command work paying attention to the LCD display. The machine homes X and then Y. After that it drops the probe and zeros the Z. All the while the display reads the Z axis to be 0.00. Once the home has been found the z axis starts to move up and the display says 10.00. This makes sense as the nozzle is moving up 10mm to clear the probe before raising. 

The probe then moves up and then *the display changes to 2.8!* This is the z-offset stored in the memory. This is when the offset is factored into the behavior correct? It almost seems like the G29 is working as it should but the problem is in the G28 command line. Kinda like the offset is being added twice?

----------


## sniffle

homing is the process where the machine finds its zero points.  so it should read zero because until it actually finds the endstops positions in space it doesnt know where it is.

once the Z probe hits the bed, it raises(per what you want to happen), then retracts the probe and sets it height to 2.8 which is your offset.

is the height it is off the bed after you do a G1 Z0 the height you tell it to raise before retracting the probe?

----------


## tsteever

Where is the z raise height before probe retract called out? When I issue a G28 command the x and y home then move to the middle where the z homes. Display reads zero. As soon as it finds zero the axis moves up, display reads 10. Once there the probe retracts and then the display changes to reflect the new offset adjusted height. which should be 12.8. 

To answer your question, it is not. When I issue a G1 Z0 command the the Z axis moves down to what it thinks is 0 but is in fact  is still 2.8mm above the bed. From my observation it adds the offset to its current position but should be subtracting it.

----------


## sniffle

ok, i thought you had flashed the firmware version to gain that feature and had... my mistake.   

i'm at a loss on this one... the important thing though is that it goes tot he correct height after g29, because if you have ABL setup your not going to g28 and print your going to g28, then g29 then print.  If you are successfully dropping to the glass after a g29, then it should be working to get you a print... not promising but it should.  I never have checked after a G28 if my offset is correct its always been after a G28 and g29 because that's the process my printer goes through every time before a print

----------


## tsteever

I'm sure that it will work, just doesn't seem complete.

----------


## tsteever

Where in the firmware is the g28 command programmed? I would like to see f I can figure out what is going on with the g28.

----------


## sniffle

marlinmain.cpp i would assume, but i'm not sure

----------


## tsteever

I am not having any luck reading that code. I think I understand it but get to points I really do not have a clue. What I am looking for is the part in the instructions that say what to do when a G28 command is issued. I want to see what is going on in a step by step fashion. After the probe finds the home the display reads 0 (As is it in fact finding 0). Well, the probe is finding 0, the nozzle should be finding 2.8 (My offset).  In my mind, It should not be reading zero but rather 2.8. 

As soon as it finds this zero height it switches to 10mm and the z moves up, then adds the offset value. This makes perfect sense. as it is at 10mm plus the offset. When then, when I issue a G1 Z0 does the nozzle not go to the bed? It mathematically adds up to me but doesn't compute. 

I know it really shouldn't make a difference but it does to me. I still want to be able to manually level the bed from time to time without having all the complexity of adding and subtracting numbers. I just want to hit Z0 and have the board go to Z0.

I tried to message Roxy, is there anyone else who worked on that code or is it Roxy's baby?

----------


## Roxy

> I am not having any luck reading that code. I think I understand it but get to points I really do not have a clue. What I am looking for is the part in the instructions that say what to do when a G28 command is issued. I want to see what is going on in a step by step fashion. After the probe finds the home the display reads 0 (As is it in fact finding 0). Well, the probe is finding 0, the nozzle should be finding 2.8 (My offset).  In my mind, It should not be reading zero but rather 2.8. 
> 
> As soon as it finds this zero height it switches to 10mm and the z moves up, then adds the offset value. This makes perfect sense. as it is at 10mm plus the offset. When then, when I issue a G1 Z0 does the nozzle not go to the bed? It mathematically adds up to me but doesn't compute. 
> 
> I know it really shouldn't make a difference but it does to me. I still want to be able to manually level the bed from time to time without having all the complexity of adding and subtracting numbers. I just want to hit Z0 and have the board go to Z0.
> 
> I tried to message Roxy, is there anyone else who worked on that code or is it Roxy's baby?


I sent this to you earlier as a private message, but others here might be interested in its content:



> *Re: Help with enhanced ABL*
>  Originally Posted by *tsteever*
> The big question I have is which version of firmware is the best to use? Tight now I just got it from the first link in the thread. I am assuming that as people correct things that the link is changed to reflect the changes.
> 
> 
> 
> For historical reasons, that main thread will probably always exist. But there is talk of breaking it up into 10 or 12 different smaller threads for the various subjects in it. With that said... For you the most important thread is this one: 
> 
> http://3dprintboard.com/showthread.p...s-enhancements
> ...

----------


## tsteever

Thanks! I think the most confusing in all this has been the info I find all over the place on this. I can't keep it all straight! My Printer with enhanced firmware seems to work, just not the G28. I guess I could always run a G29 command after it but sometimes I am only printing a very small part and don't need the G29. Oh well, got some reading to do!

----------


## tsteever

Looking forward to following the thread that Roxy linked to.  It can be found here. Looks like a good place that i should have found before all this!

Anyways, previously I had been reading the ABL and Enhanced Firmware thread in the firmware section and I came to this post. I am going to try and implement this tweak into my code to see if that helps. Basically it is adding another value to the G28 command which is what I thought may be missing. Hopefully it will work and Roxy has a chance to get the firmware sorted and streamlined. I think my confusion came from the so many different versions floating around. Would be nice to have a sticky "look here" thread.

----------


## Roxy

> Thanks! I think the most confusing in all this has been the info I find all over the place on this. I can't keep it all straight! My Printer with enhanced firmware seems to work, just not the G28. I guess I could always run a G29 command after it but sometimes I am only printing a very small part and don't need the G29. Oh well, got some reading to do!


The more I think about it, the behavior of the G28 with Auto Bed Leveling is not a bug.   The purpose of the G28 is to Home the axis.   It does that.   At the very end of the G29 the code compensates for the Z_PROBE_OFFSET.   It would be very straight forward to make the G28 do that also.

----------


## tsteever

Found this post from Abu in the other thread and it seems to fix the issue. Not sure if it is a band aid or not but I can get the nozzle on the bed after a g28 now. 


Pasted from here...

Do a G28, then a G1 Z0. Find out at what distance above the bed the nozzle stops. Let's call that number X.

Look for this section in Marlin_main:




```

if(code_seen(axis_codes[Z_AXIS])) {        if(code_value_long() != 0) {          current_position[Z_AXIS]=code_value()+add_homing[2];        }      }      #ifdef ENABLE_AUTO_BED_LEVELING        if((home_all_axis) || (code_seen(axis_codes[Z_AXIS]))) {          current_position[Z_AXIS] += zprobe_zoffset;  //Add Z_Probe offset (the distance is negative)        }      #endif 


```


Change the "+= zprobe_zoffset;" to "+= zprobe_zoffset+X;" inputting the number you found earlier for X. On my printer, it was 4.

----------


## Roxy

> Found this post from Abu in the other thread and it seems to fix the issue. Not sure if it is a band aid or not but I can get the nozzle on the bed after a g28 now. 
> 
> 
> Pasted from here...
> 
> Do a G28, then a G1 Z0. Find out at what distance above the bed the nozzle stops. Let's call that number X.


Yes, this looks correct.   This should get the G28 and the G29 synchronized in where they think the nozzle is relative to the bed.   One small caution:   If the bed is tilted at a noticeable angle, the nozzle will be at a different height than the probe because the probe is offset from the nozzle.  The G29 corrects this 'error'.  The G28 does not have the bed angle information and it can't do the more accurate correction.

----------


## tsteever

Good to know! I'd really only be doing the solo G28 command on small prints that wouldn't need the ABL (Thin wall calibrations, etc...). I look forward to the dynamic build envelope settings being implemented if possible. Have the printer probe only the areas included in the Skirt would be a valuable addition to the feature. For now though it does appear to be working. This is with the Erik firmware not the beckdac firmware. I will see if I can't move these settings over to that as well.

What should be my next step? I know that there are some wondering/waiting to see if it was working. Should I just post my marlin folder in a zip?

----------


## Chadd

So what are the differences between this and the normal FW from Colin? I know that I saw auto bed leveling options in the FW, what didn't work with the original FW?




> Good to know! I'd really only be doing the solo G28 command on small prints that wouldn't need the ABL (Thin wall calibrations, etc...). I look forward to the dynamic build envelope settings being implemented if possible. Have the printer probe only the areas included in the Skirt would be a valuable addition to the feature. For now though it does appear to be working. This is with the Erik firmware not the beckdac firmware. I will see if I can't move these settings over to that as well.
> 
> What should be my next step? I know that there are some wondering/waiting to see if it was working. Should I just post my marlin folder in a zip?

----------


## sniffle

> So what are the differences between this and the normal FW from Colin? I know that I saw auto bed leveling options in the FW, what didn't work with the original FW?



marlin firmware is an ever evolving piece of software, with bug fixes and features being added all the time... 

colin's firmware is like a snapshot in time, in the time since he made that copy of the firmware, many, many bugs have been fixed and features have been added  not all of which will effect you or others but marlin is ever evolving into better and stronger code with features being added and refined daily

----------


## Roxy

> Good to know! I'd really only be doing the solo G28 command on small prints that wouldn't need the ABL (Thin wall calibrations, etc...). I look forward to the dynamic build envelope settings being implemented if possible. Have the printer probe only the areas included in the Skirt would be a valuable addition to the feature.


I'm not sure what I think about the dynamic build envelope.   I actually wrote a piece of C code to process the GCode and set the parameters.   But I think we all agree it would be best to just have one standard script to do this that everybody uses.   The big reason I'm not sure what to think about this topic is this:    

Unless you have big imperfections in a few locations on your print bed, aren't you better off measuring the whole thing where you can get more accurate numbers that are spread out?   Suppose you are only printing something with a 1" square foot print.  Can you accurately measure a bunch of points withing that area to set the bed angle?   Or would you be better off going way out to the edges to measure your points so you can set the bed level correction matrix more accurately?

----------


## tsteever

That I don't know. For the small stuff I have just been turning off the ABL and just using G28 in my custom code. I need to get the BeckDac working and my fear was the dynamic ABL stuff might cause troubles if I wasn't using the slic3r part.

Can I just load this firmware and ignore the dynamic ABL stuff and assume that it will work?

----------


## Roxy

Yes...   Any feature you don't care about you can ignore.   If you don't want to do post processing to only probe the build area, just ignore all those parameters and don't bother telling Slic3r to use a post processing script.

----------


## tsteever

What about this code?



```

#define max_software_endstops false  // If true, axis won't move to coordinates greater than the defined lengths below. 


```

Can this be enabled for the ABL to work? I hate the fact that I occasionally will hit something and the printer will try to move further than physically able and skips the belt.

----------


## sniffle

> What about this code?
> 
> 
> 
> ```
> 
> #define max_software_endstops false  // If true, axis won't move to coordinates greater than the defined lengths below. 
> 
> 
> ...


yes it can be enabled only the min endstops need be disabled

----------


## sniffle

g29 enhancements have been merged into the main marlin trunk :-D

----------


## tsteever

> g29 enhancements have been merged into the main marlin trunk :-D


And where can this be snatched up exactly? I want to make sure I get the most current version and git hub confuses me.

----------


## sniffle

https://github.com/MarlinFirmware/Marlin

----------


## Draud

Just wondering if you got the abl to work on the Rumba?

----------


## tsteever

Yes. I have it working. Not sure how to best give the information. If one were to follow the thread I think you could come to the same place I am. I can post my firmware if that helps. 

I have now moved onto getting Octoprint setup and figuring out how to get my parts to stop warping and peeling up.

----------


## Chadd

Your FW would be great. You still have my email address?




> Yes. I have it working. Not sure how to best give the information. If one were to follow the thread I think you could come to the same place I am. I can post my firmware if that helps. 
> 
> I have now moved onto getting Octoprint setup and figuring out how to get my parts to stop warping and peeling up.

----------


## tsteever

Chadd, email sent! Don't forget to save your own numbers in the config file. I also have my homing speeds set SLOW. Not too confident in the stock switches so I slowed it down. I have replaced the Z switches with better ones from digikey and never bothered to speed it back up. I may change the raise after first bump to a smaller number in the near future. That can be found in the marlin.main file.

The other number you will want to change are...
Offsets
Bed size after homing
safe homing location (stock is X_MAX_LENGTH/2 and Y_MAX_LENGTH/2) I have them set for a specific location
Servo Angles
esteps


I have the thermal runaway protection disabled as my prints kept terminating when using octoprint. Worked fine when I was just using the SDcard or pronterface. 

There is also a nice feature I have yet to activate where the hotend fan only turns on when the hotend is above 50 degrees. I still have the fan directly wired to the power supply. Once I get things tuned I will change that over. You all can thank Chadd for that one. The info is from this thread...

Been thinking of putting a step by step together but need to get the printed tuned.

----------


## Draud

Thank you for sharing the firmware. Good job on the hard work.

----------


## Chadd

Thanks got the email. I sent you a reply regarding the printing problems you are having.




> Chadd, email sent! Don't forget to save your own numbers in the config file. I also have my homing speeds set SLOW. Not too confident in the stock switches so I slowed it down. I have replaced the Z switches with better ones from digikey and never bothered to speed it back up. I may change the raise after first bump to a smaller number in the near future. That can be found in the marlin.main file.
> 
> The other number you will want to change are...
> Offsets
> Bed size after homing
> safe homing location (stock is X_MAX_LENGTH/2 and Y_MAX_LENGTH/2) I have them set for a specific location
> Servo Angles
> 
> 
> ...

----------


## Chadd

Todd,

Do you happen to have a picture or a diagram of where and what orientation you have the servo plugged into for the firmware file you sent?

Thanks,
Chadd

----------


## Chadd

The reason I ask is that earlier in the thread it looks like you set the servo up on PWM1 but unless you split apart the servo connector you are probably using pins 1, 3 and 5 on EXP 3 for your servo. That would be running the servo off of 12V. Not sure what servo you are using but my servo is 5V so it would need to run off of pins 2, 4 and 6 and use PWM2. Pin 2 is 5v

----------


## Chadd

Anyone else have input on the servo connections?

----------


## Chadd

Ok here is what I did on the servo. I hooked mine up so that it would operate off the 5V line so I am using pins 2 (+5V), 5 (gnd) and 6 (pwm2).

To do this I modified your FW with the following.

#ifdef NUM_SERVOS
    #define SERVO0_PIN         5


    #if NUM_SERVOS > 1
      #define SERVO1_PIN         4
    #endif


    //if NUM_SERVOS > 2
    //  #define SERVO2_PIN         5
    //#endif


    //#if NUM_SERVOS > 3
    //  #define SERVO3_PIN         4
    //#endif
  #endif

----------


## sniffle

you said my name i don't have rumba :-) but i dont think you were talking to me

----------


## tsteever

I am using pins 6, 4 and 2 on the EXP3 port. They are PWM2, Ground, and 5volt respectively. 

If you use the firmware I posted and these pins you should be fine as it is working for me. I think i mentioned somewhere that I had intended to use PWM1 but it was later posted that PWM2 can be used. I have that pin defined in my firmware and my abl is working as it should. 

I just can't get this thing calibrated to print even close to what I want it to print at. None of the parts are usable as they do not align well at all to the drawings. Everything is slightly too large.

----------


## Chadd

Hmm I changed the firmware to match what I posted above and it works on pins 2, 4 and 6 also.




> I am using pins 6, 4 and 2 on the EXP3 port. They are PWM2, Ground, and 5volt respectively. 
> 
> If you use the firmware I posted and these pins you should be fine as it is working for me. I think i mentioned somewhere that I had intended to use PWM1 but it was later posted that PWM2 can be used. I have that pin defined in my firmware and my abl is working as it should. 
> 
> I just can't get this thing calibrated to print even close to what I want it to print at. None of the parts are usable as they do not align well at all to the drawings. Everything is slightly too large.

----------


## sniffle

If you have the option in your slicer have it do perimeters first then move in.  That will help combat the sizes being overlarge

----------


## Chadd

> I am using pins 6, 4 and 2 on the EXP3 port. They are PWM2, Ground, and 5volt respectively. 
> 
> If you use the firmware I posted and these pins you should be fine as it is working for me. I think i mentioned somewhere that I had intended to use PWM1 but it was later posted that PWM2 can be used. I have that pin defined in my firmware and my abl is working as it should. 
> 
> I just can't get this thing calibrated to print even close to what I want it to print at. None of the parts are usable as they do not align well at all to the drawings. Everything is slightly too large.



How much too large are your parts? Are they too large in X,Y and Z or just one direction?

----------


## tsteever

It is frustrating. At times they are off by .5mm other times they are too small. I went through, cleaned, and tightened everything. Hopefully that will help even though I didn't find anything loose. 

Parts is still do not have a finished appearance. I'm going to try some different filament. Maybe that may help.

----------


## Chadd

> It is frustrating. At times they are off by .5mm other times they are too small. I went through, cleaned, and tightened everything. Hopefully that will help even though I didn't find anything loose. 
> 
> Parts is still do not have a finished appearance. I'm going to try some different filament. Maybe that may help.


Unless you need the heat resistance I would recommend switching to PLA, it prints much better than ABS in my experience. The only ABS I have tried though was two rolls that I bought with the printer kit so different ABS may print better than what I got with the printer.

----------


## tsteever

Do I need to add part cooling fan for pla?

----------


## Chadd

> Do I need to add part cooling fan for pla?



Not unless you are printing small parts, where your layer times are really short. Before I added my cooling fan I would just print multiple small parts so that layer times were manageable.

----------


## Roxy

> I just can't get this thing calibrated to print even close to what I want it to print at. None of the parts are usable as they do not align well at all to the drawings. Everything is slightly too large.


Can you use PronterFace to make it move?  Does it move the correct amount of distance in ProterFace?

----------


## Draud

So I finally was able to get around to set up my ABL. Everything is hooked up with servo and working fine to find the position for the servo arm. So when I go to home the x or y axis it moves away from the enstop. But in proterface all the axis move in the right direction. I am using tsteever's frimware he uploaded.

----------


## tsteever

Hmm, wish I could help more. What happens when you home using the lcd? How about safe homing? Do you have that enabled?

----------


## Draud

So its only the x axis that moves the wrong way. If I tap the endstop with my finger it will stop while moving. Everything else works fine y axis moves the right way and the probe arm for the z ABL drops and homes perfect.

----------


## Chadd

> So its only the x axis that moves the wrong way. If I tap the endstop with my finger it will stop while moving. Everything else works fine y axis moves the right way and the probe arm for the z ABL drops and homes perfect.



Was the printer working before you loaded the firmware for the ABL? Sounds to me like you need to turn the connector for your X motor 180° so it will move in the other direction.

----------


## Draud

Before I loaded the abl the printer was working fine. I can go into pronterface and move the x axis and it moves the correct way. Just only when it goes to home yhe x axis it moves to left of the printer instead of the the right which it did before.

----------


## jasay

Draud, when you say that the x-axis moves the correct direction in pronterface, what do you mean exactly?  Is it that:
a) the axis moves to the right when you push the +x buttons on the right side of the UI circle or b) the axis moves away from the endstop (to the left) when you push the +x button on the right side of the UI circle
If your machine is set up per Colin's instructions it should to b).

If it is doing a), it is actually incorrectly moving on both move and home commands and you should probably flip the motor connector.  If it is doing b) for move commands but still homing left I'm not sure what is wrong exactly.  I might give it some manual move commands G1 X100 type moves to make sure which direction the machine thinks is positive.

For reference, tsteever's copy of Marlin does tell the axis to home in the min direction.


```
// ENDSTOP SETTINGS:// Sets direction of endstops when homing; 1=MAX, -1=MIN
#define X_HOME_DIR -1
#define Y_HOME_DIR -1
#define Z_HOME_DIR -1
```

----------


## Draud

Im pretty sure that it is doing a But will make sure when I get home. It was weird that it switched from using one firmware to another.

----------


## jasay

I thought maybe there would be a difference in this section of the configuration.h file, but tsteever's matches Colins.


```
#define INVERT_X_DIR true    // for Mendel set to false, for Orca set to true#define INVERT_Y_DIR false    // for Mendel set to true, for Orca set to false
#define INVERT_Z_DIR true     // for Mendel set to false, for Orca set to true
#define INVERT_E0_DIR false   // for direct drive extruder v9 set to true, for geared extruder set to false
#define INVERT_E1_DIR false    // for direct drive extruder v9 set to true, for geared extruder set to false
#define INVERT_E2_DIR false   // for direct drive extruder v9 set to true, for geared extruder set to false
```

----------


## Chadd

I am using the firmware that tsteever posted with just a few mods to it and it works fine on my 12" so it has to be a connector reversed issue. 

If it worked previously I wonder if someone went into the FW that was loaded and changed it instead of reversing the connector.




> I thought maybe there would be a difference in this section of the configuration.h file, but tsteever's matches Colins.
> 
> 
> ```
> #define INVERT_X_DIR true    // for Mendel set to false, for Orca set to true#define INVERT_Y_DIR false    // for Mendel set to true, for Orca set to false
> #define INVERT_Z_DIR true     // for Mendel set to false, for Orca set to true
> #define INVERT_E0_DIR false   // for direct drive extruder v9 set to true, for geared extruder set to false
> #define INVERT_E1_DIR false    // for direct drive extruder v9 set to true, for geared extruder set to false
> #define INVERT_E2_DIR false   // for direct drive extruder v9 set to true, for geared extruder set to false
> ```

----------


## Draud

So I witched the motor around and everything is working fine. Printing out a calibration cube to see how it goes.

----------


## tsteever

Marlin (3-9-15).zipI have had a few people tell me they can't download the FW I posted earlier. I will repost it here again.

----------


## ex-egll

Hi, I have recently tried to get the ABL working on my i3v 12", unfortunately without too much success. In fact the only success so far is the fact that no smoke has been released from the RUMBA board.

After much wading through forums and you tube I put together a "plan of action":

1.    The standard servo plug needs rewiring to plug into the RUMBA board
            Reverse the +ve and -ve wires so that the -ve is in the middle pin and +ve and signal are on the outer pins

2.    Connect the servo to the RUMBA board as follows
             +ve pin 2 of EXP3    +5v
             -ve pin 4 of EXP3    GND
             sig pin 6 of EXP3    PWM1

3.    Relocate the Z end switch to the servo arm.

4.    Edit pins.h file
             Change Line 455 from 
                  #define SERVO0_PIN         11
        to
                  #define SERVO0_PIN         5
this assigns the servo signal line to PWM2 which is Pin5 on the 2560 CPU chip and Pin 6 on EXP3

5.    Edit Configuration.h file
Change line 291 from 
                   #define min_software_endstops true
            to
                   #define min_software_endstops false
            allows nozzle to go below 0 as set by probe

            Uncomment line 296
                   //#define ENABLE_AUTO_BED_LEVELING

            Change line 311 from             
                   #define XY_TRAVEL_SPEED 8000         // X and Y axis travel speed between probes, in mm/min
            to
                   #define XY_TRAVEL_SPEED 4000         // X and Y axis travel speed between probes, in mm/min
            Reduces probe speed to a more conservative value.

            Uncomment and change Line 576 from        
                //#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command
            to
                #define NUM_SERVOS 1 // Servo index starts with 0 for M280 command

            Uncomment lines 583 and 584            
                   //#define SERVO_ENDSTOPS {-1, -1, 0} // Servo index for X, Y, Z. Disable with -1
                   //#define SERVO_ENDSTOP_ANGLES {0,0, 0,0, 70,0} // X,Y,Z Axis Extend and Retract angles

References:
http://zennmaster.com/random-things
http://3dprintboard.com/showthread.p...ed-level/page3

The above changes compiled and uploaded OK

After connecting the servo to the board I issued a M280 P0 110 command from OctoPi, the terminal window showed the following:

Send: M280 P0 110
Recv: ok Servo 0: 110

but, the arm did not move.

I then repeated the above with a different value M280 P0 20 the terminal window showed the following:

Send: M280 P0 20
Recv: ok Servo 0: 110

The value in the Recv field displayed the originally sent value. A reboot of the RUMBA was needed to get the system to return the correct value, but again this was only returned on the first string sent.

The servo has been tested, and works on an Arduino UNO. Have I missed anything out in the prep work?

*UPDATE*: 
I think that I should have sent M280 P0 S110 not M280 P0 110, but it made no difference. Likewise M401 M402 did not work.

----------


## ex-egll

> Marlin (3-9-15).zipI have had a few people tell me they can't download the FW I posted earlier. I will repost it here again.


Thanks for reposting, but unfortunately I still can't download it. The browser redirects to the page, but all it displays is a white backgound.

----------


## printbus

3DPrintBoard continues to struggle with issues related to images and attachments.  You may have to try posting the zip file at a third party site like dropbox or pastebin.

----------


## ex-egll

The battle continues. After my previous post there was no sign of life in the servo. In addition it was possible to turn the servo by hand, this should not have been the case if the PWM signal was active. Another look at pins.h and Configuration.h showed the following anomaly:

Configuration.h line 65
#define MOTHERBOARD 80
this is for the Rumba board

but in pins.h the only place where the servos are referenced starts at line 454:
#ifdef NUM_SERVOS
and continues to line 468

This is part of the if statement at line 301 
#if MOTHERBOARD == 3 || MOTHERBOARD == 33 || MOTHERBOARD == 34 || MOTHERBOARD == 35 || MOTHERBOARD == 77
which caters only for the RAMPS / MEGA RAMPS / 3Drag Controller boards.

I copied the contents of lines 454 through 468 in pins.h and inserted them at line 1251 which is the Motherboard 80 section.

A quick recompile and the servo now obeys instructions.

Any one see any problems with this modification?

----------


## ex-egll

I pretty much had everything working, and was doing the last set of calibration runs when, through my own fault, I had a small mishap. The servo was extending , but it was too close to one of the clips holding the glass down and the switch snapped off the arm. I reverted to the original firmware, mounted the switch back in its original location and printed a new arm.

I then started the ABL process from scratch, but was unable to control the servo using the M280 P0 Sxxx command, Thinking I had damaged the servo I tested it on an Arduino test setup and it worked. Many tests later and still no response to the command; however I found it would act correctly to the M401 and M402 commands, as well as to the G28 and G29 commands. In each case the servo raised and lowered the arm correctly, but still no movement from the M280 command.

Any ideas?

----------


## Roxy

What does M280 print out?   Anything?    If you give M280 a bogus number like  M280 P 99   does it print an error message out?   The reason I'm asking is the M280 command is bracketed by    #if NUM_SERVOS > 0   and you may not have NUM_SERVOS defined ????

----------


## kablahz

> I pretty much had everything working, and was doing the last set of calibration runs when, through my own fault, I had a small mishap. The servo was extending , but it was too close to one of the clips holding the glass down and the switch snapped off the arm. I reverted to the original firmware, mounted the switch back in its original location and printed a new arm.
> 
> I then started the ABL process from scratch, but was unable to control the servo using the M280 P0 Sxxx command, Thinking I had damaged the servo I tested it on an Arduino test setup and it worked. Many tests later and still no response to the command; however I found it would act correctly to the M401 and M402 commands, as well as to the G28 and G29 commands. In each case the servo raised and lowered the arm correctly, but still no movement from the M280 command.
> 
> Any ideas?


If you have deactivate_servo_delay enabled the m280 command no longer works. I dont know if there is another command to get this to work but in my experience once I enable the servo_delay I can no longer use the m280 command to move the servo.

----------


## ex-egll

> If you have deactivate_servo_delay enabled the m280 command no longer works. I dont know if there is another command to get this to work but in my experience once I enable the servo_delay I can no longer use the m280 command to move the servo.


Bingo! That's the change I made! Never really thought that would cause it... you live and learn! Anyway, ABL is now working fine.

----------


## Roxy

Hmmm...  I have a Deactivate Servo Delay and my M280 command works????

----------


## ex-egll

> Hmmm... I have a Deactivate Servo Delay and my M280 command works????


Ummmm, need to do a little more investigating!

The system just returns an OK when I send an M280 command. If I send an invalid servo number it returns an error saying that the servo is out of range.

----------


## Roxy

> Ummmm, need to do a little more investigating!
> 
> The system just returns an OK when I send an M280 command. If I send an invalid servo number it returns an error saying that the servo is out of range.


OK...  That means the code to handle the M280 is in your firmware image.   If it isn't engaging the probe...  Something else is going on.  Are you giving it good servo and position numbers?

----------


## ex-egll

> OK...  That means the code to handle the M280 is in your firmware image.   If it isn't engaging the probe...  Something else is going on.  Are you giving it good servo and position numbers?


Yup, the servo angles I got when M280 was working are in the firmware now, and the servo arm moves to those positions. I can change those numbers in the firmware and the servo then moves to the new positions. I am using those numbers in the M280 command i.e. M280 P0 S155. I am away from home at the moment, when I get back I'll try disabling the deactivate_servo_delay line and see what happens.

I'll update tomorrow

----------


## ex-egll

Back at home, and I just commented out deactivate_servo_delay and recompiled. The M280 command is now working as advertised ​

Thoughts?

----------


## kablahz

> Back at home, and I just commented out deactivate_servo_delay and recompiled. The M280 command is now working as advertised ​
> 
> Thoughts?


I came here just to tell you I have no idea why the m280 command doesnt work once the deactivate_servo is enabled. I searched for it and found nothing but I didnt really look too hard since I just use the m280 command to get my servo positions and go back in and enable the deacivate_servo_delay. This occurred with both makerfarm's marlin firmware and dacb's.

----------


## Roxy

> Back at home, and I just commented out deactivate_servo_delay and recompiled. The M280 command is now working as advertised ​
> 
> Thoughts?


Can you please tell me EXACTLY what you did to deactivate the servo delay?   Did you set:

#define PROBE_SERVO_DEACTIVATION_DELAY 0

????

----------


## ex-egll

> Can you please tell me EXACTLY what you did to deactivate the servo delay?   Did you set:
> 
> #define PROBE_SERVO_DEACTIVATION_DELAY 0
> 
> ????


Hi Roxy,

In config.h around line #321 in my file I disabled the servo delay by adding // at the start of the line  i.e.:

#define PROBE_SERVO_DEACTIVATION_DELAY 300      M280 command does nothing

//#define PROBE_SERVO_DEACTIVATION_DELAY 300   M280 command works as expected.

----------


## Roxy

> In config.h around line #321 ...
> 
> #define PROBE_SERVO_DEACTIVATION_DELAY 300      M280 command does nothing


OK, sorry to be dense...  I'm pretty sure you are not saying this.  But the 'M280 command...' was not part of the #define.  Right?

Assuming this is true...  Something very strange is going on...

----------


## ex-egll

> OK, sorry to be dense... I'm pretty sure you are not saying this. But the 'M280 command...' was not part of the #define. Right?
> 
> Assuming this is true... Something very strange is going on...


Correct, when the entry in config.h is:

#define PROBE_SERVO_DEACTIVATION_DELAY 300

then the M280 command does nothing

when the entry in config.h is:

//#define PROBE_SERVO_DEACTIVATION_DELAY 300

then the M280 command works as expected.

Sorry for the poor wording.

----------


## ex-egll

The firmware I am using is the one pointed i3v 12" build notes:

Marlin_RUMBA_i3v_GLCDPercent  at   https://drive.google.com/file/d/0B80...BCdkdUaDg/view

Reading through numerous threads it appears that Marlin_Marlin_v1 at https://github.com/beckdac/Marlin
is more up to date and is the better way to go. If that is the case I'll start playing around with that version and see what happens.

----------


## Roxy

> Reading through numerous threads it appears that Marlin_Marlin_v1 at https://github.com/beckdac/Marlin
> is more up to date and is the better way to go. If that is the case I'll start playing around with that version and see what happens.


Yes, the BeckDac version is a good choice.   And...  If there is still a problem with M280 it will be much easier to figure it out.   Let us know what happens!

----------


## ex-egll

> Yes, the BeckDac version is a good choice.   And...  If there is still a problem with M280 it will be much easier to figure it out.   Let us know what happens!


OK, spent the last few days playing with software and Raspberry Pi's!

I now have the BeckDac version running, and the M280 command works as advertised regardless of whether #define PROBE_SERVO_DEACTIVATION_DELAY 300 is active or not.

To get the version running required 1 change to the pins.h file and about a dozen changes to the config.h file.  All is running pretty well now, and the ABL is behaving.

If any one wants to know the changes I made, let me know.

----------


## tsteever

Urrg!

I am at my wits end. I cannot get my first layer to stick anymore. I cleaned out the nozzle and had to reset my offsets. Followed the same procedure as before but my first layer is not sticking. I measured and remeasured everything. When I run a G29 command and pause the print in the first layer it measures fine. The machine reads .2 and the feelers confirm this. Trouble is my prints don't stick. 

I was advised to increase the offset in the firmware to bring the nozzle closer but this doesn't make sense to me. Should the measurements match? If the machine thinks it is at .2 the actual nozzle should be at .2. This just makes sense to me.

What am I missing in the slicer to get this to stick?

----------


## SgtToe

Hi All I have purchased the micro switch and servo that is referenced in the zenmaster videos and will be printing Clough42's cooling shroud and ABL parts soon.  I quickly read through all 14 pages of this post and was overwhelmed.

After I install the parts would the proper course of events be as follows?

1.  Update my firmware from the default that I got from Makerfarm to the newest version?
2.  Follow steps in post number 118 on this thread by ex-egll.

that it?

----------


## Roxy

> If any one wants to know the changes I made, let me know.


It would be helpful for you to just post the changes as a reply to this thread!

----------


## Roxy

> Hi All I have purchased the micro switch and servo that is referenced in the zenmaster videos and will be printing Clough42's cooling shroud and ABL parts soon.  I quickly read through all 14 pages of this post and was overwhelmed.
> 
> After I install the parts would the proper course of events be as follows?
> 
> 1.  Update my firmware from the default that I got from Makerfarm to the newest version?
> 2.  Follow steps in post number 118 on this thread by ex-egll.
> 
> that it?


My suggestion would be to get the BeckDac release at:  https://github.com/beckdac/Marlin

That will be very close to what you need.   Wire things up and if you have questions or problems, there will be a number of people here that can help you.

----------


## ex-egll

I agree with Roxy, having gone through this recently! With the BeckDac release, very few changes are needed. If you need a list of what I changed let me know.

----------


## vk3laj

Colin said there's an auto leveling kit coming very soon for around $10 from Makerfarm (both Rumba and Ramps)

----------


## tsteever

Feel free to add/change this list. Just copy it and repost it into your new post to keep it clear...

1) print all parts needed for ABL and install new unstops and servos.
2) Download the current BeckDak release and install. https://github.com/beckdac/Marlin
3) Change esteps to fit your printers needs. I had to change the extruder steps.
4) Change the pins.h file to enable the servo on the rumba. Add the following code at line 1704 (right before the #endif //MOTHERBOARD==80). This will allow you to use pins 2, 4, and 6 on EXP3 header pins. Pay careful attention as you will need to rewire the ends as they do not match the servo wiring. Just use an exacto blade to lift the catch on the plug to pull the wires and rearrange them. 


```
#ifdef NUM_SERVOS#define SERVO0_PIN 5 // For Rumba PWM_1 is to be used for the servo it is on expansion slot 3, pin 5
#endif[/i]
```

5) Enable ABL in the firmware and change the offsets in the config.h file to match your setup following the youtube tutorials 
6) adjust the  marlinmain.ccp file line 1604 to look like the following code. For me I had to add the +4 


```
current_position[Z_AXIS] += zprobe_zoffset+4;  //Add Z_Probe offset (the distance is negative)
```

----------


## lakester

Hope this isn't considered a thread hijack..., but..., question:

When ABL is enabled, and once printing begins, is the Z correction applied continuously throughout the print, or is it disabled after the first few layers?  Programmable option?

Thx!

----------


## Roxy

> Hope this isn't considered a thread hijack..., but..., question:
> 
> When ABL is enabled, and once printing begins, is the Z correction applied continuously throughout the print, or is it disabled after the first few layers?  Programmable option?
> 
> Thx!


Currently, it is through the whole print.   But there is talk about making the nozzle follow the contour of the bed (to handle high and low spots) and having that phase out over some number of layers.   That code isn't there right now.

----------


## rhonal89

That would be great. Because currently the way am set up right now. Is having to print in one conner of the bed were the prints layer looks better that the other spots.




> Currently, it is through the whole print.   But there is talk about making the nozzle follow the contour of the bed (to handle high and low spots) and having that phase out over some number of layers.   That code isn't there right now.

----------


## lakester

OK..., thx.




> Currently, it is through the whole print.   But there is talk about making the nozzle follow the contour of the bed (to handle high and low spots) and having that phase out over some number of layers.   That code isn't there right now.

----------


## tfast500

Haven not fully read through this thread but really wanting to get auto bed leveling setup on my Makerfarm 10" i3V with Rumba board. 
I am wishing I had opted for the basic RAMPS because I cant hardly find info for this board.... 

Anyways can someone with a fully working 10" post a github of there modified Marlin firmware? Would help so much!

----------


## Roxy

> Currently, it is through the whole print.   But there is talk about making the nozzle follow the contour of the bed (to handle high and low spots) and having that phase out over some number of layers.   That code isn't there right now.


These features are now fully enabled and working....

----------


## Roxy

> I am wishing I had opted for the basic RAMPS because I cant hardly find info for this board.... 
> 
> Anyways can someone with a fully working 10" post a github of there modified Marlin firmware? Would help so much!


RAMPS is much more standard.   I'm in the process of converting all of my printers over to RAMPS.   Probably if you post an issue at https://github.com/MarlinFirmware/Marlin/issues somebody will have exactly what you want so you can load your printer with RC-8.

----------


## ex-egll

> Haven not fully read through this thread but really wanting to get auto bed leveling setup on my Makerfarm 10" i3V with Rumba board. 
> I am wishing I had opted for the basic RAMPS because I cant hardly find info for this board.... 
> 
> Anyways can someone with a fully working 10" post a github of there modified Marlin firmware? Would help so much!


I have downloaded the latest RC-8 Bug fix, and have it up and running with RUMBA on a Makerfarm Prusa i3V machine. Do you still want the Configuration.h file?, I also have an Excel spreadsheet of the changes I made.

----------


## Roxy

> I have downloaded the latest RC-8 Bug fix, and have it up and running with RUMBA on a Makerfarm Prusa i3V machine. Do you still want the Configuration.h file?, I also have an Excel spreadsheet of the changes I made.


Yes!   That is definitely a good thing to add to the example_configurations directory.   Can you make a Push Request for them to be added?

----------


## ex-egll

> Yes!   That is definitely a good thing to add to the example_configurations directory.   Can you make a Push Request for them to be added?


Roxy, no problems for the files to be used, but not being a github user (other than downloading) I don't have a clue about pushing and pulling. Is there a way I can get the files (configuration.h, configuration_adv.h, 1 excel and 1 text) to you and ask you yo post them, or if it is a simple task to point me towards github for dummies so I can do it myself!

----------


## tfast500

> Roxy, no problems for the files to be used, but not being a github user (other than downloading) I don't have a clue about pushing and pulling. Is there a way I can get the files (configuration.h, configuration_adv.h, 1 excel and 1 text) to you and ask you yo post them, or if it is a simple task to point me towards github for dummies so I can do it myself!


I got it all configured and working  :Smile:   It wasn't all that hard with the newer firmware.

I should have made a spreadsheet like you for future reference but it wasn't to bad if I had to do it over. Plus I can just copy my current config. 

I am so pleased with abl! I will never go back!

----------

