Close



Page 2 of 9 FirstFirst 1234 ... LastLast
Results 11 to 20 of 89
  1. #11
    Technician
    Join Date
    Oct 2013
    Location
    South Australia
    Posts
    50
    Quote Originally Posted by old man emu View Post
    refpye,

    You might find it easier and quicker to download thing 167440 and thing 167430 from Thingiverse and then watch the three videos starting with http://www.youtube.com/watch?v=awsI9bMndJA

    Old Man Emu
    The whole purpose of this exercise is to NOT use a servo. I have eight machines all currently working fine with a servo, but wanted to design a better way of doing it without the use of a servo. Tests have been pretty good so far and it is only the start.
    Thanks for you advise though, interesting the way they have done that, similar to what I have on my other machines. (most are i3s and Genie MagikMakers)

  2. #12
    Super Moderator Roxy's Avatar
    Join Date
    Apr 2014
    Location
    Lone Star State
    Posts
    2,182
    Quote Originally Posted by regpye View Post
    OK, I will take your advise and use the latest code. Where is the best place to obtain it?
    If you goto https://github.com/ErikZalm/Marlin you can download a .ZIP file of everything. The button to do that will be a little ways down on the far right side of the page. It is what I'm running right now. That will make it easy to support you.

    Quote Originally Posted by regpye View Post
    I will share the STL files, however I am still working on the design to see what works the best. I have just printed a new design that I haven't tried out yet and will probably have that all tested within the next few days. With the current hardware design it does work, however I have noticed that there is some deflection caused by the extended arm of the X axis (becomes a long lever) and that causes a small amount of flex while probing. To overcome this I have re-designed to give much less pressure while probing.
    I would love to print one of these up and try it! But I guess we should get your firmware going first!

  3. #13
    Technician
    Join Date
    Oct 2013
    Location
    South Australia
    Posts
    50
    The new part that has to be tested.
    This photo does not show the hotend in place, however the fan has been attached and from previous photos it shouldn't be too hard to work out where the nozzle will be.
    The probing micro switch is easier to see in this photo, and the leverage has been increased a lot to minimize the pressure required to activate the switch.
    I will try and get it setup today and ready to make some tests using it.

    probing-switch.jpg

  4. #14
    Super Moderator Roxy's Avatar
    Join Date
    Apr 2014
    Location
    Lone Star State
    Posts
    2,182
    Was this designed with Open_SCAD by any chance???

  5. #15
    Technician
    Join Date
    Oct 2013
    Location
    South Australia
    Posts
    50
    Quote Originally Posted by Roxy View Post
    The problem is his Z_PROBE_OFFSET is positive. The firmware doesn't expect the case where you drive the nozzle into the bed to take a measurement. So we need to make a few tweaks to the firmware! I can hardly wait!!!
    OK, I have downloaded the latest version of Marlin and prepared it as I think is correct for my machine.
    When I go to compile it I get an error.
    Maybe I did something wrong in the pins.h


    In file included from /Marlin.h:23,
    from BlinkM.cpp:5:
    /pins.h:1:1: error: unterminated #ifndef


    This is what I changed in pins.h

    #if MOTHERBOARD == 8 || MOTHERBOARD == 81
    #define KNOWN_BOARD 1
    #define AT90USB 1286 // Disable MarlinSerial etc.


    #ifndef __AVR_AT90USB1286__
    #error Oops! Make sure you have 'Teensy++ 2.0' selected from the 'Tools -> Boards' menu.
    #endif


    #define LARGE_FLASH true


    #define X_STEP_PIN 0
    #define X_DIR_PIN 1
    #define X_ENABLE_PIN 39


    #define Y_STEP_PIN 2
    #define Y_DIR_PIN 3
    #define Y_ENABLE_PIN 38


    #define Z_STEP_PIN 4
    #define Z_DIR_PIN 5
    #define Z_ENABLE_PIN 23


    #define E0_STEP_PIN 6
    #define E0_DIR_PIN 7
    #define E0_ENABLE_PIN 19


    #define HEATER_0_PIN 21 // Extruder
    #define HEATER_1_PIN -1
    #define HEATER_2_PIN -1
    #define HEATER_BED_PIN 20 // Bed
    #define FAN_PIN 22 // Fan
    // You may need to change FAN_PIN to 16 because Marlin isn't using fastio.h
    // for the fan and Teensyduino uses a different pin mapping.


    #if MOTHERBOARD == 8 // Teensylu
    #define X_STOP_PIN 13
    #define Y_STOP_PIN 14
    #define Z_STOP_PIN 15
    #define TEMP_0_PIN 7 // Extruder / Analog pin numbering
    #define TEMP_BED_PIN 6 // Bed / Analog pin numbering
    #else // Printrboard
    #define X_STOP_PIN 35
    #define Y_STOP_PIN 37
    #define Z_STOP_PIN 36
    #define TEMP_0_PIN 1 // Extruder / Analog pin numbering
    #define TEMP_BED_PIN 0 // Bed / Analog pin numbering
    #endif


    #define TEMP_1_PIN -1
    #define TEMP_2_PIN -1


    #define SDPOWER -1
    #define SDSS 8
    #define LED_PIN -1
    #define PS_ON_PIN -1
    #define KILL_PIN -1
    #define ALARM_PIN -1


    #ifdef NUM_SERVOS
    #define SERVO0_PIN 11
    #define Z_MIN_PIN 30 //needs to be updated to what ever wire is used.


    #if NUM_SERVOS > 1
    #define SERVO1_PIN 6
    #endif


    #if NUM_SERVOS > 2
    #define SERVO2_PIN 5
    #endif


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


    #ifndef SDSUPPORT
    // these pins are defined in the SD library if building with SD support
    #define SCK_PIN 21 // 9
    #define MISO_PIN 22 //11
    #define MOSI_PIN 23 //10
    #endif


    /************************************************** **************************************
    * Brainwave 1.0 pin assignments (AT90USB646)
    * Requires hardware bundle for Arduino:
    https://github.com/unrepentantgeek/brainwave-arduino
    Last edited by regpye; 04-27-2014 at 08:31 PM. Reason: addition

  6. #16
    Super Moderator Roxy's Avatar
    Join Date
    Apr 2014
    Location
    Lone Star State
    Posts
    2,182
    Tell you what... I've attached my Pins.h I have my Y-Axis limit switch on the E-Limit switch. So, you can either move your connector to the same spot on your PrintrBoard, or you can change the pin numbers back for the Y-Limit switch. (The reason is there is a conflict with the SD-Memory card pins. Moving to the E-Limit switch resolves the issue)

    Specifically... I have my Y_STOP_PIN set as 37. You would change this line to be like this if you don't want to move the connector to the E-Limit location:

    #define Y_STOP_PIN 8


    That should get us past the compile issue.... However... The strange thing is I don't think you need to mess with the Pins.h file typically. I had to edit some stuff in there to get my servo pins defined. But you aren't going to have a servo, so it seems strange that Pins.h had to be modified from its original state.
    Attached Files Attached Files
    Last edited by Roxy; 04-27-2014 at 09:29 PM.

  7. #17
    Technician
    Join Date
    Oct 2013
    Location
    South Australia
    Posts
    50
    Quote Originally Posted by Roxy View Post
    Was this designed with Open_SCAD by any chance???
    No, it was designed with Alibre Design, now called GeoMagic

  8. #18
    Technician
    Join Date
    Oct 2013
    Location
    South Australia
    Posts
    50
    Quote Originally Posted by Roxy View Post
    Tell you what... I've attached my Pins.h I have my Y-Axis limit switch on the E-Limit switch. So, you can either move your connector to the same spot on your PrintrBoard, or you can change the pin numbers back for the Y-Limit switch. (The reason is there is a conflict with the SD-Memory card pins. Moving to the E-Limit switch resolves the issue)

    Specifically... I have my Y_STOP_PIN set as 37. You would change this line to be like this if you don't want to move the connector to the E-Limit location:

    #define Y_STOP_PIN 8


    That should get us past the compile issue.... However... The strange thing is I don't think you need to mess with the Pins.h file typically. I had to edit some stuff in there to get my servo pins defined. But you aren't going to have a servo, so it seems strange that Pins.h had to be modified from its original state.
    I also have my Y on the E stop and my Y_STOP_PIN set as 37
    I changed the pins.h just in case I stuffed up somewhere else, however I am still getting the same error message.



    In file included from /Marlin.h:23,
    from BlinkM.cpp:5:
    /pins.h:1:1: error: unterminated #ifndef

  9. #19
    Technician
    Join Date
    Oct 2013
    Location
    South Australia
    Posts
    50
    Update:
    I used the latest Marlin and made changes to suite my machine. After a few more changes to direction, stop positions and filament travel, I managed to get it all working nicely and then made a small print.
    The first print came out very skewed to one direction, so I made some more changes, reduced the acceleration down a lot, and then made another print. This time it came out fine.

    How I got the system working was to first nudge the nozzle down until it opened the micro switch. That would be the zero point as far as the machine is concerned. This is actually below the bed level, so in the firmware I would have to put a positive offset. I raised the nozzle in very small increments until the probing micro switch closed again, checking at each increment to make sure it was either open or closed. When it closed I read the value from the screen and then added 0.3mm for the amount for lift above the bed (this I could experiment with) Altogether I had to lift 0.7mm to get the printing position I needed.
    Tried it out and it works. Now I will change the sensing head to a lower pressure design that I have made and test again. No other changes have been made to Marlin to this point, it is all standard code.

  10. #20
    Super Moderator Roxy's Avatar
    Join Date
    Apr 2014
    Location
    Lone Star State
    Posts
    2,182
    Quote Originally Posted by regpye View Post
    Update:
    I used the latest Marlin and made changes to suite my machine. After a few more changes to direction, stop positions and filament travel, I managed to get it all working nicely and then made a small print.
    The first print came out very skewed to one direction, so I made some more changes, reduced the acceleration down a lot, and then made another print. This time it came out fine.

    How I got the system working was to first nudge the nozzle down until it opened the micro switch. That would be the zero point as far as the machine is concerned. This is actually below the bed level, so in the firmware I would have to put a positive offset. I raised the nozzle in very small increments until the probing micro switch closed again, checking at each increment to make sure it was either open or closed. When it closed I read the value from the screen and then added 0.3mm for the amount for lift above the bed (this I could experiment with) Altogether I had to lift 0.7mm to get the printing position I needed.
    Tried it out and it works. Now I will change the sensing head to a lower pressure design that I have made and test again. No other changes have been made to Marlin to this point, it is all standard code.
    All right!!! Good! OK, here is what I think: I think we have two main issues to deal with. First, we need to make sure that any Z_Probing leaves the nozzle in a good (safe) position. And the second thing I think is going to happen is the Z-Probe is going to get fired during the middle of a print because of the edges curling upwards.

    Now that everybody is on the same version of the firmware, we can probably make progress pretty quickly.

    OK... First, lets try to get any Z-Probing to leave the nozzle at a safe height. There are a couple problems with this. G28 and G29 use different support functions to do their work right now. (I think they will get cleaned up eventually to use the same stuff. But right now, they do the work differently.)

    We need to have

    #define Z_RAISE_BETWEEN_PROBINGS 10.0

    defined in configuration.h Probably 10 is excessive right now, but it will let you see if it is doing the right thing.

    Now let's change run_z_probe() to leave the nozzle up. Right now it looks like this:

    static void run_z_probe() {
    plan_bed_level_matrix.set_to_identity();
    feedrate = homing_feedrate[Z_AXIS];
    ...
    plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], zPosition, current_position[E_AXIS], feedrate/60, active_extruder);
    st_synchronize();

    current_position[Z_AXIS] = st_get_position_mm(Z_AXIS);
    // make sure the planner knows where we are as it may be a bit different than we last said to move to
    plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
    }

    Lets change the very end of it to:

    plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], zPosition, current_position[E_AXIS], feedrate/60, active_extruder);
    st_synchronize();

    current_position[Z_AXIS] = st_get_position_mm(Z_AXIS);
    // make sure the planner knows where we are as it may be a bit different than we last said to move to
    plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);

    SERIAL_PROTOCOLLNPGM( "At end of run_z_probe() raising nozzle." );
    do_blocking_move_relative( 0.0, 0.0, (float) Z_RAISE_BETWEEN_PROBINGS );
    SERIAL_PROTOCOLLNPGM( "At end of run_z_probe() done raising nozzle." );

    }

    That should handle the bulk of the G29 code. Now for the G28 code, lets make sure

    #define Z_SAFE_HOMING

    is enabled in configuration.h . There are a million different code paths depending upon what options are turned on. In this case, the Z-Axis is treated with extra care. So... probably it makes sense to start with that. I'm not 100% certain this next change is going to do what we want, but it is the cleanest way to do this if it works. Be sure to have your finger ready to press the reset button when you test it. I think what we want to do is go find:

    static void homeaxis(int axis) {
    #define HOMEAXIS_DO(LETTER) \
    ((LETTER##_MIN_PIN > -1 && LETTER##_HOME_DIR==-1) || (LETTER##_MAX_PIN > -1 && LETTER##_HOME_DIR==1))

    if (axis==X_AXIS ? HOMEAXIS_DO(X) :
    axis==Y_AXIS ? HOMEAXIS_DO(Y) :
    axis==Z_AXIS ? HOMEAXIS_DO(Z) :
    0) {
    int axis_home_dir = home_dir(axis);


    At the very end of this function (Macro Defination) is this code:

    #if defined (ENABLE_AUTO_BED_LEVELING) && (PROBE_SERVO_DEACTIVATION_DELAY > 0)
    if (axis==Z_AXIS) retract_z_probe();
    #endif
    }
    }

    Let's change it to:


    #if defined (ENABLE_AUTO_BED_LEVELING) && (PROBE_SERVO_DEACTIVATION_DELAY > 0)
    if (axis==Z_AXIS) retract_z_probe();
    #endif
    }

    if (axis==Z_AXIS) {
    SERIAL_PROTOCOLLNPGM( "At end of homeaxis(Z) raising nozzle." );
    do_blocking_move_relative( 0.0, 0.0, (float) Z_RAISE_BETWEEN_PROBINGS );
    SERIAL_PROTOCOLLNPGM( "At end of homeaxis(Z) done raising nozzle." );
    }

    }


    If the G28 modification does not work right, we can do the changes right in the G28 code itself. Please compile and load these changes. And of course report back what is and isn't working right. Once we get the Positive Z_PROBE_OFFSET handled, we need to make sure the print doesn't stop because the Z-Probe gets fired in the middle of a print.
    Last edited by Roxy; 04-28-2014 at 09:21 AM.

Page 2 of 9 FirstFirst 1234 ... 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
  •