Merge pull request #5250 from CONSULitAS/RCBugFix_K8200_backinsync_2016-11-18

K8200: Example configuration back in sync
This commit is contained in:
Scott Lahteine 2016-11-18 22:49:18 -06:00 committed by GitHub
commit 0be6167f14
3 changed files with 82 additions and 58 deletions

View file

@ -20,13 +20,6 @@
* *
*/ */
/**
* Sample configuration file for Vellemann K8200
* tested on K8200 with VM8201 (Display)
* and Arduino 1.6.8 (Mac) by @CONSULitAS, 2016-02-21
* https://github.com/CONSULitAS/Marlin-K8200/archive/K8200_stable_2016-02-21.zip
*/
/** /**
* Configuration.h * Configuration.h
* *
@ -58,6 +51,22 @@
*/ */
#define CONFIGURATION_H_VERSION 010100 #define CONFIGURATION_H_VERSION 010100
/**
* Sample configuration file for Vellemann K8200
* tested on K8200 with VM8201 (Display)
* and Arduino 1.6.12 (Mac OS X) by @CONSULitAS, 2016-11-18
* https://github.com/CONSULitAS/Marlin-K8200/archive/K8200_stable_2016-11-18.zip
*
* Please choose your hardware options for the K8200:
*/
// VM8201 Display unit
#define K8200_VM8201
// K8204 Z axis upgrade rod and coupler -> TODO
// #define K8200_K8204
// K8203 direct drive extruder -> TODO
// #define K8200_K8203
//=========================================================================== //===========================================================================
//============================= Getting Started ============================= //============================= Getting Started =============================
//=========================================================================== //===========================================================================
@ -146,7 +155,11 @@
// Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines) // Define this to set a unique identifier for this printer, (Used by some programs to differentiate between machines)
// You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4) // You can use an online service to generate a random UUID. (eg http://www.uuidgenerator.net/version4)
#define MACHINE_UUID "2b7dea3b-844e-4ab1-aa96-bb6406607d6e" // K8200 standard config with VM8201 (Display) #if ENABLED(K8200_VM8201)
#define MACHINE_UUID "2b7dea3b-844e-4ab1-aa96-bb6406607d6e" // K8200 standard config with VM8201 (Display)
#else
#define MACHINE_UUID "92f72de1-c211-452e-9f2b-61ef88a4751e" // K8200 standard config without VM8201 (Display)
#endif
// This defines the number of extruders // This defines the number of extruders
// :[1, 2, 3, 4] // :[1, 2, 3, 4]
@ -194,7 +207,7 @@
* *
* :{ 0:'No power switch', 1:'ATX', 2:'X-Box 360' } * :{ 0:'No power switch', 1:'ATX', 2:'X-Box 360' }
*/ */
#define POWER_SUPPLY 1 #define POWER_SUPPLY 0
#if POWER_SUPPLY > 0 #if POWER_SUPPLY > 0
// Enable this option to leave the PSU off at startup. // Enable this option to leave the PSU off at startup.
@ -274,7 +287,7 @@
#define TEMP_WINDOW 1 // (degC) Window around target to start the residency timer x degC early. #define TEMP_WINDOW 1 // (degC) Window around target to start the residency timer x degC early.
// Bed temperature must be close to target for this long before M190 returns success // Bed temperature must be close to target for this long before M190 returns success
#define TEMP_BED_RESIDENCY_TIME 0 // (seconds) #define TEMP_BED_RESIDENCY_TIME 10 // (seconds)
#define TEMP_BED_HYSTERESIS 3 // (degC) range of +/- temperatures considered "close" to the target one #define TEMP_BED_HYSTERESIS 3 // (degC) range of +/- temperatures considered "close" to the target one
#define TEMP_BED_WINDOW 1 // (degC) Window around target to start the residency timer x degC early. #define TEMP_BED_WINDOW 1 // (degC) Window around target to start the residency timer x degC early.
@ -378,11 +391,11 @@
// FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles. // FIND YOUR OWN: "M303 E-1 C8 S90" to run autotune on the bed at 90 degreesC for 8 cycles.
// Vellemann K8200 PCB heatbed with standard PCU at 60 degreesC - calculated with PID Autotune and tested // Vellemann K8200 PCB heatbed with standard PCU at 60 degreesC - calculated with PID Autotune and tested
// from pidautotune // from pidautotune
#define DEFAULT_bedKp 341.88 #define DEFAULT_bedKp 341.88
#define DEFAULT_bedKi 25.32 #define DEFAULT_bedKi 25.32
#define DEFAULT_bedKd 1153.89 #define DEFAULT_bedKd 1153.89
#endif // PIDTEMPBED #endif // PIDTEMPBED
// @section extruder // @section extruder
@ -466,9 +479,9 @@
#define X_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. #define X_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
#define Y_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. #define Y_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
#define Z_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. #define Z_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
#define X_MAX_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. #define X_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
#define Y_MAX_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. #define Y_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
#define Z_MAX_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop. #define Z_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop. #define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
// Enable this feature if all enabled endstop pins are interrupt-capable. // Enable this feature if all enabled endstop pins are interrupt-capable.
@ -492,13 +505,12 @@
* Default Axis Steps Per Unit (steps/mm) * Default Axis Steps Per Unit (steps/mm)
* Override with M92 * Override with M92
*/ */
#define DEFAULT_AXIS_STEPS_PER_UNIT { 64.25, 64.25, 2560, 600 } // default steps per unit for K8200 #define DEFAULT_AXIS_STEPS_PER_UNIT { 64.25, 64.25, 2560, 600} // for K8200
/** /**
* Default Max Feed Rate (mm/s) * Default Max Feed Rate (mm/s)
* Override with M203 * Override with M203
*/ */
#define DEFAULT_MAX_FEEDRATE { 500, 500, 5, 500 } #define DEFAULT_MAX_FEEDRATE { 500, 500, 5, 25 }
/** /**
* Default Max Acceleration (change/s) change = mm/s * Default Max Acceleration (change/s) change = mm/s
@ -583,9 +595,9 @@
// | | // | |
// O-- FRONT --+ // O-- FRONT --+
// (0,0) // (0,0)
#define X_PROBE_OFFSET_FROM_EXTRUDER -25 // X offset: -left +right [of the nozzle] #define X_PROBE_OFFSET_FROM_EXTRUDER 10 // X offset: -left +right [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER -29 // Y offset: -front +behind [the nozzle] #define Y_PROBE_OFFSET_FROM_EXTRUDER 10 // Y offset: -front +behind [the nozzle]
#define Z_PROBE_OFFSET_FROM_EXTRUDER -12.35 // Z offset: -below +above [the nozzle] #define Z_PROBE_OFFSET_FROM_EXTRUDER 0 // Z offset: -below +above [the nozzle]
// X and Y axis travel speed (mm/m) between probes // X and Y axis travel speed (mm/m) between probes
#define XY_PROBE_SPEED 8000 #define XY_PROBE_SPEED 8000
@ -660,7 +672,7 @@
* Example: `M851 Z-5` with a CLEARANCE of 4 => 9mm from bed to nozzle. * Example: `M851 Z-5` with a CLEARANCE of 4 => 9mm from bed to nozzle.
* But: `M851 Z+1` with a CLEARANCE of 2 => 2mm from bed to nozzle. * But: `M851 Z+1` with a CLEARANCE of 2 => 2mm from bed to nozzle.
*/ */
#define Z_CLEARANCE_DEPLOY_PROBE 15 // Z Clearance for Deploy/Stow #define Z_CLEARANCE_DEPLOY_PROBE 10 // Z Clearance for Deploy/Stow
#define Z_CLEARANCE_BETWEEN_PROBES 5 // Z Clearance between probe points #define Z_CLEARANCE_BETWEEN_PROBES 5 // Z Clearance between probe points
// //
@ -680,7 +692,7 @@
// WARNING: When motors turn off there is a chance of losing position accuracy! // WARNING: When motors turn off there is a chance of losing position accuracy!
#define DISABLE_X false #define DISABLE_X false
#define DISABLE_Y false #define DISABLE_Y false
#define DISABLE_Z false // not for K8200 -> looses Steps #define DISABLE_Z false
// Warn on display about possibly reduced accuracy // Warn on display about possibly reduced accuracy
//#define DISABLE_REDUCED_ACCURACY_WARNING //#define DISABLE_REDUCED_ACCURACY_WARNING
@ -693,7 +705,7 @@
// Invert the stepper direction. Change (or reverse the motor connector) if an axis goes the wrong way. // Invert the stepper direction. Change (or reverse the motor connector) if an axis goes the wrong way.
#define INVERT_X_DIR false #define INVERT_X_DIR false
#define INVERT_Y_DIR false // was true -> why for K8200? #define INVERT_Y_DIR false // K8200: false
#define INVERT_Z_DIR false #define INVERT_Z_DIR false
// @section extruder // @section extruder
@ -705,9 +717,9 @@
#define INVERT_E3_DIR true #define INVERT_E3_DIR true
// @section homing // @section homing
// K8200: it is usual to have clamps for the glass plate on the heatbed
//#define Z_HOMING_HEIGHT 4 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ... #define Z_HOMING_HEIGHT 4 // (in mm) Minimal z height before homing (G28) for Z clearance above the bed, clamps, ...
// Be sure you have this distance over your Z_MAX_POS in case. // Be sure you have this distance over your Z_MAX_POS in case.
// ENDSTOP SETTINGS: // ENDSTOP SETTINGS:
// Sets direction of endstops when homing; 1=MAX, -1=MIN // Sets direction of endstops when homing; 1=MAX, -1=MIN
@ -883,7 +895,7 @@
// M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily). // M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily).
// M502 - reverts to the default "factory settings". You still need to store them in EEPROM afterwards if you want to. // M502 - reverts to the default "factory settings". You still need to store them in EEPROM afterwards if you want to.
//define this to enable EEPROM support //define this to enable EEPROM support
#define EEPROM_SETTINGS #define EEPROM_SETTINGS // K8200: uses EEPROM by default
#if ENABLED(EEPROM_SETTINGS) #if ENABLED(EEPROM_SETTINGS)
// To disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out: // To disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out:
@ -917,12 +929,12 @@
// @section temperature // @section temperature
// Preheat Constants // Preheat Constants
#define PREHEAT_1_TEMP_HOTEND 190 #define PREHEAT_1_TEMP_HOTEND 180
#define PREHEAT_1_TEMP_BED 50 // K8200: set back to 70 if you have an upgraded heatbed power supply #define PREHEAT_1_TEMP_BED 50 // K8200: PLA / set back to 70 if you have an upgraded heatbed power supply
#define PREHEAT_1_FAN_SPEED 0 // Value from 0 to 255 #define PREHEAT_1_FAN_SPEED 0 // Value from 0 to 255
#define PREHEAT_2_TEMP_HOTEND 240 #define PREHEAT_2_TEMP_HOTEND 240
#define PREHEAT_2_TEMP_BED 60 // K8200: set back to 110 if you have an upgraded heatbed power supply #define PREHEAT_2_TEMP_BED 60 // K8200: ABS / set back to 110 if you have an upgraded heatbed power supply
#define PREHEAT_2_FAN_SPEED 0 // Value from 0 to 255 #define PREHEAT_2_FAN_SPEED 0 // Value from 0 to 255
// //
@ -1024,7 +1036,7 @@
// - Total time printing // - Total time printing
// //
// This information can be viewed by the M78 command. // This information can be viewed by the M78 command.
//#define PRINTCOUNTER #define PRINTCOUNTER
//============================================================================= //=============================================================================
//============================= LCD and SD support ============================ //============================= LCD and SD support ============================
@ -1032,6 +1044,9 @@
// @section lcd // @section lcd
// K8200: for Display VM8201 with SD slot
#if ENABLED(K8200_VM8201)
// //
// LCD LANGUAGE // LCD LANGUAGE
// //
@ -1066,7 +1081,7 @@
// //
// :['JAPANESE', 'WESTERN', 'CYRILLIC'] // :['JAPANESE', 'WESTERN', 'CYRILLIC']
// //
#define DISPLAY_CHARSET_HD44780 JAPANESE // K8200: for Display VM8201 #define DISPLAY_CHARSET_HD44780 JAPANESE // K8200: for Display VM8201 // this is the most common hardware
// //
// LCD TYPE // LCD TYPE
@ -1104,7 +1119,7 @@
// //
// Use CRC checks and retries on the SD communication. // Use CRC checks and retries on the SD communication.
// //
//#define SD_CHECK_AND_RETRY #define SD_CHECK_AND_RETRY
// //
// ENCODER SETTINGS // ENCODER SETTINGS
@ -1112,13 +1127,13 @@
// This option overrides the default number of encoder pulses needed to // This option overrides the default number of encoder pulses needed to
// produce one step. Should be increased for high-resolution encoders. // produce one step. Should be increased for high-resolution encoders.
// //
//#define ENCODER_PULSES_PER_STEP 1 #define ENCODER_PULSES_PER_STEP 4 // K8200_VM8201: four steps per encoder step
// //
// Use this option to override the number of step signals required to // Use this option to override the number of step signals required to
// move between next/prev menu items. // move between next/prev menu items.
// //
//#define ENCODER_STEPS_PER_MENU_ITEM 5 #define ENCODER_STEPS_PER_MENU_ITEM 1 // K8200_VM8201: One step per menu item
/** /**
* Encoder Direction Options * Encoder Direction Options
@ -1143,14 +1158,14 @@
// If CLOCKWISE normally moves DOWN this makes it go UP. // If CLOCKWISE normally moves DOWN this makes it go UP.
// If CLOCKWISE normally moves UP this makes it go DOWN. // If CLOCKWISE normally moves UP this makes it go DOWN.
// //
//#define REVERSE_MENU_DIRECTION #define REVERSE_MENU_DIRECTION // K8200: for Display VM8201 encoder on right side
// //
// Individual Axis Homing // Individual Axis Homing
// //
// Add individual axis homing items (Home X, Home Y, and Home Z) to the LCD menu. // Add individual axis homing items (Home X, Home Y, and Home Z) to the LCD menu.
// //
//#define INDIVIDUAL_AXIS_HOMING_MENU #define INDIVIDUAL_AXIS_HOMING_MENU
// //
// SPEAKER/BUZZER // SPEAKER/BUZZER
@ -1180,7 +1195,7 @@
// //
// ULTIMAKER Controller. // ULTIMAKER Controller.
// //
//#define ULTIMAKERCONTROLLER #define ULTIMAKERCONTROLLER // K8200: for Display VM8201
// //
// ULTIPANEL as seen on Thingiverse. // ULTIPANEL as seen on Thingiverse.
@ -1338,6 +1353,8 @@
// //
//#define SAV_3DLCD //#define SAV_3DLCD
#endif // K8200_VM8201
//============================================================================= //=============================================================================
//=============================== Extra Features ============================== //=============================== Extra Features ==============================
//============================================================================= //=============================================================================

View file

@ -20,12 +20,6 @@
* *
*/ */
// Sample configuration file for Vellemann K8200
// tested on K8200 with VM8201 (Display)
// and Arduino 1.6.8 (Mac) by @CONSULitAS, 2016-02-21
// https://github.com/CONSULitAS/Marlin-K8200/archive/K8200_stable_2016-02-21.zip
/** /**
* Configuration_adv.h * Configuration_adv.h
* *
@ -36,6 +30,15 @@
* Basic settings can be found in Configuration.h * Basic settings can be found in Configuration.h
* *
*/ */
/**
* Sample configuration file for Vellemann K8200
* tested on K8200 with VM8201 (Display)
* and Arduino 1.6.12 (Mac) by @CONSULitAS, 2016-11-18
* https://github.com/CONSULitAS/Marlin-K8200/archive/K8200_stable_2016-11-18.zip
*
*/
#ifndef CONFIGURATION_ADV_H #ifndef CONFIGURATION_ADV_H
#define CONFIGURATION_ADV_H #define CONFIGURATION_ADV_H
@ -80,6 +83,7 @@
* If you get false positives for "Thermal Runaway" increase THERMAL_PROTECTION_HYSTERESIS and/or THERMAL_PROTECTION_PERIOD * If you get false positives for "Thermal Runaway" increase THERMAL_PROTECTION_HYSTERESIS and/or THERMAL_PROTECTION_PERIOD
*/ */
#if ENABLED(THERMAL_PROTECTION_HOTENDS) #if ENABLED(THERMAL_PROTECTION_HOTENDS)
// K8200 has weak heaters/power supply by default, so you have to relax!
#define THERMAL_PROTECTION_PERIOD 60 // Seconds #define THERMAL_PROTECTION_PERIOD 60 // Seconds
#define THERMAL_PROTECTION_HYSTERESIS 8 // Degrees Celsius #define THERMAL_PROTECTION_HYSTERESIS 8 // Degrees Celsius
@ -92,16 +96,19 @@
* If you get false positives for "Heating failed" increase WATCH_TEMP_PERIOD and/or decrease WATCH_TEMP_INCREASE * If you get false positives for "Heating failed" increase WATCH_TEMP_PERIOD and/or decrease WATCH_TEMP_INCREASE
* WATCH_TEMP_INCREASE should not be below 2. * WATCH_TEMP_INCREASE should not be below 2.
*/ */
// K8200 has weak heaters/power supply by default, so you have to relax!
#define WATCH_TEMP_PERIOD 30 // Seconds #define WATCH_TEMP_PERIOD 30 // Seconds
#define WATCH_TEMP_INCREASE 4 // Degrees Celsius #define WATCH_TEMP_INCREASE 2 // Degrees Celsius
#endif #endif
/** /**
* Thermal Protection parameters for the bed are just as above for hotends. * Thermal Protection parameters for the bed are just as above for hotends.
*/ */
#if ENABLED(THERMAL_PROTECTION_BED) #if ENABLED(THERMAL_PROTECTION_BED)
#define THERMAL_PROTECTION_BED_PERIOD 20 // Seconds // K8200 has weak heaters/power supply by default, so you have to relax!
#define THERMAL_PROTECTION_BED_HYSTERESIS 2 // Degrees Celsius // the default bed is so weak, that you can hardly go over 75°C
#define THERMAL_PROTECTION_BED_PERIOD 60 // Seconds
#define THERMAL_PROTECTION_BED_HYSTERESIS 10 // Degrees Celsius
/** /**
* Whenever an M140 or M190 increases the target temperature the firmware will wait for the * Whenever an M140 or M190 increases the target temperature the firmware will wait for the
@ -358,7 +365,7 @@
// Default stepper release if idle. Set to 0 to deactivate. // Default stepper release if idle. Set to 0 to deactivate.
// Steppers will shut down DEFAULT_STEPPER_DEACTIVE_TIME seconds after the last move when DISABLE_INACTIVE_? is true. // Steppers will shut down DEFAULT_STEPPER_DEACTIVE_TIME seconds after the last move when DISABLE_INACTIVE_? is true.
// Time can be set by M18 and M84. // Time can be set by M18 and M84.
#define DEFAULT_STEPPER_DEACTIVE_TIME 60 #define DEFAULT_STEPPER_DEACTIVE_TIME 120
#define DISABLE_INACTIVE_X true #define DISABLE_INACTIVE_X true
#define DISABLE_INACTIVE_Y true #define DISABLE_INACTIVE_Y true
#define DISABLE_INACTIVE_Z true // set to false if the nozzle will fall down on your printed part when print has finished. #define DISABLE_INACTIVE_Z true // set to false if the nozzle will fall down on your printed part when print has finished.
@ -535,7 +542,7 @@
//#define LIN_ADVANCE //#define LIN_ADVANCE
#if ENABLED(LIN_ADVANCE) #if ENABLED(LIN_ADVANCE)
#define LIN_ADVANCE_K 75 #define LIN_ADVANCE_K 140 // start value for PLA on K8200
#endif #endif
// @section leveling // @section leveling
@ -567,7 +574,7 @@
#endif #endif
// Moves (or segments) with fewer steps than this will be joined with the next move // Moves (or segments) with fewer steps than this will be joined with the next move
#define MIN_STEPS_PER_SEGMENT 3 #define MIN_STEPS_PER_SEGMENT 6
// The minimum pulse width (in µs) for stepping a stepper. // The minimum pulse width (in µs) for stepping a stepper.
// Set this if you find stepping unreliable, or if using a very fast CPU. // Set this if you find stepping unreliable, or if using a very fast CPU.
@ -605,7 +612,7 @@
// For debug-echo: 128 bytes for the optimal speed. // For debug-echo: 128 bytes for the optimal speed.
// Other output doesn't need to be that speedy. // Other output doesn't need to be that speedy.
// :[0, 2, 4, 8, 16, 32, 64, 128, 256] // :[0, 2, 4, 8, 16, 32, 64, 128, 256]
#define TX_BUFFER_SIZE 0 #define TX_BUFFER_SIZE 128
// Enable an emergency-command parser to intercept certain commands as they // Enable an emergency-command parser to intercept certain commands as they
// enter the serial receive buffer, so they cannot be blocked. // enter the serial receive buffer, so they cannot be blocked.
@ -644,9 +651,9 @@
// Add support for experimental filament exchange support M600; requires display // Add support for experimental filament exchange support M600; requires display
#if ENABLED(ULTIPANEL) #if ENABLED(ULTIPANEL)
// #define FILAMENT_CHANGE_FEATURE // Enable filament exchange menu and M600 g-code (used for runout sensor too) #define FILAMENT_CHANGE_FEATURE // Enable filament exchange menu and M600 g-code (used for runout sensor too)
#if ENABLED(FILAMENT_CHANGE_FEATURE) #if ENABLED(FILAMENT_CHANGE_FEATURE)
#define FILAMENT_CHANGE_X_POS 3 // X position of hotend #define FILAMENT_CHANGE_X_POS (X_MAX_POS-3) // X position of hotend
#define FILAMENT_CHANGE_Y_POS 3 // Y position of hotend #define FILAMENT_CHANGE_Y_POS 3 // Y position of hotend
#define FILAMENT_CHANGE_Z_ADD 10 // Z addition of hotend (lift) #define FILAMENT_CHANGE_Z_ADD 10 // Z addition of hotend (lift)
#define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis) #define FILAMENT_CHANGE_XY_FEEDRATE 100 // X and Y axes feedrate in mm/s (also used for delta printers Z axis)

View file

@ -7,7 +7,7 @@
* VM8201 uses "DISPLAY_CHARSET_HD44870_JAPAN" and "ULTIMAKERCONTROLLER" * VM8201 uses "DISPLAY_CHARSET_HD44870_JAPAN" and "ULTIMAKERCONTROLLER"
* german (de) translation with umlaut is supported now - thanks to @AnHardt for the great hardware based umlaut support * german (de) translation with umlaut is supported now - thanks to @AnHardt for the great hardware based umlaut support
I [@CONSULitAS](https://github.com/CONSULitAS) tested the changes on my K8200 with 20x4-LCD and Arduino 1.6.1 for Windows (SD library added to IDE manually) - everything works well. I [@CONSULitAS](https://github.com/CONSULitAS) tested the changes on my K8200 with 20x4-LCD and Arduino 1.6.12 for Mac (SD library added to IDE manually), 2016-11-18 - everything works well.
**Source for genuine [Vellemann Firmware](http://www.k8200.eu/support/downloads/)** **Source for genuine [Vellemann Firmware](http://www.k8200.eu/support/downloads/)**
* V2.1.1 (for z axis upgrade, date branched: 2013-06-05): [firmware_k8200_v2.1.1.zip](http://www.k8200.eu/downloads/files/downloads/firmware_k8200_v2.1.1.zip) * V2.1.1 (for z axis upgrade, date branched: 2013-06-05): [firmware_k8200_v2.1.1.zip](http://www.k8200.eu/downloads/files/downloads/firmware_k8200_v2.1.1.zip)