Viki LCD


Much like the Vision 3D printer, the Viki LCD did not come with any instructions or RAMPS firmware. The following are my notes for how I got it to work. Luckily most of the work was already done by others!

RAMPS 1.4 Connectors

See the RAMPS 1.4 image for exact placement. This RAMPS schematic was also useful to me.


  • 5V
  • GND
  • 20
  • 21

AUX-3 (SD Card):

  1. GND
  2. NC
  3. SCK/D52
  4. CS/D53
  5. MISO/D50
  6. MOSI/D51
  7. 5V
  8. CD/D49

ViKi – RAMPS Pinout

The Panucatt pdf for the Viki LCD has nice descriptions of the pins and their functions.

Mapping the Viki LCD to the RAMPS board

Viki Top plug – RAMPS 1.4:

  • 5V – 5V (I2C, +)
  • GND – GND (I2C, -)
  • SDA  – I2C 20 (I2C, 20)
  • SCL –  I2C 21 (I2C, 21)
  • ENC_B -(AUX4, D17) – requires update to pins.h
  • ENC_A – (AUX4, D16) – requires update to pins.h

Viki Bottom Plug – RAMPS 1.4:

  • CS – (AUX3, D53)
  • BTN – (AUX4, D32)  – requires update to pins.h
  • DI/MOSI – (AUX3, MOSI/D51)
  • CLK/SCK – (AUX3, SCK/D52)
  • CD – (AUX3, D49)
  • DO/MISO – (AUX3, MISO/D50)

The LCD comes will all of the cables broken out into single pins. I found it helpful to combine them into 4 new headers:

  • I2C (5V,GND,SDA, SCL)
  • AUX3 top (NC, CLK, D0, NC)
  • AUX3 bottom (NC, CS, D1, CD)
  • AUX4 (ENC_A, ENC_B)

This leave one remaining pin, BTN, which plugs into AUX4 at the end.

IMG_0131 IMG_0132


After much searching, I found Jim Morris’s comment on the Viki Kickstart page. After following his instructions, everything just worked! Here they are with a little more detail:

  1. > git clone 
  2. > git pull feature/add-vikilcd
  3. Download LiquidTWI from github
  4. Install the LiquidTWI library using these Arduino instructions
  5. Modify the Marlin/Configuration.h with the settings from your previous one. Do not copy it over. You need to edit the new one in place. It has additional configuration that is needed. Here is my new Configuration.h file.
  6. Modify pins.h to set BTN_EN1=16, BTN_EN2=17, and BTN_ENC=32. Or download my pins.h
  7. Compile and upload the new firmware and you should be good to go.

Printing Without The computer (“hostless printing”)

The RAMPS that ships with the Vision 3D printer should already have 2 key diodes installed (D1 & D2). If it doesn’t, or if you are running into issues, I found this SDRAMPS blog post very helpful.

In my case, both diodes were already installed, but still I couldn’t print without the USB cable. And after triple checking everything, I finally starting probing the RAMPS board and found a disconnect. Somehow I burnt out one of the traces (probably when I accidentally installed my end stops backwards). I soldered in a jumper over the burnt out trace and I was back in business.


Vision 3D Printer: Debugging Prints

Calibration Prints

Before printing anything real, it is useful to run some calibration prints.

Common calibration prints are cubes and lattice work:

NOTE: it may take you a few tries before you can even successfully print a full part. In my case, I didn’t first calibrate the extruder, so my prints failed with way too much plastic:



See this blog post for steps to calibrate the extruder. After fixing the STEPS_PER_MM for the extruder and Z axis, my next calibration print looked like this:

IMG_0123 IMG_0125 IMG_0126

In this case, my tolerances are fine for large parts, but the detail isn’t so great, and there is a stepping problem in the X-axis:


This looked due to the belt being too loose, so I tighten up the tensioner on it, and things are looking better, but I have yet to run another full calibration print.

Filament Keeps Jamming

My first real printer parts were large, and I wasn’t able to get through a complete print without the extruder jamming. After much digging online, my problem sounded like a tension issue with the filament. So I tightened up the hose clamp significantly, and now I’m printing jam free. So make sure you have enough tension on yours!



Low Quality Prints For Small Objects

Things have been printing well so far, but all of a sudden my quality went way down:

IMG_0128 IMG_0127


What happened? It turns out that because I was only printing two really small parts, not enough time had passed between the extruder returning to the same place twice. Basically each layer printed so quickly, the plastic didn’t have enough time to cool down before the next layer was applied. There are two solutions you can implement to solve this. You can either add a fan and setup slic3r to turn it on (I’m about to do this as it seems like the preferred way). Or as a quick workaround, you can add a pause between each layer in slicer. Check out this reprap post for details on adding a pause.