RAMPS 1.4 on the Velleman K8200

After sending my original Velleman K8200 control board to circuit board heaven where it probably met up with the other A4988 chips I’ve burned in the past, I finally received a RAMPS 1.4 shield, a set of new stepper drivers (which already carried small heatsinks), the RepRapDiscount Full Graphic Smart Controller and an Arduino Mega.




RAMPS 1.4 and GLCD




20141121_123215




The boards I got were manufactured, sold and labeled by a company called Sintron and are very high quality boards I have to say. Now the journey of resuscitating my 3D printer could finally continue.




Fist of all some adapter cables have to be made. The RAMPS 1.4 shield has got terminal blocks for the heatbed, extruder and fan. You have to select in firmware, which configuration you want to have for your shield. One pair of blocks is fused with a 11 Ampère fuse and is meant to power the heatbed, the other two can be configured. Use large wires and 4 2.54mm header pins, 2 for + and 2 for minus because the currents are pretty high here. One bridge cable is needed between the 5A and the 11A positive terminal if you want to use the Velleman power supply. Adapter cables are also needed for the endstop switches. I simply used male-female extension jumper wires and attached them so that they pull to GND when pressed. The Velleman female connectors for the stepper motors and thermistors that were there already fit on the RAMPS 1.4 directly and do not reqire adapter cables. After flashing a raw standard vesion of Marlin it turned out that the stepper motors for X, Z and the extruder were reversed. Out of liziness I swapped the red and green wire on the connectors for those and didn’t have to change anything in Marlin. The crimped connectors can be pulled out of the plastic enclosure by pressing down the tiny hook on them with a small nail. There is a nice connection diagram on the RAMPS 1.4 page.
You can remove the driver for the second extruder if you’re not using it and keep it as a replacement part.




Next, the stepper motor current has to be set. The drivers I got didn’t seem to have the exposed via to measure motor voltage and so I did it the good ol’way: by listening and turning the pot. The louder the hissing of the motor, the higher the current. What’s interesting is that sometimes you seem to receive radio stations on the stepper motor driver 😀 Presumably it’s AM radio. Fascinating! What I’ve also done is removed the small heat sinks from the X,Y,Z and E drivers and covering the entire PCB of the motor drivers with a strip of Kapton tape and cut out the outline of the A4988 chip with a sharpie knife. Then I reattached the heat sinks. I noticed that that they tend to sink down when you mount the board horizontally upright. That’s why the’re called heat sinks.. Haha. The Kapton just prevents the header pins of the drivers from being shorted out by the heat sink at some point, since the printer vibrates during operation.
I’ve attached a small heatsink to the bottom of the Arduino Mega board right beneath the linear regulator, since it has to drop 15V down to 5V and therefore produces an immense amount of heat. With the heatsink it seems to be fine so far.



20141122_193906




20141122_214441




Pretty much everything else has to be adjusted in the Configuation.h file in Marlin. Here is my Configuration.h file. The main changes I have made are:
1. selecting the proper board with the extruder-fan-heatbed configuration
2. inverting the endstops
3. selecting the RepRapDiscount Full Graphic Smart Controller
4. enabling SD card support
5. changing the baud rate to 115200 in order to connect a bluetooth module
6. setting the right steps per mm for all axes
7. lowering accelerations. That’s right. I wanted to try accelerations of 500mm/s^2 and observe their impact on print quality, since the K8200/3DRAG is built in X-Y-Table configuration and the motors (especially X) have to accelerate a larger mass than in other printers. Also, I will try printing with lower speeds in the future.
8. Is this it?




EDIT: download my complete Marlin version here: Marlin_K8200_GLCDmod




Of course you need to download and install the u8glib Arduino Library prior to uploading. I used version 1.5.




All in all I’m very pleased with the RAMPS 1.4 upgrade. The controller offers you the the possibility to adjust print speed on the fly (among many other settings) and print from the SD card without any problems. The system is almost plug and play and can be further extended. For example a wireless option can be added. I’ve attached a Bluetooth Mate Silver right now, which has level shifters on the TR and RX lines and is therefore 5v-compatible. You can print from RepetierHost directly over the air or control the printer over an Android device both without any problems. There’s an app around already and I’m thinking about writing my own…Also I’m considering testing Xbee for a longer range.

