Emco Turn 120P Machinekit control panel

Brainstorming, CAD, CAM, simulation, wood, machining, gluing, sanding, HIPS … the control panel is almost ready!

The structure of the control panel is made of 5mm plywood. The red color is coming from a 1mm sheet of HIPS. Everything machined on my CNC-6040 router with 3.17mm carbide endmill.

The touchscreen is a Beetronics 12″ model. Connected through HDMI to the BeagleBone Black board. Easy configuration: there is native support for the touchscreen USB pointing device in the Machinekit Linux image!20160320_231247

20160320_231256

Step by step manufacturing of the control panel.

First step was CAD design with ViaCAD software.CompatWindow_2016-03-10_00-55-18

Some 3D rendering with ViaCAD.CompatWindow_2016-03-12_17-06-53 CompatWindow_2016-03-12_17-07-45

High quality CG rendering and compositing with DAZ3D Carrara 8.5.On the real machine, I will add a frame to hang the panel above the sliding door area.
EMCO 120P Fake Control panel

CAM done with BobCAD-CAM. Below a simulation to check everything before machining.BobCAD-CAM - [Emco120 Control Panel V14 Cover]_2016-03-20_13-56-58

Plywood panel machined with 3.17mm carbide endmill. Some pockets to have 2mm thickness for industrial buttons fixture.

20160320_172240

20160320_172302

Gluing all parts together, and waiting 2 hours before removing clamps.20160320_185541Final result!20160320_231303

MPG and lights will be managed by an Arduino UNO. Stay tuned …

Emco Turn 120P retrofit

My new project is the retrofit of an Emco Turn 120P CNC lathe.

For the motion controller, I have chosen Machinekit running on a Beaglebone Black board. 12″ touchscreen with Gmoccapy GUI. A Controllino PLC to manage all non-realtime I/O such as the pneumatic chuck, the tailstock, the pumps, etc …

The original 5-phases stepper motors has been kept. They are driven by two Vexa UDK5128N drivers. Need 110V AC source for them, coming from an auto-transformer.

The original spindle DC motor has been replaced by a 3 kW AC motor driven by an Hitachi NE-S1-022 VFD. This VFD is controlled over MODBUS by the Machinekit controller through the PLC. I have patched the standard MODBUS over TCP stack to have a gateway to the RS485 bus.

Here is the global schematic diagram of the electronics.

Emco120 Machinekit Electronics V03

Next step is the modification of the Probotix PBX-BB cape to give access to the eQEP2 quadrature encoder for the spindle position sensor.

Wino-board adapter for 2.54mm pitch

The Wino-board is very interesting for IoT home projects. It is an Arduino tiny board including Wifi interface.

The pitch of the connectors is 2mm to optimize the footprint. But this is not so easy to use with 2.54mm pitch common breadboards. So, I have designed a small adapter to convert from 2mm to 2.54mm pitch.

