Endstop

while the print is in progress the endstops do not work! if I do the tests with m119 everything works normally ... if I make the return to home everything is ok ... if I move manually they work (they inhibit the movement in the correct direction). but if I print no! I crush the end stops but the printer still goes in that direction! what can it depend on? the end stops are wired normally closed ...
«1

Comments

  • you have to set :

    #define ALWAYS_CHECK_ENDSTOPS 1

    in configuration.h
    guess you have set it to 0

  • thank you!!! but because it is not set by default !!!
  • I checked now but it was already 1!
  • even if I'm working with a normally closed circuit, should I put a pulldown resistor on the signal? what value is the resistance? I'm working with Arduino Due and radds.
  • You use a pullup resistor. With normally closed this gives low signal. Without you have noise or gnd and switch will not be reliable. With pullup you have 5V or GND if connected as defined levels. Pullup is 50K or so. 
  • Ok, so ... i try 50k resistor! I always have 5 volts on the line ... so I guess I need to connect the pin signal on the gnd, when the endstop is crushed the line will go faster to gnd ... right?
  • as you´re using due/radds you should have only 3.3 V !!!!!
    otherwise you can be shure the Due is damaged
  • Why do you have a resistor at all? Pullup is due internal. So all you do is connect gnd - switch - due pin.
  • sorry ... I'm still used to the old card! yes, it's 3.3 volts! I currently have the mechanical switch connected between the signal and gnd! everything works, manually , but not during printing! I understood that you suggested me to add a resistor ... now I'm confused! What do you advise me to do? probably when the switch opens during printing (all the motors turned on) there are disturbances that do not lower the signal voltage to 0 ... that's why I thought of connecting with a resistor the signal pin to gnd! it's wrong? how can I do?
  • Processors have internal pullup resistors. All you need to do is tell firmware in configuration that you want a pullup activated. In config tool this would mean selecting a mechanical switch. Combined with ALWAYS_CHECK_ENDSTOPS 1 it should always test for end stops and not only during homing.
  • Ok, but i have #define endstop_pullup_(all)_min ( and Max) set to true, i have #define endstop_(all)_(min and max)_inverting false and #define (min and max)_hardware_endstop_(all) true.
    Then #define always_check_endstop 1!

    The hardware is a Arduino due and radds ; meccanical endstop in normaly close configuration.

    Ok? But only for homing is correct ... when i print the endstop are like disabled!!

    I dont use eeprom configuration so, my config file is certainly the configuration inside my card and, if i check with m119 all is fine!


    I am going crazy!
  • I am making test.
    If i send G01 X150 F300 and i push the end stop all work fine but if i send G01 X150 Y150 F300 isn’t ! It is random ... one time work and one time not! I have noise ... sure! how to fix it?
  • I am working araund the schematics of radds. There are a capacitor (10nF) from signal and gnd. I have a pullup ( into the processor #define actived) that should keep the tension high. Ok ; my endstop is normaly closed and if i measure the tension on my endstop is 0 volt ... correct! But if i push my end stop the tension is 3.1 instead of 3.3 ... is normal?
  • My manual of radds says: ‘connect the mechanical endstop to the gnd and signal pins so they are normally closed ( push = open)’ ! but it's right??? should not I connect to 3.3 volts? With gnd connected i have only the tension from the internal resistor ( pulup) ...
  • edited September 2018
    there is a simple way to increase noise immunity.
    add  external Pullup Resistor from endstop signal to + 3.3V  2KOhms should be fine.
    and yes, radds manual is correct

  • tonight I made a card that includes 2k resistors. tomorrow I try and report the result, hoping that it can also serve others!
  • done the test with 2k resistors! absolutely nothing has changed ... sometimes they work sometimes not! I also redid all the connectors ... the last thing I have to do is change cables using screens and change the path of the same. My printer is built on the basis of an old marking machine ... all in iron. I used the original cables and, the wires of the limit switches go along with the cables of the engines ... ... at this point rewire everything ... I do not know what else to do !!!
  • I have made a new test cable ... outside of the printer ... nothing ... it don't work at all!! is impossible! i am wrong ... but where?

    this is my configuration 


    // ################ Endstop configuration #####################

    #define MULTI_ZENDSTOP_HOMING 0
    #define ENDSTOP_PULLUP_X_MIN true
    #define ENDSTOP_X_MIN_INVERTING false
    #define MIN_HARDWARE_ENDSTOP_X true
    #define ENDSTOP_PULLUP_Y_MIN true
    #define ENDSTOP_Y_MIN_INVERTING false
    #define MIN_HARDWARE_ENDSTOP_Y true
    #define ENDSTOP_PULLUP_Z_MIN true
    #define ENDSTOP_Z_MIN_INVERTING false
    #define MIN_HARDWARE_ENDSTOP_Z true
    #define ENDSTOP_PULLUP_Z2_MINMAX true
    #define ENDSTOP_Z2_MINMAX_INVERTING false
    #define MINMAX_HARDWARE_ENDSTOP_Z2 false
    #define ENDSTOP_PULLUP_X_MAX true
    #define ENDSTOP_X_MAX_INVERTING false
    #define MAX_HARDWARE_ENDSTOP_X true
    #define ENDSTOP_PULLUP_Y_MAX true
    #define ENDSTOP_Y_MAX_INVERTING false
    #define MAX_HARDWARE_ENDSTOP_Y true
    #define ENDSTOP_PULLUP_Z_MAX true
    #define ENDSTOP_Z_MAX_INVERTING false
    #define MAX_HARDWARE_ENDSTOP_Z false
    #define ENDSTOP_PULLUP_X2_MIN true
    #define ENDSTOP_PULLUP_Y2_MIN true
    #define ENDSTOP_PULLUP_Z2_MINMAX true
    #define ENDSTOP_PULLUP_X2_MAX true
    #define ENDSTOP_PULLUP_Y2_MAX true
    #define ENDSTOP_X2_MIN_INVERTING false
    #define ENDSTOP_Y2_MIN_INVERTING false
    #define ENDSTOP_X2_MAX_INVERTING false
    #define ENDSTOP_Y2_MAX_INVERTING false
    #define MIN_HARDWARE_ENDSTOP_X2 false
    #define MIN_HARDWARE_ENDSTOP_Y2 false
    #define MAX_HARDWARE_ENDSTOP_X2 false
    #define MAX_HARDWARE_ENDSTOP_Y2 false
    #define X2_MIN_PIN -1
    #define X2_MAX_PIN -1
    #define Y2_MIN_PIN -1
    #define Y2_MAX_PIN -1
    #define Z2_MINMAX_PIN -1



    #define max_software_endstop_r true   (<=== i have tested also 'false')

    #define min_software_endstop_x false
    #define min_software_endstop_y false
    #define min_software_endstop_z false
    #define max_software_endstop_x false
    #define max_software_endstop_y false
    #define max_software_endstop_z true
    #define DOOR_PIN -1
    #define DOOR_PULLUP 1
    #define DOOR_INVERTING 1
    #define ENDSTOP_X_BACK_MOVE 5
    #define ENDSTOP_Y_BACK_MOVE 5
    #define ENDSTOP_Z_BACK_MOVE 2
    #define ENDSTOP_X_RETEST_REDUCTION_FACTOR 3
    #define ENDSTOP_Y_RETEST_REDUCTION_FACTOR 3
    #define ENDSTOP_Z_RETEST_REDUCTION_FACTOR 3
    #define ENDSTOP_X_BACK_ON_HOME 1
    #define ENDSTOP_Y_BACK_ON_HOME 1
    #define ENDSTOP_Z_BACK_ON_HOME 0
    #define ALWAYS_CHECK_ENDSTOPS 1
    #define MOVE_X_WHEN_HOMED 0
    #define MOVE_Y_WHEN_HOMED 0
    #define MOVE_Z_WHEN_HOMED 0


    Only i have this problem?
    Has anyone checked their printer if, by moving two axes at the same time, the endstop work?
    moving one axis at a time work ok ... but not with an interpolated movement ! (and during the printing phase the movements are almost all interpolated)

    #define ENDSTOP_X_RETEST_REDUCTION_FACTOR 3
    #define ENDSTOP_Y_RETEST_REDUCTION_FACTOR 3
    #define ENDSTOP_Z_RETEST_REDUCTION_FACTOR 3

    what are these these three line??

  • Does homing work? You say one axis works so homing should work fine but I did not see it explicitly. Normally if homing works it should work also during print also I never have the case that I need it.

    #define ENDSTOP_X_RETEST_REDUCTION_FACTOR 3

    Is just used to compute the speed for second homing test. 3 means 1/3 of first speed. That is to improve homing position repeatability.
  • Yes, homing work .
    when printing, if only one axis moves then, everything works on that axis. but if there are two axes to move, no. in fact: if I launch a print and hold xmax endstop, in the first movement that will make the x axis alone then it will work ... otherwise it will continue to print !!
  • Is possible to have a debug mode for endstop? in other words, display the status of the endsto in the message list during printing?
  • can you tell me where to find the interupt function that is called from the endstop?
  • I checked the functioning and the disturbances on the endstop signal with my oscilloscope: the signal is perfect and with all the motors running there is no noise! help ... help ... why does my firmware ignore end stops when multiple axes move? I repeat ... homing is correct !! is it a firmware problem? someone who can help me?
  • You can in deed debug end stops. value 64 in M111 Sx flags enable debugging end stops. E.g.
    M111 S70
    should be good to see all changes of end stop in log.

    I also checked a bit the end stop tests. For cartesian moves it will only stop the axis that the end stop triggered, the other move will continue to move. It will not stop the print. I guess you expected a different behaviour here from your last descriptions.

  • no no ... I expect that the axis whose endstop is pressed stops ... that the others go ahead too! the problem is that nothing stops! Can you tell me the interrupt called from the end stop? I have external drivers for the motor and then step,enable and dir signal are inverted. I would not like the firmware to consider these define
  • Ok, i have activated debug levek 64 ... i move with command G01 X50 Y50 F300 .... i push many times the y_max end stop and the y axis continued to move but ... ... ... in the log :

    < 13:00:25: start
    < 13:00:25: Info:PowerUp
    < 13:00:27: Z jerk was too low, setting to 0.71
    < 13:00:27: Free RAM:76840
    < 13:00:27: Card successfully initialized.
    < 13:00:27: SelectExtruder:0
    < 13:02:03: X:0.00 Y:0.00 Z:0.000 E:0.0000
    < 13:02:11: X:0.00 Y:0.00 Z:0.000 E:0.0000
    < 13:02:23: DebugLevel:64
    < 13:02:25: endstops hit: x_min:L x_max:L y_min:L y_max:H z_min:L
    < 13:02:26: endstops hit: x_min:L x_max:L y_min:L y_max:L z_min:L
    < 13:02:39: endstops hit: x_min:L x_max:L y_min:L y_max:H z_min:L
    < 13:02:40: endstops hit: x_min:L x_max:L y_min:L y_max:L z_min:L
    < 13:02:40: endstops hit: x_min:L x_max:L y_min:L y_max:H z_min:L
    < 13:02:41: endstops hit: x_min:L x_max:L y_min:L y_max:L z_min:L
    < 13:02:41: endstops hit: x_min:L x_max:L y_min:L y_max:H z_min:L
    < 13:02:42: endstops hit: x_min:L x_max:L y_min:L y_max:L z_min:L
    < 13:02:42: endstops hit: x_min:L x_max:L y_min:L y_max:H z_min:L
    < 13:02:43: endstops hit: x_min:L x_max:L y_min:L y_max:L z_min:L
    < 13:02:43: endstops hit: x_min:L x_max:L y_min:L y_max:H z_min:L
    < 13:02:44: endstops hit: x_min:L x_max:L y_min:L y_max:L z_min:L
    < 13:02:47: endstops hit: x_min:L x_max:L y_min:L y_max:H z_min:L
    < 13:02:48: endstops hit: x_min:L x_max:L y_min:L y_max:L z_min:L
    < 13:02:48: endstops hit: x_min:L x_max:L y_min:L y_max:H z_min:L
    < 13:02:48: endstops hit: x_min:L x_max:L y_min:L y_max:L z_min:L
    < 13:02:49: endstops hit: x_min:L x_max:L y_min:L y_max:H z_min:L
    < 13:02:49: endstops hit: x_min:L x_max:L y_min:L y_max:L z_min:L
    < 13:02:49: endstops hit: x_min:L x_max:L y_min:L y_max:H z_min:L
    < 13:02:49: endstops hit: x_min:L x_max:L y_min:L y_max:L z_min:L



    there are a firmware problem!!
    bug?
  • this is the result in this test!
  • I can not load the image ... however, doing this last test I got distracted and the threaded rod that works as an adjustment for the endstop has literally entered the endstop breaking everything! start doubting the firmware repetier !!! I find it impossible that the endstop is read ... reported in the log but does not block the movement of that axis !!
  • What version of firmware are you using?
    What printer type do you have? Delta or cartesian?
    It seems that at least end stops are read correctly, also it is not clear if the checkendstops function causes the reads or the moves it self. With ALWAYS_CHECK_ENDSTOPS 1 it should be read. On the other hand if you configure length correctly moves outside allowed region after homing are not possible. Will test on latest version on next firmware upload if I have the same problem.
  • edited September 2018
    I'm using the latest version, the printer, under construction, is Cartesian. what do you mean when you write: 'cause the reads or the moves it self'? in the log file I copied here all those readings were real !! I was the one who crushed the endstop with my finger !! 'On the other hand if you can not fit' ... yes ... it will also be true ... but doing speed and acceleration tests is easy to lose the steps and go to crash! ! I spent all afternoon to disassemble the x and y axes and, thanks to the accident after today's test, I folded one of the bars. the printer under construction is a bit 'special and mounts very powerful engines, my problem now is to understand ... the management of the enstop should be a simple thing ...
    ultimately: what do you advise me to do?
Sign In or Register to comment.