CNC Router Arduino Mega 2560 Ramps 1.4


Estoy intentando hacer un CNC Router y tengo muchas dudas. Como no vi un posteo en español asi que me decidí a hacerlo para ayudar a otras personas que tengas dudas similares. Voy a intentar ser lo más específico posible para le sirva a todos.

Mi idea es utilizar MPCNC o LowRider2, pero por ahora ese no es mi problema.

Tengo un Arduino Mega 2560, una Ramps 1.4, 4 Drivers DRV8825 y 4 Motores paso a paso.

2 Motores Eje Y
1 Motor Eje X
1 Motor Eje Z

¿Qué firmware necesito o me recomendarían?

¿Qué parámetros debería cambiar para hacer andar correctamente como un CNC Router?

Escribo en un comentario mis otras dudas para dejar el posteo lo más prolijo posible por si alguien busca desde algún motor de búsqueda.

Estuve leyendo bastante y tengo muchas dudas. Y no quiero terminar quemando el Arduino.
Probé muchos firmware y sólo llegué hacer andar un sólo motor correctamente y los otros no giraban y algunos se calentaban.

El Marlin que está en V1Engineering también probé, pero no se que parámetros tengo que cambiar para hacer andar como un CNC Router. Tengo entendido que instalando el firmware de la página y sin configurar nada va a funcionar como una impresora 3D.

Tengo mis dudas si los motores no giran porque los Drivers están quemados o yo los quemé. ¿Cómo podría saber si están quemados?

Después también no se si no están girando porque no puse los jumpers para hacer 1/32 micropasos o si no tiene nada que ver eso. Porque se puede configurar desde el Firmware.

I can read your posts just fine through google translate. I know some Spanish, but I won’t torture you by trying to write anything but English. :slight_smile:. Hopefully, the translation back to Spanish works well enough for this conversation.

The MPCNC and LowRider2 both use 5 motors. So you will need another motor eventually.

The recommended firmware for RAMPS is Marlin, configured by Ryan. I would not start with the dual endstop version, because it is more advanced. You can run two motors off of a single driver by wiring them in serial:

The firmware from Ryan’s github already has been configured for CNC work. It does not need any additional configuration. You will need to adjust the current on the DRV8825s though. If you don’t adjust the current, they will overheat, or “skip steps”.

You should install all the jumpers under the drivers to enable 1/32 microstepping. Otherwise, the machine will try to move way too fast.

The RAMPS boards are very fragile. It is very possible that either the drivers or the mega have broken. The only way to test is to go through the setup and see if they work.

There are more details about getting the Marlin firmware and flashing it in the docs:


Thank you (again). You’ve made a lot of things clear to me. I really appreciate your answers.

If i don’t install all the jumpers under the drivers to enable 1/32 microstepping. Can i change in the firmware some lines to make it work as 1/16 microsteppeing or more if exists? Right now i don’t have jumpers but i’m goin to buy it when quarentine passes.

Now i’m goin to read about Ryan’s code.

Thank you :slight_smile:

I think no jumpers means that it is in full step mode, which would really drop the resolution. You only remove one of them to be 1/16th. There is one line in the configuration to change the number of steps/mm. You can also change it with a gcode command, and save it to EEPROM.

In the preconfigured RAMPS code, it assumes DRV8825s, which are 1/32nd microstepping, so the steps are 200,200,800, I think. If you had 1/16th (like the Rambo configurations), it would be 100,100,400. If you had full steps it would be 6.25steps/mm, which is going to be pretty choppy.

1 Like

Hola Dios, conseguistes montar tu cnc y hacerla funcionar con Marlin y arduino Mega?

WILL RYANS work with arduino mega 2560 ramps 1.4. I thought it has 5 motor outputs. I was thinking about getting it. I’ve got 5 motors and ext drivers would that work with the lowrider. I got everything else almost done, just waiting on my decision on the electronics part

I’m trying to load Marlin 2.0 on my arduino mega + ramp 1.4 + LCD 2004A, but I don’t get information on the lcd screen and I’m going crazy because I can’t find where the fault is, I have tried to install the software for BQ Hephestos and in this case yes It works fine, I get the information on the screen, which I am doing wrong.
Can you help me find the fault?

I have tried to install “Marlin_V1CNC_Ramps_2.0.7.2_510-src” and I still have no information on the screen, in the Arduino IDE I have opened the serial monitor and software startup information appears:
echo: start
External Reset
Marlin 510S

echo: Last Updated: 2020-10-15 | Author: (V1 Engineering, Ryan, 510S)
echo: Compiled: Jun 13 2021
echo: Free Memory: 3389 PlannerBufferBytes: 1456
echo: V82 stored settings retrieved (665 bytes; crc 51192)
echo: SD card ok
As you can see, the software has been loaded, but I still have the problem in the LCD, I will have the LCD type wrongly configured, where and what would be the LCD that I should configure.

Assuming your specific display is supported by Marlin, you will net to selected in the LCD / Controller Selection section of configuration.h in Marlin. The V1 firmware is setup for a 128x64 display like this one. This line in configuration.h that selects the display:


The following might be the display you need, though given the cabling on the 2004 displays sold on Amazon, I doubt it:

//#define LCD_SAINSMART_I2C_2004

So you would need to comment out the REPRAP display and uncomment the 2004 display in configuration.h assuming this is the right display.

1 Like

Robert Bunney, First of all, thank you for answering and doing it so quickly.
This afternoon I am going to review the configuration of my marlin, a fact that I did not know was that marlin has a Graphic LCD screen configured by default.

