Emc2Arduino

Q: What is Emc2Arduino good for?

A: Its good for bootstrapping together scratch built CNC machines, adding features to existing CNC machines, replacing burnt-out or obsolete CNC controllers, even home built robots can be controlled over a serial link with it.


Q: Can I run this on a 328P based Arduino?

A: Yes, but you’ll run out of pins quickly and you’ll need to pick and choose which options you want to skip out on. You’ll need 2 pins for each stepper motor, and 1 pin for each other option you choose.


Q: Whats the .hal and 9axis_arduino files for?

A: They are for those who want to use EMC (LinuxCNC) to control the Arduino for their CNC machine. The .hal file gets edited and copied to the ‘my-mill’ folder.  The ‘9axis_arduino’ gets copied to /usr/bin/ better yet, read the instruction.txt file.


Q: Do I have to replace my current CNC controller with this Arduino thing?

A: No, You can elect to use just the features you want to use. NONE of them are mandatory, for example; Say you just want to add a Touch Probe to your current rig. Just edit the custom.hal file and comment out the section(s) you don’t want, edit the Emc2Arduino###.ino file to use the pin of your choice. copy the 9axis_arduino file to /usr/bin directory and go.


Q: I have a parallel port CNC controller but no parallel port on my PC can Emc2Arduino help me upgrade it to USB?

A: Yes. You’ll need a DB25 breakout board. Just wire the Arduino into the screw terminals and plug your controller in. Whola! Instant CNC USB Upgrade!


Q: Do I need to have a CNC controller to start with?

A: No, The goal of Emc2Arduino is to emulate any/all parts of a CNC controller. With the aid of a stepper driver board it can be used in place of one too. It just won’t be quite as fast as a real one.


Q: If I chose to go with an entirely Arduino based CNC how fast can I expect it to move?

A: Depends, If your using one Arduino to do it all then you’ll notice for every axis in motion you incur a small speed penalty. At 4 axises I can get 130 RPMs out of my stepper motors, which is plenty fast enough for working speeds. A single axis can move much faster as it requires less processing power. As a result of this, I plan on offering a multi-Arduino swarm approach in the future.


Q: Can I use a VFD spindle with Emc2Arduino?

A: Don’t know. I’m not lucky enough to have one to work with. Donations are graciously accepted though. 🙂


Q: Can this be made to work with Mach3?

A: Good question. I suppose if you can get Mach3 to talk to it via serial ascii text and get Mach3 to issue “jog x1000 y12345 z0002;” text commands then yes. Though how you do it is up to you. But if you do succeed, we would absolutely love to hear about it.


Q: I have a HUGE machine I’d like to automate with this. Can you guaranty it will work in a timely fashion and work right the first time, before I even begin.

A: No. The truth is, this is a project meant for those that like to tinker with things. Like Me. I can no more guaranty the Weather or the Lottery than make promises that your 12-axis juggernaut will spring to life and start machining engine blocks from billet stock on the first try. If anybody claims that then they’re selling bridges too. All CNC machines take some time to setup. Emc2Arduino is no different.


Q: I have some old junk printers and computers and I want to make a scrap-bot. Can Emc2Arduino help get me there?

A: Absolutely! That’s how I got started, and I haven’t forgotten about it either. Make your bot, wire it up, edit/upload the sketch, open a serial terminal and enter “jog x1000000;” if all goes well one of your stepper motors will spin one revolution. Emc2Arduino can run up to 9 stepper motors simultaneously, the complete list of axises is in the sketch file.


Q: I made a CNC/Robot using your sketch and I have made a tutorial/video can I link to you site.

A: You bet! I would even be happy to post links to it if you’d like. Got pics? Send them or a link and I’ll post/link them from here as well.


Q: I have a product I’d like to sell to the masses and use Emc2Arduino’s code to operate it. Are you okay with that?

A: Absolutely! However bear in mind that this is an open source project and legally you would have to share the code with the public too. (While still making money on the hardware sales.) I would also be happy to work with your development team to help get it to market even faster. Send me an email.


Q: Why can’t I play CNC music using Emc2Arduino?

A: Because Emc2Arduino does things differently than traditional CNC controllers. Traditional CNC controllers are modulated from your computer’s parallel port, the ‘music’ they play is from changing the tone rate that the pins are modulated at. Effectively turning the controller into a very low fidelity amplifier.


Q: I want to make an ‘UberBot 9000’ for my school’s Robot Astronaut Olympics competition can you help me?

A: I wish I could, those things are fun. But I have a busy night time schedule that leaves most daytime events as next day correspondence relationships at best. If your really stuck though, email me the code/pictures as well as a description of what your trying to do. I’ll get back to you as quickly as I can. Since your competing and learning I’ll help as best I can by pointing the way, but don’t expect me to do it FOR you. You wouldn’t learn much that way.


Q. What language is Emc2Arduino programmed in?

A: It’s written using the Official Arduino IDE. That way people can easily interpret and modify the code as they see fit.


Q: How big is the code and will I have room left to make mods to it?

A: Yes, it’s currently about 15kb or half the capacity of an Arduino Uno.


Q: Can Emc2Arduino run on a Due, ChipKit UNO32 or a Maple?

A: I don’t know. Yes it can. You have to edit the sketch and replace every “digitalFastWrite2” with “digitalWrite”. Be advised, you will need to be careful when integrating one of these 3.3volt microcontrollers with more traditional 5volt logic circuits. For example many of the stepper driver circuits out there were originally designed for 5volt logic signals. Many of them will conveniently tolerate lower 3.3v volt signals as valid input. But just as conveniently other ones might destroy it. You’ll have to investigate the driver’s documentation thoroughly and if needed employ a logic level shifter for drivers that need them.


Q: I have have a “Spindle Motor”, “Coolant Pump”, “Warning Lamp” or “Other Power Hungry Device” that I want to add, how do I wire that up to the Arduino?

A: You have several options;

a. Use a TIP-120 transistor (Handles up to 5-Amps @ 60V DC) to toggle the ground leg of a relay that can handle the big loads. Just Google search for “Arduino tip120” for tons of examples.

b. For multiple small’ish stuff like large L.E.D.S. PC-Fans. Stuff less than 500 mA (Up to 60 Volts DC)  you can use a cheap ULN2003 (or NTE2018) 18-pin IC to drive up to eight things separately. Again a Google search will give a great show and tell with “Arduino ULN2003”. Even two small uni-polar stepper motors can be ran off of one of these 50 cent chips. How that for a bargain.

c. If you have some seriously powerful motors (like 3-phase 480Volt AC) to turn on/off. Try looking for a “TTL Compatible Solid State Relay”. They’re all over the web, even Granger has them.


Q: Okay, I’m excited! Where do I get parts?

A: Check our Get Parts page.

%d bloggers like this: