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

New filament out detector with movement sensing for jams

Discussion in 'Mods and Upgrades' started by Doug Meek, Jun 10, 2017.

  1. Doug Meek

    Doug Meek Member

    Joined:
    Sep 14, 2016
    Messages:
    54
    Likes Received:
    24
    I've designed a new filament out sensor for the Robo. This is a little different from most filament out sensors out there as this one will detect the filament being loaded as well as detecting filament movement so it should detect a jam condition.

    It uses a custom optical sensor for filament loaded detection and an optical detector and wheel to detect movement. It has an ATTiny 13A as the controller with LED indicators for movement (YELLOW), filament (GREEN), and error (RED). The detector mounts on either the top of the Gregs Wade idler or to the top slot of the Robo. It uses small roller bearings to pick up the filament movement so it exerts little friction to the filament path. It is desirable to have the filament somewhat taught so that it will not trigger on excess slack which will cause a lack of filament movement.

    Connection to the RAMPS board follows the connections as documented in danzca6's excellant filament sensor writeup with only one other modification.
    http://community.robo3d.com/index.p...unout-sensor-frs-upgrade-to-robo-r1-r1.17128/
    Normally Marlin will detect a filament out condition while homing and heating up the bed and extruder. This will be detected as an M600 code and the firmware will throw an error that you can't "change filament" when the extruder isn't up to temp. This happens regularly using my sensor so I modify the firmware to NOT throw that error until the extruder is heated. It doesn't make sense to me why anyone would want to issue an M600 at that point so I see no reason to monitor that condition and send the error.

    Whenever the sensor comes out of an error condition it has the ability to go into a "WAIT" condition that is adjustable from 0 to somewhere around 120 minutes, normally this would either be disabled (1 or 2) or set to around 3-4 minutes of delay before the sensor starts monitoring the filament and movement. The setting can be from 0 to 255 and the delay is calculated as 30 seconds times the variable setting. A setting of 1 or 2 will disable the "WAIT" condition after an error condition. A setting above 2 will trigger the "WAIT" delay after an error condition. During the "WAIT TIME" the sensor is disabled and will not detect filament loaded or movement.This delay is meant to give time for the startup bed leveling and heating to complete before the filament monitoring takes place Thus eliminating false filament out errors.

    The monitoring of the filament movement uses an optical wheel to read the movement of the filament. This system will detect a change of movement for approximately every 1-2 mm movement of the filament depending on the sensitivity of the 'MOVEMENT SENSITIVITY" setting. This is adjustable from 1 to 255 but normally should be in the range of 12-17 and really should never be set to less than 10 or more than 25. The sensitivity adjusts the optical sensitivity to a change on the optical wheel.

    The last adjustment is the "TIME OUT" setting. This setting adjusts the amount of time without a change in filament movement that will cause a movement error trigger. This adjustment can be set from 1 to 255 but normally should be in the range of 5-25 seconds. Default setting is 10 seconds and will cause an error to trigger when it detects that the filament has not moved for 10 seconds.

    The settings are saved along with the current mode in EEPROM after power off and will be refreshed at startup.

    When power is first applied to the sensor it will display the current 3 variable settings, "MOVEMENT SENSITIVITY", "TIME OUT", and "WAIT TIME" in that order. It will delay for 2 seconds at power up and then flash the filament (GREEN) led for the number of times the "MOVEMENT SENSITIVITY" variable is set to. Then there will be a 3 second delay to allow you to press the configuration button to adjust that setting. To adjust the previously flashed setting hold the configuration button through the 3 second delay. Continue to hold the configuration button and the error (RED) led will start to blink once a second to indicate the new setting for this variable. Continue to hold the config button till it gets to the count you desire for that setting. Once at the correct setting release the config button and it will delay 2 seconds and then loop back to display that setting again but this time with your new settings, flashing the filament led and endlessly allowing you to adjust/view till you are satisfied with that setting. To move on to the next setting do not press the config button during the 3 second delay and it will move on to the next setting where it will flash the filament (GREEN) led for the number of times that setting "TIME OUT" is currently set to and then follow with a 3 second delay to allow changing that setting. Next will be the "WAIT TIME" setting. Finally after the 3 settings have been displayed and changed if needed it will go to the active monitoring mode. The Filament led (GREEN) will be lit whenever the filament is loaded (except for clear filament which will be discussed later). The Movement led will be flashed when ever movement is detected and the Error led will be lit when ever an error condition is detected. During the time when it is flashing the filament (GREEN) led to display the current variable settings you can press the config button for 1/2 second to abort the display of the current setting allowing you to essentially skip that item, it will be left at it's current setting. You can press the config button for 1/2 second to abort the display of the setting but then press the config button again prior to the 3 second delay and hold to set that variable setting. Just a quick way to abort the display portion or skip to the next variable.

    During normal filament monitoring the config button can be pressed at any time to make some changes....

    Pressing it once quickly (<1/2 second) will cause any error condition to be cleared and if in a limited detection scenario will cancel said limited detection.

    Holding it for more than 1 second will cause the filament (GREEN) led to flash once for each additional second the config button is held.

    Hold the config button for 1 flash of the filament led will put the sensor into the "WAIT" condition, disabling the filament sensor for that "WAIT" amount of time. During this time the filament LED will flash at 1 flash per second and the movement led will be unlit.

    Hold the config button for 2 flashes will put the sensor into a limited function mode where it will ignore the filament being loaded and only monitor the filament movement (useful for clear filament). During this mode the filament (GREEN) led will flash quickly indicating it is being ignored.

    Hold the config button for 3 flashes will put the sensor into a limited function mode where it will ignore the filament movement and only monitor the filament being loaded. During this mode the movement (YELLOW) led will flash quickly indicating it is being ignored.

    Hold the config button for 4 flashes will put the sensor into a limited function mode where it will ignore the filament being loaded and the filament movement (entire sensor disabled). During this mode the filament (GREEN) led and the movement (YELLOW) led will flash quickly indicating both are being ignored.

    Hold the config button for 5 flashes will put the sensor into the startup mode where it allows you to adjust the 3 sensor variables ("MOVEMENT SENSITIVITY", "TIME OUT", and "WAIT TIME"). as it did at startup. The use of the config button here is the same as right after power up. It will flash the filament led for the number of times that the variable is set to and then allow changing and re displaying etc.

    The project consists of 2 circuit boards, one for the filament loaded optical sensor portion and one for the movement and control portion. The ATTiny has 1024 bytes of ram and the program is currently using 1022 bytes of that ;)

    I have 5 of these to give away if anyone is interested...... would like people that would test it and provide feedback....so if that is you then send me a message and I can send one to you.

    I will be posting more followups on this post once I get my Thingiverse project created along with the source code for the ATTiny incase anyone wants to create their own. Pictures etc to follow....
     
    #1 Doug Meek, Jun 10, 2017
    Last edited: Jun 10, 2017
    bamhm182 and mark tomlinson like this.
  2. Doug Meek

    Doug Meek Member

    Joined:
    Sep 14, 2016
    Messages:
    54
    Likes Received:
    24
    Reserved
     

    Attached Files:

  3. Doug Meek

    Doug Meek Member

    Joined:
    Sep 14, 2016
    Messages:
    54
    Likes Received:
    24
    Does anyone know where I can get a source file for the Robo R1+ idler (with the tab on it) so I can modify it for a mount?
     
  4. mark tomlinson

    mark tomlinson ༼ つ ◕_ ◕ ༽つ
    Staff Member

    Joined:
    Feb 21, 2013
    Messages:
    23,912
    Likes Received:
    7,338
    stickied this
     
  5. danzca6

    danzca6 Well-Known Member

    Joined:
    Jul 27, 2015
    Messages:
    2,161
    Likes Received:
    1,077
    @Mike Kelly has a complete solid works design of the Robo that you can turn into STLs and print out

    https://www.thingiverse.com/thing:729956
     
    Geof likes this.

Share This Page