Skip to content
This repository has been archived by the owner on Jan 29, 2018. It is now read-only.

Firmware: Smoothie and JTech 2.8 Settings

Peter van der Walt edited this page Jul 21, 2016 · 3 revisions

If you want to use a laser diode with Laserweb below you will find some settings and recommendations.

JTech Photonics Laser Driver

Their current driver has a control signal maximum frequency of 5KHz. If you are using Smoothieware to control the driver then a change in the config is needed to have the complete power range of the laser.

Go to Smoothieware’s config and look for the last line in the laser block


# Laser module configuration
laser_module_enable                            true            # Whether to activate the laser module at all. All configuration is
                                                               # ignored if false.
laser_module_pin                                2.5            # this pin will be PWMed to control the laser. Only P2.0 - P2.5, P1.18, P1.20, P1.21, P1.23, P1.24, P1.26, P3.25, P3.26
                                                               # can be used since laser requires hardware PWM
laser_module_maximum_power                      1.0            # this is the maximum duty cycle that will be applied to the laser
laser_module_minimum_power                      0.0            # This is a value just below the minimum duty cycle that keeps the laser
                                                               # active without actually burning.
laser_module_default_power                      0.8            # This is the default laser power that will be used for cuts if a power has not been specified.  The value is a scale between
                                                               # the maximum and minimum power levels specified above
laser_module_pwm_period                         20             # this sets the pwm frequency as the period in microseconds

By default its setup to 20 microseconds so that would mean 50KHz and we need 5KHz. So change that value to 200.

Bellow you’ll find some tests done in Laserweb

calibration smoothie

If you have a different requirement the following tool will help you make the convertion

JTech Photonics Laser Mount for 52mm Shapeoko "silent" Spindle

3D printable Openscad mounting solution for a 52mm spindle which also includes an optional Shopvac mount and optional RPM meter mount.

$fn=120;

with_vacuum = true;
with_rpm_meter = true;
spindle = 53;
vacuum = 37.2;

if (with_vacuum == true) {
    //%color("orange") rotate([0, 0, 90]) import("adapter_1_v1_0.stl");
}

translate([0, 0, 10]) color("red") {
    %cylinder(r=spindle/2, h=90);
    %translate([0, 0, -spindle]) cylinder(r=19/2, h=52);
    %translate([0, 0, -72]) cylinder(r=3/2, h=20);
    if (with_rpm_meter == true) {
        rotate([0, 0, -45]) {
            %translate([-10.5, 0, -14.5]) rotate([0, 90]) cylinder(r=1, h=1);
            %translate([-44, 0, -14.5]) rotate([0, 90]) cylinder(r=6, h=32);
            
        }
    }
}

