Othermill CNC

From Noisebridge
Jump to navigation Jump to search
Noisebridge | About | Visit | 272 | Manual | Contact | Guilds | Resources | Events | Projects | 5MoF | Meetings | Donate | (Edit)
Guilds | Meta | Code | Electronics | Fabrication | Games | Sewing | Music | AI | Neuro | Philosophy | Funding | Art | Security | Ham | Brew | (Edit)
Fabrication | Sewing | 3D Printing | Wood Shop | Metal Shop | SparkleForge | Laser Cutter | Vinyl Cutter | (Edit)
Wood Shop | Table Saw | Miter Saw | Band Saw | Bench grinder | Disk sander | Wen drill press | Lathe | Roland CNC Mill | Air compressor | Hand tools | Hacksaws | Drill | Heat gun | Laminator | Parts | Edit
Othermill.jpg
The Othermill CNC is a CNC router capable of machining small parts including PCBs.

Noisebridge has an Othermill as of December 12, 2016. This page should be helpful in figuring out how to use it!

The Hardware[edit]

The Othermill is a high performance portable desktop CNC mill with 0.001" precision. The marketing refers to this as "6 mill trace-and-space", meaning you can design SMD circuits with 6 mill resolution of detail for millable features, dependent of course on your milling tool's precision.

This was purchased from Other Machine Company using tdfischer's employee discount on top of it being a scratch-and-ding refurb for $2699 using the Noisebridge Equipment Fund.

The Othermill is powered by a TinyG controller board, which is a 100% Open Source and Open Hardware motion controller for CNC machines. The code is GPL'd and available on github.com/omco/tinyg. The TinyG speaks serial at 115200 baud using a pair of USB serial ports on one device. One port is used for the TinyG JSON api, the other is used for regular GCode. Read up on the TinyG documentation to learn more.

