Welcome! Log In Create A New Profile

Advanced

Jam detection question(s)

Posted by RKMore 
Jam detection question(s)
November 26, 2015 09:16AM
Hello

I am using v 0.92.5 and I have enabled jam detection using a friction driven optical quadrature encoder.

It appears to me that the jam detection only works one time per print. Is this true?

I have one channel of the encoder hooked to pin 32 so it is outputting a square wave at 24 PPR

I have JAM_METHOD = 1, EXT0_JAM_PIN = 32, and JAM_ACTION = 2

If I disconnect the signal from pin 32 I do indeed get a pause. I then reconnect restart and then disconnect again and I do not get another pause. It only seems to work once.

Is it possible it is not getting re-initialized on resume?

As a related question it seems from looking at the code that JAM_METHOD 2 and 3 are simple end of filament detection with one looking for a positive value and one looking for ground, Is that correct?

Is there a discussion thread or more in depth documentation of the jam detection system? I am sorry if these are dim-witted questions but I am a casual Arduino programmer at best and some of this code is a bit hard for me to follow.

Thanks
Re: Jam detection question(s)
November 26, 2015 01:46PM
You miss sone important point. You must send M513 to mark extruders as unjammed. Since you selected to do a pause on host, you become responsible for doing this. With action 1 this is handled in the menus. While checking I saw that sd pause also misses this, which will be fixed with next update.

Methods 2 and 3 are in deed only out of filament detections. 3 is inverse signal of 2.

No there is no discussion thread I'm aware of.


Repetier-Software - the home of Repetier-Host (Windows, Linux and Mac OS X) and Repetier-Firmware.
Repetier-Server - the solution to control your printer from everywhere.
Visit us on Facebook and Twitter!
Re: Jam detection question(s)
November 27, 2015 09:06AM
You are correct and I did not see this information. It works fine now!

Thank you!!
Re: Jam detection question(s)
November 28, 2015 08:56AM
Hello

I was experimenting with JAM_METHOD 2 and 3 and found that in 0.92.5 the code will not compile.

It appears to me (please note that I am no expert) that perhaps in extruder.cpp

#define _TEST_EXTRUDER_JAM(x,pin) {\
uint8_t sig = READ(pin);\
if(sig){extruder[x].tempControl.setJammed(true);} else if(!Printer::isDebugJamOrDisabled() && !extruder[x].tempControl.isJammed()) {extruder[x].resetJamSteps();}
#elif JAM_METHOD == 3
#define _TEST_EXTRUDER_JAM(x,pin) {\
uint8_t sig = !READ(pin);\
if(sig){extruder[x].tempControl.setJammed(true);} else if(!Printer::isDebugJamOrDisabled() && !extruder[x].tempControl.isJammed()) {extruder[x].resetJamSteps();}
#else

should be changed to

#elif JAM_METHOD == 2
#define _TEST_EXTRUDER_JAM(x,pin) \
uint8_t sig = READ(pin);\
if(sig){extruder[x].tempControl.setJammed(true);} else if(!Printer::isDebugJamOrDisabled() && !extruder[x].tempControl.isJammed()) {extruder[x].resetJamSteps();}
#define RESET_EXTRUDER_JAM(x,dir)
#elif JAM_METHOD == 3
#define _TEST_EXTRUDER_JAM(x,pin) \
uint8_t sig = !READ(pin);\
if(sig){extruder[x].tempControl.setJammed(true);} else if(!Printer::isDebugJamOrDisabled() && !extruder[x].tempControl.isJammed()) {extruder[x].resetJamSteps();}
#define RESET_EXTRUDER_JAM(x,dir)
#else
Re: Jam detection question(s)
November 28, 2015 09:12AM
Yes, it did not compile for a while, but that has been fixed recently. Was a missing closing }


Repetier-Software - the home of Repetier-Host (Windows, Linux and Mac OS X) and Repetier-Firmware.
Repetier-Server - the solution to control your printer from everywhere.
Visit us on Facebook and Twitter!
Sorry, only registered users may post in this forum.

Click here to login