1. Got a question or need help troubleshooting? Post to the troubleshooting forum or Search the forums!

Marlin Firmware Upgrade 1.1.0 RC8 & RCBugFix (For R1 & R1+PLUS)

Discussion in 'Mods and Upgrades' started by WheresWaldo, Jun 11, 2015.

Thread Status:
Not open for further replies.
  1. digitalsolo

    digitalsolo New Member

    Joined:
    Mar 23, 2016
    Messages:
    21
    Likes Received:
    5
    I need to upgrade to RC7... I've been on RC6 since release and, aside from stupid things I've done, I've never had a failed print since. Probably 80+ prints and 0 failures with mesh bed leveling setup (well, zero height/bed leveling issues, I've goofed up plenty of stuff).

    So again, big thanks for your work on this. I need to get the Ultimaker 2 clone I'm building done and move over to RC7.
     
    mark tomlinson likes this.
  2. WheresWaldo

    WheresWaldo Volunteer ( ͠° ͟ʖ ͡°)
    Staff Member

    Joined:
    Feb 18, 2015
    Messages:
    5,905
    Likes Received:
    3,586
    Thanks @digitalsolo, when I get back home I will see where the development is and update this thread.

    Sent from my SAMSUNG-SM-N910A using Tapatalk
     
  3. WheresWaldo

    WheresWaldo Volunteer ( ͠° ͟ʖ ͡°)
    Staff Member

    Joined:
    Feb 18, 2015
    Messages:
    5,905
    Likes Received:
    3,586
    Just checked in on Marlin and see that they are still on RC7. Reading through some of the open issues there is mention of an RC8 coming, just no time frame. After things settle down for me (I just got home last night and need a few days to sort through the emails) I will post an RCBugFix set of configuration files for those that want or may need any of the changes since RC7.
     
  4. WheresWaldo

    WheresWaldo Volunteer ( ͠° ͟ʖ ͡°)
    Staff Member

    Joined:
    Feb 18, 2015
    Messages:
    5,905
    Likes Received:
    3,586
    If anyone is following Marlin development, I am sure you know there are only about 6 verified bugs left in RC7 (in the newer RCBugFix codebase) and I am hoping for an RC8 build real soon. As soon as 1.1.0 is an official release I will turn my attention to the Unified Bed Leveling version of Marlin. There seems to be a lot of promise in the new more refined leveling code but it is currently based on RC6 and there have been a lot of changes since then that help our Robo's. So I will not look at UBL until after we have a stable 1.1.0.

    I did upload the RCBugFix just prior to my Oregon trip and it works fine on my machine. I expect the same of the next RC release.
     
    jim3Dbot and Geof like this.
  5. WheresWaldo

    WheresWaldo Volunteer ( ͠° ͟ʖ ͡°)
    Staff Member

    Joined:
    Feb 18, 2015
    Messages:
    5,905
    Likes Received:
    3,586
    Okay, if you guys are like me and just are tired of waiting on RC8 I have just downloaded RCBugFix as of 09/18/2016 and taken a look at the changes in the configuration files. As per usual, there are a few variable name changes as well as rearranging the order of where parameters are in configuration.h. After I return of church services and grocery shopping with my wife I will upload zip files so anyone who wants to, may run the latest RCBugFix. Just to make sure we are all on the same playing field, I plan to include all the Marlin files, as of today, and place them in all the zip files. Essentially download one zip from here and you will have a complete and specifically modified version of Marlin ready to compile and upload. I have verified and know it compiles, but have not run it personally yet.
     
    mark tomlinson likes this.
  6. WheresWaldo

    WheresWaldo Volunteer ( ͠° ͟ʖ ͡°)
    Staff Member

    Joined:
    Feb 18, 2015
    Messages:
    5,905
    Likes Received:
    3,586
    Here are all files necessary to run Marlin 1.1.0-RCBugFix, as of September 18th, on our Robo3D R1 printers. I have separated them out into several compressed archive files. Just download the one you need and extract the appropriate files within the Marlin source subdirectory. You cannot use configuration files from previous Marlin releases or from previous Release Candidates. These archives contain the complete source modified as noted.

    Basic steps required:
    1. Download one of the attached files appropriate for your hardware
      RCBF_MESH_5-16_9-18 is for Robo R1 with 5/16" threaded rod Z-Axis
      RCBF_MESH_8mm_9-18 is for Robo R1 with 8 mm Z Axis threaded rods
      RCBF_MESH_PLUS_9-18 is for Robo R1+PLUS and R1's upgraded with the Z-Axis lead screw upgrade kit from Robo3D
      RCBF_MESH_R1-TR8_9-18 is for Robo R1's with upgraded Z Axis 3rd party lead screws
    2. Compile and upload to your Arduino 2540 board using the Arduino IDE. Compilation has been tested with Arduino IDE versions 1.6.9 and 1.6.11.
    3. After successful upload, clear EEPROM memory by issuing the following two commands in terminal mode:
      M502
      M500
    4. Re-perform the MESH leveling routine and save the results.
    5. (Optional) Re-enter you Z axis offset, if needed, using G29 S4 Zn.nn where n.nn is a positive number to move further from the bed and negative to move closer. M565 support is not included in this version. This affects the entire mesh, so you usually do not need Z offset at all.
    Common to all these files are:
    1. Set up for Hexagon hotend
    2. Full Graphics LCD enabled
    3. EEPROM memory enabled
    4. MESH Bed Leveling enabled w/16 probe points (4 x 4 grid)
    5. MESH Bed Leveling menu enabled
    6. SD Card support
    7. Temperature PID tuning menu enabled
    8. Babystepping enabled
    9. Encoder reversed
    10. Encoder beeps
    Please note that I am not one of the Marlin developers. If you have an issue with this release post here first. If it is determined that it is not a configuration issue, then you may be directed to post the issue on Marlin's GITHUB. I cannot guarantee success using beta firmware, I can vouch for error free compiling with these included files.
     
    Geof likes this.
  7. WheresWaldo

    WheresWaldo Volunteer ( ͠° ͟ʖ ͡°)
    Staff Member

    Joined:
    Feb 18, 2015
    Messages:
    5,905
    Likes Received:
    3,586
    Here are all files necessary to run Marlin 1.1.0-RCBugFix, as of September 18th, on our Robo3D R1 printers. I have separated them out into several compressed archive files. Just download the one you need and extract the appropriate files within the Marlin source subdirectory. You cannot use configuration files from previous Marlin releases or from previous Release Candidates. These archives contain the complete source modified as noted.

    Basic steps required:
    1. Download one of the attached files appropriate for your hardware
      RCBF_ABL_5-16_9-18 is for Robo R1 with 5/16" threaded rod Z-Axis
      RCBF_ABL_8mm_9-18 is for Robo R1 with 8 mm Z Axis threaded rods
      RCBF_ABL_PLUS_9-18 is for Robo R1+PLUS and R1's upgraded with the Z-Axis lead screw upgrade kit from Robo3D
      RCBF_ABL_R1-TR8_9-18 is for Robo R1's with upgraded Z Axis 3rd party lead screws
    2. Compile and upload to your Arduino 2540 board using the Arduino IDE. Compilation has been tested with Arduino IDE versions 1.6.9 and 1.6.11.
    3. After successful upload, clear EEPROM memory by issuing the following two commands in terminal mode:
      M502
      M500
    4. Re-enter you Z axis offset using M851 as a positive number. M565 support is not supported in this version
    Common to all these files are:
    1. Set up for Hexagon hotend
    2. Full Graphics LCD enabled
    3. EEPROM memory enabled
    4. Automatic Bed Leveling enabled w/9 probe points (3 x 3 grid)
    5. SD Card support
    6. Temperature PID tuning menu enabled
    7. Babystepping enabled
    8. Encoder reversed
    9. Encoder beeps
    Please note that I am not one of the Marlin developers. If you have an issue with this release post here first. If it is determined that it is not a configuration issue, then you may be directed to post the issue on Marlin's GITHUB. I cannot guarantee success using beta firmware, I can vouch for error free compiling with these included files.

    Note: Cosmetic change made on 09/19/2016, please redownload zip files.
     
    #647 WheresWaldo, Sep 18, 2016
    Last edited: Sep 19, 2016
  8. Oisin

    Oisin Member

    Joined:
    Apr 14, 2015
    Messages:
    384
    Likes Received:
    23
    Hey guys! Hopefully this isn't a dumb question but I use Jimbots brilliant IR sensor for my autoleveling sequence. I've been trying to make the same changes in 1.1.0 that I had to in the standard 'R1 + with Leadscrew upgrade' code to get the IR sensor to work but quite a lot has changed and there is now a 'z-probe' section. I'm no longer sure what I have to change exactly.

    I was wondering if anyone with the IR sensor has gotten it to work in this version of Marlin with MESH bed leveling? Again, sorry if you are all way past that point and I'm asking something stupid.

    Robo support told me to ask here so I thought I'd give it a shot.
     
    jim3Dbot likes this.
  9. WheresWaldo

    WheresWaldo Volunteer ( ͠° ͟ʖ ͡°)
    Staff Member

    Joined:
    Feb 18, 2015
    Messages:
    5,905
    Likes Received:
    3,586
    @Oisin I was going to work on it myself, @jim3Dbot was kind enough to send me one of the IR sensors, then I had to travel out of town for a memorial service and now I can't remember where I put it. Maybe @danzca6 or someone else can look at the code and see what is needed. I am sure I will find it soon, but I am right in the middle of a ton of other projects and this has gotten pushed back some.
     
    jim3Dbot likes this.
  10. Oisin

    Oisin Member

    Joined:
    Apr 14, 2015
    Messages:
    384
    Likes Received:
    23
    No problem, Waldo. I was just checking to see if it had already been done before I spent loads of time trying to do it myself. I can look in to it too. Thanks for the quick response! I really don't think it'll be too difficult provided the old method of leveling hasn't been *totally* overhauled (which it might have been).

    If I have any luck I'll post the files back here.
     
  11. WheresWaldo

    WheresWaldo Volunteer ( ͠° ͟ʖ ͡°)
    Staff Member

    Joined:
    Feb 18, 2015
    Messages:
    5,905
    Likes Received:
    3,586
    I am looking at the latest code from Marlin and it looks like you need to set a few things that I have not set. I am only looking at ABL since all the probe does in MESH is home Z, and it's kinda overkill for just homing Z. So far this is what I see:

    First, you need to modify my values for X_PROBE_OFFSET_FROM_EXTRUDER and Y_PROBE_OFFSET_FROM_EXTRUDER and maybe a rough estimate for Z_PROBE_OFFSET_FROM_EXTRUDER.

    In the RCBugFix release they are around line 544
    Code:
    #define X_PROBE_OFFSET_FROM_EXTRUDER 0  //--ROBO-BH X offset: -left  +right  [of the nozzle]
    #define Y_PROBE_OFFSET_FROM_EXTRUDER 0  //--ROBO-BH Y offset: -front +behind [the nozzle]
    #define Z_PROBE_OFFSET_FROM_EXTRUDER 0   // Z offset: -below +above  [the nozzle]
    You need to replace the 0's with actual measurements

    You might also want to enable Z_MIN_PROBE_REPEATABILITY_TEST at least during your testing. You need to test for Z_PROBE_OFFSET by lowering the head until the IR sensor triggers then you can reset the range for M851 if you like with these two defines
    Code:
    #define Z_PROBE_OFFSET_RANGE_MIN -20
    #define Z_PROBE_OFFSET_RANGE_MAX 20
    I think that should be all the changes. I do believe that because of the way the IR probe works, you must use M851. It will likely be a rather large number since it will be the distance between the bottom of the nozzle and where the IR probe actually triggers. I would also think you will need to reset M851 every time you remove the nozzle to replace a worn one or even to clean it out.

    If this is all wrong, don't blame me. I based all this information on what was in @jim3Dbot's thread and David Crocker's original posts about the sensor.
     
    #651 WheresWaldo, Sep 23, 2016
    Last edited: Sep 23, 2016
    jim3Dbot likes this.
  12. jim3Dbot

    jim3Dbot Active Member

    Joined:
    Jun 1, 2015
    Messages:
    246
    Likes Received:
    124
    @Oisin Hey! Thanks for the kind words.......Here's where I'm at.....the IR was giving me problems with a secondary reflection from the large white areas on the glass bed.........So in a truly wingin' it manner, I purchased a thin silicon mat to sandwich between the glass & a reprap KO of a PCB.....my robo has been in pieces for sometime.......When you get time chk-out the thread on MK2a PCB Bed, I'm working on in the mods forum......I have a few more days/week, I guess on this project......The projects 1st objective is to totally understand the PCB Heater.......then prepare the glass with some high temp flat black paint on the underside....... pertinent in the IR proper functioning.......you can always cover your white areas with painters tape or revise the firmware coordinates to avoid the areas. @WheresWaldo & I will eventually get it going............place your bet on WW for the perseverance in the code & I in the hardware............I may be giving us too much credit tho......:eek:
     
    WheresWaldo likes this.
  13. WheresWaldo

    WheresWaldo Volunteer ( ͠° ͟ʖ ͡°)
    Staff Member

    Joined:
    Feb 18, 2015
    Messages:
    5,905
    Likes Received:
    3,586
    Forgot about the white areas. I long ago scraped all the paint off the bottom of my glass plate when I did the silicone heater upgrade.

    @Oisin
    You need to be careful selecting the initial probe points as everything else is calculated from there. In my code the probe points are contained within the following code snippets:
    Code:
      // Arbitrary points to probe.
        // A simple cross-product is used to estimate the plane of the bed.
        #define ABL_PROBE_PT_1_X 15
        #define ABL_PROBE_PT_1_Y 200  //ROBO-BH
        #define ABL_PROBE_PT_2_X 15
        #define ABL_PROBE_PT_2_Y 20
        #define ABL_PROBE_PT_3_X 110  //ROBO-BH
        #define ABL_PROBE_PT_3_Y 200  //ROBO-BH
    Of course that is only used if you are doing the three point auto-level, which most of us don't, but would be good to change anyway to avoid the white sections of the bed.

    This section of code outlines the edges of the grid:
    Code:
        #define LEFT_PROBE_BED_POSITION 10  //--ROBO-BH
        #define RIGHT_PROBE_BED_POSITION 200  //--ROBO-BH
        #define FRONT_PROBE_BED_POSITION 10  //--ROBO-BH
        #define BACK_PROBE_BED_POSITION 220  //--ROBO-BH
    Then all the other points are calculated mathematically based on this parameter:
    Code:
    #define AUTO_BED_LEVELING_GRID_POINTS 3  //--ROBO-BH
    The supplied value calculates a 9 point grid (3 x 3).

    I am pretty sure most of the math is done in Marlin_main.cpp, but suffice it to say that you end up with evenly spaced grid lines in both the X and Y axis.
     
    #653 WheresWaldo, Sep 23, 2016
    Last edited: Sep 23, 2016
  14. Oisin

    Oisin Member

    Joined:
    Apr 14, 2015
    Messages:
    384
    Likes Received:
    23
    No problem, Jim! It's well deserved praise. I actually use a PRINTinZ plate which is matte black, so I don't think I'll have the same reflection issues. I do intend to go back to the glass plate eventually so I'll keep what you said in mind for that.

    Waldo, with the older version of Marlin that I've got 'ROBO3DR1PLUSV1' (sorry, I don't know the version by any other name), I had to modify the following parts of the code:

    Configuration.h
    Code:
    // 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. //robo
    const bool Y_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. //robo
    // IR: Need to change next setting from true to false so Z is triggered when IR probe turns on
    // instead of when one of the Z endstop turns off like stock autoleveling
    const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. //robo
    const bool X_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. //robo
    const bool Y_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. //robo
    const bool Z_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop. //robo
    
    Code:
    // set the rectangle in which to probe
    // For IR mounted on right or left of extruder (account for full offset of probe so you don't hit X endstop if possible)
    #define LEFT_PROBE_BED_POSITION 30 // IR: Changed from default (15) to 30 to account for PROBE setting adjusted +25 mm
    #define RIGHT_PROBE_BED_POSITION 220 // IR: Changed to 220 to put the IR closer to the edge default (205)
    // For IR mounted in front or back of extruder (account for full offset of probe so you don't hit Y endstop if possible)
    #define BACK_PROBE_BED_POSITION 230
    #define FRONT_PROBE_BED_POSITION 20
    
    Code:
    // these are the offsets to the probe relative to the extruder tip (Hotend - Probe)
    // In relationship to the nozzle, if probe is right X is +, if probe is left X is -,
    // if probe is front Y is +, if probe is back Y is -.
    #define X_PROBE_OFFSET_FROM_EXTRUDER
    #define Y_PROBE_OFFSET_FROM_EXTRUDER 25
    #define Z_PROBE_OFFSET_FROM_EXTRUDER 0
    
    Marlin_main.cpp
    Code:
    //if (zprobe_zoffset < 0)
    //{
    current_position[Z_AXIS] = zprobe_zoffset; // in the lsq we reach here after raising the extruder due to the loop structure
    //}
    //else
    //{
    //current_position[Z_AXIS] = -zprobe_zoffset; // in the lsq we reach here after raising the extruder due to the loop structure
    //}
    
    Code:
    //if (zprobe_zoffset < 0)
    //{
    current_position[Z_AXIS] = zprobe_zoffset; // in the lsq we reach here after raising the extruder due to the loop structure
    //}
    //else
    //{
    //current_position[Z_AXIS] = -zprobe_zoffset; // in the lsq we reach here after raising the extruder due to the loop structure
    //}
    
    Code:
    //if (zprobe_zoffset < 0)
    //{
    current_position[Z_AXIS] += zprobe_zoffset; // in the lsq we reach here after raising the extruder due to the loop structure
    //}
    //else
    //{
    //current_position[Z_AXIS] += -zprobe_zoffset; // in the lsq we reach here after raising the extruder due to the loop structure
    //}
    
    This got it to work perfectly for me. It's pretty much what Danzca did with a few small tweaks based on the position of my sensor. What you have said to modify differs from the above with regards to the things I had to edit in Marlin_main.cpp so I just thought I'd mention it.

    EDIT:

    I just noticed your most recent post. Does the 'Auto Bed Leveling' not just calculate tilt of the bed? It it different to what the printer already does because that's what I'm having issues with. MESH seems to be what I'm looking for based on what I understand.

    EDIT 2:

    I searched for the code in 'Marlin_main.cpp' that I listed above and it doesn't exist in the new firmware. I'll try changing what you suggested and loading that without touching anything else.
     
    #654 Oisin, Sep 23, 2016
    Last edited: Sep 23, 2016
  15. WheresWaldo

    WheresWaldo Volunteer ( ͠° ͟ʖ ͡°)
    Staff Member

    Joined:
    Feb 18, 2015
    Messages:
    5,905
    Likes Received:
    3,586
    I have no interest in going back to 1.0.0 so I can't help you with older versions of Marlin. I haven't used Marlin 1.0.0 in months.
    There should be no changes to Marlin_main.cpp. All changes for the IR probe should be set in Configuration.h as that is the intent from the developers. I am not sure where you thought I implied that ABL does more than create a grid and measure at the grid points. MESH is a completely different procedure used to level your bed. It is almost 100% manual and once the grid is in memory, the procedure does not repeat itself. Even issuing a G29 command will only spit out the current mesh measurements and not actually level again. As I mentioned in a previous post MESH and the IR probe are really not using the IR probe to it's fullest potential and is simply not needed. This situation might change after Marlin 1.1.0 is released as the developers are completely rewriting the leveling section and coming out with something called Unified Bed Leveling (UBL).
     
    jim3Dbot likes this.
  16. danzca6

    danzca6 Well-Known Member

    Joined:
    Jul 27, 2015
    Messages:
    2,161
    Likes Received:
    1,076
    In the Robo leadscrew version I did have to make changes to main before it wouldn't allow me to do a positive z offset. I know it shouldn't need it but we'll you know how things go.
     
  17. danzca6

    danzca6 Well-Known Member

    Joined:
    Jul 27, 2015
    Messages:
    2,161
    Likes Received:
    1,076
    I'm having a similar issue with rc7 but this time it reports everything back as being right but the nozzle says otherwise. I put it on the back burner for now since my household responsibilities have gone into full gear. I do want to sit down and do a fresh start again to see where things went wrong. Now that Robo had the R2 series running the IR on RC7 I must make mine work. Of course my new Duet controller does it out of the box and I will be serving over to that shortly I hope.
     
  18. jim3Dbot

    jim3Dbot Active Member

    Joined:
    Jun 1, 2015
    Messages:
    246
    Likes Received:
    124
    @WheresWaldo "As I mentioned in a previous post MESH and the IR probe are really not using the IR probe to it's fullest potential and is simply not needed. This situation might change after Marlin 1.1.0 is released....

    I have to say, 'spot-on WW' , a few months ago, my original IR is still very, very repeatable.....on all black probe area....however, my boroGlass is not flat................carefully shimming the magnets with flats have gotten' it close but no cigar............I do not print much, only if a new design warrants......hopefully, the hobby thing will kick in this winter...........these machines are a tinkering mans dream.....kudos to open source.....I am using my IR, at the moment, as just a X-Y homey........limit switches would do just as well, since the process is nothing more than a starting point at the beginning of each print..........but, but, but......it removes the switch wires from the z rods & eliminates that urge to adjust'em. If mesh does not play out with the new code, and it will, I would obtain a flat bed with manual tramming, delegating the IR to a mere homey.........cool work guys.......keep plugin........jimmy
     
  19. WheresWaldo

    WheresWaldo Volunteer ( ͠° ͟ʖ ͡°)
    Staff Member

    Joined:
    Feb 18, 2015
    Messages:
    5,905
    Likes Received:
    3,586
    Most of the issues with using an IR probe with Marlin are not all related to firmware. Some RAMPS compatible boards do not easily expose +5v and only have two pins (GND, Signal) for endstops, expecting them to be simple switches, particularly some all-in-one boards. The Marlin developers know that IR probes exist and have planned for it. It is an integral part of the firmware code, even if documentation for using that feature is lacking.
     
    jim3Dbot and mark tomlinson like this.
  20. danzca6

    danzca6 Well-Known Member

    Joined:
    Jul 27, 2015
    Messages:
    2,161
    Likes Received:
    1,076
    Rc7 has more documentation than older versions. My issue is that it still sees the IR as an endstop after probing during the print. They talk a lot about induction probing and the need to turn off the probe prior to printing. Can't do that with the IR that I know of. I'm just missing a simple switch out command call.
     
    jim3Dbot likes this.
Thread Status:
Not open for further replies.

Share This Page