Generation 2 firmware

From RepRap
Revision as of 16:40, 26 March 2009 by ZachSmith (talk) (version migrated from twiki)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

RepRap 2nd Generation Firmware

Program the Arduino or Sanguino

You can set the Arduino or Sanguino up to communicate with the host using G Codes, or - in the case of the Arduino - with the SNAP protocol that we used for the original PIC-controlled RepRap. New users should go for G Codes.

Program the Arduino or Sanguino to talk G Code

Download all the files at:

http://reprap.svn.sourceforge.net/viewvc/reprap/trunk/reprap/firmware/GCode_Interpreter/

into a directory called GCode_Interpreter.

Note: At present, this requires the Arduino-0010 IDE and SVN revision 2335 of the GCode interpreter to compile the Arduino version correctly. This is a temporary situation.

Copy the files extruder.h.dist, parameters.h.dist and pins.h.dist to extruder.h, parameters.h and pins.h. These are your local copies that you will configure to your particular RepRap machine.

Plug your Arduino or Sanguino into a USB port on your host computer, then open the Arduino/Sanguino development environment. Load up the file GCode_Interpreter.pde. You should get eight tabs: GCode_Interpreter, <nolink>ThermistorTable.h, extruder, extruder.h, parameters.h, pins.h, process_string and stepper_control.

<nolink>ThermistorTable.h

Near the top of the file <nolink>ThermistorTable.h there is a commented-out line that says #define USE_THERMISTOR. Uncomment the line if you are using a thermistor to measure temperature in your extruder; leave it commented out if you are using a thermocouple (see the Thermocouple Sensor section above). This file also contains a table of values that depends on the particular characteristics of the thermistor you are using. See this page for details on how to set-up that table for your thermistor.

extruder.h

Near the top of the file extruder.h there is a line that says #define EXTRUDER_COUNT 1. Change the 1 to 2 if you have two extruders.

parameters.h

Near the top of the file parameters.h there is a line that says #define SANGUINO. Comment that out with // in front if you are using the Arduino.

Following are the definitions of the number of steps of the stepper motors that your RepRap does to cover 1 mm. Change these if need be. If you are not sure exactly what the gearing in your machine is, run it under control of the Java host software, instruct it to move 50 mm in the various directions, measure how far it really does move (let's call that D), then multiply the appropriate steps-per-mm value by D/50.

There are also definitions of how many steps your axis motors take to do a complete revolution. The default values for all these is 400.

Then there are the maximum feedrates that the machine can do. You can experiment with these using the host software again - set the largest values that your machine can reliably manage.

If one of your axes travels in the wrong direction (typically the Y axis) you will find the constants INVERT_[X,Y,Z]_DIR in parameters.h and setting the definition to 1 will reverse the direction of travel.

Programming

Once you have all the parameters set as you want, compile the firmware in the Arduino development environment (there should be no errors...). Then select the Upload to I/O Board button (right arrow) on the development environment. If you're using a Sanguino press its reset button just before you do the upload.

Program the Sanguino to test your RepRap

Near the top of the file parameters.h there is a commented-out line that allows you to run stand-alone testing programs if you have a Sanguino (the Arduino is too small to run these). This program allows you to drive your RepRap machine from a serial terminal connected to the USB port driving the Sanguino to test its various functions without running the RepRap host software on your computer. To use this, uncomment the line that says #define TEST_MACHINE, then load the program into your Sanguino.

The first test is a communications exerciser. Select the serial-port window of the Arduino development environment and it just echoes what you type.

When that is working, comment out the line that says #define COMMS_TEST. Load the program into your Sanguino again, and you will get a menu of options in the serial-port window of the Arduino development environment that allow you to exercise the RepRap machine's stepper motors and extruder (only one extruder is supported at the moment by the test software).



Program the Arduino to talk SNAP

Once you have everything wired up and ready to go, its time to program the Arduino with the appropriate firmware. There are a few simple, easy steps to do this:

  1. Download and install the most recent Arduino program.
  2. Download the most recent RepRap Arduino firmware source.
  3. Copy the folders in the library folder of the file above into your Arduino library folder (arduino/hardware/libraries)
  4. Open the appropriate firmware in the file above and upload it to your Arduino board(s).

The appropriate firmwares are:

Single Arduino

/snap/Single_Arduino_SNAP/Single_Arduino_Snap.pde - just upload this file and you're good to go!

Once you have compiled and uploaded your firmwares, you should be good to go! Fire up the RepRap host software, double check that you've specified the proper serial connection, and you should be good to go! We recommend using the various exerciser programs to test each part of your machine before you go ahead and print stuff. If all goes well, then you'll be printing in no time.


Update Temperature Settings

Since the Arduino based electronics emulate the PIC style of temperature measurement, you may need to update certain temperature settings in the firmware and in your reprap.preferences file on your host computer. The default is setup for the RRRF 100K thermistor, and you will need to change values if you are using a different thermistor.

  1. Lookup the values for your thermistor.
  2. In the ThermoplastExtruder subdirectory of your Arduino library, create a symbolic link to the appropriate file (which will be something like Thermistor_r0_100000_t0_25_r1_0_r2_4700_beta_3960.h) called TemperatureSensor.h.
  3. Delete ThermoplastExtruder.o (if it exists) This is the old object file and will force the library to recompile.
  4. Run the host software for driving RepRap on your computer. Select Files->Preferences->Extruder_0
  5. Change Extruder0_Beta(K) to 550.0, Extruder0_Capacitor(F) to 0.000003, and Extruder0_Rz(ohms) to 4837 regardless of what your actual thermistor values are. Click on OK.

After that, you'll need to re-compile the firmware and re-upload it to your Arduino.

If you are using a K-type thermocouple and the RepRap thermocouple PCB, follow the above procedure, but link the file !Thermocouple-type-K.h to TemperatureSensor.h.

Setup Host Software

Install the RepRap host software as normal. Instructions for all platforms are located here.

Once you have the host software installed, open the software and pull up the Preferences menu. Switch to 'Extruder0' and change the preferences stated to the values below:

Preference Value
Extruder0_Beta(K) 550.0
Extruder0_Capacitor(F) 0.000003
Extruder0_Rz(ohms) 4837

The reason for this is that the Arduino emulates the PIC temperature measurement system with an 'ideal' thermistor. Those values are hardcoded into the header in ThermoplastExtruder_SNAP_v0.h. If you change the values there, make sure you update your host prefs too.


-- Main.ZachSmith - 26 Mar 2009