It also has electrical circuit touchoff, meaning you can issue a G28.2 probe movement in a direction and the machine will report (via JSON ;() where it made contact with the spoilboard/t-slot bed. This operates on electrical conductivity with the Y bed, so don't get smart and think you can probe non-conductive materials with it!

The Software[edit]

OMC makes Otherplan, a combination CAM, CAD, and GCode sender. It only runs on OSX and Windows, though tdfischer might let you play with the Linux version if you ask nice. You don't need Otherplan to use the mill! It speaks plain serial over USB, though Otherplan does include a lot of utility for the mill. The biggest features are parsing PCB design files and SVG files and turning them into GCode movements on the mill (aka CAD+CAM), flashing the firmware, understanding the JSON API, and providing a decent UI for previewing and controlling the mill. Otherplan supports loading plain GCode, eagle .brd files, and gerber files from other PCB CAD tools.

Using The Mill[edit]

OMC runs a thorough support system for using the mill: https://othermachine.co/support/

A caveat: Do not use lubrication on the mill unless you know why you shouldn't! The linear rails in the mill are held in the HDPE frame with friction and if they slide out, the mill might not work or even worse be irreparably damaged!

The mill has a warranty. To take advantage of it, email support@othermachine.co. They're super helpful and friendly. If that doesn't work bug Victoria.

Hacking[edit]

can has root?

serial[edit]

The mill has a USB port, if you plug this in to a linux puter, such as one running Arch you'll get some serial.

[  686.039970] usb 5-2: new full-speed USB device number 3 using uhci_hcd
[  686.221145] cdc_acm 5-2:1.0: ttyACM0: USB ACM devicetailed TinyG info see: ht[  686.223369] cdc_acm 5-2:1.2: ttyACM1: USB ACM device

You can then use 'screen' or teh like to connect to it and get a tinyg prompt after hitting 'enter'

tinyg [m] ok> 

h (ENTER) results in...

#iG CONFIGURATION Hep ###
                                                                                                                     Thes omands are ctive ocfiguration:
                              $ Sho sm(neral setig
                                                    1 Show oor 1 setting (or whatever motor you want 1,2,3,4)
                                                                                                              $x Sho  xs stig or whteverai ou want x,y,z,a,bc
                                   m oall motor settns $ S allaxis settig
                                                                         $ oall ffset settns $  how all etings
                                                                                                               $  hwtihelpsren
    ach $cmman ove lo displast knorec settng n[ aks
                                                    estg traten:
                                                                 <k>o aml $yfr to dislay the  a edrt
                                                                                                    o udte setig ner toen equals value:
             <k>lue>

                    or examl yr80tset he Y max edrt o8 mm/minute
                                                                orcniuatin details see: htp/hub.com/snhtos/TinywiiGfguration
  Note iy eetes autoai sau reports by defaultThis cbe disabled by enterg $sv0Se the wiki below for moredtis
                                                                                                            detailed TinyG n se: https://github.co/synteo/nyG/wki/
                                        t frwe see: https//github.co/snthe/TinyG
                                                                                se log anyisuestt:.synthet.ousHv funtinyg [mm] 

...unknown why the wrapping is so funk, however this basically leads to n'yah https://github.com/synthetos/TinyG/wiki

and there is https://github.com/synthetos/TinyG/wiki/TinyG-Command-Line


commands[edit]

$fv will give you the version number, currently 0.97, which is the latest as of 💡 (talk) 07:19, 27 January 2017 (UTC)

status report {"sr":null}

{"r":{"sr":{"mpox":0.000,"mpoy":0.000,"mpoz":0.000,"ofsx":116.127,"ofsy":15.299,"ofsz":-54.663,"g55x":116.127,"g55y":15.299,"g55z":-54.663,"unit":1,"stat":3,"coor":2,"momo":4,"dist":0,"home":0,"mots":0,"plan":0,"line":0,"path":2,"frmo":1,"prbe":0,"safe":3,"estp":2,"spc":0,"hold":0,"macs":3,"cycs":0,"sps":0}},"f":[1,0,12]}
{"sr":{"stat":3,"macs":3}}

{"test":N}

 ### TinyG SELF TEST Help ###
Invoke self test by entering $test=N where N is one of:
$test=1  smoke test
$test=2  homing test   (you must trip homing switches)
$test=3  square test   (a series of squares)
$test=4  arc test      (some large circles)
test=5  dwell test    (moves spaced by 1 second dwells)
$test=6  feedhold test (enter ! and ~ to hold and restart, respectively)
$test=7  M codes test  (M codes intermingled with moves)
$test=8  JSON test     (motion test run using JSON commands)
$test=9  inverse time test
$test=10 rotary motion test
$test=11 small moves test
$test=12 slow moves test
$test=13 coordinate system offset test (G92, G54-G59)

Tests assume a centered XY origin and at least 80mm clearance in all directions
Tests assume Z has at least 40mm posiitive clearance
Tests start with a G0 X0 Y0 Z0 move
Homing is the exception. No initial position or clearance is assumed
 
For detailed TinyG info see: https://github.com/synthetos/TinyG/wiki/
For the latest firmware see: https://github.com/synthetos/TinyG
Please log any issues at http://www.synthetos.com/forums
Have fun
{"r":{"test":null},"f":[1,0,11]}

DO NOT RUN TEST 1, this should only be used prior to final assembly, with the motors not installed in the machine

...spoiler alert, "Test #N not found"

$

[fb]  firmware build             72.73
                                      f] irmware version       0.97
                                                                   c] niguainversio       6.00
                                                                                              [hp] adware platform           3.0[v hardware version         0.00
                                      ]  TinyG ID02130215-d4032595-23038323-43032323
                                                                                    ja]  junction acceleration 1000000 mm
                                                                                                                         ct]  chordal toleranc           0.0100 mm
                                        s] sft limit enable           0
                                                                       [t  motor idle timeout        600e[d] pause dwell tie    uSec
          jebejon mode            0 [0=tx,=JSON]
                                                j  json verbosiy            4 [0=silent,1=foe,2=messages,3=configs,4=lnnm,=erbose]
        j] sn sraize style        1 [0=relxd1=strict]
                                                     [tv]  text verbst              1 [0=silent1vrbose]
                                                                                                       v]  queue reportverosity      1 [0=off,1=sinle,2=triple]
                                     ]  status repot verbosity     1 [0=off,1=fitrd,2=vebose]
                                                                                             [si]  sttusitrval           250 ms[gp efault code plane        0[0=G17,1=G18,2=G19]
                                                      u deal code units mode    1 [0=G01=G21]
                                                                                             g] default gcode codsstem  2 [1-6 (G54-G59)]
               []eugde path control  0G61,1=G61.1,2=G64]
                                                        g default gcode distance mode 0 0=G0,1=G91]
                                                                                                   nyg [mm] ok> 

$ej

[ej]  enable json mode            0 [0=text,1=JSON]

$xvm

[xvm] x eocity maximum       600 mm/min

$yvm

[yvm] y velocity maximum      2600 mm/min

$zvm

[zvm] z velocity maximum      2600 mm/min


so how about some gcode...

G0 X0

tinyg [mm] err: Alarmed, command rejected type $clear to clear alarm]: G0