Fabman Ultimaker 2/2+ Integration

Hi everyone,

I just wanted to share how I managed to integrate our Ultimaker 2+ with the FabMan System.

First of all, 2 pins of the Ultimaker Mainboard were connected to to Input 1 of the FabMan bridge. I used the EXT IO port (GND and digital pin 38):


(More information on the Ultiboard can be found here: https://github.com/Ultimaker/Ultimaker2/blob/master/1091_Main_board_v2.1.1_(x1)/Main%20Board%20V2.1.1.pdf)

The Ultimaker Firmware must then be changed such as that the digital pin 38 is set to high when a print job started from SD-Card begins (i.e., after heating up), and to low when it is finished (or aborted).

Source Code: https://github.com/Ultimaker/UM2.1-Firmware/tree/UM2.1_JarJar/Marlin

add 3 lines to cardreader.cpp, to the startFileprint() and printinHasFinished() methods :

void CardReader::startFileprint()
{
  if(cardOK)
  {
    sdprinting = true;
    pause = false;
	   enquecommand_P(PSTR("M42 P38 S255")); // FABMAN
  }
}
void CardReader::printingHasFinished()
{
  st_synchronize();
  quickStop();
  file.close();
  sdprinting = false;
  pause = false;
  enquecommand_P(PSTR("M400")); // FABMAN
  enquecommand_P(PSTR("M42 P38 S0")); // FABMAN
  if(SD_FINISHED_STEPPERRELEASE)
  {
    //finishAndDisableSteppers();
    enquecommand_P(PSTR(SD_FINISHED_RELEASECOMMAND));
  }
  autotempShutdown();
}

add 2 lines to UltiLCD2_menu_print.cpp at the end of the abortPrint() function:

static void abortPrint()
{
    /*..*/
    enquecommand_P(PSTR("M400")); // FABMAN
    enquecommand_P(PSTR("M42 P38 S0")); // FABMAN
}

The firmware is then compiled and uploaded to the Mainboard with the Arduino IDE (Arduino/Genuino Mega or Mega 2560) over USB.

2 Likes

Awesome idea, @walterw!
Thank you for sharing this solution. :ok_hand:

Dear all,

I found better locations to put those additional lines into; only one file needs to be changed: ltiLCD2_menu_print.cpp
Simply add these 3 lines at the end of the functions doStartPrint() and abortPrint()

static void doStartPrint()
{
//
enquecommand_P(PSTR(“M42 P38 S255”)); // FABMAN
}

static void abortPrint()
{
//
enquecommand_P(PSTR(“M400”)); // FABMAN
enquecommand_P(PSTR(“M42 P38 S0”)); // FABMAN
}

1 Like