Jump to content

Resources info for a custom printer


24c

Recommended Posts

Posted (edited) · Resources info for a custom printer

Sorry about this question, but I'm struggling to get my head around writing a new set of resources, aka  definition, variants, extruders and materials. Well not the last one to be fair. I have a dual extruder printer, and three different head combinations, so I thought you create a definition first, and add some metadata tags, as well as some overrides common to all, then add specific overrides in the variants folder, with all the nozzle variations in the extruder section, but I'm wading in the sticky stuff now.

 

I can get one version to work by just user the Printer custom fdmprinter settings in other, but it seems more elegant to place these within the resources folder, so I'd like to learn how. I've managed to get this to work in Simplify3D & flavours of Slic3r, but I'm liking how Cura is going, so I'd really like to hang in here and get it up and running, as the test pieces are every bit as good and better than the closed OEM software.

 

Is there any place where this is explained, or any examples elsewhere anybody can point me to please. I have opened more than a few JSON files now, and it's getting a little muddy between the ears. :)

 

Thanks for any help.

Edited by 24c
  • Link to post
    Share on other sites

    Posted · Resources info for a custom printer

    Well, while there isn't a handy api resource page for you to help you understand and interpret the various settings, there ARE a number of great custom profiles and the Ultimaker machine profiles themselves that you can load and inspect to learn how they function. The "house style" for Ultimaker is to use a cascade to stack profiles against each other, so that tweaks for a particular model or configuration are later in the cascade of inheritance than the features that apply to more ranges of models and configurations earlier in the inheritance treee. What this also means for you is that you can setup a simple default profile for your custom machine, and then add other selectable configurations to tune or tweak to help with specific nozzle/hotend configurations. I wish we had a developers manual as well as an operating manual, but with Cura advancing so quickly, that's tough! Spend some time in some profiles and then see if you can ask some of your deeper questions here or at Freenode on IRC #cura or #cura-dev channels.

  • Link to post
    Share on other sites

    Posted · Resources info for a custom printer

    Try to be specific with the problems you run into. We don't know what stuff is sticky for you.

     

    First get a single extrusion printer going. Start without machine specific profiles ("has_machine_materials": false, "has_machine_quality": false ). Then add multiple extruders, and finally use "has_variants": true and add variant definitions.

     

  • Link to post
    Share on other sites

    Posted · Resources info for a custom printer

    @ahoeben & @mattgriffin. I'm sorry for the non-specific stuff, I'm just trying to get my head around this, but thank you both for your directions. I'm not a code bunny, so I expect some more daft questions will happen later. In the past I have compared slicer generated gcode in other slicers and vs the gcode the firmware in these printers accept, so I am just trying to grasp the Cura "syntax" & its generated gcode, and by comparison plus experimenting with settings I should mimic part of what I need. 

     

    To give you a more specific idea, my Dual Material printer expects to see this format

    M104 S200 T200 where T is the second nozzle & material temperature, whereas Cura uses M104 T(extruder_number) S200, which would keep that nozzle at 0 or 1ºC

    and 

    "E" refers to one extruder, and "D" the other extruder. This is easy to swap around in Simplify3D by using a post process like

    {TOOL0REPLACE " E" " D"} ;post process E values to Robox required D extruder values at toolchange

     

    BTW, a M105 call gets this response back  S:27 @0 T:27 @0 B:25 ^0 A:26 *0 where S is Extruder1 (tool T0) temperature and T is Extruder 2 (tool T1) temperature and B is the Bed temperature. I have changed some of the code in the USBPrinterOututDevice.py file in the PlugIns folder to fudge & grab the right extruder temperature for the single nozzle head, but I will need to parse this for the T1 extruder and its T value later, as well as clean up my "S" fudge.

     

    There are also anti ooze valves too that open and close the head nozzles, triggered by GCode G1 B1 & G1 B0, but is simply implemented.by using the extruder start and end codes, which I have tried this morning, just by dropping something in there, and it worked very well after looking at the generated gcode. :)

     

    Just for info, the head I have working currently, is a single nozzle Olsson with no valves, and it works very well indeed.

    However right now I am working on a two nozzle single extruder "Y" headed variant, and after starting a test print am now looking at the temperatures, trying to reach an understanding about the calls to Absolute extrusion, standby material temperature etc that I am seeing now in the Cura generated gcode (two models, one 0.3mm nozzle and the other 0.8mm), which I think is down to my profiles I have generated/cloned, so I'll be taking on your advices and keeping it simple as you've suggested, and be starting again. 

     

     

     

     

     

  • Link to post
    Share on other sites

    Posted (edited) · Resources info for a custom printer

    My more specific question, I have moved away from using the extruder start & end gcode to open & close** the needle valves, but I'm stumped at the moment on how I might assign a custom initial layer height like you can in Simplify3D for each extruder. 

    G1 X121.821 Y83.637
    G1 F1200 E-0.22
    G1 B0
    M82 ;absolute extrusion mode
    ; G1 B0 ; close needle valve at extruder end gcode
    M83 ;relative extrusion mode
    T1
    M82 ;absolute extrusion mode
    ; T1  ; active extruder start code
    ; G1 B1 ; open needle valve at extruder start gcode
    M83 ;relative extrusion mode
    M109 S205
    M104 T0 S190
    G0 F3600 X121.821 Y69.607 Z0.3
    G1 F1500 E-0.11
    G1 B1
    G0 F3600 X121.821 Y79.607

    My head has two nozzles and the active nozzle move down on toolchange, so there is a z offset in the head effectively of around 0.25mm. I have got around some of this when I do a single 0.3mm nozzle print or single 0.8mm nozzle print, by using the "extruder_nr" to activate the toolhead prior to the pre-start bed levelling routine, and so the relevant nozzle touches the bed, but when it comes to doing a two model print with both extruders one of the nozzles is too high. 

     

    I'll keep plugging away, and clean this toolchange up a bit. :)

     

     

     

     

    Edited by 24c
    Update
  • Link to post
    Share on other sites

    Posted (edited) · Resources info for a custom printer

    Ok, this is working OK, in that the Cura Gcode is being moulded into pseudo gcode the firmware in the printer can accept.

    Another specific question... finding how Cura would handle the Simplify {IF TOOL0REPLACE "x" 'with_value y"} in its post processing routine, as I need to swap extruder E values for something else only while a certain tool is selected.  I could do it with an external Python script, not me personally, as this is beyond me at the moment, but I'd like to keep it all together in one place if I could. Any pointers or areas to look at to improve my knowledge please?

     

    I solved the one problem in the previous post by calling T{extruder_nr} in my start code, and it made the right toolhead contact the bed, so levelling for whichever nozzle I was using, but It'd be nice if there was a dictionary or changelog of variables, definitions, tokens or whatever there called. I've seen them in the JSON files, but it's pot luck trying to find odd ones, but it's even harder working with Simplify3D in that respect. :) 

     

     

     

    Edited by 24c
    Begging
  • Link to post
    Share on other sites

    Posted · Resources info for a custom printer

    Cura does not support conditionals in the gcode snippets at this time.

  • Link to post
    Share on other sites

    Create an account or sign in to comment

    You need to be a member in order to leave a comment

    Create an account

    Sign up for a new account in our community. It's easy!

    Register a new account

    Sign in

    Already have an account? Sign in here.

    Sign In Now
    • Our picks

      • UltiMaker Cura 5.7 stable released
        Cura 5.7 is here and it brings a handy new workflow improvement when using Thingiverse and Cura together, as well as additional capabilities for Method series printers, and a powerful way of sharing print settings using new printer-agnostic project files! Read on to find out about all of these improvements and more. 
         
          • Like
        • 18 replies
      • S-Line Firmware 8.3.0 was released Nov. 20th on the "Latest" firmware branch.
        (Sorry, was out of office when this released)

        This update is for...
        All UltiMaker S series  
        New features
         
        Temperature status. During print preparation, the temperatures of the print cores and build plate will be shown on the display. This gives a better indication of the progress and remaining wait time. Save log files in paused state. It is now possible to save the printer's log files to USB if the currently active print job is paused. Previously, the Dump logs to USB option was only enabled if the printer was in idle state. Confirm print removal via Digital Factory. If the printer is connected to the Digital Factory, it is now possible to confirm the removal of a previous print job via the Digital Factory interface. This is useful in situations where the build plate is clear, but the operator forgot to select Confirm removal on the printer’s display. Visit this page for more information about this feature.
          • Like
        • 0 replies
    ×
    ×
    • Create New...