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

Solved D10 not heating the extruder

Discussion in 'Troubleshooting' started by Island Bill, Jun 6, 2015.

  1. Island Bill

    Island Bill Active Member

    Joined:
    Aug 1, 2014
    Messages:
    132
    Likes Received:
    76
    Hi all,

    I could use a little help with pins.h in the robo3d firmware. D10 has stopped heating the extruder nozzle, and therefore I want to try it on D9. I'm looking through pins.h in the firmware and my question is, how do I know which motherboard type (33, 35, etc) and which Ramps version I'm dealing with? If I knew those two answers, I believe I could sort this out in short order. Any help would be appreciated. Thanks in advance!
     
  2. Island Bill

    Island Bill Active Member

    Joined:
    Aug 1, 2014
    Messages:
    132
    Likes Received:
    76
    Ok, Ramps is 1.4 (duh) however I don't see a Ramps 1.4 definition in the robo3d firmware (which is R1V2). Still stuck.
     
  3. Island Bill

    Island Bill Active Member

    Joined:
    Aug 1, 2014
    Messages:
    132
    Likes Received:
    76
    From the section "Arduino Mega pin assignment":

    ==================
    #if MOTHERBOARD == 3 || MOTHERBOARD == 33 || MOTHERBOARD == 34 || MOTHERBOARD == 35 || MOTHERBOARD == 77 || MOTHERBOARD == 67 || MOTHERBOARD == 68
    #define KNOWN_BOARD 1 ///(The motherboard type MUST be one of these, in other words. So our possible types are 3, 33, 34, 35, 67, 68, and 77.)
    ...
    // uncomment one of the following lines for RAMPS v1.3 or v1.0, comment both for v1.2 or 1.1
    #define RAMPS_V_1_3 //robo ///(Yellow flag, this suggests that the firmware I've downloaded is outdated as I am using a Ramps 1.4)
    // #define RAMPS_V_1_0
    ...
    #if MOTHERBOARD == 33 || MOTHERBOARD == 35 || MOTHERBOARD == 67 || MOTHERBOARD == 68
    #define FAN_PIN 9 // (Sprinter config) ///(So, assuming I'm one of the types in the preceding line, I'm not 'Sprinter' because D9 is the second extruder.)
    #else
    #define FAN_PIN 4 // IO pin. Buffer needed
    #endif

    #if MOTHERBOARD == 77
    #define FAN_PIN 8 ///(I'm not type 77, because pin 8 is the heated print bed. That leaves 3, 33, 34, 35, 67, and 68)
    #endif

    #if MOTHERBOARD == 35
    #define CONTROLLERFAN_PIN 10 //Pin used for the fan to cool controller
    #endif ///(I'm not type 35, because pin 10 is the first extruder. That leaves 3, 33, 34, 67, and 68)
    ...
    #if MOTHERBOARD == 35
    #define HEATER_0_PIN 8
    #else
    #define HEATER_0_PIN 10 // EXTRUDER 1
    #endif ///(Another clue to keep in mind -- while I am using pin 8 as the heated bed which is HEATER_0, I know from the code snippet above and from the "else" statement here that I'm not type 35.)

    #if MOTHERBOARD == 33 || MOTHERBOARD == 67
    #define HEATER_1_PIN -1 ///(This eliminates 33 and 67. That leaves That leaves 3, 34, and 68.)
    #else
    #define HEATER_1_PIN 9 // EXTRUDER 2 (FAN On Sprinter) ///(HOW could HEATER_1 be the second extruder? Confusing...)
    #endif
    ...
    #elif MOTHERBOARD == 68
    #define HEATER_2_PIN 16
    #define HEATER_3_PIN 17
    #define HEATER_4_PIN 4
    #define HEATER_5_PIN 5
    #define HEATER_6_PIN 6
    #define HEATER_7_PIN 11 ///(I can't be type 68, because I know there are only 3 heaters on my Ramps board -- additionally, HEATER_2 is D9. That leaves 3 and 34.)
    ...
    #else // RAMPS_V_1_1 or RAMPS_V_1_2 as default (MOTHERBOARD == 3) ///(I'm not type 3 because my Ramps board is V1_4. That leaves type 34.)
    ===================

    Now I have a problem, because I find no if loop in the ATMEGA section which specifically defines heater pins for a type 34. Also, remember the yellow flag near the beginning -- this pins.h file does not say that it includes code for the Ramps 1.4.

    Any suggestions?
     
  4. mark tomlinson

    mark tomlinson ༼ つ ◕_ ◕ ༽つ
    Staff Member

    Joined:
    Feb 21, 2013
    Messages:
    23,915
    Likes Received:
    7,338
  5. Mike Kelly

    Mike Kelly Volunteer

    Joined:
    Mar 11, 2013
    Messages:
    6,967
    Likes Received:
    2,277
    Ramps1.4 is motherboard 33


    Motherboard 34 is for dual extruder which is why heater_1 is assigned to pin 9

    Chances are good there's a damaged mosfet if your extruder isn't heating. Does the led turn on when you enable the heater?

    If you want to change the heater_0 to be on pin 9 you need to remove the fan callout and change it to 10
     
    Island Bill likes this.
  6. Island Bill

    Island Bill Active Member

    Joined:
    Aug 1, 2014
    Messages:
    132
    Likes Received:
    76
    No Mike, led 3 does not turn on. Thanks for the info on the motherboard type.
     
  7. Island Bill

    Island Bill Active Member

    Joined:
    Aug 1, 2014
    Messages:
    132
    Likes Received:
    76
    You mean heater_1 here, don't you?
     
  8. Island Bill

    Island Bill Active Member

    Joined:
    Aug 1, 2014
    Messages:
    132
    Likes Received:
    76
    I've changed the code and tested it on another Ramps board that has a separate issue (the heaters are fine on this one). LED 4 came on when I told it to heat the nozzle. The nozzle never did heat up, however (I'm thinking it may be a bad heat element). I then changed back to the original Ramps board and ran the test again. LED 4 does not light up on this one. Is this a bad mosfet?
     
  9. Island Bill

    Island Bill Active Member

    Joined:
    Aug 1, 2014
    Messages:
    132
    Likes Received:
    76
    NVM, found your lengthy post on this subject with the 4 tests. I turned my board over and found that it does indeed have a burned trace. I'll be doing a repair with a good mosfet. Thx for the help!
     
    Mike Kelly and mark tomlinson like this.
  10. Island Bill

    Island Bill Active Member

    Joined:
    Aug 1, 2014
    Messages:
    132
    Likes Received:
    76
    I finally cleared up my confusion amid the chaos. It seems that pins.h doesn't define the heated bed pin as "HEATER_0_PIN", it explicitly names it "HEATER_BED_PIN". Here are the code lines which had me confused until I noticed the name format:

    ==================
    //(pins.h lines 522-527)
    #if MOTHERBOARD == 33 || MOTHERBOARD == 67
    #define HEATER_1_PIN -1 //( <---- There is NO second extruder.)
    #else //( Because we know that we are type 33, stop right here, there is no "else" for us! ;) )
    #define HEATER_1_PIN 9 // EXTRUDER 2 (FAN On Sprinter)
    #endif
    ...
    //(pins.h lines 556-564)

    #if MOTHERBOARD == 35
    #define HEATER_BED_PIN -1 // NO BED
    #else
    #if MOTHERBOARD == 77
    #define HEATER_BED_PIN 9 // BED
    #else
    #define HEATER_BED_PIN 8 // BED //(This is us, because we're not 35 or 77. D8 is the heated bed.)
    ===============

    Where do we explicitly change the first extruder to run on pin 9, you ask?
    ===============
    #if MOTHERBOARD == 35
    #define HEATER_0_PIN 8
    #else
    #define HEATER_0_PIN 9 // EXTRUDER 1 //(<---- Right here, pins.h line 519)
    #endif
    ===============

    If you're changing your extruder to D9, line 519 is the ONLY line you need to change (please correct me if I'm wrong Mike or somebody). By default it reads:
    #define HEATER_0_PIN 10 //EXTRUDER 1
    Simply change the "10" to "9".
     
    Mike Kelly and mark tomlinson like this.
  11. Island Bill

    Island Bill Active Member

    Joined:
    Aug 1, 2014
    Messages:
    132
    Likes Received:
    76
    And not to bloviate, but in the interest of being complete here's one other tip. Apparently the thing that blew my mosfet was the heat element. Somehow it burned up, shorted, something. I read infinite resistance (an 'open') with a DMM on the leads. I tested the wires themselves and they were fine. What this means is that I had to pull an older heat element out of the box-o-stuff and replace that, too. Now, I noticed after this that the replacement heat element was very slow in heating and never would heat to the prescribed temperature. "Great", I thought, "now I have to get another heat element!" Wrong. I carefully pulled the rubber boot from the hotend and saw that the thermistor had slipped out of the tiny cubby hole made for it. Once I corrected this issue, the hotend became very responsive and accurate.

    We're resolved. Threads can be confusing to follow, so if anyone has any questions shoot me a message or just reply here. I'm sure I'm not saying anything that hasn't been said before on this subject, but if you're like me it's nice to find everything in a neat, tidy post -- if you can figure out just what "everything" is! ;)
     
  12. mark tomlinson

    mark tomlinson ༼ つ ◕_ ◕ ༽つ
    Staff Member

    Joined:
    Feb 21, 2013
    Messages:
    23,915
    Likes Received:
    7,338
    Great job documenting this for others.
     
    Island Bill likes this.
  13. Mike Kelly

    Mike Kelly Volunteer

    Joined:
    Mar 11, 2013
    Messages:
    6,967
    Likes Received:
    2,277
    I guess I hope changing that one value will swap it to D9, but you might also want to define the fan pin to like -1.

    I'm not too confident on this because when I was setting up my Cyclops I tried changing it so that either extruder would try and heat on D10 and then Pin 9 could be used for the fan like normal.

    Well that wouldn't work and then the only way I could heat my extruder was to enable "both" heaters, even though it was the same pin. Nor did the fan control on pin 9. Something was going over my head on that.
     
    Island Bill likes this.
  14. Island Bill

    Island Bill Active Member

    Joined:
    Aug 1, 2014
    Messages:
    132
    Likes Received:
    76
    This code is badly in need of a major overhaul in my opinion. It isn't very well commented and it was evidently written before 1.4 ( I say that because it doesn't even mention 1.4, only 1.1 through 1.3 and if I'm not mistaken even references 1.0!). I think the situation to which you refer here is a by product of that.
     
  15. mark tomlinson

    mark tomlinson ༼ つ ◕_ ◕ ༽つ
    Staff Member

    Joined:
    Feb 21, 2013
    Messages:
    23,915
    Likes Received:
    7,338
    Jump on the Marlin code wagon. It is open source and they enjoy new coders :)

    Start here :

    https://github.com/MarlinFirmware/Marlin

    @Ziggy had done some work on it and if I could free up the time from work I would be all over it myself.
     
  16. Island Bill

    Island Bill Active Member

    Joined:
    Aug 1, 2014
    Messages:
    132
    Likes Received:
    76
    Therein lies the problem, lol

    Edit: wouldn't it be nice if there was a custom firmware for the Robo3D?
     
    #16 Island Bill, Jun 10, 2015
    Last edited: Jun 10, 2015
  17. mark tomlinson

    mark tomlinson ༼ つ ◕_ ◕ ༽つ
    Staff Member

    Joined:
    Feb 21, 2013
    Messages:
    23,915
    Likes Received:
    7,338
    It would be amazing.
     
  18. Island Bill

    Island Bill Active Member

    Joined:
    Aug 1, 2014
    Messages:
    132
    Likes Received:
    76
    I wonder how much Robo would pay for that?
     
  19. mark tomlinson

    mark tomlinson ༼ つ ◕_ ◕ ༽つ
    Staff Member

    Joined:
    Feb 21, 2013
    Messages:
    23,915
    Likes Received:
    7,338
    Zero, just a guess, but I am sticking with it.
     
    Island Bill likes this.
  20. Island Bill

    Island Bill Active Member

    Joined:
    Aug 1, 2014
    Messages:
    132
    Likes Received:
    76
    D'ya think? FYI, I've made progress on a binary with a GUI that allows you to change many things with the Robo on the fly. I haven't finished with it by a long shot, but I've gotten far enough to know damned well that it's worth something. ;) My only question is, 'why hasn't somebody else done this?'. Well, actually that begs a second question if you follow it through -- how is it that Robo can justify not paying for a product enhancement when they themselves are a for-profit company riding the tails of open-source?

    Another project... I'm working on a 3D printer that has multiple extruders and a print bed that is 5 feet square. It won't be "open source" because frankly, open source is a con game in some respects and Robo is an example. Go ahead folks, tar and feather this post all you want -- every name that shows up castigating that statement is equivalent to an "I'm a sucker" sign worn preferably around the neck.
     
    mark tomlinson likes this.

Share This Page