Request for input on potential firmware configurations for an SLS printer

edited February 2017 in Repetier-Firmware

Greetings,

I have been working with FDM printers for over a year now; maintaining converted XYZ daVinci’s, converting a pair of CTC dual extruder MakerBot clones to Repetier firmware on a RAMPS 1.4 Board, and currently fitting a RigidBot with an insulated enclosure and replacing the extruder and hot end. I am now in the design stages of a much larger project, an SLS printer.

 The Printer will have the following features:

  • 4040 extrusion Frame
  • A 40W CO2 Laser
  • Mirrors attached to an X-axis saddle and Y-Axis carriage to direct the beam through a focusing lens onto the print bed
  • Temperature controlled bed by 140W 24V Kapton heater
  • Temperature controlled enclosure by heater coils
  • 210x210x210 mm3 Print Volume
  • 0.1mm Layer Height
  • 0.1x0.1 mm2 X-Y Resolution
  • 50mm/s scan speed
  • Ball-Screws (1204s) attached to NEMA 23 stepper motors running at 4x micro-steps (5.0um/micro-step, 200micro-steps/mm) for X-Y Movement
  • NEMA 23 are used in X-Y axis for potential servo replacement in future
  • Off board Stepper Drivers for X-Y Axis Steppers running at 24V
  • Supported Linear Rails (SBR12s) for X-Y guidance
  • Trapezoidal thread screws (TR10x2s) attached to NEMA 17s running at 8x micro-steps (1.25um/micro-step) for reservoir and Z-axis build platform movement
  • 8mm rods for reservoir and Z-axis build platform guidance
  • Roller to distribute powder
  • Roller Rotational Speed controlled by a NEMA 17 stepper
  • Roller attached to saddle riding along the same rails as the X-axis saddle
  • Roller saddle linear speed done by belt/pulley system attached to a NEMA 17 Stepper
  • 5 sets of Max and Min limit switches (X, Y, and Z axis, reservoir, roller saddle)

The layer change process will go as follows:
  1. Laser will be disabled
  2. X-Axis saddle will home to the X-Axis max limit switch
  3. Y-Axis carriage will home to the Y-Axis max limit switch
  4. Z axis will lower by layer height
  5. Reservoir will raise required amount
  6. Roller rotation will be enabled
  7. Roller saddle linear movement will move powder from reservoir, over print bed, and then any amount of roller powder left will fall into an overflow bin. If moved to far will hit max roller saddle limit switch
  8. Roller rotation will reverse direction
  9. Roller saddle returns home to min roller saddle limit switch
Here are a few of the issues I have run into so far in this design. Any input in these area would be most welcome.
  1. Laser power output is controlled via a PWM signal sent to the laser power supply. Rough calculations put the energy requirements per 0.1x0.1 mm² pixel around 17J. What would be the best way to keep the same energy on a x-y pixel no matter the x-y velocity? 
  2. Is there an in depth explanation on the Laser mode in the Configuration Tool, particularly regarding how to use “E override”?
  3. What would be the best way to program the Reservoir, Roller rotation, and Roller Saddle linear movement?
  4. As the Reservoir and Roller Saddle need max and min limit switches, can each be declared as an independent axis (V,W)?
  5. If not, could the Reservoir and Roller Saddle be set to different extruder tools and use the jam detection as limit switches?
  6. The leading edge or the Roller will need to rotate at a controllable tangential speed in relation to the print bed. [ (rev/s * 2pi rad/rev * roller radius) ± roller saddle velocity]. I’m thinking that a unique M-code would be best (M-XXX LLL) would look at velocity of the roller saddle and move at an LLL relative tangential velocity. So whenever the roller saddle move, the roller rotates at a calculated speed. Would this be the best way to go about this or am I overthinking it.
  7. Will a Mega base board be fast enough to control this setup or should a Due board with logic lever converters be used?
I’m currently in the process of drafting up a CAD model of the printer with a BOM. Tentative first design revision to be ready by the end of next week (2017-03-10).

Thanks for any input that can be provide.

Comments

  • 1. It is always velocity dependent. In fact default is to power 100% and adjust enery with speed.
    2. Not really. It is just that increasing E enables laser for that move so you simply slice like for fdm printer.
    3./4. We have a extra motor driver that can be used when no other movements are running. These can only be slow but that should be not the problem here. We will add a version with endstop soon. YOu only need one endstop to calibrate motor position. As it is a stepper we then know position, no max endstop needed if you know the length.
    5-6. Not my field. The extra drivers only move at fixed speed. No acceleration/deceleration whcih is why they are slow. Plus they might stop a bit for lcd update.
    7. Depends on stepper frequency required. Due is 10 times faster so it can of course handle more or you get less pauses with extra motor drivers.

  • Repetier said:
    1. It is always velocity dependent. In fact default is to power 100% and adjust enery with speed.
    2. Not really. It is just that increasing E enables laser for that move so you simply slice like for fdm printer.
    If I'm following you correctly, I would connect the step pin from the control board to the PWM terminal on the laser tube power supply and operate it as bang-bang controller. The signal rate can then be tuned to by altering the Resolution [EXT0_STEPS_PER_MM] to match the equivalent power required. 

    1. Does this mean the firmware sends a signal that is always the same pulse time for any speed and the delay between pulses is all that changes? For example if two pulses were desired in a 16 increment amount of time, would the signal look like this [ _ _ _ _ _ _ _ - _ _ _ _ _ _ - ]
    2. Or does the firmware match the pulse time with delay time? In the same example as above would the signal look like this [ _ _ _ _ - - - - _ _ _ _ - - - - ] 


    Repetier said:
    3./4. We have a extra motor driver that can be used when no other movements are running. These can only be slow but that should be not the problem here. We will add a version with endstop soon. YOu only need one endstop to calibrate motor position. As it is a stepper we then know position, no max endstop needed if you know the length.
    Why do extra stepper motors not have speed and acceleration settings, does it take up to much room in memory? Could it be set in the Gcode line have the syntax G201 P<motorId> X<pos> F<feedrate>?
  • 1-2: No. We do not support PWM for laser out of the box. I said you use a free pin that is always on when laser is needed.

    3-4: We simply have not thought that a cartesian printer would need a few more axis then it has so we never added place for it. And yes it takes memory (especially with deltas) and also slows down computations proportional to number of axis. The motor drivers controlled with G201... were a simple addition to handle some more motors e.g. for adjusting bed, moving extruder parts, ... and there this stuff is not so essential. Maybe we get more axis in future that get controlled via gcode with acceleration. But that is not sure.
Sign In or Register to comment.