Hardware
하드웨어 스펙
KP3S의 기존 기구부를 그대로 활용. 보드와 스핀들만 CNC용으로 재구성.
메인보드
MKS Robin Nano V1.x
MCU
STM32F103VE (512KB flash)
스텝 드라이버
TMC2225 (온보드, TMC2209_STANDALONE 호환)
모터
NEMA17 × 3 (X/Y/Z)
X / Y 리니어
MGN12 리니어레일 + GT2 벨트
Z 리니어
V-slot 휠 + T8 리드스크류
LCD
MKS TFT 3.2" (ST7789V, 320×240)
LCD 인터페이스
FSMC 병렬 버스
USB
CH340 → UART3 (시리얼 통신)
스핀들
555 DC모터 Ø36mm, 12V, ~8000RPM
스핀들 축
Ø3.25mm → 콜릿 3.175mm
스핀들 제어핀
HE0 MOSFET (PC3) ON/OFF
✅ SWD 펌웨어 플래싱 해결 —
J11 6핀 SWD 헤더 정상 연결 확인 (3.3V / GND / SWDIO-PA13 / SWCLK-PA14 / RESET).
RP2040-Zero + debugprobe 펌웨어로 CMSIS-DAP SWD 프로그래머 구현 → SD카드 없이 USB에서 직접 플래시 가능.
상세 절차 →
SD카드 FAT32 필수 — MKS 부트로더는 FAT32만 인식. 256GB exFAT 카드 사용 시 FAT32 파티션을 별도 생성해야 함.
파일명은 반드시 Robin_nano.bin (Robin_nano35.bin ❌).
BOM
부품 구성 — 재활용 vs 신규
KP3S 기존 부품을 최대한 재활용. 추가 비용은 3D프린트 필라멘트와 소모품뿐.
| 분류 |
부품 |
출처 |
비용 |
비고 |
| 기구부 |
KP3S 프레임 일체 |
재활용 |
₩0 |
알루미늄 프로파일 + 플레이트 |
| 리니어 |
MGN12 레일 × 2 (X/Y) |
재활용 |
₩0 |
GT2 벨트 포함 |
| 리니어 |
V-slot + T8 리드스크류 (Z) |
재활용 |
₩0 |
Z축 이송계 |
| 모터 |
NEMA17 × 3 |
재활용 |
₩0 |
X/Y/Z 스테핑모터 |
| 전자부 |
MKS Robin Nano V1 |
재활용 |
₩0 |
Marlin CNC 모드로 리플래시 |
| 전자부 |
MKS TFT 3.2" LCD |
재활용 |
₩0 |
TFT_COLOR_UI 표시 |
| 전원 |
KP3S 12V PSU |
재활용 |
₩0 |
보드 + 스핀들 공급 |
| 스핀들 |
555 DC모터 (Ø36mm, 12V) |
신규 |
~₩5,000 |
~8000RPM, HE0 MOSFET 제어 |
| 마운트 |
555 모터 마운트 (PLA) |
3D프린트 |
~₩500 |
K1C로 출력 |
| 워크홀딩 |
PCB 클램프 지그 (PLA) |
3D프린트 |
~₩500 |
PCB 고정 지그 |
| 워크홀딩 |
슬라이드 클램프 × 8 (PLA) |
3D프린트 |
~₩300 |
희생판 고정 |
| 드릴 비트 |
카바이드 PCB 비트 세트 |
신규 |
~₩15,000 |
Ø0.8 / 1.0 / 1.2 / 1.5mm |
| 익스트루더 |
핫엔드 / 노즐 / 히터 |
제거 |
— |
3D프린팅 기능 완전 폐기 |
| 추가 비용 합계 |
~₩21,300 |
KP3S 본체 가격 제외 |
Firmware
펌웨어 설정 — Marlin CNC 모드
Marlin 2.x를 MKS Robin Nano V1 + CNC 모드로 빌드. 3D 프린팅 기능 완전 제거.
Configuration.h 핵심 설정
MOTHERBOARD = BOARD_MKS_ROBIN_NANO
MACHINE_NAME = "KP3S PCB Drill"
X/Y/Z_DRIVER_TYPE = TMC2209_STANDALONE
EXTRUDERS = 1
TEMP_SENSOR_0 = 0
TEMP_SENSOR_BED = 0
SERIAL_PORT = 3
MKS_ROBIN_TFT28
TFT_COLOR_UI
TFT_MIRROR_X
Configuration_adv.h 스핀들 설정
SPINDLE_FEATURE // 활성
SPINDLE_LASER_ENA_PIN = PC3
SPINDLE_LASER_POWERUP_DELAY = 1000
SPINDLE_LASER_POWERDOWN_DELAY = 1000
EXTRUDERS=1이 필요한 이유 — TFT_COLOR_UI는 EXTRUDERS≥1이어야 컴파일됨. EXTRUDERS=0으로 하면
AXIS_RELATIVE_MODES 배열 원소 수 불일치로 빌드 실패. TEMP_SENSOR_0=0으로 설정해 실제 히터 없이 동작.
빌드된 펌웨어 파일
| 파일명 | 크기 | 상태 | 설명 |
Robin_nano.bin |
198KB |
✅ 현재 적용 |
TFT_COLOR_UI + TFT_MIRROR_X — 2026-05-01 플래시 완료 |
Robin_nano_cnc_ui.bin |
190KB |
이전 버전 |
초기 CNC UI 시도 |
Robin_nano35.bin |
119KB |
❌ 인식불가 |
잘못된 파일명 — KP3S 부트로더 미인식 |
Spindle
스핀들 제어 — 555 DC 모터
KP3S 익스트루더 히터 MOSFET(HE0)을 스핀들 ON/OFF 제어로 재활용.
⚡
HE0 MOSFET 재활용
원래 핫엔드 히터 제어용 MOSFET(PC3 핀)을 스핀들 전원 스위치로 재사용.
Marlin의 SPINDLE_LASER_ENA_PIN을 PC3로 지정.
🔄
ON/OFF 전용
555 DC모터는 PWM 속도 제어 없이 12V 풀전압 ON/OFF로만 동작.
PCB 드릴링은 항상 최대 RPM을 사용하므로 PWM 불필요.
📟
G-code 명령
M3 — 스핀들 ON (1초 가동 딜레이)
M5 — 스핀들 OFF
FlatCAM이 드릴 G-code에 자동 삽입.
555 DC모터 스펙
외경
Ø36mm × 57mm
전압
12V DC
무부하 RPM
~8,000 RPM
축 직경
Ø3.25mm
콜릿 사이즈
3.175mm (1/8")
제어 방식
HE0 MOSFET ON/OFF
Control
USB 제어 — CNCjs
펌웨어 플래시 후에는 SD카드 불필요. USB 시리얼로 실시간 G-code 전송 및 조그 제어.
✅ SD카드 없이 동작 가능 — 펌웨어가 이미 KP3S에 올라가 있으므로 USB(CH340) 연결만으로
CNCjs에서 직접 G-code 전송, 조그 이동, 스핀들 ON/OFF 모두 가능.
CNCjs 시작 방법
# 터미널에서 실행
cncjs
# 브라우저에서 접속
http://localhost:8000
# 연결 설정
포트: /dev/tty.usbserial-*
Baud: 115200
컨트롤러: Marlin
주요 G-code 명령
G92 X0 Y0 Z0
G0 X10 Y10
G1 Z-1.5 F100
M3
M5
G81 X5 Y5 Z-1.6 R1 F80
Pipeline
G-code 파이프라인
KiCad 설계 파일부터 실제 드릴링까지 전체 흐름.
KiCad (회로설계)
│
▼ File → Export → Drill (.drl, Excellon 포맷)
│
▼ FlatCAM
│ ├─ .drl 파일 임포트
│ ├─ 드릴 직경별 그룹화
│ ├─ TSP 경로 최적화 (이동거리 최소화)
│ └─ G81/G83 드릴 사이클 G-code 생성 → .nc 출력
│
▼ CNCjs (localhost:8000, USB)
│ ├─ .nc 파일 로드
│ ├─ XY 원점 설정 (PCB 기준점 맞춤)
│ ├─ Z 원점 설정 (PCB 표면 = Z0)
│ └─ M3 → G-code 실행 → M5
│
▼ KP3S PCB Drill
├─ 555모터 ON
├─ XY 이동 → 홀 위치
├─ Z 하강 → 관통 드릴링
├─ Z 상승 → 다음 홀로 이동
└─ 완료
SWD Flash
SWD 펌웨어 플래싱 — RP2040-Zero debugprobe
SD카드 없이 USB만으로 펌웨어 완전 제어. RP2040-Zero + debugprobe + OpenOCD. 핵심 발견: Marlin 링커스크립트 고정 베이스 0x08007000 — 36바이트 ARM Thumb 트램폴린으로 CPU 리셋 벡터 간극 해결.
문제 → 해결
❌
기존 문제
펌웨어 수정할 때마다:
① PlatformIO 빌드 → Robin_nano.bin 생성
② SD카드에 파일 복사
③ 보드에 SD카드 삽입
④ 전원 투입 → 플래시
⑤ SD카드 제거
매번 SD카드를 빼고 꽂는 반복 작업. 보드 위치가 좁아 접근성 불량.
✅
SWD 해결
RP2040-Zero + debugprobe 펌웨어:
① PlatformIO 빌드 → Robin_nano.bin 생성
② OpenOCD 명령 한 줄 실행
③ 끝. SD카드 불필요.
J11 SWD 헤더 상시 연결 → 커맨드 한 줄로 플래시 완료.
J11 SWD 헤더 (보드 실물 확인 완료)
┌─────────────────┐
│ J11 6-Pin SWD │
├────┬────────────┤
│ 1 │ 3.3V │
│ 2 │ SWDIO (PA13, Pin 72) │
│ 3 │ SWCLK (PA14, Pin 76) │
│ 4 │ RESET │
│ 5 │ │
│ 6 │ (NC) │
└────┴────────────┘
RP2040-Zero → debugprobe 변환 과정
Step 1 — UF2 펌웨어 설치
debugprobe.uf2 플래시
BOOT 버튼 누른 채 USB 연결 → RPI-RP2 드라이브 마운트 → debugprobe_on_pico.uf2 파일 드래그 앤 드롭.
자동 재부팅 후 CMSIS-DAP 디바이스로 인식됨.
Step 2 — 배선 (3선)
RP2040-Zero ↔ J11 SWD 헤더 연결
| RP2040-Zero | → | J11 SWD 헤더 |
| GP2 | → | SWDIO (PA13) |
| GP3 | → | SWCLK (PA14) |
| GND | → | GND |
3.3V 연결 불필요 — Robin Nano 보드 자체 전원 사용. RP2040은 USB에서 전원 공급.
Step 3 — 핵심 발견 (2026-05-12)
Robin_nano.bin은 SWD 불가 — raw binary 추출 필수
Robin_nano.bin은 MKS 전용 암호화 바이너리 (SD카드 부트로더용). SWD에서 직접 플래시하면 부팅 불가. PlatformIO 빌드 후 ELF에서 raw binary를 추출해야 한다.
arm-none-eabi-objcopy -O binary \
.pio/build/mks_robin_nano_v1v2/firmware.elf \
firmware_marlin_raw.bin
Step 4 — 핵심 발견 (2026-05-12)
링커스크립트 — 앱 베이스는 0x08007000 고정
mks_robin_nano.ld 링커스크립트가 rom ORIGIN = 0x08007000으로 고정되어 있다. 즉, 앱의 모든 절대 주소 포인터가 0x08007xxx 영역을 가리킨다. 그런데 STM32는 리셋 시 CPU가 0x08000000에서 SP/PC를 읽는다. MKS 부트로더 없이 SWD 단독 플래시 시 0x08000000이 0xFF(소거 상태)이면 SP=0xFFFFFFFF → 즉시 double fault.
MEMORY {
ram (rwx) : ORIGIN = 0x20000000, LENGTH = 64K - 40
rom (rx) : ORIGIN = 0x08007000, LENGTH = 512K - 28K - 4K
}
Step 5 — 핵심 해결 (2026-05-12)
36바이트 ARM Thumb 트램폴린 — 보드 복구 완료
0x08000000에 36바이트 트램폴린을 배치한다. CPU가 리셋 시 0x08000000에서 부팅 → 트램폴린이 SCB_VTOR을 0x08007000으로 설정 → 앱의 SP/PC를 로드 → BX로 앱 진입. 이 트램폴린이 없으면 보드가 부팅 불가.
Step 6 — 완성된 플래시 워크플로우
완전한 SWD 플래시 순서 (SD카드 완전 불필요)
arm-none-eabi-objcopy -O binary \
.pio/build/mks_robin_nano_v1v2/firmware.elf firmware_marlin_raw.bin
openocd -f interface/cmsis-dap.cfg -f target/stm32f1x.cfg \
-c "init; halt; stm32f1x mass_erase 0; exit"
openocd -f interface/cmsis-dap.cfg -f target/stm32f1x.cfg \
-c "program trampoline_0x08000000.bin 0x08000000 verify reset exit"
openocd -f interface/cmsis-dap.cfg -f target/stm32f1x.cfg \
-c "program firmware_marlin_raw.bin 0x08007000 verify reset exit"
| 주소 범위 | 내용 | 크기 |
0x08000000 ~ 0x08000023 | ARM Thumb 트램폴린 (★ 필수) | 36 bytes |
0x08000024 ~ 0x08006FFF | 미사용 (소거 상태) | ~28KB |
0x08007000 ~ 끝 | Marlin firmware_marlin_raw.bin | ~200KB |
⚠️ mass_erase 후 반드시 트램폴린 재플래시 필요 — 소거 시 0x08000000도 지워짐.
OpenOCD 설치: brew install openocd (macOS) — RP2040 debugprobe는 CMSIS-DAP 표준 프로토콜이므로 별도 드라이버 불필요. trampoline 파일 위치: ~/Desktop/kp3s-cnc/trampoline_0x08000000.bin
비용
₩0
추가 비용 — RP2040-Zero 보유 활용
• RP2040-Zero: 보유중 (다른 프로젝트 전용)
• 점퍼선 3개: 보유
• 대안: ST-Link V2 클론 (~₩3,000) — 동일 결과
• SD카드 완전 불필요 — USB만으로 펌웨어 전체 관리
3D Prints
3D 프린트 파트
K1C로 PLA 출력. OpenSCAD 파라메트릭 설계.
| 파일 |
크기 |
용도 |
소재 |
555_motor_mount.stl |
280KB |
555 DC모터 Z축 캐리지 마운트 |
PLA |
pcb_clamp_jig.stl |
130KB |
PCB 기판 위치 고정 지그 |
PLA |
slide_clamp.stl |
21KB |
희생판 슬라이드 클램프 (단품) |
PLA |
slide_clamp_x8.stl |
130KB |
슬라이드 클램프 × 8 (배치 출력) |
PLA |
pcb_vise.scad |
— |
PCB 바이스 (베이스 + 가동조 + 핸들) — Ø8mm 볼스크류 500mm |
PLA |
PCB 바이스 — 볼스크류 가변 클램핑
100×100×30mm 베이스에 상단 10mm 위치에 PCB 슬롯(2mm 홈 전후면). Ø8mm 볼스크류(500mm, 보유)로 가변 조임.
KP3S 알루미늄 베드에 Ø4mm 나사로 직접 고정. 3파트 분할 출력.
📐
베이스 (Base)
100×100×30mm. PCB 슬롯(상단 10mm, 2mm 깊이 × 90mm 길이), Ø8.3mm 볼스크류 관통홀(Z=15mm),
4코너 Ø4mm 마운팅홀(베드 고정용), 가동조 이동 공간 포켓.
🔧
가동조 (Jaw)
20×90×28mm. Ø8.3mm 볼스크류 관통홀 + M8 육각너트 포켓(13mm across flats).
볼스크류 회전 → 조 이동 → PCB 양측 고정.
🎛️
핸들 (Knob)
Ø30×15mm 원형 노브. 4개 핑거 그립 홀(Ø8mm), Ø8.3mm 중심 관통,
M3 세트스크류 홀(볼스크류 잠금). 허브 12×5mm 돌출.
base_w = 100;
base_d = 100;
base_h = 30;
slot_from_top = 10;
slot_depth = 2;
screw_dia = 8;
mount_dia = 4;
Z=0 원점 설정: 콜릿-릴리즈 방식 — 콜릿을 살짝 풀어 드릴비트가 중력으로 PCB 표면에 안착 → 다시 조임 → Z=0 설정.
Ø0.8mm 초미세 비트는 접촉식 원점잡기 시 100% 휘어짐 — 반드시 콜릿-릴리즈 방식 사용.
OpenSCAD 소스: ~/Desktop/kp3s-cnc/*.scad
STL: ~/Desktop/kp3s-cnc/*.stl
Troubleshooting
트러블슈팅 기록
전환 과정에서 겪은 문제와 해결 방법.
해결
펌웨어 파일명 오류 — Robin_nano35.bin
KP3S 부트로더는 Robin_nano.bin만 인식. Robin_nano35.bin으로 저장 시 플래시 무시. → 파일명 변경으로 해결.
해결
256GB SD카드 exFAT — 부트로더 인식 불가
MKS 부트로더가 FAT32만 지원. 256GB 카드는 기본 exFAT 포맷. → 디스크 유틸리티에서 FAT32 파티션 별도 생성 후 해결.
해결
EXTRUDERS=0 빌드 실패
TFT_COLOR_UI가 EXTRUDERS≥1 요구. AXIS_RELATIVE_MODES 배열 크기 불일치로 컴파일 에러. → EXTRUDERS=1 + TEMP_SENSOR_0=0으로 해결.
부분 해결
LCD 방향 — ST7789V vs MKS_ROBIN_TFT28 충돌
MKS_ROBIN_TFT28 기본 방향(EXCHANGE_XY|INVERT_Y)이 KP3S의 ST7789V 패널과 맞지 않음.
TFT_ROTATE_90/180/270, TFT_MIRROR_Y 등 다수 시도 후 화면 깨짐 또는 반전 현상 지속.
최종 결정: TFT_MIRROR_X 상태 유지 + 물리적으로 LCD를 회전 장착.
해결 (2026-05-09)
USB 펌웨어 플래시 → RP2040-Zero SWD로 해결
STM32 시스템 부트로더가 USART1에만 응답 → CH340 USB로는 플래시 불가였으나,
J11 SWD 헤더(6핀, 이미 실장됨)를 발견. RP2040-Zero에 debugprobe 펌웨어 설치 →
CMSIS-DAP SWD 프로그래머로 활용. OpenOCD 한 줄 커맨드로 SD카드 없이 직접 플래시.
상세 →
Deep Research
심층 리서치 — 펌웨어 & 플래싱 분석
8개 병렬 리서치로 도출한 MKS Robin Nano V1 플래싱 방법, grblHAL 호환성, 커스텀 업그레이드 경로 분석 (2026-05-09)
① USB 펌웨어 플래시 — STM32F103 한계 분석
| 방법 | 가능 여부 | 비고 |
| USB 직결 DFU |
불가 |
STM32F103 시스템 부트로더는 UART 전용. USB DFU 미내장. (F4/H7과 다름) |
| BOOT0=1 + UART 부트로더 |
가능 |
BOOT0 핀 HIGH → USART1(PA9/PA10) → stm32flash 또는 STM32CubeProgrammer |
| ST-Link SWD |
가능 |
ST-Link V2 클론 (~₩3,000) → J11 SWD 헤더 직결. 별도 구매 필요. |
| RP2040-Zero debugprobe SWD |
✅ 채택 |
보유 RP2040-Zero + debugprobe UF2 → CMSIS-DAP → J11 SWD. 추가비용 ₩0. 상세 → |
| SD카드 부트로더 |
폴백 방법 |
Robin_nano.bin → FAT32 SD → 전원 투입. SWD 실패 시 복구용. |
해결:
STM32F103은 USB DFU 미지원, CH340은 UART3(G-code 통신용)이라 USB 플래싱 불가.
그러나 J11 SWD 6핀 헤더가 이미 실장되어 있음을 확인 →
RP2040-Zero + debugprobe 펌웨어 = CMSIS-DAP SWD 프로그래머 (추가비용 ₩0).
OpenOCD 한 줄 커맨드로 0x08007000 영역에 직접 플래시. SD카드 완전 불필요.
② grblHAL STM32 포팅 현황
| MCU | grblHAL 지원 | 비고 |
| STM32F103VE (Robin Nano) |
제한적 / 동결 |
2025-05 메모리 부족으로 128KB 지원 동결. 256KB F103VE는 기술상 가능하나 플러그인 제한. |
| STM32F411 BlackPill |
완전 지원 (권장) |
512KB flash / FPU 내장 / grblHAL 공식 지원. ~₩5,000. F103 핀 배열과 유사해 배선 재활용 가능. |
| BTT SKR Mini E3 |
완전 지원 |
STM32F103 기반 3D프린터 보드 중 grblHAL 공식 지원 보드. ~₩25,000. |
③ LCD 세로모드 해결 경로
원인: TFT_COLOR_UI는 MKS 커스텀 포크 — 표준 Marlin에 없음. 공식 TFT_ROTATE와 동작 방식이 달라 270도 깨짐 발생.
재시도 방법: TFT_MIRROR_X 제거 후 숫자 값 방식으로 시도:
// Configuration.h
#define TFT_ROTATE 1 // 90도 세로 (커넥터 좌)
// 또는
#define TFT_ROTATE 3 // 270도 세로 (커넥터 우)
ST7789V는 MADCTL 레지스터로 4방향 모두 지원. TFT_ROTATE_90 (문자열) 방식과 달리 숫자값은 MKS 포크에서도 동작 사례 있음.
④ 스핀들 PWM 속도제어 활성화
현재는 ON/OFF만 가능 (HE0/PC3). PWM 속도제어 활성화 방법:
// Configuration_adv.h
#define SPINDLE_FEATURE
#define SPINDLE_LASER_USE_PWM // ON/OFF → PWM 전환
#define SPINDLE_LASER_ENA_PIN PC3 // 현재 HE0
#define SPINDLE_LASER_PWM_PIN PB0 // FAN1 핀 재활용 (FAN1 비활성화 전제)
#define SPINDLE_LASER_FREQUENCY 2500 // Hz
#define SPINDLE_RPM_RANGE { 5000, 10000 }
555 모터는 PWM 주파수 2500Hz에서 안정. IRF520 MOSFET 프리휠 다이오드 병렬 추가 권장.
⑤ 업그레이드 경로 비교
| 경로 | 추가비용 | 난이도 | CNC 완성도 | 특이사항 |
| A. 현재 보드 유지 (Marlin 개선) |
₩0 |
중 |
60% |
TFT_ROTATE 재시도 + PWM 활성화. TFT_COLOR_UI 한계 존재. |
| B. Arduino Nano + CNC Shield v4 |
₩8,000 |
하 |
90% |
GRBL 1.1 표준 스택. PCB 드릴링 업계 표준. NEMA17 재사용. LCD 없음. |
| C. STM32F411 BlackPill + grblHAL |
~₩15,000 |
상 |
100% |
Robin Nano 모터 드라이버 재활용. USB CDC 직결. 진정한 커스텀 CNC 보드. |
⑥ 실물 보드 핀맵 — J11 SWD 6핀 확인 완료 ✅
J11 SWD 6핀 헤더 ✅ 확인완료
위치: 보드 우측 상단 — 핀헤더 이미 실장됨 (추가 납땜 불필요)
핀 순서: 3.3V / SWDIO(PA13) / SWCLK(PA14) / RESET / GND / NC
RP2040-Zero debugprobe → GP2(SWDIO) + GP3(SWCLK) + GND 3선 연결 → OpenOCD 플래시.
BOOT0 솔더 패드
위치: STM32F103VE 칩 근처 JP 솔더 패드 (핀 헤더 없음, 솔더 브리지 방식)
동작: 패드 브리지 → BOOT0=HIGH → 시스템 부트로더 진입 → USART1(PA9/PA10)만 응답
UART 방식은 USB-TTL 어댑터 + PA9/PA10 직결 필요 (CH340 경로 아님)
OFF/ON USB-PWR 슬라이더
위치: 보드 하단 USB-B 소켓 바로 옆 슬라이더 스위치
기능: USB에서 보드 전원 공급 여부 선택 (ST-Link 사용 시 OFF 권장)
ST-Link + 12V 동시 연결 시 반드시 USB-PWR=OFF. 전원 충돌 방지.
Roadmap
향후 계획
현재 진행중인 작업과 향후 업그레이드 계획.
🔌
RP2040-Zero debugprobe SWD 플래싱
debugprobe UF2 설치 → J11 SWD 3선 연결 → OpenOCD 직접 플래시.
SD카드 불필요. 펌웨어 수정 사이클 대폭 단축.
✅ 설계 완료 — 2026-05-13 실행 예정
🗜️
PCB 바이스 3D프린트 + 조립
pcb_vise.scad 검증 → K1C 출력 (3파트) → Ø8mm 볼스크류 조립 → 알루미늄 베드 Ø4mm 고정.
콜릿-릴리즈 방식 Z=0 원점잡기.
✅ 설계 완료 — 2026-05-13 출력 예정
🔧
실제 PCB 드릴링 테스트
test-drill.nc G-code 파일로 시험 가공.
CNCjs USB 연결 → 콜릿-릴리즈 Z=0 → 드릴링 정밀도 검증.
다음 단계 — SWD + 바이스 완료 후
📺
커스텀 CNC LCD UI
TFT 화면에 X(빨강) / Y(초록) / Z(파랑) 컬러 조그 버튼 구현.
Marlin draw_status_screen() 수정.
계획중
🔄
Arduino Nano + CNC Shield 전환
MKS Robin Nano → Arduino Nano + CNC Shield v4 + A4988 × 3 교체.
GRBL 1.1 + Candle로 단순화. NEMA17 모터 재사용.
검토중 — 보드 미보유
PCB 드릴링 머신 비교
| 항목 |
KP3S PCB Drill 이 프로젝트 |
PCB Nano Drill |
PCB-D300 |
| 컨트롤러 |
MKS Robin Nano V1 |
Arduino Nano + CNC Shield |
MKS DLC32 (ESP32) |
| 드라이버 |
TMC2225 (온보드) |
A4988 × 3 |
TMC2209 × 3 |
| 스핀들 |
555 DC 12V ~8000RPM |
Ø30mm DC 12V 8000RPM |
200W ER11 30,000RPM |
| 총비용 |
~₩21,300 (추가비용만) |
~₩148,000 |
₩629,000 |
| 제어 |
USB CNCjs |
USB Candle / bCNC |
WiFi 웹UI |
| LCD |
TFT 3.2" (컬러) |
없음 |
터치스크린 |