For beginners that want to modify their printer, firmware can be uploaded with the Arduino IDE.
Compiling Marlin Instructions
Get latest Arduino: https://www.arduino.cc/en/Main/Software
Install the Rambo board addon (instructions below).
Download Marlin: https://github.com/MarlinFirmware/Marlin
In Configuration.h, change motherboard setting depending on board (Rambo or Mini-Rambo):
#define MOTHERBOARD BOARD_RAMBO
#define MOTHERBOARD BOARD_MINIRAMBO
Customize the rest of Configuration.h for your printer as needed: ENDSTOP_INVERTING, STEPS_PER_UNIT, lcd support, sd support, etc.
Select Tools -> Board -> Rambo
Select Tools -> Port -> COM## (Rambo). (## = Port as shown in device manager)
Select Sketch -> Upload
Check that the green power led is on.
Ensure the port is not in already in use.
Check that the yellow led blinks twice on a manual reset.
Arduino 1.6.4+ Board Manager Plugin
Instead of manually installing the Rambo addon's you can now install them from the Arduino Board Manager. From the Arduino File menu select Preferences. Add the following URL to "Additional Board Manager URLs" section.
The Board Manager is found at the top of the Tools->Board selection menu. Open the Board Manager and the list boards will automatically update. At the bottom of the list will be the option to install the RepRap Arduino Mega BOard (RAMBo).
RAMBo Arduino Plugin
These instructions are for legacy versions of Arduino! (1.0.x)
Marlin and Repetier-Firmware (and others?) have extended support for RAMBo that takes advantage of the Atmega2560 MCU's pins that are not available on Arduino Mega2560. These pins are used for LCD interface or external stepper drivers.
RAMBo can operate with the Arduino app as an Arduino Mega2560, but it is best to install the RAMBo Arduino addons. The add ons need to be copied into your Arduino application's hardware folder. You should end with a boards.txt file at arduino-1.0.5/hardware/rambo/boards.txt. The add ons can be found in https://github.com/ultimachine/RAMBo/tree/master/ArduinoAddons/Arduino_1.x.x or it may be included with your firmware(i.e. Marlin).
Once the add ons are installed you can select RAMBo from Arduino>Tools>Board>
Without the add ons you can use Arduino Mega2560 from Arduino>Tools>Board> . You will not have functionality on the extended ports. Firmware may not work as expected if the firmware developer expected the add on folder to be installed.
Copy Rambo folder from Marlin/Arduinoddons/Arduino_1.x.x/hardware/ into /Applications/Arduino.app/Contents/Resources/Java/hardware . You will need to use show package contents on the Arduino.app to access it's contents and add the files.
For Marlin you will at least need to set the following variables in configuration.h:
#define MOTHERBOARD 301
The TEMP_SENSOR needs to be set to match your configuration. For a Epcos 100K thermistor on Extruder0 and HeatedBed:
#define TEMP_SENSOR_0 1 #define TEMP_SENSOR_1 0 #define TEMP_SENSOR_2 0 #define TEMP_SENSOR_BED 1
You will likely need to tune the PID and DEFAULT_ settings to mach your hardware.
For some computers you may also need to set #define BAUDRATE 115200 to get communications.
You can adjust the motor driver settings in Configuration_adv.h: #define MICROSTEP_MODES and #define DIGIPOT_MOTOR_CURRENT
Repetier-Firmware has good support for RAMBo.
One of the key features of RAMBo (like most other RepRap electronics) is the ease of entry for development and research.
If firmware is compatible with RAMPS it can run on RAMBo with minimal modifications.
The current for the stepper motors is set by firmware controlling the 8-bit digital potentiometer. For the end user this is seamless. The firmware sets the current at every boot and The following formula from the Allegro datasheet describes how to set the reference voltage: ITripMAX = VREF/(8 X RS). RS, the value of the sense resistor on RAMBo is equal to 0.1Ω. ITripMAX is the current the stepper motors are rated for. Ideally you should start with 70%-90% of maximum. You can verify the voltage for each driver by plugging the reference voltage (VREF) measured at the X_REF test point (Y_REF,etc for the other drivers) in the following formula:
VRef = ITripMAX * 0.8
Note the A4982 is set to be limited to 2A. This means the adjustable voltage range is 0 to 1.66 volts. The following formula will yield the 8-bit binary value, Wv, to be entered into firmware or directly over SPI.
Wv = (VRef / 1.66) * 255
Seamless to end user. Can be configured in configuration.h or by M-code.