The Z axis control on the Lasercut system has some features I don't really like.
- It's slow when you're trying to go large distances.
- You have to be right at the top menu before you can enter Z mode, but the top menu and the one below it are both identical so you end up pressing escape before hand just to make sure.
- Once in Z mode pressing escape does not get you out of Z mode, only pressing Z again does.
- Holding the Up/Down button for 3 seconds switches to a faster speed but this typically occurs once you reach the exact spot you wanted to be in and the Z zooms out of the desired position.
- You can't adjust the Z axis while the program is paused, meaning you have to stop, adjust and restart whereby you double cut a series of lines.
- If you don't datum the Z axis, which it doesn't do automatically, the Z doesn't even run continuously. Check the end of the video to see what I mean.
So with all of these little niggles I thought it was time to replace the controller with my own controller. I picked the Arduino Pro mini as the controller for the job because you get the full use of the Arduino libraries and you can pick them up for <£2 a time meaning you can plug them in and forget about them. I wanted a few features from my new control system.
- Fast and Slow adjustment in either direction from separate buttons
- End stop detection, so I don't case any damage to the Z axis.
- Zero Datum (run to end stop) in both top and bottom directions
Please forgive the camera work in the video, my old camera appears to be having some focusing issues.
The user pad has 4 buttons, one fast and one slow in either direction. If you push fast and slow at the same time the Z axis will datum in that direction, because the Z axis control system is now independent of the laser controller I'm able to adjust the Z height at any part of the program, this might not be the safest way of doing it but it's pretty easy not to push the buttons while the laser is actually cutting.
Magnets hold the control panel onto the side of the machine for easy access. It's a very simple circuit, the arduino plugs in using the existing connectors so no modifications were required. The stepper motor driver was left powered by the existing system and only the control signals were replaced, the arduino also taps into the Z axis limit switch connector.
The stepper motor pulses are produced by the arduino hardware. PWM normally varies the on duration of a square wave signal but a the stepper motor driver is only looking for edge pulses that won't help. For this program I set the duty cycle to 50% and vary the repeat period of the signal, this controls the number of steps per minute. Source code for the project can be found here (source)