MarlinFirmware / Marlin

Marlin is an optimized firmware for RepRap 3D printers based on the Arduino platform. Many commercial 3D printers come with Marlin installed. Check with your vendor if you need source code for your specific machine.
https://marlinfw.org
GNU General Public License v3.0
16.04k stars 19.15k forks source link

Piston Paste Extruder - Question #5339

Closed BillStruve closed 7 years ago

BillStruve commented 7 years ago

Printing by extruding a paste with a stepper motor driven piston does not require temperature control of the extrude head or the bed. It does require control of a fan to dry the paste after extrusion. It also requires a means of adjusting the extrude rate during printing.

Additions have been made to the RC7 release that pass all of the tests for my printer. I was about to download the latest RCBugFix so that the latest Marlin code would serve as a base for the added functionality, but I though I should ask a question first.

Should I make a pull request for RC7 with the changes I have, or go ahead and download the latest RCBugFix, make my changes to it, and then make a pull request for RCBugFix?

thinkyhead commented 7 years ago

Since 1.1.0-RC7 is old and unchanging, all PRs should be made for RCBugFix. I look forward to seeing your work.

BillStruve commented 7 years ago

you will as soon as analogRead() is replaced.

thinkyhead commented 7 years ago

You need not worry about skipping over temperature checking. It can still continue. As long as no commands are sent to turn on heaters, unconnected thermistors won't throw any errors. (Recent change made after RC7.)

BillStruve commented 7 years ago

p.s. what rationale is used to differentiate the compiler directives #ifdef XXX and #if ENABLED(XXX)?

thinkyhead commented 7 years ago

By using the ENABLED macro, it allows options that are normally enabled (just by being #defined) to be overridden as -off- from a Makefile by assigning a value of 0 or false to the define. So use ENABLED unless the define is meant to be set to some value.

BillStruve commented 7 years ago

Done and tested on RC7, so just need to download RCBugFix, mod and test it. For a pull you just need the changed files (6 + Configuration.h), right? Very brief description is:

/* 
 * Changes made for the piston paste extruder in addition to Configuration.h
 * 
 * Hardware:
 *    A manually adjustable variable resistor, 1K to 100K pot, mounted to chassis
 *    AUX-1 pin 1 +5 volts - connect to high end of pot
 *    AUX-1 pin 2 ground - connect to low end of pot
 *    AUX-1 pin 3 input - connect to wiper of pot
 * 
 * Six files that were modified: 
 *  Marlin.h to:
 *    set up variables to be used in Marlin_main.cpp, planner.cpp, & temperature.cpp
 *  Marlin_main.cpp to:
 *    define the DRYER_FAN_PIN as an output, and initialize to off
 *    define and initialize variables
 *    add M35 turn to dryer fan on
 *    add M36 turn to dryer fan off
 *    add M37 turn to enable extrusion multiplier, enable showing it, and set range value
 *    provide user feedback of the multiplier (once per about 3 seconds)
 *  pins_RAMPS.h to:
 *    #define DRYER_FAN_PIN to RAMPS_D10_PIN
 *    re-#define HEATER_0_PIN to RAMPS_D9_PIN so the temperatreure routines won't bother pin 10
 *    #define MANUAL_EXTRUDER_PIN for analog input from user,  AUX-1 pin 3
 *  planner.cpp to:
 *    change the amount of paste being extruded
 *  enum.h to:
 *    include TempState's for analog read of the MANUAL_EXTRUDER_PIN
 *  temperatures.cpp to:
 *    read the analog voltage at the MANUAL_EXTRUDER_PIN
 */
thinkyhead commented 7 years ago

Yes. Make a copy of the RCBugFix branch with a new name, make the needed changes, commit them to your feature branch, push them to your origin repo, and submit a PR against RCBugFix. I will review the PR and let you know what needs changing, and what else needs to be done for it to be mergeable.

stigjoergensen commented 7 years ago

Hi @BillStruve Lookinf forward to this.. But why the trimpot? whats is it used for? Could it be an option to put in the LCD menu?

/Stig

BillStruve commented 7 years ago

@stigjoergensen It's not a trimpot, it is a pot with a dial on it that is mounted so the user can adjust it. No LCD menu, just a USB plug. It is run from Simplify3D or Pronterface. When extruding paste, it is very useful to modify the extrude rate during the print by adjusting the dial. Paste tends to sag, so there is also a drying fan that needs G codes to turn it on and off.

The manufacturer of my machine has the knob and drying fan installed but is using a highly modified version of Marlin 1.0.2, which makes it very time-consuming to upgrade the firmware to a new Marlin version. Not only that, but if left to the users, different machines will be running differently modified Marlins, making troubleshooting a nightmare. Most users are artists or students.

Un-commenting a couple of #define's in Configuration.h, when getting a new version of Marlin, makes the upgrade trivial.

BillStruve commented 7 years ago

@thinkyhead pull request is submitted.

github-actions[bot] commented 2 years ago

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.