Plasma CNC

From Norwich Hackspace
Revision as of 14:15, 21 September 2020 by Toby Catlin (talk | contribs)
Jump to navigation Jump to search

Summary

Build a large sized XY CNC table capable of using a plasma torch to accurately cut metal.

  • Project lead: Toby
  • Team:
  • Location: Metalspace
  • Status: Design phase

Help wanted: electronics, cad, frame

Equipment

  • 2x Y-axis 2m Rollon ELM65 enclosed linear rail
  • 1x X-axis Rollon ROBOT130 X gantry
  • 2x Servo motors 86HSE8N-BC38
  • 2x HSS86 servo motor drivers
  • 2x planetary gearboxes
  • A crappy steel frame

The Rollon rails are very high quality industrial components that are sealed to dust. The Y axis rails use toothed belts inside the rail and the X axis used ball screws and twin linear rails. The motors are large high powered units with encoders that measure the actual movement and sends it back to the driver. This closed loop setup means that the driver can compensate for any missed step allowing for finer microstepping and increased reliability.

Docs

File:HSS86 manual.pdf

Software

Looking at the HSS86 datasheet it appear to work just like standard polou steppers that take a ENABLE, DIR & STEP signal input. Therefore a GRBL based controller should be ideal for driving the CNC.

I have successfully driven one of the motors using a basic arduino sketch to send pulse and dir signals. Setting the signals high +5 volts with a common ground did not work. The datasheet for HSS86 shows a common 5v with a on signal represented as pin output low. This requirement means that GRBL is not working and need to configure GRBL to invert the high/low signals.

Progress

20-09-2020 The simple sketch showed it was possible to drive the HSS86 from an Arduino so it must be possible to get GRBL working as it outputs the same signals. The default is for the output pin to be HIGH when on. Due to the wiring of the HSS86 we now need to pull the pin LOW to indicate on.

12-09-2020 The datasheet for the HSS86 shows that all the +5v pins should be connected and the signal pins pulled low.

HSS86 wiring diagram.png

This makes no sense especially as the previous owner had also wired ground together but seemed to be worth trying. Some suggested that GRBL was not good to test with as its pretty complicated with lots to go wrong. So I switched to a much simpler sketch that essentially just set the output pins.

const int stepPin = 2; //white
const int dirPin = 5; //black
const int enPin = 8; //red
char data;
float step_delay_time = 500;

void setup() {
  pinMode(stepPin, OUTPUT);
  pinMode(dirPin, OUTPUT);
  pinMode(enPin, OUTPUT);

  digitalWrite(enPin, HIGH);
  Serial.begin(115200);
}

void loop() {
  if (Serial.available() > 0) // we give commands through serial monitor
  {
    data = Serial.read(); //command from monitor
    if (data == 'a') //stepper 1 right
    {
      digitalWrite(enPin, HIGH);
      digitalWrite(dirPin, HIGH); //motor will rotate write
      for (int x = 0; x < 500; x++)
      {
        digitalWrite(stepPin, LOW);
        delayMicroseconds(step_delay_time);
        digitalWrite(stepPin, HIGH);
        delayMicroseconds(step_delay_time);

        Serial.println(x);
        if (Serial.read() == 'x') //to stop
        {
          digitalWrite(enPin, HIGH);
          Serial.print("stop");
          break;
        }
      }
    }
}

Much to my surprise and pleasure this worked.

09-09-2020 The plan is to feed the HSS86 driver with the same signals as standard stepper motors. This is to send +5v to the STEP, DIR and ENABLE pins and have all the grounds connected together. I GRBL to send the pulses with universal gcode sender. After a few hours of fiddling nothing worked.