rotate([0, 0, -45]) {
    difference() {
        union() {
            translate([0, 0, 15]) cylinder(r=(spindle+4.8)/2, h=10); // spindle clamp
            difference() {

                hull() { // main body
                    rotate([0, 0, -90]) { // laser mount
                        translate([-(spindle+2.4)/2, 0, -4.5]) cube([2.4, 32, 30], center=true);
                    }
                    if (with_rpm_meter == true) {
                        translate([-(spindle+2.4)/2, 0, -4.5]) rotate([0, 90]) cylinder(r=11, h=2.4, center=true); // hall effect mount
                    }
                        cylinder(r=(spindle+4.8)/2, h=15); // spindle mount
                    if (with_vacuum == true) {
                        rotate([0, 0, 45]) translate([0, -65, 0]) cylinder(r=(vacuum/2)+2.4, h=15); //vacuum mount
                    }
                }

                cylinder(r=(spindle)/2, h=50, center=true); // spindle hole
                translate([0, 0, 20]) cube([2, 60, 10], center=true); // clamp relief
                translate([0, 0, 20]) cube([60, 2, 10], center=true); // clamp relief


                // center cutout
                translate([0, 0, -25]) difference() {
                    intersection() {
                        hull() {
                            cylinder(r=spindle/2, h=50);
                            rotate([0, 0, 45]) translate([0, -65, 0]) cylinder(r=(vacuum/2), h=50);
                       }
                
                        hull() {
                            cylinder(r=spindle/2-3.6, h=50);
                            rotate([0, 0, 45]) translate([0, -65, 0]) cylinder(r=(vacuum/2)-3.6, h=50);
                        }
                    }

                    cylinder(r=spindle/2+2.4, h=100, center=true);
                    rotate([0, 0, -135]) translate([0, 65, 0]) cylinder(r=(vacuum/2)+2.4, h=100, center=true);
                } // end center cutout

                // vacuum cutouts
                rotate([0, 0, 45]) translate([0, -65, 0]) {
                    translate([0, 0, -50]) cylinder(r=(vacuum/2), h=100);
                    translate([0, (vacuum/2), 13]) cube([5, 5, 4], center=true);
                } // end vacuum cutouts
                
            }
            
            if (with_rpm_meter == true) {
                translate([-(spindle-2.4)/2, 0, -4.5]) rotate([0, 90]) cylinder(r=11, h=2.4, center=true); //hall mount backing
            }
            
            // laser mount backing
            rotate([0, 0, 90]) {
                translate([(spindle-6)/2, 12.5, -4.5]) rotate([0, 90]) cylinder(r1=3.5, r2=5.65, h=4.8, center=true);
                translate([(spindle-6)/2, -12.5, -4.5]) rotate([0, 90]) cylinder(r1=3.5, r2=5.65, h=4.8, center=true);
            } // end laser mount backing
        }
        
        if (with_rpm_meter == true) {
            translate([-(spindle+2.4)/2, 0, -4.5]) rotate([0, 90]) cylinder(r=6.5, h=12, center=true); // hall effect mount cutout
        }
        
        rotate([0, 0, -90]) {
            translate([-(spindle+2.4)/2, 12.5, -4.5]) rotate([0, 90]) cylinder(r=1.6, h=16, center=true); // laser mount cutout
            translate([-(spindle+2.4)/2, -12.5, -4.5]) rotate([0, 90]) cylinder(r=1.6, h=16, center=true); // laser mount cutout
        }
        
        // clamp relief
        translate([0, 0, 20]) {
            cylinder(r=(spindle)/2, h=10, center=true);
            cube([2, 60, 10], center=true);
            cube([60, 2, 10], center=true);
        }
    }
}

Optional (but recommended) fan mount to cool the laser heatsink with a 30mm fan.

module 30fan() {
  difference()
    {
    linear_extrude(height=11, center = true, convexity = 4, twist = 0)
      difference()
        {
        square([30,30],center=true);
        difference()
          {
          circle(r=28.5/2,center=true);
          circle(r=18/2,center=true);
          }

        translate([+12,+12]) circle(r=3.4/2,h=12+0.2,center=true);
        translate([+12,-12]) circle(r=3.4/2,h=12+0.2,center=true);
        translate([-12,+12]) circle(r=3.4/2,h=12+0.2,center=true);
        translate([-12,-12]) circle(r=3.4/2,h=12+0.2,center=true);

      }
    
    }

    //Seven Blades
    linear_extrude(height=10, center = true, convexity = 4, twist = -30)
      for(i=[0:6])
        rotate((360*i)/7)
          translate([0,-1.5/2]) square([28.5/2-0.75,1.5]);
}

#%translate([0, 0, -5.5]) 30fan();

difference() {
    translate([0, 0, 11.5])cube([30+4.8, 30, 23], center=true);
    hull() {
        translate([0, 0, 8.5])cube([30, 50, 11+1.2], center=true);
        translate([0, 0, 17.6])cube([19, 50, 6], center=true);
    }
    translate([0, 0, 15.5])cube([19, 50, 21], center=true);

    translate([12.5, 0, 20]) cylinder(r=3.4/2,h=10,center=true, $fn=24);
    translate([-12.5, 0, 20]) cylinder(r=3.4/2,h=10,center=true, $fn=24);
    translate([-12.5, 0, 17.6]) cylinder(r1= 5/2, r2=6.4/2,h=6,center=true, $fn=24);
    translate([12.5, 0, 17.6]) cylinder(r1= 5/2, r2=6.4/2,h=6,center=true, $fn=24);

    translate([12,12]) cylinder(r=3.4/2,h=10,center=true, $fn=24);
    translate([12,-12]) cylinder(r=3.4/2,h=10,center=true, $fn=24);
    translate([-12,12]) cylinder(r=3.4/2,h=10,center=true, $fn=24);
    translate([-12,-12]) cylinder(r=3.4/2,h=10,center=true, $fn=24);
    rotate([0, 0, 22.5/2]) cylinder(r=28/2, h=10, center=true);
}

Vacuum attachments can be found here, where you will find the design on which this mount was based.