2017: EMCO-120P lathe + BBB + MK + Modified Gmoccapy GUI
2015: C3000 machining center + BBB + MK + Qt based tablet remote GUI
2013: CNC-6040 router + PC + LCNC + Modified Gmoccapy GUI
Late 90s : Wolfcraft table based mill + PC + EMC/LCNC + Axis GUI
3D mesh captured with David Laser Scanner.
G-CODE file generated with trial version of Deskproto.
Milling job achieved on a www.cnc-shop.ch CNC-6040 router and harmonic drive based fourth axis.
Slicing with Simplify3D
The 3D printing job
The EATC-120 module is almost finished !
This is a driver for the EmcoTurn 120/220 original 8 positions ATC.
This design is derived from the excellent Toolerator 3000 USB controlled driver.
EATC-120 is adding MODBUS capabilities for easy integration with an industrial environment.
Single 24V power supply with embedded 5V DC/DC converter.
The “brain” of the module is an Arduino Micro.
The motor is driven by an LMD18245T providing current control.
The lock status is automatically detected by measuring the peak current when the motor stalls.
Everything is reported in MODBUS registers.
Integration with Machinekit/LinuxCNC is easy thanks to “mb2hal” HAL component.
I have found a nice empty DIN rail enclosure and designed a special PCB to fit with it.
Stay tuned !
I have replaced the Probotix cape by a Furaday cape to get more I/O pins.
Here is the updated schematic diagram:
I needed this feature for my lathe control panel project. The goal is to drive the jog steps size by the rotation speed of the jog wheels.
The algorithm has been validated from 5 Hz to 100 kHz.
Maximum measurement error is 1%. See curves below.
The patch is available here: https://github.com/f1oat/machinekit
loadusr -w ../setup.sh loadrt threads name1=servo-thread period1=1000000 loadrt hal_pru_generic prucode=$(HAL_RTMOD_DIR)/xenomai/pru_generic.bin pru=0 num_encoders=1 num_pwmgens=1 pru_period=2500 halname=hpg addf hpg.update servo-thread addf hpg.capture-position servo-thread setp hpg.encoder.00.chan.00.A-pin 7 #925 ENCxI setp hpg.encoder.00.chan.00.counter-mode 2 #Up Counter (counts rising edges on A, always counts up, B ignored) setp hpg.pwmgen.00.out.00.pin 921 #PWM1 setp hpg.pwmgen.00.out.00.enable 1 setp hpg.pwmgen.00.pwm_period 1000000 setp hpg.pwmgen.00.out.00.value 0.5 start loadusr -w sleep 1 loadusr -w python encoder_test.py
#!/usr/bin/python import subprocess import time import os def readpin(p): r = subprocess.check_output('halcmd -s show pin ' + p + '|head -1',shell=True) lst = r.split() return lst def setpin(p, v): subprocess.check_output('halcmd -s setp %s %d' % (p, v), shell=True) freq = 5.0 prev_freq = 0.0 maxerror = 0 f = open('result.csv', 'w') line = 'in(Hz), out(Hz), err(%), latency(ms)' print line f.write(line + '\n') time.sleep(2) while freq < 100e3: period = int(1e9/freq/2500) * 2500 # because pru_period=2500 real_freq = 1e9/period if (real_freq <> prev_freq): prev_freq = real_freq setpin('hpg.pwmgen.00.pwm_period', period) time.sleep(0.2) measured_freq = float(readpin('hpg.encoder.00.chan.00.velocity')) latency = float(readpin('hpg.encoder.00.chan.00.latency')) * 1e-6 error = abs(real_freq / measured_freq - 1.0) maxerror = max(maxerror, error) line = "%8.1f, %8.1f, %4.2f, %3.0f" % (real_freq, measured_freq, error*100.0, latency) print line f.write(line + '\n') freq = 1.1*freq f.close() print "Max error %.1f%s" % (maxerror*100.0, '%')
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!
Step by step manufacturing of the control panel.
First step was CAD design with ViaCAD software.
Plywood panel machined with 3.17mm carbide endmill. Some pockets to have 2mm thickness for industrial buttons fixture.
MPG and lights will be managed by an Arduino UNO. Stay tuned …