1 Like

Just to be clear, it not a Marlin default, it is a V1 default. The REPRAP display is the one they sell, plus it is the most popular one paired with the Ramps boards. While it is possible that the LCD_SAINSMART_I2C_2004 is the right selection, a few things makes me doubt it. If someone on this list does not give you the correct define for your display, the path of least resistance would be to spend the $14 for the REPRAP 128x64 display.

Thanks anyway since you have given me light on the path that I could not find, in fact the screen that I have right now is similar to this " ".
My screen is not “LCD_SAINSMART_I2C_2004”, but I am going to check in configuration.h to find my screen, when I have it solved I will inform you.

Possibly this is the configuration of my LCD

// RepRapDiscount Smart Controller.
// Note: Usually sold with a white PCB.

I should uncomment this screen and comment on the graphic screen.


Well, first obstacle saved, it already presents information on my screen (not graphic) “RepRapDiscount Smart Controller”, for this I had to comment in “configuration.h” the following lines:


and on the other hand uncomment the following lines:


We continue to the next obstacle.

1 Like

Yeah. Just to confirm, we set the reprap full discount display on all the v1 builds. That is the more square one with blue and white graphics. The lcd 2004 is the 20 character by 4 line one that just does letters. I think it is the reprap discount smart controller, but I am not sure. If you can compile the firmware with platformio, then it should be a two line change. One to remove the full and one to add the 2004.

1 Like

I initially compiled the firmware for my Primo, then for my ZenXY using that controller, since I have a few of them lying around doing nothing. In both cases, though I switched to the full graphic controller.

Yes the REPRAP_DISCOUNT_SMART_CONTROLLER is the correct one for the 2004 display controller. It works ok if that’s the one you have. You also don’t need the U8glib for it, and can compile and load it using the Arduino IDE under Windows.

Three line changes are needed. Comment out the full graphic controller and the custom bootscreen, and uncomment the discount smart controller. You can leave the SHOW_BOOTSCREEN in if you like. I prefer it to the white bars on the 2004 LCD.

OK Dan and Jeffeb3, to confirm that I am on the right track, right now I control my CNC with Arduino Uno + TB6600 5A with Grbl 0.9j and UniversalGcodeSender, and I want to change to Arduino Mega + Ramp 1.4 + TB6600 5A with Marlin to have the option from working offline, I have downloaded this firmware “V1CNC_Ramps / 510” for this purpose, is this firmware correct for my purpose?

-Sorry for my English but I only speak Spanish and I must use the google translator and it is possible that the translation may not be too reliable in some moments-

1 Like

is this firmware correct for my purpose?

Assuming you don’t have dual endstops, this is the correct version. Note that it is setup for the DRV8825 drivers, so you must change it to your TB6600 drivers. In configuration.h, search for “Stepper Drivers”, and you will see the #defines you must change.

I must use the google translator and it is possible that the translation may not be too reliable in some moments-

I find that google translate does surprisingly well. Sometimes the word choices are a bit strange, but the meaning almost always comes through.

Google Translated:

¿Este firmware es correcto para mi propósito?

Suponiendo que no tiene topes finales duales, esta es la versión correcta. Tenga en cuenta que está configurado para los controladores DRV8825, por lo que debe cambiarlo a sus controladores TB6600. En configuration.h, busque “Controladores paso a paso” y verá los #defines que debe cambiar.

Debo usar el traductor de google y es posible que la traducción no sea demasiado confiable en algunos momentos-

Encuentro que el traductor de Google funciona sorprendentemente bien. A veces, las opciones de palabras son un poco extrañas, pero el significado casi siempre aparece.

Yes, I must change the drivers, for now for the tests I will use the A4988, in reference to the limit switches I tell you that if I have, I have 2 limit switches at the ends of the X and Y axes and still under construction for the Z axis, but even if there are two limit switches per axis, both are in parallel, that is to say electrically there is only one limit switch, thus simplifying the wiring, and I find no apparent reason for them to be totally independent unless you provide me with some information against.

Uploading: 2021-06-14 18.45.17.jpg…

The menu on the screen appears perfectly.
Now new doubts arise.
The first one that I observe is the issue of temperature, for a CNC it is not a fact to keep in mind, can everything related to the hot bed and extruders be disabled?

1 Like

In the photo, I only see three drivers installed on the controller. If you are running both of the X motors off one driver and both of the Y motors off another driver, then there is no benefit to having more than one endstop on an axis.

The primary benefit of running dual end stops is to allow the machine to automatically adjust the X and Y axes to be square to one another as part of the homing sequence. This requires each X and Y motor be on it’s own stepper driver, and for each side of the axis to have an independent limit switch.

When auto-squaring, the machine will run each of the X and Y axes so that both motors on that axis trigger their end stops, then apply a corrective factor to X or Y (that you determine by measurements and will store in the eeprom of the controller) so that the axes are square to one another. Except when homing the controller sends identical commands to the two motors, so once things are set during homing the machine will stay squared up.

Bien, efectivamente solo aparecen 3 drivers, el motivo es que esta placa Mega+Ramp la estoy usando para hacer pruebas de software por el momento.

Sigo sin entender en que consiste, no acabo de entender a que llamais auto-squaring, pienso que es el HOMING , para que cada motor mueva los ejes para llevar el spindler a una de las esquinas del area de trabajo, eso es lo que pienso, pero no estoy seguro.