TARGET 3001! V17 light - [1 PCB XprojectswinoboardAdapterWinoboard adapter _2015-12-21_21-28-56

Here is the PCB machined on my CNC-6040. The label is not finished because the mill broke during the engraving.20151221_204749

The fully assembled adapter board with the Wino-board device soldered on the top.20151221_212625

 

Full project including Gerber files and Target 3001! design : Winoboard adapter V05.zip

Automatic bed leveling for Ultimaker Original

After trying to implement auto bed leveling feature with a retractable switch, I decided to use a small induction sensor. I experienced poor mechanical reliability with the retractable switch mostly because the  PLA bracket was melting when the 2 extruders were hot.

I have modified the original hot end holder design by Ultimaker so that a support plate for the induction sensor can be tightly screwed.

SONY DSC

Here is the original design compared to the new one

Original hot-end holder

Original design

New hot-end holder

New design

The induction sensor is a TL-Q5MC1-Z from Omron. Even it is rated for 10 to 30 VDC power supply, it works very well down to 2.5V, including the embedded red LED indicator. The detection distance of the aluminum plate is about 2mm. So I have replaced the 3mm glass plate by kapton tape to accommodate this short detection range.

The sensor is connected to GND, +5V and Pin13 of the Ultimaker controller board so that the ZMIN endstop switch is still active. Keeping the ZMIN endstop is useful for security reason in situation where the induction sensor does not work anymore, or the aluminum bed is not present.

TL-Q5MC1-Z connection

TL-Q5MC1-Z connection (brown, blue, black wires)

I have modified the Marlin firmware as below:

  • Activation of the 3 points bed leveling feature
  • Optimization of G28 and G29 sequences
  • Support of a sensor connected to the Pin 13 of the controller board

The project resources are available here:

 

Intelys C3000 retrofit

My first experience with Machinekit: the retrofit of an old Intelys C3000  machining center! Three months of work with many new things to learn:

  • Beaglebone Black configuration and interfacing
  • PRU integration
  • Machinekit compilation and configuration
  • QML programming to modify Machineface
  • Setup of a X86 VM to execute my machine configuration in simulation mode
  • PCB routing with Target3001! EDA
  • How to engrave a PCB with a CNC router
  • and lot of fun

Many thanks to the Machinekit and LinuxCNC community for helping me on some tricky configuration issues.

The customized Machineface GUI is available from https://github.com/f1oat/Machineface

LinuxCNC machine setup selection

BobCAD-CAM is able to manage multiple machine setups in the same project. This is a very useful feature when the workpiece should be cut in several phases with a different fixture for each of them. Below an example with 3 machine setups.

BobCAD V26 - [Multi Setups]_2015-02-09_22-20-50

The generated G-Code file contains all operations in the same file, except if you enable manually only one fixture. So, saving one different G-Code file for each machine setup is possible, but quite painful and risky.

To solve this issue, I have designed a custom BobCAD-CAM postprocessor and a dedicated LinuxCNC/Gmoccapy panel to select from one single G-Code file the operations to be executed for a given machine setup. Also, the Gremlin preview is automatically updated according to the selected machine setup. Here is a video showing how it works:

In the BobCAD-CAM generated G-Code file, the section associated to each machine setup is surrounded by if / elseif / endif statements for dynamic selection.

...
(Machine Setup - 1  Facing)
(FACING)
O100 if  [ #<_selected_setup> EQ 1 ]
T1 M6
G53 G0 Z#<_ini [ AXIS_2 ] SAFE_POSITION>
S15915
M3
G0 X60.150 Y-22.600
M7 (MIST COOLANT)
G0
(Machine Setup - 2  Pocket)
(POCKET)
M5
T2 M6
S3559
M3
M7 (MIST COOLANT)
G0
G0 X5.969 Y.000
G0 Z35.480
...
(NEXT MACHINE SETUP - Machine Setup - 2)
O100 elseif  [ #<_selected_setup> EQ 2 ]
T1 M6
G53 G0 Z#<_ini [ AXIS_2 ] SAFE_POSITION>
....
(NEXT MACHINE SETUP - Machine Setup - 3)
O100 elseif  [ #<_selected_setup> EQ 3 ]
....
G0 Z25.480
G0 Z55.800
O100 endif
M5
M30

The #<_selected_setup> is a custom named parameter linked to a Gmoccapy panel where the setup number can be selected from 1 to 6.

For those who are not using Gmoccapy or LinuxCNC, another option is to get the chosen machine setup by reading an analog input with a M66 statement.

I have spent some hours to configure properly my BobCAD-CAM postprocessor for good result. One tricky aspect is the tools management: if the tool does not change from one machine setup to the next one, the original postprocessor does not include any further tool change statements in the G-Code file. This is not compatible with my O100 if/elseif/endif hack because, the tool change sequence would be issued only for first machine setup. So, I have added a systematic tool change in the following section of the posprocessor:

16. Machine Setup Change
	" "
	"(NEXT MACHINE SETUP - ",setup_name,")"
	" "
	n,"O100 elseif ","[","# EQ ", program_block_5, "]"
	n,t,"M6"
	n,"G53 G0 Z#<_ini","[","AXIS_2","]","SAFE_POSITION>"
	n,s
	n,spindle_on
	n,rapid_move,force_x,xr,force_y,yr,rotary_xyr_angle
	n,program_block_1
	"G0"
	output_rotary_angle

I am not yet fully happy with this solution because I have some unnecessary tool change requests in some situations. But, at least it works, in any case!

I have now to test this modification on the real machine … Stay tuned!