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

RoBo 3D Arduino Board

Discussion in 'Troubleshooting' started by JDM_, Feb 20, 2013.

Thread Status:
Not open for further replies.
  1. tesseract

    tesseract Moderator
    Staff Member

    Joined:
    Feb 20, 2013
    Messages:
    1,924
    Likes Received:
    533
    Hey Matt Iplayed with the Duty Cycle but it did not seem to have much of an affect and as tothe s height switch goes the general reason for this issue ocurring is that the tolerance of the swtich as to whether it ihas been activated or not is actuall quite high and the setting the z height properly is going to be ver near wher that range of error actualy starts the sometimes a slight bump of the printer can cause the switch to get activated but the software doesn't know about it then when the user hits the home button there is nothing for the z switch to do since it has already activatedit just starts to lower looking for a signal it will never get so the nuts get moved out of position. Again this is due to the range of motion on the switch between where it acivated and where it is not activated is quite large and the adjustment needs to be very near that range.

    The solution would be to decrease that tolerance and change to a different type of activation method like a hall effect setup

    On my setup I can afjst the screw downward and here the click as it activates the switch but then can reverse can unscrew the screw almost a 1/2 turn before it deactivates and is again ready to activated that large amount of play is the issue.
     
  2. Das Wookie

    Das Wookie Active Member

    Joined:
    Feb 21, 2013
    Messages:
    231
    Likes Received:
    38
    That's what I'm seeing in the code is that if the switch is already active, when you get the G28 home, I'm not seeing a check to make sure it's not already fired... causing the nuts to back out. That's why after homing, it's moving back up the 5mm to deactivate the switch. That to me is a silly and stupid way of doing things. It would be trivial to just check the state of the switch! I think I'm going to open a bug against this in the firmware and try to see if I can make the code change myself (once I get my printer going again) so that I could submit the patch as part of the bug. I'd backed out those nuts at least 4-6 times in my first few attempts at printing. I can only suspect others are as well. Then you have to adjust the bed for level, again, and again, and again. Nuts to that!!! This can be fixed even with the current switch by just making better choices in the firmware about checking the state of the limit switch!
     
  3. tesseract

    tesseract Moderator
    Staff Member

    Joined:
    Feb 20, 2013
    Messages:
    1,924
    Likes Received:
    533
    you are right is it is a common thing we have come to call throwing your nuts thank to autopsyturvey she got a kick out of it and thought is was a funny pun LOL. I would try and and make the mod if you are comfortable in coding that stuff it sounds like you are on the right track I just haven't had time to check it out myself. The thing I will tell you the reason for the loose nut is to allow the z axis to stop moving even if the z motion is directed downward for WHATEVER reason (bad gcode, failing or failed z stop switch, user initiated etc.) so this functionality must be maintained as it is a protection aspect of the printer so nothing like the bed or nozzle gets damaged by motor activity if it should happen to continue to drive in that direction If your mod takes all that into account then it would probably be a welcomed mod to original firmware design as well as the ROBO aspect of it. Good luck
     
  4. Das Wookie

    Das Wookie Active Member

    Joined:
    Feb 21, 2013
    Messages:
    231
    Likes Received:
    38
    Yupyup! Yeah the ability to back out is a must, it just shouldn't be as easy to occur due to a simple code change. The code is easy... just tossing in an extra check or two here and there for the limit switches, all of 'em, not just Z. Really, it should be doing that anyway because you want to know if you hit home or limit (yeah I know we only have home switches on the R3D) in all aspects of the print... bad G-Code would otherwise potentially keep banging against the limit for the Y or Z axis at max travel as well. The switches need to function as an interrupt in the code and throw an E-Stop, just like in industrial CNC operations. Not seeing that code support in the firmware (as a former software tester) is making my pull my hair out! :) LOL

    I can tell already I'm gonna end up eventually being a contributor to the firmware as I RTFC and delve deeper into the code. I'm seeing LOTS of spots that can use fixes/improvements.
     
  5. Hispapanels

    Hispapanels New Member

    Joined:
    Feb 21, 2013
    Messages:
    28
    Likes Received:
    7
    Thank you.

    Regards. Manolo.

     
  6. nickster

    nickster Member

    Joined:
    Oct 7, 2013
    Messages:
    82
    Likes Received:
    52
    The Nuts problem has been driving me... This needs to get fixed. On a few occasions I hit the home Z while the extruder was cold and had a blob of plastic on it. Other times were "random" but the evidence to figure out what when wrong was destroyed when the nuts backed out. (example if you had the far Z stepper loosing sync; nut not seating properly; dunno). Side data point is I think I am seeing the homed Z height change by 0.2-0.3mm as the extruder head heats up. Couple of thoughts. We really want the nuts to be able to back out as a safety feature. What about adding a second microswitch with a lever arm that trips when the nuts back part way out? This micro should trip the emergency stop, which is ok, because you could restart without loosing the leveling. Question: Is there an emergency stop input configured into Marlin/Taurino? If not, there are other input pins that cold be re-purposed with a code hack.?
     
  7. tesseract

    tesseract Moderator
    Staff Member

    Joined:
    Feb 20, 2013
    Messages:
    1,924
    Likes Received:
    533
    Good question nickster looking through the firmware though I do not recall variables or code for that but I could be mistaken you got me thinking again
     
  8. Seshan

    Seshan Active Member

    Joined:
    Feb 20, 2013
    Messages:
    447
    Likes Received:
    153
    Are there not emergency stops on some LCDs? It doesn't seem like that would be a hard thing to implement, and adding the switch would be nothing.
     
  9. tesseract

    tesseract Moderator
    Staff Member

    Joined:
    Feb 20, 2013
    Messages:
    1,924
    Likes Received:
    533
    there may be a hard reset switch on the LCD I am just not sure what pin it may be latched to I know they have buttonand you could probalby hard wire it to that but gonna be some soldering.

    The one thing we need to figure out is a way to have it act as a failsafe but also let the nut continue to travel in case the new mechanism fails just to make sure the bed does not get damaged that aspect needs to remain
     
  10. Seshan

    Seshan Active Member

    Joined:
    Feb 20, 2013
    Messages:
    447
    Likes Received:
    153
    I have some ideas, when I get home ill sketch them out
     
  11. tesseract

    tesseract Moderator
    Staff Member

    Joined:
    Feb 20, 2013
    Messages:
    1,924
    Likes Received:
    533
  12. tesseract

    tesseract Moderator
    Staff Member

    Joined:
    Feb 20, 2013
    Messages:
    1,924
    Likes Received:
    533
    I think I just can up with a very workable solution if I make the mod I will give you credit for the idea HAHAHA
    Just need to find that pin to shut it down
     
  13. nickster

    nickster Member

    Joined:
    Oct 7, 2013
    Messages:
    82
    Likes Received:
    52
    Seshan* - Don't have my LCD connected yet, but what about Robo's that don't or have different LCD...thinking we need a general purpose solution. Emergency stop function has to exist in the Marlin code since it is being punched by the LCD.

    tesseract* - Did a peek at the pin interface on Marlin, and did not see anything that looked like a Estop pin. Functionality has to be there, since LCD can punch Estop as well as Repetier. Maybe find the Mcode that is used by Repetier and call that routine.

    Also "printed" up a looooong extension knob (1.75") for a 4mm hex head screw to replace the PITA limit screw. Knob body about 0.425" dia. Hex slot in core keeps screw from rotating. Retaining nut on outside bottom of knob to hold screw in place. Drop of CA added to thread and cured before inserting to keep from rotating freely.

    I'll make some measurements as to how much my extruder length changes by when it gets hot. Still guessing on the order of 0.27mm.

    knob.jpg
     
    3 people like this.
  14. tesseract

    tesseract Moderator
    Staff Member

    Joined:
    Feb 20, 2013
    Messages:
    1,924
    Likes Received:
    533
    I like the handle part especially with the larger end for easy rotating I would match up the specs with what Robo is currently putting out with the latest printers and make a mod so it can be reproduced by others.

    Some of us may have to comeup with variations as we put the mod in lace on our own and have created or own special locations that may not correspond to what Robo has done. I fall into that category I am sure my placement of the screw does not match Robo's as mione was done before they have incorporated it into the printers.

    The key aspect with the nuts is they MUST retain the option of unscrewwing and becoming "thrown" without any regard to whether the proposed fixture is in place or not. So what ever we come up with it MUST not interfere with that action I do have a solution that does incorporate that aspect adn will try and get a drawing put together in the next few days.
     
  15. Seshan

    Seshan Active Member

    Joined:
    Feb 20, 2013
    Messages:
    447
    Likes Received:
    153
    I think it would be possible to wire it up to other end stop?
    As for allowing the bolt to move I was thinking one of those micro switches with a roller lever, placed vertical on the side, some bracket will need to be designed, But I think that would work fine.
     
    3 people like this.
  16. Das Wookie

    Das Wookie Active Member

    Joined:
    Feb 21, 2013
    Messages:
    231
    Likes Received:
    38
    In the firmware there is max pin support already there. The pins for our configuration are:
    X_MAX_PIN 2
    Y_MAX_PIN 15
    Z_MAX_PIN 19

    These correlate also to the schematic for the RAMPS board:
    http://reprap.org/mediawiki/images/3/3f/Arduinomegapololushieldschematic.png

    There is also a KILL pin, which I'm assuming is eStop:
    KILL_PIN 41

    This pin 41 -=IS=- utilized by the AUX4 connector on pin 7 on the RAMPS board, but if you aren't utilizing the AUX connector, then it can it still be able to be treated as a free pin as near as I can tell. I'm not sure how the LCD connects to RAMPS, and that might be via the AUX connector. If so, then there is your connection previously wondered about with how the LCD has the eStop functionality, and how it's currently working. If I had the schematic for the LCD I might be able to figure out if that's how it's connecting or not, but the wiki for RepRap is too lean on info to figure that out... of course, sombody with a display could do a continuity test between the button and pin 41 and tell for sure. So to wire this bad boy up, you'd just need to take +5v off of the RAMPS or mega, run that to your switch, and back to pin 41. When activated, it goes HI, and as I read the firmware, everything should stop right there in the kill() function which turns everything off... heater, steppers, hotend... and throws a error to the serial line as well as the LCD. I think we won't even require a firmware update to effect this change, but if so, it would be a minor update in Configuration.h (I think the stock config is disabling the endstops, so that line would just have to be commented out again, easy enough) so I think everything is there in the code to make this happen already. Booyah Grandma. Booyah!

    So I'm thinking to enable eStop functionality you just need to wire to either 19 or 41 to a switch for when the system starts to throw it's nuts. I would recommend using pin 41 for the thrown nuts sensor, and keep 2, 15, and 19 free for sensors for the limit switches (rather than home). I'm still spelunking through the stepper code. There might be a simple fix here also to just add some checks for the checkHitEndstops function in there. Presently checks for kill, checking the home/limit switches, heater management, and updating the LCD is all performed in the main function.
     
  17. tesseract

    tesseract Moderator
    Staff Member

    Joined:
    Feb 20, 2013
    Messages:
    1,924
    Likes Received:
    533

    So how did you read my mind Seshan that was exactly what I had in mind I could make it clip on to the extruder assembly on the right side and have the micro switch position ed to allow the nut to roll over it I got the stl file for the bracket already and working on the clip assembly we can call it the sestes mod LOL
     
    3 people like this.
  18. nickster

    nickster Member

    Joined:
    Oct 7, 2013
    Messages:
    82
    Likes Received:
    52
    we're all on the same page "What about adding a second microswitch with a lever arm that trips when the nuts back part way out? This micro should trip the emergency stop, which is ok, because you could restart without loosing the leveling."

    KILL_PIN is being configured as an input to Marlin with possibly a pull up (internal/external?). Question is do the LCD controllers actively drive this pin high? According to the code, if configured, the KILL_PIN pin being driven to "0" causes the kill() routine to be called. Before the end of the kill() routine, a call is made to suicide() which "turns off the power supply". kill() then goes into a while(1) -hangs waiting for the reset. Do we really want to do power cycle? I don't have good schematics, what is the SUICIDE_PIN connected to? kill() is also called based on an inactivity timeout.

    We might want to post input for a best fix recommendation to the Marlin community. Anybody hooked in to them?

    At a minimum, we have to make some kind of code change to make this work. At that point, it might be easiest to hack one of the unused limit switches.

    Looks like Repetier does an emergency stop via hard reset through the USB and the ATMEGA16U2. Looking at the code it has something to do with a change in the connection status. Did not dig into it. I have observed this on other Arduino boards.
     
  19. nickster

    nickster Member

    Joined:
    Oct 7, 2013
    Messages:
    82
    Likes Received:
    52
    while(1) -we take a watchdog timeout?
     
  20. nickster

    nickster Member

    Joined:
    Oct 7, 2013
    Messages:
    82
    Likes Received:
    52
    Z -Math. Turn your printer on from a cold start and carefully calibrate the Z so it zeros with a piece of notebook paper (0.1mm) between the extruder and bed. Back off Z to 10mm or so. Turn extruder heater on to a temp of 190C running fan 100% for 15 minutes. Extruder has now expanded and is 0.2mm longer. If you were very careful to calibrate, the nuts will eject the next time you home the Z because the nozzle tip will keep the Z micro from closing. So only Z home after the Robo 3D is back up to full temp.

    Ran two cool down cycles with a dial indicator and was seeing just shy of 0.008" extruder contraction after the heater power was shut off and extruder was allowed to cool to room temp 20C with initial temp of 190C. Indicator was quickly zeroed at the start of each cool down when it came into contact with the extruder tip to minimize initial thermal expansion of the indicator itself.
     
Thread Status:
Not open for further replies.

Share This Page