This is an external driver only CNC controller inspired by the 6 Pack controller.
The design is open source. The design files are in EasyEDA format which is a free online editor. It also allows people to order blank or assembled PCBs in low quantities at low cost with virtually no PCB design experience required.
Install the module support peices as shown.
Use the active low attribute, :low
on all input pin. Use the pullup attribute,:pu
, on pins 32 and 33. Pullup resistors are on the controller for 34,35,36 & 39.
gpio.32:low:pu
The #n numbers represent the terminal blocks from left to right.
The diable_pin typically uses the :low attribute, because the driver has it as an enable imput.
These are all i2so pins. The i2so chip is a 74AHCT595. Each pin is rated for 20mA source/sink and 75mA total for the chip.
#1
standard_stepper:
step_pin: I2SO.2
direction_pin: I2SO.1
disable_pin: I2SO.0:low
#2
standard_stepper:
step_pin: I2SO.5
direction_pin: I2SO.4
disable_pin: I2SO.7:low
#3
standard_stepper:
step_pin: I2SO.10
direction_pin: I2SO.9
disable_pin: I2SO.8:low
#4
standard_stepper:
step_pin: I2SO.13
direction_pin: I2SO.12
disable_pin: I2SO.15:low
#5
standard_stepper:
step_pin: I2SO.18
direction_pin: I2SO.17
disable_pin: I2SO.16
#6
standard_stepper:
step_pin: I2SO.21
direction_pin: I2SO.20
disable_pin: I2SO.23:low
All motor driver pins can source (5v) and sink about 25mA each.
The wiring to the step/dir/enable terminals will be easiest if you use a common (-). Wire all the negative terminals on the driver to the GND on the controller terminal block. Wire all the (+) sides of the driver pins to the controller terminals labeled step/dir/enable. All drivers that use opto inputs should be able to use this wiring.
Here is an example (from another controller)
If you must run a common (+), you can find that somewhere else on the controller.
If you ordered a programmed ESP32 with your controller via Tindie and want a custom configuration, please answer the questions on this survey.
This service is only designed to give you a head start on a known working and tested ESP32. You will need to edit the config file. It will likely take hours to finish and tune your machine.
The config will only cover the basic hardware and I/O. You will still need to fine tune the speeds, acceleration and motion ranges yourself.
Please do not send things like schematics, datasheets, protocols, etc. That goes way beyond the scope of this basic service.
Please copy the text below and place your answers after each question. Reply to to me via the Tindie message system.
You can use a serial terminal such as FluidTerm to view the file. Send $Config/Filename to get the name of the config file, then send $LocalFS/Show=<filename> to show the contents. You can then cut and paste the the text into a text editor.
$config/Filename
$Config/Filename=fluidnc_pen_laser_2209.yaml
ok
$localfs/show=fluidnc_pen_laser_2209.yaml
name: TMC2209 XY Servo Laser
board: FluidNC Pen/Laser 2209
meta:
stepping:
engine: RMT
idle_ms: 255
...
ok
Got to the FluidNC tab. Click on the green folder icon (Manage Local Files) and download the file.
board: 6 Pack
name: 6 Pack External XYZABC PWM
meta: 2023-01-29 B. Dring
stepping:
engine: I2S_STREAM
idle_ms: 255
pulse_us: 4
dir_delay_us: 1
disable_delay_us: 0
axes:
shared_stepper_disable_pin: NO_PIN
x:
steps_per_mm: 100.000
max_rate_mm_per_min: 5000.000
acceleration_mm_per_sec2: 100.000
max_travel_mm: 300.000
soft_limits: false
homing:
cycle: 2
positive_direction: true
mpos_mm: 0.000
feed_mm_per_min: 100.000
seek_mm_per_min: 200.000
settle_ms: 500
seek_scaler: 1.100
feed_scaler: 1.100
motor0:
limit_neg_pin: gpio.34:low
limit_pos_pin: NO_PIN
limit_all_pin: NO_PIN
hard_limits: false
pulloff_mm: 1.000
standard_stepper:
step_pin: I2SO.2
direction_pin: I2SO.1
disable_pin: I2SO.0:low
y:
steps_per_mm: 100.000
max_rate_mm_per_min: 5000.000
acceleration_mm_per_sec2: 100.000
max_travel_mm: 300.000
soft_limits: false
homing:
cycle: 3
positive_direction: false
mpos_mm: 0.000
feed_mm_per_min: 100.000
seek_mm_per_min: 200.000
settle_ms: 500
seek_scaler: 1.100
feed_scaler: 1.100
motor0:
limit_neg_pin: gpio.35:low
limit_pos_pin: NO_PIN
limit_all_pin: NO_PIN
hard_limits: false
pulloff_mm: 1.000
standard_stepper:
step_pin: I2SO.5
direction_pin: I2SO.4
disable_pin: I2SO.7:low
z:
steps_per_mm: 100.000
max_rate_mm_per_min: 5000.000
acceleration_mm_per_sec2: 100.000
max_travel_mm: 150.000
soft_limits: false
homing:
cycle: 1
positive_direction: true
mpos_mm: 150.000
feed_mm_per_min: 100.000
seek_mm_per_min: 800.000
settle_ms: 500
seek_scaler: 1.100
feed_scaler: 1.100
motor0:
limit_neg_pin: gpio.32:low
limit_pos_pin: NO_PIN
limit_all_pin: NO_PIN
hard_limits: false
pulloff_mm: 1.000
standard_stepper:
step_pin: I2SO.10
direction_pin: I2SO.9
disable_pin: I2SO.8:low
a:
steps_per_mm: 100.000
max_rate_mm_per_min: 5000.000
acceleration_mm_per_sec2: 100.000
max_travel_mm: 150.000
soft_limits: false
homing:
cycle: 1
positive_direction: true
mpos_mm: 150.000
feed_mm_per_min: 100.000
seek_mm_per_min: 800.000
settle_ms: 500
seek_scaler: 1.100
feed_scaler: 1.100
motor0:
limit_neg_pin: gpio.33:low
limit_pos_pin: NO_PIN
limit_all_pin: NO_PIN
hard_limits: false
pulloff_mm: 1.000
standard_stepper:
step_pin: I2SO.13
direction_pin: I2SO.12
disable_pin: I2SO.15:low
b:
steps_per_mm: 100.000
max_rate_mm_per_min: 5000.000
acceleration_mm_per_sec2: 100.000
max_travel_mm: 150.000
soft_limits: false
homing:
cycle: 1
positive_direction: true
mpos_mm: 150.000
feed_mm_per_min: 100.000
seek_mm_per_min: 800.000
settle_ms: 500
seek_scaler: 1.100
feed_scaler: 1.100
motor0:
limit_neg_pin: gpio.36:low
limit_pos_pin: NO_PIN
limit_all_pin: NO_PIN
hard_limits: false
pulloff_mm: 1.000
standard_stepper:
step_pin: I2SO.18
direction_pin: I2SO.17
disable_pin: I2SO.16:low
c:
steps_per_mm: 100.000
max_rate_mm_per_min: 5000.000
acceleration_mm_per_sec2: 100.000
max_travel_mm: 150.000
soft_limits: false
homing:
cycle: 1
positive_direction: true
mpos_mm: 150.000
feed_mm_per_min: 100.000
seek_mm_per_min: 800.000
settle_ms: 500
seek_scaler: 1.100
feed_scaler: 1.100
motor0:
limit_neg_pin: gpio.39:low
limit_pos_pin: NO_PIN
limit_all_pin: NO_PIN
hard_limits: false
pulloff_mm: 1.000
standard_stepper:
step_pin: I2SO.21
direction_pin: I2SO.20
disable_pin: I2SO.23:low
probe:
pin: gpio.16
check_mode_start: true
i2so:
bck_pin: gpio.22
data_pin: gpio.21
ws_pin: gpio.17
spi:
miso_pin: gpio.19
mosi_pin: gpio.23
sck_pin: gpio.18
sdcard:
card_detect_pin: NO_PIN
cs_pin: gpio.5
start:
must_home: false
PWM:
pwm_hz: 5000
output_pin: gpio.25
enable_pin: gpio.2
direction_pin: NO_PIN
disable_with_s0: false
s0_with_disable: true
spinup_ms: 5
spindown_ms: 3
tool_num: 0
speed_map: 0=0% 10000=100%