3d printer using arduino uno

Is it possible to use an arduino uno (or an ATMega328 @ 16MHz board) for a 3d printer project i have in my mind?

I don't see any difference between an Uno and a Mega except from the number of i/o ports and flash memory involved.

don't see any difference between an Uno and a Mega except from the number of i/o ports and flash memory involved.

...and the amount of UARTs, EEPROM, PWM, analogue inputs and RAM. Other than that, they're identical. :)

s it possible to use an arduino uno (or an ATMega328 @ 16MHz board) for a 3d printer project i have in my mind?

We're not mind-readers.

Thanks for the reply, let me make my question more clear : Has anyway attempted to create a 3d printer using an Uno or its impossible(not enough ports or not enough memory ect) and i should buy a reprap kit?

It might be possible with an Uno. Looking here http://www.reprap.org/wiki/Pololu_Electronics the ramps kit appears to need 16 digital pins. What it doesn't show is the serial connection and whatever is reading the extruder head temp, so you're up to 19, so the Uno has the pins. Also, a couple of those are just reading jumpers, so you could dispense with them & hard code your settings.

So the questions is, can you fit your controller code into an Uno's flash and RAM. I suspect you could, but it might take a bit of doing. There are challenges enough with a reprap, personally I'd spend the extra few bucks and go with an existing solution on a mega.

Articles on Makerbot site:

http://www.makerbot.com/?s=arduino

http://www.makerbot.com/docs/assembled-thing-o-matic-quick-start-guide/

What's at the heart of the Gen 4 controller?

Windows:

Navigate to the device manager. The Arduino Mega should be listed under “Ports (COM & LPT).” If you see an orange icon with an exclamation point next to the Arduino Mega, then you should load your driver manually.To do this, right click on the Arduino Mega, and select “Update Driver Software” then select “Browse my computer for driver software.” Browse to the drivers folder in ReplicatorG and select the Arduino driver. Press OK.

Older Windows systems may need to install the FTDI USB Serial driver to communicate with their Extruder Controller; this will be found in the same directory as the Arduino Mega driver. Mac OS X:

There is a /drivers folder in the replicatorg folder you installed. It contains a driver for the FTDI USB->Serial converter used with Arduino and Sanguino boards. If you have already installed Arduino, you can skip this step. Otherwise, please install it.

You can buy kit of assembled or Makerbots being Open Source, make your own.

Thanks :), ill buy a RAMPS/Mega kit since i guess Uno will be a pain to design/code and implement .

I have a reprap controlled by a Duemilanove. It is enough to control 3 axes, end stops, the extruder and hot end, heated bed and a fan, however I have now run out of pins so can't add anything else (LCD or 2nd extruder for example).

There's easily enough memory, my firmware takes about 16k, the limitation is the number of pins. I'd recommend using a Mega and one of the more common electronic kits, as repraps can be very hard to set up and it's a lot easier to get help if your build is closer to the norm.

stimmer: I have a reprap controlled by a Duemilanove. It is enough to control 3 axes, end stops, the extruder and hot end, heated bed and a fan, however I have now run out of pins so can't add anything else (LCD or 2nd extruder for example).

There's easily enough memory, my firmware takes about 16k, the limitation is the number of pins. I'd recommend using a Mega and one of the more common electronic kits, as repraps can be very hard to set up and it's a lot easier to get help if your build is closer to the norm.

Hi Stimmer, Can you upload the Code (sketch file) for Duemilanove ?

I'd say no problem for a "simple" 3D printer. Shiftregisters have been invented and take care of all home switches so you do not need to dedicate precious pins on that. (Limit switches should be hardwired and "mechanical" and outside the Arduino - otherwise they fail to work if the software is glitchy.) Shiftregister the other way can reduce pin count for heater, motor enable and such like. That way you might even have your LCD (if it uses Serial or I2C or such like). The real problem when adding too many things is running out of time, you need to cycle through you main loop often enough to keep the steppers stepping evenly (unless have put that into interrupt/timer driven code - but that is trickier)

Msquare: I'd say no problem for a "simple" 3D printer. Shiftregisters have been invented and take care of all home switches so you do not need to dedicate precious pins on that. (Limit switches should be hardwired and "mechanical" and outside the Arduino - otherwise they fail to work if the software is glitchy.) Shiftregister the other way can reduce pin count for heater, motor enable and such like. That way you might even have your LCD (if it uses Serial or I2C or such like). The real problem when adding too many things is running out of time, you need to cycle through you main loop often enough to keep the steppers stepping evenly (unless have put that into interrupt/timer driven code - but that is trickier)

That is what I thought about pins. I do not want any too special 3D printer with too complicated capabilities but a basic one with almost limited capabilities that will work with arduino Duemilanove and using g-code. My basic aim is initially to see a completed work to study it , to understand it and finnaly to develop ip to my needs. This is why I am asking for ready code.

I have read the following site http://www.instructables.com/id/Cheap-Arduino-Controlled-3-Axis-Pen-Plotter/ but I do not want the 3d printer to work by this way but using g-code.

Is it possible anyone to share his code ?

stimmer: I have a reprap controlled by a Duemilanove. It is enough to control 3 axes, end stops, the extruder and hot end, heated bed and a fan, however I have now run out of pins so can't add anything else (LCD or 2nd extruder for example).

I haven't built a reprap, however I would have thought that you can share many of the pins between devices. Assuming you are using the A4988 stepper motor controller boards, then the Step inputs to each axis controller and the extruder need to have individual output pins. So does the Enable input of the LCD. The Direction inputs, microstepping mode inputs (if you are using them), and the remaining 5 LCD inputs can all share the same pins. So I count 5 individual outputs and 5 shared outputs so far. Add the heater output and 3 end stops and you are still only at 14 pins. Have I missed something?

Anyone mentioned GRBL yet? It is a G-code interpreter for the Arduino.

polymorph: Anyone mentioned GRBL yet? It is a G-code interpreter for the Arduino.

Yes but have you found any sketch which work for Arduino Uno ?

Grbl runs on "328-based Arduinos" What do you think your UNO is ? ;) Yes it run on the UNO. Now you might think that GRBL is too feature heavy for your needs, but it is usually easier to remove code that to insert new stuff

Msquare:
Grbl runs on “328-based Arduinos” What do you think your UNO is ? :wink: Yes it run on the UNO. Now you might think that GRBL is too feature heavy for your needs, but it is usually easier to remove code that to insert new stuff

Could you please upload any ready sketch because I can not find any (compatible with arduino uno) ?

I have not used it myself (yet). So it would mean I download it, study the #defines or other config file, compile and upload to my UNO. Without any electronics I of course wont know if it actually works. Now that s a lot of your work I would be doing. SO we'll just hope someone else has tried/adapted it to UNO.

And why did I write what I wrote previously? Because at some time I was considering loading it into an UNO to drive a CNC, found it was possible etc, but the others on my project wanted to use MACH3 so it died there. Thus I have reasonable grounds for my claim, but the actual proof is outstanding.