Git Product home page Git Product logo

fysetc-cheetah-v2's Introduction

Cheetah v2.0

img

1. Product Introduction

Cheetah 2.0 is a single-head main control board based on STM32F401, with 4 TMC2209 onboard, supports sensor-less homing, can be connected to a variety of displays, compatible with the installation size of most of the Creality 3D machines, such as ender3, ender3 V2, ender3 pro, ender5, and is also suitable for general 3D printers DIY.

2. Features

  • Compact size: 101.5mm x 72mm,Compatible with the Creatlity ender 3 motherboard size
  • Fully integrated all in one solution:
  • STM32F401MCU (Run Marlin 2.0**/**Klipper )
  • 4X TMC2209 stepper drivers, Support sensor-less homing
  • UNIVERSAL POWER:
  • ​ Can be used with 12V/24V for motors / heated bed
  • ​ 24V to 12V/2A DC-DC for fans
  • ​ Integrated high precision power regulators (DC/DC): 5V 2A Max and 3.3V 600mA Max LDO
  • ​ 12V&24V power pin out
  • Onboard TF card socket- EXP3 for 12864 display panel (Creality 12864 panel or FYSETC Generic12864)
  • EXP1&EXP2 RepRapDiscount SmartController compatible pin header on board
  • EXP4 with I2C and UART1
  • Onboard 5V WS2812 RGB control
  • SD card & USB upload support
  • Car fuses for main power input
  • Up to 3 ways PWM fans (5/12/24 Optional)
  • PCB: FR4-TG155 PCB - Gold ENIG finishing

3. Application

  • 3D printer
  • CNC Device
  • Other similar machines
  • Voron 0.1(github gitee)

4. Hardware

4.1 Hardware Reasources

Board Name Cheetah v2.0
License GPL V2.0
Latest Version V2.0
Extruders 1
Controlled Fans 3 Max
Heaters 2 Max
Endstops 3 Max
Temp sens 2 Max
UART 1
I2C 1
SWD 1
USB 1
CPU STM32F401
CPU Speed ( MHz ) 84 Mhz
Stepper driver 4X TMC2209
Stepper driver Type Onboard
Input 12v/24v
Output BED OUT:10A Max ;Heater Out:5A Max

4.2 Connectors and jumpers define

Coming soon...

4.3 Pin Definition

FeaturesCheetah PinSTM32 PinPin No.Comment
X-MOTOR(1)X-StepPC08
X-DIRPC19
X-ENPA841
Y-MOTOR(2)Y-StepPC143
Y-DIRPC132
Y-ENPC154
Z-MOTOR(3)Z-StepPB962
Z-DIRPB861
Z-ENPC210
E0-MOTOR(4)E0-StepPB228
E0-DIRPA1550
E0-ENPD254
TMC2209 SERIAL (UART2)TX2PA216
RX2PA317
End-stopsX-MINPB456
Y-MINPC839
Z-MINPB127
PWMBLTOUCH/PROBEPA014
FIL-DETFIL-DETPB557
FANFAN0PA1449
FAN1PA1346
FAN2PA115
RGBNeo-pixelPB026Can be used for fan4
HeatingE0-HeaterPC637
Heated-BedPC738
TemperatureTE0PC424
TBPC525
EXP1SD-MISOPA622
SD-SCKPA521
BTN_EN1PC1051
SD-SSPA420
BTN_EN2PC1152
SD-MOSIPA723
SD-DETPC311
RESETNRST7
GNDGNDNA
5V5VNA
EXP2BEEPPC940
BTN_ENCPC1253
LCD_ENPB1536
LCD_RSPB1233
LCD_D4PB1334
LCD_D5PB1435
LCD_D6PB658
LCD_D7PB759
GNDGNDNA
5V5VNA
UARTTXPA9/TX142
RXPA10/RX143
I2CI2C2 SCLPB1029
I2C2 SDAPB1130
SWD DebugSWDIOPA1346only used for debugging now and can be used for other purposes.
SWCLKPA1449only used for debugging now and can be used for other purposes.

4.4 Wiring

4.4.1 Bltouch wiring

klipper config

[bltouch]
sensor_pin: ^PA0
control_pin: PB1

4.4.2 VORON 0.1 wiring

Please refer to our VORON 0.1 kit wiring here( github or 国内)

5. Firmware

5.1 Marlin

Follow the steps below to compile the firmware yourself. You can learn more on Marlin official website here.

5.1.1 Download Vscode + platformio

To compile the firmware , you need to install Visual Studio Code and the platformio pulg-in.

5.1.2 Config firmware

Step 1: Get marlin code

You have two choices to get Marlin code.

Choice 1

You can get Marlin code in the firmware/Marlin folder in this repository ( github gitee ).

Choice 2

Also you can get upstream Marlin official branch from github or gitee.

Step 2: Change motherboard related configurations.

In marlin firmware you have downloaded, you should find platformio.ini , configuration.h and configuration_adv.h file.

  1. First we need to change default_envs in platformio.ini file.
default_envs = FYSETC_CHEETAH_V20
  1. Change MOTHERBOARD define in Configuration.h
#define MOTHERBOARD BOARD_FYSETC_CHEETAH_V20
  1. Change Serial port define in Configuration.h
#define SERIAL_PORT -1
#define BAUDRATE 115200
Step 3: Change other configurations

Except the motherboard related configurations, you still need to set like machine size and print speed and others configurations in configuration.h, and configuration_adv.h. And you can find machine related example configurations on Marlin github here which you can refer to.

5.1.3 Compile the firmware

Once you finish setting the firmware, we can try to compile the firmware. Open Vscode and open platformio main page and click the "Open Project" button , and direct to the folder where you put your firmware.

1561099422559

If everything goes fine , at the bottom you can see several buttons

1561099546202

Just click check mark to compile.

5.1.4 Upload the firmware

Follow the instruction here.

5.2 Klipper

Till now(2021/11/30), Klipper don't have boot offset setting for STM32F401 chip, so we use no Bootloader option first. (If you want still want to use Cheetah bootloader, you can change the code following the PR here, then use 32KiB bootloader option).

make clean
make

Then follow the Firmware Upload section instruction below to upload the firmware.

I made the PR for Klipper of Cheetah v2.0 config, you can check it here.

5.3 Firmware Upload

We provide several ways to upload the firmware.

5.3.1 Upload the firmware(SDCARD)

If you use Klipper firmware with No bootloader option, you can't use this method. This method only works with bootloader.

Uploading firmware using SD card is our default way to update the firmware as Cheetah v2.0 already has the bootloader on it when it leave the factory. But if you once upload the firmware to Cheetah v2.0 flash address 0x08000000, then the bootloader in Cheetah v2.0 will be gone, then you need to upload the bootloader to Cheetah v2.0 yourself, please follow the README in bootloader folder (github or gitee) to upload the bootloader.

How to upload firmware with bootloader

Copy your compiled firmware file firmware.bin(If you use klipper firmware, you need to rename klipper.bin to firmware.bin) file to the SD card , and insert it to the SD card slot which is at the right side of the board, and then power up the board. You may need to wait for about 30s to finish uploading. When finished firmware name will change to old.bin.

5.3.2 Upload the firmware(dfu-util)

This method works in linux, that means should work in raspberry pi.

  1. Enter DFU mode first

    • First power off the board
    • Place jumper on BT0 and 3.3V pinimage-20211130182000593
    • Connect USB cable to the board and your computer
    • Power up the board with 24v
  2. Make sure dfu-util is installed, shoot dfu-util --version command to check.

    Sample output:

    dfu-util 0.9
    
    Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
    Copyright 2010-2016 Tormod Volden and Stefan Schmidt
    This program is Free Software and has ABSOLUTELY NO WARRANTY
    Please report bugs to http://sourceforge.net/p/dfu-util/tickets/
    

    If not , you should install it first, use the package manager of your distribution to get the latest version, like

    sudo apt-get install dfu-util
    
  3. Then use the command below to upload the firmware. You should replace firmware.bin below with your built firmware bin file location like out/klipper.bin. Change flash address 0x08008000 to bootloader you choosed. (If you use Marlin firmware, you need to set it to 0x08008000. If you use klipper firmware and you choose boot address 32kiB bootloader (decribe here) when compiling klipper then set it 0x08008000, if no Bootloader , set it 0x08000000.)

    dfu-util -R -a 0 -s 0x08008000:leave -D firmware.bin
    
  4. Remove boot jumper and power-off then power on the board.

5.3.3 Upload the firmware(WINDOWS DFU)

The other way to upload the firmware is using DFU.

Step 1. Download stm32cubeprogrammer

You can download it from ST website.

https://www.st.com/zh/development-tools/stm32cubeprog.html

Open the STM32CubeProgrammer software.

1574332767079

Step 2. Enter DFU mode
  1. First power off the board
  2. Place jumper on BT0 and 3.3V pinimage-20211130182000593
  3. Connect USB cable to the board and your computer
  4. Power up the board with 24v

Now the board is in DFU mode.

REMEMBER to remove the jumper if you finish uploading firmware or it will enter DFU mode again.

Step 3. Upload the firmware

Now you can connect and flash the Cheetah board with stm32cubeprogrammer with the following operation.

1574386395071

Do as the red number shows in the screen shot.

  1. Click the button to find the DFU port.
  2. Connect the DFU
  3. Choose the "firmware.bin" file.
  4. If your firmware is .hex file, skip this step. Fill in the 'Start address' with (If you use Marlin, set it 0x08008000. If you use Klipper firmware and you choose boot address 32kiB bootloader (decribe here) when compiling klipper then set it 0x08008000, if no Bootloader , set it 0x08000000.)
  5. Start Programming
  6. Remove boot jumper and power-off then power on the board.

5.3.4 Upload firmware(platformio)

If you compile Marlin yourself with platformio,you can follow the instructions below to upload the firmware.

Step 1. Enter DFU mode first
  • First power off the board
  • Place jumper on BT0 and 3.3V pinimage-20211130182000593
  • Connect USB cable to the board and your computer
  • Power up the board with 24v
Step 2. Click the upload button to upload firmware

6. FAQ

To be done...

7. Tech Support

Please submit any technical issue into our forum

fysetc-cheetah-v2's People

Contributors

dai757 avatar eliwong avatar gerogefu avatar marcoa131 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

fysetc-cheetah-v2's Issues

i2c2 pins in cheetah v2.0

There is a discrepancy in schematic (Cheetah_Board V2.0_SCH.pdf) of the board and pin definitions, i2c2 should be PB10/PB11, but in schematic it's PB10/PB3? There is also a note about capacitor on PB11 that disables i2c, so what is the state of the hardware? I'm trying to connect ssd1306 display via i2c to be used in klipper, but it timeouts on PB10/PB11.

mini lcd 12864 v2.1

hi,
i can switch on my fysetc lcd v2.1 on cheetah but nothing appear...

here is my setup...

[display]
lcd_type: uc1701
cs_pin: PB15
a0_pin: PB12
rst_pin: PB13
contrast: 63
encoder_pins: ^PC10, ^PC11
click_pin: ^!PC12

Some micro-controller boards may require an spi bus to be specified:

#spi_bus: spi

Alternatively, some micro-controller boards may work with software spi:

spi_software_miso_pin: PA6
spi_software_mosi_pin: PA7
spi_software_sclk_pin: PA5

#[output_pin beeper]
#pin: EXP2_10

[neopixel fysetc_mini12864]
pin: PB0
chain_count: 3
color_order: RGB
initial_RED: 0.1
initial_GREEN: 0.5
initial_BLUE: 0.0

[delayed_gcode setdisplayneopixel]
initial_duration: 1
gcode:
SET_LED LED=fysetc_mini12864 RED=1 GREEN=1 BLUE=1 INDEX=1 TRANSMIT=0
SET_LED LED=fysetc_mini12864 RED=1 GREEN=0 BLUE=0 INDEX=2 TRANSMIT=0
SET_LED LED=fysetc_mini12864 RED=1 GREEN=0 BLUE=0 INDEX=3

Fans are not spinning on ender3

i used the provided generic icd hardware but the fans i directly attached to it refused to spin i had placed the jumpers over 24 volt still have nothing

Cheetah-v2 short?

I am using Cheetash-v2 as control board for Voron 0.1. I found that the heaters does not work and the cooling fans will not start when I was running the intial startup for voron 0.1.

I tested the output pins of the cheetah-v2 board, and both the power and ground pins for heaters and cooling fans give me 24V. Then I turn off the power and tested the resistance of those pins. It seems they are all good and no short is happening.

I am really not sure if there is a short happening, since the reisistances are normal and I do not think there was any magic gas leaking when I first boot the board. So I am not sure about what to do. Is there anything I can do to find out the issue? Or should I just buy a new board?

extruder thermistor is not accurate

on the tempertaure grapth the line is not straight and there are a lot +/-1 degree of celsius lag which causes inconsitent extrusion. after switching to skr pico with the same rest of hardware I can see +/- 0.2 degree of celsius lag.

Fan pins are flipped

  • and - of the fans are the flipped. I solved this on my board by just flipping the white sockets for the fans. You can get them off the board with tweezers.

#define PRINTCOUNTER: not worlking

getting compile error: Marlin\src\HAL\STM32../../inc/../HAL/STM32/inc/SanityCheck.h:42:4: error: #error "Disable PRINTCOUNTER or choose another EEPROM emulation."

Connection issue with TFT24 v1.1

Hello,

I bought a Cheetah v2.0, that I would like to run with a TFT24 v1.1 screen. I managed to connect it in "Touch screen mod" (still got a "no printer attached" issue, but it's not a big deal I think).

What bothers me, i can't connect it either in "Marlin mode", with EXP1 and EXP2 ports...

I found EXP1 pin definition here, but does anyone have those for the other EXP ports please?

Thanks a lot.

3d model

Is there a 3D model (in something like STEP, STL or 3mf format) of the Cheetah v2 board?

Getting Klipper to run on Ender3 hardware

Hello
I was looking for a new board for my first revision Ender 3 which used old Creality v1.1.4 board. Of course my first choice was SKR Mini E3 v3 but then I found FYSETC Cheetah v2 which has a few advantages in my opinion. I want ahead and bought one.

I'm trying to get Klipper to run on my machine but I noticed the provided configuration files are not 100% correct for Ender3. I had to make a few changes:

@@ -1,129 +1,195 @@
 [mcu]
 ##	Obtain mcu value by "ls -l /dev/serial/by-id/"
-serial: /dev/serial/by-id/usb-Klipper_stm32f401xc_4C004E000C51383336383937-if00
+serial: /dev/serial/by-id/usb-Klipper_stm32f401xc_150036001951383336383937-if00

 [stepper_x]
 step_pin: PC0
-dir_pin: PC1
+dir_pin: !PC1
 enable_pin: !PA8
 rotation_distance: 40
 microsteps: 16
 endstop_pin: ^PB4
 position_endstop: 0
-position_max: 200
+position_max: 240
 homing_speed: 50

 [tmc2209 stepper_x]
 uart_pin: PA3
 tx_pin: PA2
 uart_address: 0
 run_current: 0.800
 hold_current: 0.500
 stealthchop_threshold: 250

 [stepper_y]
 step_pin: PC14
 dir_pin: !PC13
 enable_pin: !PC15
 rotation_distance: 40
 microsteps: 16
-endstop_pin: ^PB3
+endstop_pin: ^PC8
 position_endstop: 0
-position_max: 200
+position_max: 240
 homing_speed: 50

 [tmc2209 stepper_y]
 uart_pin: PA3
 tx_pin: PA2
 uart_address: 2
 run_current: 0.800
 hold_current: 0.500
 stealthchop_threshold: 250

 [stepper_z]
 step_pin: PB9
 dir_pin: PB8
 enable_pin: !PC2
 rotation_distance: 8
 microsteps: 16

endstop_pin: ^PB1
position_endstop: 0
position_max: 250

 [tmc2209 stepper_z]
 uart_pin: PA3
 tx_pin: PA2
 uart_address: 1
 run_current: 0.800
 hold_current: 0.500
 stealthchop_threshold: 5

 [extruder]
 step_pin: PB2
 dir_pin: !PA15
 enable_pin: !PD2
-rotation_distance: 33.500
+rotation_distance: 33.683
 microsteps: 16

 nozzle_diameter: 0.400
 filament_diameter: 1.750
 heater_pin: PC6
 sensor_type: EPCOS 100K B57560G104F
 sensor_pin: PC4
 control: pid
 pid_kp: 21.527
 pid_ki: 1.063
 pid_kd: 108.982
 min_temp: 0
 max_temp: 250

 [tmc2209 extruder]
 uart_pin: PA3
 tx_pin: PA2
 uart_address: 3
 run_current: 1.0
 hold_current: 0.500
 stealthchop_threshold: 5

 [heater_bed]
 heater_pin: PC7
 sensor_type: EPCOS 100K B57560G104F
 sensor_pin: PC5
 control: pid
 pid_kp: 54.027
 pid_ki: 0.770
 pid_kd: 948.182
 min_temp: 0
 max_temp: 130

 #fan for printed model FAN0
 [fan]
 pin: PA14

 #fan for hotend FAN1
-#[heater_fan my_nozzle_fan]
-#pin: PA13
+[heater_fan hotend_fan]
+pin: PA13
+heater: extruder
+heater_temp: 50.0
+
+#fan for mainboard FAN2
+[fan_generic mcu_fan]
+pin: PA1

 [printer]
 kinematics: cartesian
 max_velocity: 300
 max_accel: 3000
 max_z_velocity: 5
 max_z_accel: 100

 [board_pins]
 aliases:
     # EXP1 header
     EXP1_1=<5V>,  EXP1_3=<RST>, EXP1_5=PA7,  EXP1_7=PA4,  EXP1_9=PA5,
     EXP1_2=<GND>, EXP1_4=PC3,   EXP1_6=PC11, EXP1_8=PC10, EXP1_10=PA6,

     # EXP2 header
     EXP2_1=<5V>,  EXP2_3=PB7, EXP2_5=PB14, EXP2_7=PB12, EXP2_9=PC12,
     EXP2_2=<GND>, EXP2_4=PB6, EXP2_6=PB13, EXP2_8=PB15, EXP2_10=PC9,

     # EXP3 header
     EXP3_1=PC9,  EXP3_3=PC10, EXP3_5=PC11, EXP3_7=PB12, EXP3_9=<GND>,
     EXP3_2=PC12, EXP3_4=PB14, EXP3_6=PB13, EXP3_8=PB15, EXP3_10=<5V>
     # Pins EXP1_4, EXP1_8, EXP1_6 are also MISO, MOSI, SCK of bus "spi2"

+[display]
+lcd_type: st7920
+cs_pin: EXP3_7
+sclk_pin: EXP3_6
+sid_pin: EXP3_8
+encoder_pins: ^EXP3_5, ^EXP3_3
+click_pin: ^!EXP3_2
+
+[output_pin beeper]
+pin: EXP3_1

This is a good starting point if someone is struggling to get Ender3 hardware to work properly.

I have multiple isues though:

  • I can't get internal MCU temperature sensor to work. Since Ender3 has additional fan for the mainboard I'd like to run it only when it gets too warm. I tried configuring custom temperature sensor:
[temperature_sensor mcu_temp]
sensor_type: temperature_mcu
sensor_mcu: mcu
min_temp: 0
max_temp: 100

But I get MCU 'mcu' shutdown: Not a valid ADC pin error.

  • Can't get BLTouch to work - this is the most frustrating one. I'm using v3.0 3D Touch clone on my setup and it was working properly with previous board. Now with Cheetah v2 Klipper can't control the probe, it doesn't react to any BLTOUCH_DEBUG commands. My config for BLTouch looks like this:
[bltouch]
sensor_pin = ^PB1
control_pin = PA0
x_offset: -45
y_offset: -8
z_offset: 3.2
samples: 2
speed: 10.0
probe_with_touch_mode: true
stow_on_each_sample: false

Any idea how to deal with these issues, especially BLTouch?

MCU Temperature sensor not working

When I define the MCU temperature sensor in printer.cfg I get the MCU 'mcu' shutdown: Not a valid ADC pin error.
That should work with the STM32 pcu. Is the internal temp sensor included?

[temperature_sensor mcu_temp]
sensor_type: temperature_mcu
min_temp: 0
max_temp: 100

Difference between 5V, DC5V and USB_5V?

The image below shows three power pins that are grouped on the board:

image

I'm unable to tell what the difference between these pins is. They all seem to do the same thing: provide 5V power. However, they're separate, and named differently, so what exactly is the difference, if any?

Context for this question: I am trying to power a SBC running Klipper, and would like to know which of these pins I can use for 5V power.

Example connection for neopixel

In the readme there is a mention of neopixel support, but there is no indication of where it should be used. It is also mentioned that the board pins can be used as 4th fan, but still no 2-pin connector that seems suitable can be seen in the pictures

EXP1 and EXP2 are mirrored

After spending plenty of time trying to get one of your 12864 displays connected, I have figured out the reason: The mapping of EXP1 and EXP2 (and possibly EXP3 too, haven't checked) is inverted (e.g. 1 is 10, 10 is 1, and so on). When trying to set up your 12864 according to the default klipper config for lcds, this leads to klipper not being able to run due to errors such as pin EXP1_3 is reserved for <RST> preventing startup. When invering the pin headers, the display starts working flawlessly.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.