10 thoughts on “RAMPS 1.4 on the Velleman K8200”

  1. Hi, i follow your step to use the ramps1.4 with my 3drag:

    When i verified the firmware i receive this errors:


    In file included from ultralcd.cpp:42:0:
    ultralcd.cpp: In function 'void lcd_control_temperature_menu()':
    dogm_lcd_implementation.h:361:149: error: invalid conversion from 'const char*' to 'char*' [-fpermissive]
    #define lcd_implementation_drawmenu_setting_edit_generic_P(row, pstr, pre_char, data) _drawmenu_setting_edit_generic(row, pstr, pre_char, data, true)
    ^
    dogm_lcd_implementation.h:377:88: note: in expansion of macro 'lcd_implementation_drawmenu_setting_edit_generic_P'
    #define lcd_implementation_drawmenu_setting_edit_bool_selected(row, pstr, pstr2, data) lcd_implementation_drawmenu_setting_edit_generic_P(row, pstr, '>', (*(data))?PSTR(MSG_ON):PSTR(MSG_OFF))
    ^
    ultralcd.cpp:129:17: note: in expansion of macro 'lcd_implementation_drawmenu_setting_edit_bool_selected'
    lcd_implementation_drawmenu_ ## type ## _selected (_drawLineNr, _label_pstr , ## args ); \
    ^
    ultralcd.cpp:143:46: note: in expansion of macro 'MENU_ITEM'
    #define MENU_ITEM_EDIT(type, label, args...) MENU_ITEM(setting_edit_ ## type, label, PSTR(label) , ## args )
    ^
    ultralcd.cpp:735:5: note: in expansion of macro 'MENU_ITEM_EDIT'
    MENU_ITEM_EDIT(bool, MSG_AUTOTEMP, &autotemp_enabled);
    ^
    dogm_lcd_implementation.h:340:13: error: initializing argument 4 of 'void _drawmenu_setting_edit_generic(uint8_t, const char*, char, char*, bool)' [-fpermissive]
    static void _drawmenu_setting_edit_generic(uint8_t row, const char* pstr, char pre_char, char* data, bool pgm) {
    ^
    dogm_lcd_implementation.h:361:149: error: invalid conversion from 'const char*' to 'char*' [-fpermissive]
    #define lcd_implementation_drawmenu_setting_edit_generic_P(row, pstr, pre_char, data) _drawmenu_setting_edit_generic(row, pstr, pre_char, data, true)
    ^
    dogm_lcd_implementation.h:378:79: note: in expansion of macro 'lcd_implementation_drawmenu_setting_edit_generic_P'
    #define lcd_implementation_drawmenu_setting_edit_bool(row, pstr, pstr2, data) lcd_implementation_drawmenu_setting_edit_generic_P(row, pstr, ' ', (*(data))?PSTR(MSG_ON):PSTR(MSG_OFF))
    ^
    ultralcd.cpp:131:17: note: in expansion of macro 'lcd_implementation_drawmenu_setting_edit_bool'
    lcd_implementation_drawmenu_ ## type (_drawLineNr, _label_pstr , ## args ); \
    ^
    ultralcd.cpp:143:46: note: in expansion of macro 'MENU_ITEM'
    #define MENU_ITEM_EDIT(type, label, args...) MENU_ITEM(setting_edit_ ## type, label, PSTR(label) , ## args )
    ^
    ultralcd.cpp:735:5: note: in expansion of macro 'MENU_ITEM_EDIT'
    MENU_ITEM_EDIT(bool, MSG_AUTOTEMP, &autotemp_enabled);
    ^
    dogm_lcd_implementation.h:340:13: error: initializing argument 4 of 'void _drawmenu_setting_edit_generic(uint8_t, const char*, char, char*, bool)' [-fpermissive]
    static void _drawmenu_setting_edit_generic(uint8_t row, const char* pstr, char pre_char, char* data, bool pgm) {
    ^
    Errore durante la compilazione

    thank's for your reply.

    1. Hey, I’ve added a download link to the complete Marlin version as I have compiled it for my printer to the blog post. Download it and try again. It works with Arduino 1.0.5 on my Windows PC.

  2. Hello
    i don’t think this board ist plug and play.
    It’s mor like “Plug and pray”
    hundreds of errors and settings and still not working

  3. Any way you could do a video of wireing. I know I h ave seen the online forums and none yet. I just want to be able to see were I went wrong.
    are your end stops open or closed

  4. Trying this myself as I want / need to convert my K8200 into a cnc and the original controller fried.

    My Z Axis is not moving at all and X-Y Axis is only running verrrry slow. Using the original PSU for this. Whats the matter?
    Checked all drivers and voltages. Its fine so far. But still the only FW able to move it at all at the moment

  5. Great write-up, has helped alot. Any chance you’ve made a video on the wiring? Or is it possible to take a few photos and post them up of the board. Will be good to double check mine.
    Cheers

  6. Dear kauz,

    thank you for this post. I am really confused about the wiring. I think I can use motor cable connector directly on the ramps but if I use as it is I will connect motor in the order of BLUE, RED, GREEN, BLACK. Do I have to change the cables pin to pin connections

Leave a Reply

Your email address will not be published. Required fields are marked *