Joel Cugnoni May 19th 2012
LinuxCNC/EMC2 with Seemecnc H-1 3d printer
------------------------------------------
I have just built my Seemecnc H-1 printer and managed to make it work in EMC2 / Linux CNC 2.5. I am running the stock kit hardware: Tb6560 3 axis board with Easystepper on pins 16/17 with 1.75mm hotend. The hardware has been setup according to the Electronics Manual (jumper and diode mods). I have not yet printed anything as I am waiting for ABS to be delivered but I have all axis working properly and Slic3r Gcode running (with slight modifications). Calibration is based on the default recommended settings and all units are in millimeters!
This is how I did it:
1) downloaded the latest LiveCD from linuxcnc.org and installed it on a USB drive with Ubuntu 'Startup disk creator' (burning it to a cd should work as well)
link:
http://linuxcnc.org/index.php/download/21/
2) connect the parallel cable to the PC and power up your H1. Boot from the USB drive / LiveCD in the 'Try Ubuntu' mode and run Applications -> CNC ->Latency test. Stress your PC by opening applications, running glxgears in a terminal and copying files. Then take note of the largest Max Jitter number (in ns). You should get something in the order of 10'000-15'000 to have a good control of the printer.
3) run Applications-> CNC -> Stepconf wizard
4) setup a new machine with the following options:
name: Seemecnc-H1
axis config: XYZA
driver type: Other
units: mm
Step time: 2000 ns
Step space: 2000 ns
Direction hold: 20000 ns
Direction setup: 20000 ns
Parport address 0x378 (default)
Base Period max Jitter 150000 (note 1)
Press 'Forward'
(note 1: set max jitter = 1.1 * measured max jitter to have some margin)
5) Skip the Advanded config option window and move to Parallel port setup. Set the pins as follows (default = not inverted):
Pin 1: X step
Pin 2: Digital out 0, Inverted **
Pin 3: Y Direction
Pin 4: Z Direction, Inverted
Pin 5: Z Step
Pin 6: Amplifier enable **
Pin 7: X Direction
Pin 8: Y Step
Pin 9 to 13 & 15: unused
Pin 14: Digital out 1, Inverted **
Pin 16: A direction, Inverted
Pin 17: A Step
Note: it is easy to make a mistake and exchange pin 16 & 17, so if the extruder does not work jsut swap the role of these 2 pins.
(**this enables the axis driver, without it, nothing works)
6) X Axis configuration:
motors steps per rev: 200
Driver micro stepping: 8
Pully teeth 1:1
leadscrew pitch 50.8 mm/rev
max velocity: 300 mm/s
max accel: 1000 mm/s2
home location: 0 **
table travel -50 to 50 mm **
Note that you will get the standard 'default' 31.5 steps / mm calibration with these settings, a real calibration using a 20mm printed cube is necessary to fine tune these data.
(** this is not yet optimized, I have set my yero in the middle of the axis with a restricted stroke of +/- 50 mm for my trials)
7) Y Axis configuration: repeat the same as X axis, same comments.
8) Z Axis configuration:
motors steps per rev: 200
Driver micro stepping: 8
Pully teeth 1:1
leadscrew pitch 0.635 mm/rev (calculated value, not calibrated)
max velocity: 2 mm/s
max accel: 100 mm/s2
home location: 0 **
table travel 0 to 50 mm **
Note: with this, you get the default 2519.7 steps/mm as recommended
** Z Axis range is not optimzed. Zero coordinate at near contact with table
8) A Axis configuration:
motors steps per rev: 200
Driver micro stepping: 8
Pully teeth 1:1
leadscrew pitch 5.6338 degrees/rev **
max velocity: 10 mm/s
max accel: 50 mm/s2
home location: 0 **
table travel -9999999999.0 to 9999999999.0 mm
Note: with this you get the default 284 steps / mm config. A calibration must be done to get the exact values for your system.
**EMC uses degrees as units for A axis, but as we are using an extruder instead of a rotary table, we cheat a bit with the units and consider 1 degree as 1 mm of extrusion. So jsut forget about the displayed units and use values in mm here.
9) For each axis (use back and forward buttons to select):
run 'Test this axis' to see if it responds properly. Be careful with the manual displacement arrows as they react extremelly fast. Play with velocity / acceleration values to change the dynamic response and also test a cyclic displacement of +/-2.5 mm to see if the system does not loose steps.
10) save your configuration. This will create a shortcut on the desktop to run EMC with your settings.
11) Gcode generation: Slic3r
download a STL from Thingiverse for example
download Slic3r 0.7.2b from here:
http://dl.slic3r.org/linux/slic3r-linux ... -2b.tar.gz
open file manager, go in Downloads, right click on the file and choose Move to->Home folder
move back to your home folder, select slic3r-linux-x86-0-7-2b.tar.gz and right click->'extract here'
go to Slic3r/bin and double click Slic3r to run it
12) Configure Slic3r settings:
download the default settings from
http://forum.seemecnc.com/download/file.php?id=349
Load these settings: it should be in Downloads/Slic3r_INI_SETUP_175mm_Filament_020_nozzle.ini
In the Custom GCode pane, add this line to post-processing scripts:
and save these settings !!
Open Applications->Accessories->gedit and copy the following lines in a new file
Code: Select all
#!/bin/bash
# Slic3r post processing script to remove unsupported Mxxx codes for EMC2
grep -v '^M107' $1 > $1.ngc
Save the file as /home/ubuntu/Slic3r-post-EMC.sh
In the file manager, go to Home and right click on Slic3r-post-EMC.sh -> Properties
in permissions, enable 'Allow executing'
Note: all that the script does is to remove the line "M107" in the gcode file and rename it to .ngc to be able to load it in EMC2. You can do the same by opening the .gcode in a text editor and remove the M107 line manually...
13) Gcode generation:
in Slic3r, click 'Slice...', select your STL file (lets call it yourfilename.stl) and wait
14) Running LinuxCNC/EMC2:
on your desktop, double click the link 'launch seemcnc-H1'
disable the emergency stop (1st button from top-left)
enable power (2nd button)
do File-> Open and choose the file named yourfilename.gcode.ngc
in Manual control:
- select X axis, use +/- buttons (or left-right arrow keys on the keyboard) to approximatelly center the X carriage, press Home Axis
- select Y axis and do the same
- select Z axis and go to your initial print height (or far above the table if you just want to test without printing), press Home Axis
- select A axis and just press Home Axis. If you print, I guess that it is the right time to set your temperature properly and feed the filament with the + button (you may want to reduce the 2nd Jog speed to reduce manual feed rate)
Once you are ready, press play and it goes !!!
---------------
This is a fairly long procedure but I wanted to describe it in all details so that it can be reproduced properly while learning how it works.
Text file with this HowTo procedure: