Skip to content

Commit

Permalink
KAD Anycubic Mega Zero v1 and v2 unified configuration
Browse files Browse the repository at this point in the history
- Supported printers:
  - Anycubic Mega Zero
  - Anycubic Mega Zero 2.0
- Supported boards:
  - Anycubic Melzi
  - BigTreeTech SKR mini MZ V1.0 / SKR mini E3 V2.0
  - BigTreeTech SKR E3 Turbo
- Leveling sensors:
  - BLTouch
  - BFPTouch
  - PINDA
  - Allenkey Probe
- PSU control with BTT Relay 1.2 or MKS PWC
- Fixed MAX Temp for bed (115) and hotend (245)
- Defaults for bed PID calibration from MZ 2.0
- Increase probing grid to 7x7
- Probing margin 10mm
- Enabled Subdivision of the grid by Catmull-Rom method (SKR boards)
- PLA bed preheat at 60C
- Use CR10_STOCKDISPLAY on all boards
- Use smaller Marlin logo
- Enabled M154 support

- Board specific changes:
    - Anycubic Melzi:
      - BLTouch/BFPTouch variants:
        - PIN27 + EXT-A2
        - PIN27 + Zmin
        - EXT-A2 + Zmin
      - Filament Sensors:
        - PIN27
        - EXT-A2
    - BigTreeTech SKR (all):
      - Enable M73 support
      - Display remaining time
      - Power Loss function tailored for UPS modules
      - Binary file transfers
      - ARC support
      - Advanced Pause + filament load/unload
    - BigTreeTech SKR E3 Turbo:
      - Dual extruder configs:
        - 2E: dual independant (Chimera)
        - 2to1: single nozzle, one filament at a time
        - 2mix: single mixing nozzle
      - UBL with BLTouch
  • Loading branch information
kad committed May 17, 2021
1 parent 1dfa6cb commit cd8974f
Show file tree
Hide file tree
Showing 21 changed files with 2,683 additions and 194 deletions.
440 changes: 323 additions & 117 deletions Marlin/Configuration.h

Large diffs are not rendered by default.

248 changes: 173 additions & 75 deletions Marlin/Configuration_adv.h

Large diffs are not rendered by default.

78 changes: 78 additions & 0 deletions Marlin/Version_kad.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
#pragma once

////////////////////////////
// VENDOR VERSION EXAMPLE //
////////////////////////////

/**
* Marlin release version identifier
*/
#define SHORT_BUILD_VERSION "2.0.8.1-kad1"

/**
* Verbose version identifier which should contain a reference to the location
* from where the binary was downloaded or the source code was compiled.
*/
//#define DETAILED_BUILD_VERSION SHORT_BUILD_VERSION

/**
* The STRING_DISTRIBUTION_DATE represents when the binary file was built,
* here we define this default string as the date where the latest release
* version was tagged.
*/
//#define STRING_DISTRIBUTION_DATE "2021-05-15"

/**
* Defines a generic printer name to be output to the LCD after booting Marlin.
*/
//#define MACHINE_NAME "3D Printer"

/**
* The SOURCE_CODE_URL is the location where users will find the Marlin Source
* Code which is installed on the device. In most cases —unless the manufacturer
* has a distinct Github fork— the Source Code URL should just be the main
* Marlin repository.
*/
//#define SOURCE_CODE_URL "github.com/MarlinFirmware/Marlin"
#define SOURCE_CODE_URL "github.com/kad/Marlin"

/**
* Default generic printer UUID.
*/
//#define DEFAULT_MACHINE_UUID "cede2a2f-41a2-4748-9b12-c55c62f367ff"

/**
* The WEBSITE_URL is the location where users can get more information such as
* documentation about a specific Marlin release.
*/
//#define WEBSITE_URL "marlinfw.org"
#define WEBSITE_URL "github.com/kad/Marlin/wiki"

/**
* Set the vendor info the serial USB interface, if changable
* Currently only supported by DUE platform
*/
//#define USB_DEVICE_VENDOR_ID 0x0000
//#define USB_DEVICE_PRODUCT_ID 0x0000
//#define USB_DEVICE_MANUFACTURE_NAME WEBSITE_URL
174 changes: 174 additions & 0 deletions Marlin/_Bootscreen.h

Large diffs are not rendered by default.

89 changes: 89 additions & 0 deletions Marlin/_Statusscreen.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
/**
* Marlin 3D Printer Firmware
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/

#pragma once

//
// Status Screen Logo bitmap
//
#if ENABLED(KAD_SKR_BED)
#define STATUS_LOGO_X 0
#endif

#if HOTENDS < 2
#define STATUS_LOGO_WIDTH 48

const unsigned char status_logo_bmp[] PROGMEM = {
B00000000,B00011101,B11000100,B00111111,B00000000,B00000000, // ...........###.###...#....######................
B00000000,B00001100,B10000110,B00011001,B10000000,B00000000, // ............##..#....##....##..##...............
B00000000,B00001101,B00001110,B00011001,B10000000,B00000000, // ............##.#....###....##..##...............
B00000000,B00001111,B00001011,B00011001,B10000000,B00000000, // ............####....#.##...##..##...............
B00000000,B00001101,B10011111,B00011001,B10000000,B00000000, // ............##.##..#####...##..##...............
B00000000,B00001101,B11010011,B10011001,B10000000,B00000000, // ............##.###.#..###..##..##...............
B00000000,B00011100,B11111011,B11111111,B00000000,B00000000, // ...........###..#####.##########................
B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, // ................................................
B00000000,B00000000,B00000000,B00000000,B00000000,B00000000, // ................................................
B11110011,B10000000,B00000000,B00011111,B10000000,B00000000, // ####..###..................######...............
B01110111,B00000000,B00000000,B00011001,B10000000,B00000000, // .###.###...................##..##...............
B01011011,B00011100,B11110110,B00010011,B00011101,B10101110, // .#.##.##...###..####.##....#..##...###.##.#.###.
B01011011,B00110101,B10101011,B00000110,B00110101,B11111011, // .#.##.##..##.#.##.#.#.##.....##...##.#.######.##
B01011011,B00111101,B10100111,B00001100,B10111101,B10011011, // .#.##.##..####.##.#..###....##..#.####.##..##.##
B01001011,B00110000,B11101011,B00011001,B10110001,B10011011, // .#..#.##..##....###.#.##...##..##.##...##..##.##
B11100011,B10011101,B10001110,B10011111,B10011101,B10001110, // ###...###..###.##...###.#..######..###.##...###.
B00000000,B00000001,B11100000,B00000000,B00000000,B00000000, // ...............####.............................
B00000000,B00000001,B00100000,B00000000,B00000000,B00000000, // ...............#..#.............................
B00000000,B00000001,B11100000,B00000000,B00000000,B00000000 // ...............####.............................
};
#else
#define STATUS_LOGO_WIDTH 25

const unsigned char status_logo_bmp[] PROGMEM = {
B01110111,B00010000,B11111100,B00000000, // .###.###...#....######..........
B00110010,B00011000,B01100110,B00000000, // ..##..#....##....##..##.........
B00110100,B00111000,B01100110,B00000000, // ..##.#....###....##..##.........
B00111100,B00101100,B01100110,B00000000, // ..####....#.##...##..##.........
B00110110,B01111100,B01100110,B00000000, // ..##.##..#####...##..##.........
B00110111,B01001110,B01100110,B00000000, // ..##.###.#..###..##..##.........
B01110011,B11101111,B11111100,B00000000, // .###..#####.##########..........
B00000000,B00000000,B00000000,B00000000, // ................................
B00000000,B00000000,B00000000,B00000000, // ................................
B00000000,B00000000,B00000000,B00000000, // ................................
B00000000,B00000000,B00000000,B00000000, // ................................
B11110011,B10000000,B00000000,B00000000, // ####..###.......................
B01110111,B00000000,B00000000,B00000000, // .###.###........................
B01011011,B00011100,B11110110,B00000000, // .#.##.##...###..####.##.........
B01011011,B00110101,B10101011,B00000000, // .#.##.##..##.#.##.#.#.##........
B01011011,B00111101,B10100111,B00000000, // .#.##.##..####.##.#..###........
B01001011,B00110000,B11101011,B00000000, // .#..#.##..##....###.#.##........
B11100011,B10011101,B10001110,B10000000, // ###...###..###.##...###.#.......
B00000000,B00000001,B11100000,B00000000, // ...............####.............
B00000000,B00000001,B00100000,B00000000, // ...............#..#.............
B00000000,B00000001,B11100000,B00000000, // ...............####.............
B00111111,B00000000,B00000000,B00000000, // ..######........................
B00110011,B00000000,B00000000,B00000000, // ..##..##........................
B00100110,B00111011,B01001110,B00000000, // ..#..##...###.##.#..###.........
B00001100,B01101011,B11011011,B00000000, // ....##...##.#.####.##.##........
B00011001,B01111011,B00011011,B00000000, // ...##..#.####.##...##.##........
B00110011,B01100011,B00011011,B00000000, // ..##..##.##...##...##.##........
B00111111,B00111011,B00001110,B00000000 // ..######..###.##....###.........
};
#endif
2 changes: 1 addition & 1 deletion Marlin/src/HAL/STM32F1/inc/SanityCheck.h
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@
#error "SERIAL_STATS_DROPPED_RX is not supported on the STM32F1 platform."
#endif

#if ENABLED(NEOPIXEL_LED)
#if ENABLED(NEOPIXEL_LED) && DISABLED(KAD_SKR_MINI)
#error "NEOPIXEL_LED (Adafruit NeoPixel) is not supported for HAL/STM32F1. Comment out this line to proceed at your own risk!"
#endif

Expand Down
191 changes: 191 additions & 0 deletions anycubic_mega_zero.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,191 @@
############################################
# #
# KAD: Anycubic Mega Zero build variants #
# #
############################################
#
# Board: Melzi v0.0.2, PSU: 12 Volt
#
# Build targets:
#
# anycubic_mega_zero_melzi Highly recommended configuration. Manual Mesh Bed Leveling
# anycubic_mega_zero_melzi_minimal Simple menus, no advanced bed leveling
# anycubic_mega_zero_melzi_bl_zmin Automatic bed leveling, BLTouch is connected to PIN27 (Servo) and Z min stop
# anycubic_mega_zero_melzi_bl_a2 Automatic bed leveling, BLTouch is connected to PIN27 (Servo) and EXT-A2
# anycubic_mega_zero_melzi_bl_zmin_sfs Same as anycubic_mega_zero_bl_zmin, + BTT Smart filament sensor connected to EXT-A2
# anycubic_mega_zero_melzi_bl_zmin_fs Same as anycubic_mega_zero_bl_zmin, + simple filament runout sensort connected to EXT-2
# anycubic_mega_zero_melzi_bed_bl_a2 Same as anycubic_mega_zero_bl_a2, + Heated Bed
# anycubic_mega_zero_melzi_bed_bl_zmin Same as anycubic_mega_zero_bl_zmin, + Heated Bed
#

#
# Anycubic Mega Zero Melzi clone, standard config
#
[env:anycubic_mega_zero_melzi_minimal]
platform = atmelavr
extends = env:melzi
upload_speed = 115200
build_flags = ${common.build_flags} -DKAD_MELZI
extra_scripts = ${env:melzi.extra_scripts}
pre:buildroot/share/PlatformIO/scripts/env-bin.py

# Base optimized build with dynamic feature configurations
[anycubic_mega_zero_melzi_dynamic]
extends = env:anycubic_mega_zero_melzi_minimal
build_flags = ${env:anycubic_mega_zero_melzi_minimal.build_flags}
-fno-tree-scev-cprop -fno-split-wide-types
-Wl,--relax -mcall-prologues -finline-limit=3 -ffast-math
extra_scripts = pre:buildroot/share/PlatformIO/scripts/kad_build_options.py
${env:anycubic_mega_zero_melzi_minimal.extra_scripts}

#
# Anycubic Mega Zero Melzi clone, standard config with Mesh Bed Leveling
#
[env:anycubic_mega_zero_melzi]
extends = anycubic_mega_zero_melzi_dynamic
build_flags = ${anycubic_mega_zero_melzi_dynamic.build_flags}
-DMESH_BED_LEVELING

#
# Anycubic Mega Zero Melzi clone, standard config with Mesh Bed Leveling
#
[env:anycubic_mega_zero_melzi_bed]
extends = anycubic_mega_zero_melzi_dynamic
build_flags = ${anycubic_mega_zero_melzi_dynamic.build_flags}
-DMESH_BED_LEVELING

#
# Anycubic Mega Zero Melzi clone, BLTouch config, PIN27 + EXT-A2 are used to connect probe
#
[env:anycubic_mega_zero_melzi_bl_a2]
extends = anycubic_mega_zero_melzi_dynamic

#
# Anycubic Mega Zero Melzi clone, BLTouch config, PIN27 + ZMIN are used to connect probe
#
[env:anycubic_mega_zero_melzi_bl_zmin]
extends = anycubic_mega_zero_melzi_dynamic

#
# Anycubic Mega Zero Melzi clone, BLTouch config, EXT-A2 + ZMIN are used to connect probe
#
[env:anycubic_mega_zero_melzi_bl_a2_zmin]
extends = anycubic_mega_zero_melzi_dynamic

#
# Anycubic Mega Zero Melzi clone, BLTouch config
# PIN27 + ZMIN are used to connect probe.
# EXT-A2 used to connect Smart Filament Sensor
#
[env:anycubic_mega_zero_melzi_bl_zmin_sfs]
extends = anycubic_mega_zero_melzi_dynamic

# Same as above, but with bed enabled
[env:anycubic_mega_zero_melzi_bed_bl_zmin_sfs]
extends = anycubic_mega_zero_melzi_dynamic

#
# Anycubic Mega Zero Melzi clone, BLTouch config
# PIN27 + ZMIN are used to connect probe.
# EXT-A2 used to connect simple Filament Sensor
#
[env:anycubic_mega_zero_melzi_bl_zmin_fs]
extends = anycubic_mega_zero_melzi_dynamic

# Same as above, but with bed enabled
[env:anycubic_mega_zero_melzi_bed_bl_zmin_fs]
extends = anycubic_mega_zero_melzi_dynamic

#
# Anycubic Mega Zero Melzi clone, MBL config
# PIN27 used to connect Smart Filament Sensor
#
[env:anycubic_mega_zero_melzi_sfs]
extends = anycubic_mega_zero_melzi_dynamic

#
# Anycubic Mega Zero Melzi clone, MBL config
# PIN27 used to connect simple Filament Sensor
#
[env:anycubic_mega_zero_melzi_fs]
extends = anycubic_mega_zero_melzi_dynamic

#
# Anycubic Mega Zero Melzi clone, MBL config
# EXT-A2 used to connect Smart Filament Sensor
#
[env:anycubic_mega_zero_melzi_sfs_a2]
extends = anycubic_mega_zero_melzi_dynamic

#
# Anycubic Mega Zero Melzi clone, MBL config
# EXT-A2 used to connect simple Filament Sensor
#
[env:anycubic_mega_zero_melzi_fs_a2]
extends = anycubic_mega_zero_melzi_dynamic

#
# Anycubic Mega Zero Melzi clone, BLTouch config, Heated BED
# PIN27 + EXT-A2 are used to connect probe.
#
[env:anycubic_mega_zero_melzi_bed_bl_a2]
extends = anycubic_mega_zero_melzi_dynamic

#
# Anycubic Mega Zero Melzi clone, BLTouch config, Heated BED
# PIN27 + ZMIN are used to connect probe.
#
[env:anycubic_mega_zero_melzi_bed_bl_zmin]
extends = anycubic_mega_zero_melzi_dynamic

#
# Anycubic Mega Zero Melzi clone, BLTouch config, Heated BED
# EXT-A2 + ZMIN are used to connect probe.
#
[env:anycubic_mega_zero_melzi_bed_bl_a2_zmin]
extends = anycubic_mega_zero_melzi_dynamic

# BFPTouch configs
# A2: PIN27 for servo, EXT-A2 for sensor
# A2+ZMIN: EXT-A2 for servo, Zmin for sensor
# ZMIN: PIN27 for servo, zmin for sensor
[env:anycubic_mega_zero_melzi_bfpt_a2]
extends = anycubic_mega_zero_melzi_dynamic

[env:anycubic_mega_zero_melzi_bfpt_a2_zmin]
extends = anycubic_mega_zero_melzi_dynamic

[env:anycubic_mega_zero_melzi_bfpt_zmin]
extends = anycubic_mega_zero_melzi_dynamic

# PINDA inductive sensor
# Default: using PIN27 adapter
# A2: using EXT-A2
# with filament sensors: default to PIN27 and sensor to EXT-A2.
[env:anycubic_mega_zero_melzi_pinda]
extends = anycubic_mega_zero_melzi_dynamic

[env:anycubic_mega_zero_melzi_pinda_a2]
extends = anycubic_mega_zero_melzi_dynamic

[env:anycubic_mega_zero_melzi_pinda_fs]
extends = anycubic_mega_zero_melzi_dynamic

[env:anycubic_mega_zero_melzi_pinda_sfs]
extends = anycubic_mega_zero_melzi_dynamic

[env:anycubic_mega_zero_melzi_pinda_a2_fs]
extends = anycubic_mega_zero_melzi_dynamic

[env:anycubic_mega_zero_melzi_pinda_a2_sfs]
extends = anycubic_mega_zero_melzi_dynamic

# Allen Key Probe
# https://www.thingiverse.com/thing:4574066
# Default: Ext-A2
# option: zmin
[env:anycubic_mega_zero_melzi_akp_a2]
extends = anycubic_mega_zero_melzi_dynamic

[env:anycubic_mega_zero_melzi_akp_zmin]
extends = anycubic_mega_zero_melzi_dynamic
Loading

0 comments on commit cd8974f

Please sign in to comment.