Close



Page 2 of 16 FirstFirst 123412 ... LastLast
Results 11 to 20 of 172

Hybrid View

  1. #1
    Engineer
    Join Date
    Jul 2014
    Location
    Eastern Colorado
    Posts
    536
    I've made some changes in case someone decides to add this code to Marlin, but not enable it:

    case 28: //G28 Home all Axis one at a time
    #ifdef ENABLE_AUTO_BED_LEVELING
    #ifndef SAVE_G29_CORRECTION_MATRIX
    plan_bed_level_matrix.set_to_identity(); //Reset the plane ("erase" all leveling data)
    #endif
    #endif //ENABLE_AUTO_BED_LEVELING

    #if Z_MIN_PIN == -1
    #error "You must have a Z_MIN endstop in order to enable Auto Bed Leveling feature!!! Z_MIN_PIN must point to a valid hardware pin."
    #endif
    #ifdef SAVE_G29_CORRECTION_MATRIX
    plan_bed_level_matrix.set_to_identity(); //Reset the plane ("erase" all leveling data)
    #endif

    This way G28's original function of erasing the matrix is retained while the code is disabled, and then switched to G29 when it is enabled.

  2. #2
    No, NO, N O!!! This just means in a case like mine because I can tell you that today my matrix will look like A and tomorrow the matrix will look like C and the next day B=A+/-C so in my case I would never ever just use the same matrix all of the time. One print then another (as in my example) I might (I have not tried it yet but theoretically it should be fine) but never from one day, or even hour, to the next. Basically if the bed has had a chance to cool completely down, as well as the entire printer, forget using a previous matrix.

  3. #3
    Super Moderator Roxy's Avatar
    Join Date
    Apr 2014
    Location
    Lone Star State
    Posts
    2,182
    Quote Originally Posted by DarkAlchemist View Post
    No, NO, N O!!! This just means in a case like mine because I can tell you that today my matrix will look like A and tomorrow the matrix will look like C and the next day B=A+/-C so in my case I would never ever just use the same matrix all of the time. One print then another (as in my example) I might (I have not tried it yet but theoretically it should be fine) but never from one day, or even hour, to the next. Basically if the bed has had a chance to cool completely down, as well as the entire printer, forget using a previous matrix.
    If you don't trust the mechanic's of your printer, shouldn't you be doing a G29 before every print? And if that is true, why would you add this code to your firmware?

  4. #4
    Quote Originally Posted by Roxy View Post
    If you don't trust the mechanic's of your printer, shouldn't you be doing a G29 before every print? And if that is true, why would you add this code to your firmware?
    Nope, heat makes it flex and the parts expand and when it cools down, plus the movements of the bed while it is warm, makes the parts change ever so slightly.

    To see if your printer will work do a G28/G29 U 6 T with everything heated up. Now go do a print of something like normal. Let it all cool down and in 1 hour come back to a nice room temp printer. Now with the complete printer sitting there at room temp go heat up the hotend and bed then do a g28/g29 U 6 T and see if the numbers are exactly the same. If they are then you have a golden printer and should never need to do another G28/G29 again.

  5. #5
    Engineer
    Join Date
    Jul 2014
    Location
    Eastern Colorado
    Posts
    536
    So you think nobody should ever use this code?

  6. #6
    Super Moderator Roxy's Avatar
    Join Date
    Apr 2014
    Location
    Lone Star State
    Posts
    2,182
    Quote Originally Posted by AbuMaia View Post
    I've made some changes in case someone decides to add this code to Marlin, but not enable it:

    case 28: //G28 Home all Axis one at a time
    #ifdef ENABLE_AUTO_BED_LEVELING
    #ifndef SAVE_G29_CORRECTION_MATRIX
    plan_bed_level_matrix.set_to_identity(); //Reset the plane ("erase" all leveling data)
    #endif
    #endif //ENABLE_AUTO_BED_LEVELING

    #if Z_MIN_PIN == -1
    #error "You must have a Z_MIN endstop in order to enable Auto Bed Leveling feature!!! Z_MIN_PIN must point to a valid hardware pin."
    #endif
    #ifdef SAVE_G29_CORRECTION_MATRIX
    plan_bed_level_matrix.set_to_identity(); //Reset the plane ("erase" all leveling data)
    #endif

    This way G28's original function of erasing the matrix is retained while the code is disabled, and then switched to G29 when it is enabled.
    Yeah, I was kind of torn which way to go. Doing what you did preserves the original behavior which has merit. It might be worth a quick discussion to decide if those extra #ifdef's should be added to the first post or not. Personally... I think the correction matrix should start off at Unity and not be affected by the G28. But there is so much legacy in place now that it isn't good to change things for no reason. I decided to make the changes as minimalistic as possible (which meant not adding the extra pre-processor commands). However, with that said, nobody is going to be typing that stuff in anyway. They are going to Cut & Paste it into their source, so there isn't any extra pain involved.

    So should we alter the original post? If we do, and SAVE_G29_CORRECTION_MATRIX is not defined, everything will function the same as it used to behave.
    Last edited by Roxy; 11-01-2014 at 08:50 AM.

  7. #7
    Engineer
    Join Date
    Jul 2014
    Location
    Eastern Colorado
    Posts
    536
    Quote Originally Posted by Roxy View Post
    So should we alter the original post?
    Only if you think there's a chance this code might eventually get pulled into the fork or "official" Marlin. As it is now, if someone wants to use it, they'll copy it in as it stands. My changes were for those who wanted to add the code, but not use it. A pretty small population I'd think.

    I should have noticed the missing ;. I'm in the middle of a print right now, so I'll test how it prints out the matrix later.
    Last edited by AbuMaia; 11-01-2014 at 11:44 AM.

  8. #8
    Engineer
    Join Date
    Jul 2014
    Location
    Eastern Colorado
    Posts
    536
    No, that was for DarkAlchemist.

  9. #9
    Engineer
    Join Date
    Jul 2014
    Location
    Eastern Colorado
    Posts
    536
    I don't think anyone is saying this will be a one-time set-and-forget feature. Why do you think I went to find a way to run a G29 from the LCD on a standalone printer?

  10. #10
    Quote Originally Posted by AbuMaia View Post
    I don't think anyone is saying this will be a one-time set-and-forget feature. Why do you think I went to find a way to run a G29 from the LCD on a standalone printer?
    You would be surprised at how many are looking for a one time set and forget ABL.

    The fact is I have ran into a few who have been able to do it then suddenly it stopped printing correctly and I lol'd and had to explain it to them. Guess what I got in return? "Oh, no it can't be that my printer is perfect and you're an idiot, etc..." I then hear that ABL sucks and is just trash by the same people who discounted what I said and said I was an idiot. 2+2=4 so I suspect they found out I was right but are so stubborn they have to blame ABL when in fact it is because of the way our machines are built (to save money so everything is skimped on) and when you add heat and cool down then heat again factors I expect no less than the numbers to change.

    So, this is why I had to say it so if someone stumbles onto this thread they will realize what they can and probably cannot do with this feature.

Page 2 of 16 FirstFirst 123412 ... LastLast

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •