13년차의 서버실

서버, 인프라, 홈랩 기술 블로그

[태그:] Marlin

  • [3D Printer] Marlin vs Mainsail: 펌웨어와 웹UI 조합 가이드

    [3D Printer] Marlin vs Mainsail: 펌웨어와 웹UI 조합 가이드

    Marlin vs Mainsail, 3D 프린터에서 뭘 골라야 덜 고생할까

    3D 프린터 세팅을 만지다 보면 꼭 한 번은 Marlin Mainsail 비교 검색을 하게 되더라고요. 저도 처음엔 둘이 같은 층위에서 경쟁하는 줄 알았습니다. 근데 실제로 써보니까 이건 펌웨어(firmware, 프린터를 직접 제어하는 소프트웨어)와 웹 인터페이스(web interface, 브라우저에서 관리하는 화면)를 한 줄에 놓고 보는 바람에 헷갈리는 경우가 많았던 거더라고요. 쉽게 말해 Marlin vs Mainsail은 완전히 1:1 비교가 아니라, 실전에서는 Marlin vs Klipper + Mainsail 쪽으로 이해해야 맞습니다.

    제가 홈랩에서 엔더 계열, 클론 보드, 라즈베리 파이 조합으로 이것저것 굴려보니 선택 기준이 꽤 명확해졌거든요. 오늘은 그 기준을 정리해보겠습니다. 3D 프린터 펌웨어를 안정성 기준으로 볼지, 아니면 Mainsail 설정까지 포함해서 운영 편의성으로 볼지에 따라 답이 달라져요.

    Marlin Mainsail 비교를 위한 3D 프린터 제어 구조 다이어그램

    Marlin은 메인보드에서 직접 동작하고, Mainsail은 보통 Klipper와 Moonraker 위에서 동작하는 웹 화면이라는 관계를 한눈에 보여주는 그림입니다.

    1. 먼저 정리: Marlin과 Mainsail은 다른 걸 비교하는 겁니다

    여기서 중요한 포인트! Marlin은 오픈소스 3D 프린터 펌웨어고, Mainsail은 Klipper 기반 프린터를 브라우저에서 관리하는 프런트엔드(front-end, 사용자 화면)예요. 즉 Mainsail은 보통 Klipper + Moonraker 조합 위에서 의미가 있습니다.

    처음엔 이게 뭔가 싶었는데, 개념만 바로 잡으면 선택이 훨씬 쉬워져요.

    • Marlin: 프린터 메인보드에 직접 올라가는 전통적인 펌웨어
    • Klipper: 메인보드와 호스트 장치(주로 Raspberry Pi)를 함께 쓰는 구조의 펌웨어 시스템
    • Mainsail: Klipper를 웹에서 편하게 관리하는 UI
    • Moonraker: Klipper 상태를 API로 제공하는 서비스

    그래서 엄밀히 말하면 비교 질문은 이렇게 바꾸는 게 정확해요.

    “안정성과 단순함의 Marlin을 쓸까, 아니면 Klipper + Mainsail로 운영 편의성과 튜닝 속도를 가져갈까?”

    2. 실제로는: 어떤 사람이 어떤 조합을 써야 할까

    제가 직접 해보니 선택 기준은 결국 세 가지더라고요. 설치 난이도, 운영 편의성, 튜닝 빈도예요. 프린터를 한 번 맞춰놓고 오래 쓰는 분은 Marlin이 편하고, 세팅을 자주 바꾸고 매크로(macro, 반복 작업 자동화)를 많이 쓰는 분은 Klipper + Mainsail이 훨씬 낫더라고요.

    항목 Marlin Klipper + Mainsail
    구조 메인보드 중심 메인보드 + 호스트 장치
    초기 진입장벽 상대적으로 낮음 상대적으로 높음
    설정 변경 재빌드/재플래시가 잦을 수 있음 설정 파일 수정 후 재시작 중심
    웹 관리 기본 제공 아님 Mainsail로 매우 편함
    매크로 활용 제한적 강력함
    튜닝 속도 보수적 빠른 반복 작업에 유리
    추천 사용자 안정성 우선, 입문/순정 유지 개조 잦음, 자동화 선호, 홈랩 성향

    사실 저는 한동안 Marlin만 썼어요. 이유는 단순했어요. 고장 포인트가 적고, 한번 맞춰두면 조용히 돌아가거든요. 그런데 프린터를 두 대 이상 돌리고, 시작 매크로와 정지 매크로를 자주 손대기 시작하니까 Mainsail 쪽이 너무 편했더라고요. 이거 진짜 편하더라고요.

    3. Marlin이 여전히 좋은 이유

    3-1. 순정에 가깝게 오래 쓰는 프린터

    보드 교체가 없고, 센서 추가도 많지 않고, 프린트 프로파일도 어느 정도 고정되어 있다면 Marlin은 여전히 좋은 선택이에요. 3D 프린터 펌웨어로서 검증된 생태계가 넓고, 보드 호환 사례도 많거든요.

    3-2. 단순함이 곧 안정성인 경우

    라즈베리 파이나 별도 SBC(single-board computer, 초소형 단일보드 컴퓨터)를 두지 않아도 되니 구조가 단순해요. 실제로 서버실 관점에서 보면 관리 대상이 하나 줄어드는 셈이죠. 저는 장비 수가 늘어날수록 이런 단순함이 꽤 크게 느껴졌어요.

    3-3. 이런 분께 추천합니다

    • 프린터 한 대를 오래 안정적으로 쓰고 싶은 분
    • 웹 대시보드보다 본체 LCD나 기본 호스트 프로그램이 익숙한 분
    • 펌웨어를 자주 뜯어고치지 않는 분

    4. Mainsail이 빛나는 순간: Klipper와 함께할 때입니다

    Mainsail 설정을 한 번 끝내놓으면 그다음부터 운영 경험이 확 달라져요. 브라우저에서 상태를 보고, 매크로를 버튼으로 실행하고, 설정 파일을 바로 수정하고, 로그도 확인하기 쉬워집니다. 홈랩 운영자 입장에서는 이게 진짜 커요.

    특히 이런 상황에서 체감이 큽니다.

    • 베드 메시(bed mesh, 베드 높이 보정 지도)를 자주 다시 잡는 경우
    • Pressure Advance(압출 선행 보정), Input Shaper(진동 보정) 같은 튜닝을 반복하는 경우
    • 프린터 여러 대를 한 화면에서 관리하고 싶은 경우
    • 매크로로 프리히트, 노즐 청소, 종료 루틴을 자동화하고 싶은 경우

    저도 처음엔 Klipper vs Marlin 논쟁을 성능 중심으로만 봤는데, 실제로는 운영 편의성 차이가 더 크게 느껴졌어요. 출력물 품질만 놓고 단정할 문제는 아니고, 내가 얼마나 자주 세팅을 만질 사람이냐가 핵심이더라고요.

    Mainsail 설정 흐름을 보여주는 홈랩 3D 프린터 운영 화면

    Mainsail에서 온도, 작업 상태, 매크로 버튼, 설정 파일 편집이 한 화면 흐름으로 이어지는 모습을 보여주는 이미지 자리입니다.

    5. 실전 구현: 제가 실제로 확인하는 최소 점검 루틴

    여기서는 딱 실무적으로 가보겠습니다. 새 장비를 받거나 기존 프린터 구성을 정리할 때 저는 먼저 현재 상태를 읽고, 그다음 운영 방식에 맞는 조합을 고르거든요.

    5-1. Marlin 환경에서 먼저 확인할 것

    Marlin 장비는 G-code(지코드, 프린터 제어 명령) 몇 개만으로도 상태 점검이 꽤 돼요.

    1. 펌웨어 정보 확인
    2. 저장된 설정 확인
    3. Z 오프셋이나 메시 상태 확인
    4. 필요하면 저장
    # 터미널 또는 호스트 소프트웨어에서 전송하는 예시 G-code
    M115    ; 펌웨어 정보 확인
    M503    ; 현재 저장된 설정 출력
    M851    ; Z probe offset 확인
    M500    ; EEPROM 저장

    여기서 팁 하나. M503 출력은 꼭 보관해두세요. 저도 예전에 감으로 만지다가 기존 값이 뭐였는지 몰라서 한참 삽질 좀 했습니다 ㅎㅎ

    5-2. Klipper + Mainsail 환경에서 먼저 확인할 것

    Mainsail 쪽은 서비스가 살아 있는지부터 보는 게 좋아요. 프린터가 멈춘 것 같아도 실제로는 Klipper가 아니라 Moonraker나 웹 서버 문제인 경우가 꽤 많거든요.

    sudo systemctl status klipper
    sudo systemctl status moonraker
    sudo systemctl status nginx

    이후에는 설정 파일에서 운영에 필요한 최소 섹션을 먼저 확인해요.

    # printer.cfg 예시
    [virtual_sdcard]
    path: ~/printer_data/gcodes
    
    [pause_resume]
    
    [display_status]
    
    [gcode_macro START_PRINT]
    gcode:
      G28
      BED_MESH_PROFILE LOAD=default
      G92 E0
    
    [gcode_macro END_PRINT]
    gcode:
      M104 S0
      M140 S0
      G91
      G1 Z10 F300
      G90
      G1 X0 Y220 F6000

    이 정도만 있어도 웹에서 운영하는 맛이 나더라고요. 매크로 버튼 한 번으로 루틴이 정리되니까요. 처음 세팅할 때는 귀찮아도, 두 번째 프린터부터는 시간 절약이 확 느껴져요.

    5-3. Mainsail 업데이트 관리 예시

    Mainsail은 보통 Moonraker의 Update Manager(업데이트 관리자)를 통해 관리돼요.

    # moonraker.conf 예시
    [update_manager]
    refresh_interval: 168
    enable_auto_refresh: True
    
    [update_manager mainsail]
    type: web
    channel: stable
    repo: mainsail-crew/mainsail
    path: ~/mainsail

    이 설정은 웹 인터페이스 쪽 업데이트 관리를 붙일 때 많이 보는 형태예요. 다만 여기서 중요한 건 업데이트 전에 백업하는 거예요. 특히 Klipper 계열은 업데이트 후 MCU 재플래시가 필요한 경우가 있어서, 출력 일정 있을 때는 섣불리 올리면 안 돼요.

    Mainsail 설정과 3D 프린터 펌웨어 구성을 설명하는 설정 비교 이미지

    Klipper의 printer.cfg와 Moonraker 설정 파일이 각각 어떤 역할을 하는지 구분해서 보여주는 이미지 자리입니다.

    6. 조합 추천: 제가 실제로는 이렇게 고릅니다

    6-1. 입문자 또는 순정 유지형

    Marlin 추천이에요. 프린터를 한 대 운용하고, 설정 변경이 많지 않다면 이쪽이 덜 피곤하거든요. 문제 생겼을 때 검색되는 사례도 많고요.

    6-2. 개조형, 홈랩형, 자동화 선호형

    Klipper + Mainsail 추천이에요. 특히 BLTouch류 프로브, 베드 메시, 매크로 자동화, 여러 필라멘트 프로파일 관리까지 들어가면 운영 편의성이 훨씬 좋아져요.

    6-3. 가장 무난한 현실적 결론

    솔직히 말하면 Marlin과 Mainsail 중 하나를 고르는 문제가 아니라, Marlin으로 충분한 사람과 Klipper + Mainsail로 넘어가야 하는 사람을 구분하는 문제에 더 가까워요.

    상황 추천 조합 이유
    순정 프린터, 안정성 우선 Marlin 구조가 단순하고 유지보수 부담이 적음
    세팅을 자주 수정함 Klipper + Mainsail 설정 반영과 매크로 관리가 편함
    프린터 여러 대 운영 Klipper + Mainsail 웹 기반 관리 이점이 큼
    라즈베리 파이 없이 간단히 운용 Marlin 추가 호스트 장치가 필요 없음

    7. ⚠️ 실제로 많이 겪는 문제와 해결법

    7-1. Mainsail을 설치했는데 Marlin 프린터가 안 붙는 경우

    이건 고장이 아니라 구조 문제인 경우가 많아요. Mainsail은 Klipper용 웹 인터페이스라서, Marlin 프린터를 직접 붙이는 용도로 생각하면 안 돼요. 저도 처음엔 이 부분에서 한참 헷갈렸거든요.

    해결: Marlin이면 OctoPrint 같은 일반 호스트 구성을 검토하고, Mainsail을 쓰려면 Klipper 전환을 먼저 판단해야 해요.

    7-2. Klipper 업데이트 후 프린터가 안 움직이는 경우

    업데이트 후 호스트 쪽 소프트웨어와 MCU 펌웨어 버전이 어긋나는 경우가 있어요.

    해결: 업데이트 전 설정 백업, 변경 로그 확인, 필요 시 MCU 재빌드를 준비하세요. 급한 출력 전날 밤 업데이트하는 건 정말 비추천이에요.

    7-3. 매크로는 멋지게 만들었는데 오히려 꼬이는 경우

    START_PRINT, END_PRINT 매크로를 욕심내서 한 번에 많이 넣으면 예상치 못한 이동 순서 문제나 온도 타이밍 문제가 생겨요.

    해결: 처음엔 홈, 메시 로드, 온도, 파킹 정도만 넣고 점진적으로 늘리세요. 저도 한 번에 다 넣었다가 노즐이 허공에서 대기하는 황당한 상황을 겪었거든요.

    8. 검증과 결과: 무엇이 더 좋았나

    결론부터 말씀드리면, 정답은 장비 스펙보다 운영 습관에 더 가까워요.

    • Marlin은 단순하고 든든해요. 한 번 잡아두면 오래 가더라고요.
    • Klipper + Mainsail은 운영 경험이 뛰어나요. 튜닝과 자동화에서 강하더라고요.
    • Marlin Mainsail 비교는 결국 “안정성 중심”과 “운영 편의성 중심”의 비교로 읽는 게 맞아요.

    제가 실제로 써보니까, 출력 품질 자체보다도 문제를 얼마나 빨리 파악하고 다시 돌릴 수 있느냐가 만족도를 더 크게 좌우하더라고요. 그런 면에서 단일 장비면 Marlin, 여러 장비와 잦은 튜닝이면 Mainsail 쪽이 손이 덜 가요.

    Marlin Mainsail 비교 이후 결과 검증을 위한 대시보드 이미지

    운영 결과를 검증하는 장면으로, 프린트 진행률과 온도 그래프, 상태 패널이 안정적으로 보이는 이미지 자리입니다.

    9. 정리와 FAQ

    9-1. 한 문장 정리

    Marlin은 안정적인 기본기, Mainsail은 Klipper와 결합했을 때 강력한 운영 도구예요. 둘 중 하나가 무조건 우위라고 보기보다, 프린터를 어떻게 굴릴지 먼저 정하는 게 맞아요.

    9-2. 자주 묻는 질문

    Q. Marlin 프린터에 Mainsail만 붙여서 쓸 수 있나요?
    A. 보통 그렇게 보시면 안 돼요. Mainsail은 Klipper 기반 운영을 전제로 보는 편이 정확해요.

    Q. Klipper로 가면 무조건 출력 품질이 더 좋아지나요?
    A. 무조건이라고 말하긴 어려워요. 다만 튜닝과 운영이 편해져서 결과적으로 더 좋은 상태에 빨리 도달하는 경우는 많더라고요.

    Q. 입문자는 뭘 고르면 되나요?
    A. 프린터 한 대를 안정적으로 쓰는 단계라면 Marlin이 편해요. 반대로 세팅을 계속 바꾸고 실험하는 성향이면 Klipper + Mainsail이 잘 맞거든요.

    다음 글에서는 Klipper + Mainsail 초기 세팅 체크리스트를 단계별로 정리해보겠습니다. 이전 글에서 다뤘던 홈랩 백업 습관과 연결해서 보면 더 이해가 잘 되실 겁니다.

    Marlin Mainsail 비교 선택 기준을 요약한 인포그래픽

    누가 Marlin을 선택하고, 누가 Klipper와 Mainsail 조합을 선택하면 좋은지 한 장으로 요약하는 비교 인포그래픽 자리입니다.

  • [3D 프린터] 3D 프린터 레벨링 실패 원인과 해결책

    [3D 프린터] 3D 프린터 레벨링 실패 원인과 해결책

    [3D 프린터] 3D 프린터 레벨링 실패 원인과 해결책

    3D 프린터 레벨링 실패 때문에 첫 레이어(First Layer, 출력의 첫 층)부터 망가져 본 적 있으신가요? 노즐이 베드에 너무 눌리거나, 반대로 공중에 글씨 쓰듯 떠버리면 그날 출력은 사실상 끝이거든요. 저도 홈랩에서 3D 프린터를 굴리면서 가장 많이 삽질한 부분이 바로 이 레벨링이었습니다. 처음엔 “오토 레벨링(Auto Bed Leveling, 자동 베드 보정) 달면 끝 아닌가?” 싶었는데, 실제로 써보니까 기계적인 문제와 설정 문제가 겹치면 더 헷갈리더라고요. 이번 글에서는 3D 프린터 레벨링 실패가 왜 생기는지, 어떤 순서로 확인해야 하는지, 그리고 제가 실제로 문제를 좁혀가며 썼던 레벨링 해결책을 정리해보겠습니다.

    3D 프린터 레벨링 실패 원인을 정리한 개요 이미지

    3D 프린터 레벨링 실패 원인을 기계적 문제, 센서 문제, 설정 문제로 나눈 개요 이미지입니다.

    1. 레벨링이 정확히 뭐냐면요

    쉽게 말해 레벨링(Leveling, 수평 맞추기)은 노즐과 베드 사이 간격을 출력 가능한 범위로 일정하게 유지하는 작업입니다. 여기서 중요한 건 “완벽한 수평” 자체보다도, 프린터가 움직이는 전체 영역에서 간격이 크게 달라지지 않는 상태예요.

    많이 헷갈리는 개념이 세 가지 있습니다.

    • Bed Leveling(베드 레벨링): 베드의 각 코너 높이를 맞추는 작업
    • Z Offset(Z 오프셋, 노즐과 프로브 기준 높이 차): 센서가 0이라고 본 위치와 실제 노즐 높이의 차이 보정
    • Mesh Compensation(메시 보정, 표면 높이 맵 보정): 베드가 완전히 평평하지 않을 때 지점을 측정해 보정하는 기능

    여기서 중요한 포인트! 오토 레벨링 문제라고 생각했는데, 알고 보면 Z 오프셋만 틀어진 경우가 정말 많습니다. 저도 처음엔 센서 불량인 줄 알고 한참 헤맸는데, 결국은 오프셋이 0.1~0.2mm 정도 어긋난 게 원인이었던 적이 많았어요.

    2. 3D 프린터 레벨링 실패 증상부터 구분해보세요

    문제를 빨리 잡으려면 증상을 먼저 나눠보는 게 좋습니다. 무작정 나사부터 돌리면 더 꼬입니다.

    증상 주요 원인 우선 확인할 것
    노즐이 베드를 긁음 Z 오프셋 과소, 베드 과상승 Z Offset, 엔드스톱, 프로브 높이
    필라멘트가 안 붙고 끌려다님 노즐 높음, 베드 오염 노즐-베드 간격, IPA 청소
    중앙은 맞는데 모서리가 틀어짐 베드 뒤틀림, X축 기울어짐 가니트리(Gantry, 가로축) 수평
    오토 레벨링 후에도 계속 실패 메시 저장 안 됨, 프로브 오차 설정 저장, 프로브 고정 상태
    출력할 때마다 값이 달라짐 나사 풀림, 롤러 유격, 센서 흔들림 기구부 체결 상태

    특히 3D 프린터 베드 레벨링은 한 번 맞추고 끝나는 작업이 아니라, 프레임 체결 상태나 베드 스프링 장력에 따라 다시 틀어질 수 있습니다. 출력이 잘 되다가 갑자기 첫 레이어가 무너지면, 설정 파일보다 먼저 기계 쪽부터 의심해보는 게 맞더라고요.

    3. 실전 점검 순서: 제가 실제로 하는 레벨링 절차

    제가 직접 해보니 순서가 정말 중요했습니다. 센서 달렸다고 바로 G29부터 돌리면 안 되고, 아래 순서대로 가면 훨씬 덜 헤맵니다.

    1. 프린터 프레임과 베드 고정 상태 확인
    2. X축 가니트리 좌우 높이 확인
    3. 노즐과 베드 청소
    4. 수동 레벨링으로 기본 간격 맞추기
    5. Z 오프셋 재조정
    6. 오토 레벨링 또는 메시 생성
    7. 첫 레이어 테스트 출력으로 검증

    3-1. 기구부부터 확인

    이 단계는 귀찮아도 꼭 하셔야 합니다. 베드가 흔들리거나 X축이 비틀어져 있으면 소프트웨어 보정으로는 한계가 있습니다.

    • 베드를 손으로 흔들었을 때 유격(Play, 헐거움)이 없는지 확인
    • 스프링 또는 실리콘 스페이서 장력이 너무 약하지 않은지 확인
    • 휠 방식이라면 롤러 압이 너무 느슨하거나 과하지 않은지 확인
    • 양쪽 Z축이 있다면 좌우 높이가 비슷한지 확인

    처음엔 이게 뭔가 싶었는데, 실제로는 베드 나사보다 가니트리 틀어짐이 더 치명적인 경우가 꽤 많습니다.

    3-2. 수동 레벨링 기본 잡기

    오토 레벨링이 있어도 기본 수동 레벨링은 잡아두는 게 좋습니다. 노즐이 너무 멀거나 너무 가까우면 센서가 메시를 만들어도 첫 레이어 품질이 엉망이 되거든요.

    ; Marlin 계열에서 자주 쓰는 기본 순서 예시
    G28        ; 홈 이동(Home)
    M140 S60   ; 베드 예열
    M104 S200  ; 노즐 예열
    M190 S60   ; 베드 목표 온도까지 대기
    M109 S200  ; 노즐 목표 온도까지 대기

    예열을 먼저 하는 이유는 열팽창(Thermal Expansion, 가열 시 부품이 미세하게 팽창하는 현상) 때문입니다. 차가운 상태에서 맞춰놓고 실제 출력 온도로 올리면 미세하게 달라질 수 있어요.

    그 다음 종이 한 장이나 얇은 게이지를 이용해서 베드 네 귀퉁이와 중앙을 확인합니다. 종이가 그냥 헐렁하게 움직이면 노즐이 높은 거고, 아예 걸리면 너무 낮은 겁니다. 가볍게 마찰이 느껴지는 정도가 기준이라고 보시면 됩니다.

    3D 프린터 베드 레벨링 수동 점검 과정 이미지

    베드 네 귀퉁이와 중앙을 종이 테스트로 확인하는 수동 레벨링 과정을 보여주는 이미지입니다.

    3-3. Klipper와 Marlin에서 자주 쓰는 명령

    펌웨어(Firmware, 프린터 제어 소프트웨어)마다 명령이 조금 다릅니다. 아래는 많이 쓰는 예시입니다.

    # Klipper 예시
    G28
    BED_MESH_CLEAR
    BED_MESH_CALIBRATE
    SAVE_CONFIG
    ; Marlin 예시
    G28
    G29
    M500   ; EEPROM 저장
    M420 S1 ; 저장된 메시 활성화

    여기서 자주 하는 실수가 있습니다. 레벨링은 했는데 저장을 안 하는 경우예요. 저도 예전에 G29만 돌리고 왜 다음 출력 때 다시 틀어지나 싶었는데, 저장이 안 되어 있더라고요. 드디어 됐다! 싶었는데 재부팅 후 원점 복귀… 삽질 좀 했습니다.

    4. 오토 레벨링 문제, 센서 달았는데 왜 더 꼬일까요?

    오토 레벨링 문제는 대개 센서 자체보다 설치 상태와 기준값 문제에서 시작합니다.

    • 프로브(Probe, 높이 측정 센서)가 흔들리게 장착됨
    • 노즐과 프로브의 상대 높이 차가 바뀜
    • Z Offset이 이전 상태 그대로 남아 있음
    • 메시 생성 전에 수동 레벨링이 너무 틀어져 있음
    • 노즐 끝에 필라멘트 찌꺼기가 붙어 측정이 달라짐

    특히 프로브 브래킷(Bracket, 고정 지지대)이 미세하게 흔들리면 측정값이 매번 달라집니다. 이건 설정값으로 못 잡아요. 센서가 좋아도 장착이 불안정하면 소용이 없습니다. 실제로 써보니까, 오토 레벨링은 “기본 상태가 괜찮을 때 정밀 보정해주는 장치”에 가깝지, 망가진 기계를 만능으로 살려주는 기능은 아니더라고요.

    4-1. Z 오프셋 다시 잡는 요령

    레벨링이 얼추 맞는데도 첫 레이어가 계속 실패하면 Z 오프셋을 의심해보세요.

    1. 프린터를 출력 온도로 예열합니다.
    2. 홈 이동 후 노즐을 중앙으로 보냅니다.
    3. Z를 천천히 낮추며 종이 마찰점을 찾습니다.
    4. 그 위치를 기준으로 Z Offset 값을 저장합니다.
    5. 테스트 스커트(Skirt, 외곽 예열선)나 1층 패턴으로 미세 조정합니다.

    여기서 중요한 포인트! 종이 테스트가 끝이 아닙니다. 최종 기준은 실제 첫 레이어 압착 상태예요. 선이 살짝 납작하게 눌리며 끊기지 않고 이어져야 합니다.

    오토 레벨링 문제와 Z 오프셋 조정 설명 이미지

    프로브 센서 기준점과 노즐 Z 오프셋 조정 관계를 보여주는 설명 이미지입니다.

    5. 흔한 실패 원인과 레벨링 해결책

    여기서는 제가 자주 본 패턴을 원인별로 정리해보겠습니다.

    5-1. 베드 표면 오염

    아무리 레벨링이 맞아도 베드에 유분이나 먼지가 있으면 필라멘트가 안 붙습니다. 이걸 레벨링 실패로 착각하기 쉽습니다. 저는 보통 IPA(Isopropyl Alcohol, 이소프로필 알코올)로 닦고, 손으로 출력면을 만지는 습관을 줄였습니다.

    5-2. 베드 스프링 장력 불균형

    한쪽은 너무 풀려 있고 한쪽은 너무 눌려 있으면 출력 중 진동에도 값이 변합니다. 가능하면 네 코너가 비슷한 장력을 갖게 맞추는 게 좋습니다. 베드를 너무 아래에서부터 시작하지 말고, 중간 정도 장력 위치에서 다시 세팅해보세요.

    5-3. 노즐 막힘 또는 찌꺼기

    첫 레이어가 울퉁불퉁하고 선이 끊기면 높이 문제 같지만, 사실 반쯤 막힌 노즐일 수도 있습니다. 냉간 인발(Cold Pull, 저온 상태에서 찌꺼기 제거)이나 노즐 교체가 먼저 필요한 경우도 있어요.

    5-4. 메시 보정 과신

    베드가 크게 휘었거나 축 정렬이 무너지면 메시 보정이 있어도 한계가 있습니다. 특히 가장자리에서만 심하게 틀어진다면 물리적인 휨이나 조립 오차를 먼저 봐야 합니다.

    5-5. 저장 누락과 시작 G-code 문제

    슬라이서(Slicer, 출력 경로 생성 프로그램)의 시작 G-code에서 저장된 메시를 불러오지 않으면, 이전에 잡아둔 보정이 실제 출력에 반영되지 않을 수 있습니다. 프린터 설정과 슬라이서 시작 코드를 같이 보셔야 합니다.

    ; 예시: 저장된 메시를 사용하는 Marlin 시작 코드 일부
    G28
    M420 S1
    G92 E0

    또는 매 출력마다 새로 측정하는 방식이라면:

    ; 예시: 출력 직전 자동 측정
    G28
    G29
    G92 E0

    다만 매번 G29를 돌리면 시간이 꽤 늘어나니까, 장비 상태가 안정적이면 저장된 메시를 쓰는 쪽이 관리하기 편했습니다.

    6. 검증은 이렇게 해야 제대로 됩니다

    레벨링이 맞았는지는 설정 화면이 아니라 출력물로 판단해야 합니다. 저는 아래처럼 검증합니다.

    1. 큰 사각형 1층 테스트를 출력합니다.
    2. 중앙과 네 귀퉁이 압착 상태를 비교합니다.
    3. 선 사이 빈틈, 과도한 겹침, 긁힘 자국을 봅니다.
    4. 필요하면 Z 오프셋만 0.02mm 단위로 미세 조정합니다.

    정상적인 첫 레이어는 선 간격이 거의 없고, 손으로 살짝 만졌을 때 들뜨지 않아야 합니다. 반대로 선이 둥글게 올라와 있으면 높고, 표면이 지나치게 번들거리며 옆으로 밀리면 너무 눌린 상태입니다.

    3D 프린터 레벨링 실패와 성공한 첫 레이어 비교 이미지

    첫 레이어가 잘 눌린 경우와 뜨거나 과압착된 경우를 비교하는 결과 이미지입니다.

    7. 빠르게 보는 체크리스트

    바쁠 때는 아래 순서만 따라가도 문제를 많이 줄일 수 있습니다.

    • 베드와 노즐을 출력 온도로 예열했는가
    • 베드 표면을 청소했는가
    • X축과 베드 유격이 없는가
    • 수동 레벨링으로 기본 간격을 맞췄는가
    • Z Offset을 다시 잡았는가
    • 오토 레벨링 또는 메시를 저장했는가
    • 슬라이서 시작 코드에서 메시를 적용하는가
    • 첫 레이어 테스트로 실제 검증했는가
    문제 상황 가장 먼저 할 일 다음 조치
    출력물이 안 붙음 베드 청소 Z 오프셋 하향 조정
    노즐이 긁음 Z 오프셋 상향 조정 프로브 기준 재설정
    모서리만 실패 수동 베드 레벨링 X축 수평 점검
    매번 결과가 다름 센서/베드 체결 확인 저장 여부 점검

    8. 정리와 FAQ

    3D 프린터 레벨링 실패는 단순히 베드 나사 문제만은 아닙니다. 기계적 정렬, 베드 상태, 센서 고정, Z 오프셋, 메시 저장, 시작 G-code까지 전부 이어져 있어요. 저도 처음엔 레벨링을 “한 번 맞추는 작업” 정도로 봤는데, 실제로는 출력 품질 전체를 좌우하는 기준점 관리에 가깝더라고요. 한 번 구조를 이해하고 나면 오히려 문제를 훨씬 빨리 찾을 수 있습니다.

    혹시 이런 경험 있으신가요? 수동으로 맞추면 중앙이 틀어지고, 오토 레벨링을 켜면 더 이상해지는 상황이요. 그럴수록 순서를 단순하게 가져가 보세요. 기계 상태 확인 → 기본 레벨링 → Z 오프셋 → 메시 생성 → 첫 레이어 검증. 이 흐름만 지켜도 실패 확률이 확 줄어듭니다.

    다음 글에서는 첫 레이어 접착(Adhesion, 바닥면 부착력) 문제를 레벨링과 분리해서 보는 방법, 그리고 소재별 베드 온도 튜닝 포인트도 다뤄볼 예정입니다. 이전 글에서 다뤘던 프린터 유지보수 체크리스트와 함께 보면 더 도움이 되실 겁니다.

    FAQ

    • Q. 오토 레벨링이 있으면 수동 레벨링은 안 해도 되나요?
      A. 아닙니다. 기본 간격이 너무 틀어져 있으면 오토 레벨링만으로는 한계가 있습니다.
    • Q. 종이 테스트만 맞으면 끝인가요?
      A. 아닙니다. 마지막은 반드시 첫 레이어 테스트 출력으로 확인해야 합니다.
    • Q. 매번 다시 레벨링해야 하나요?
      A. 장비 상태가 안정적이면 자주 안 해도 되지만, 베드 분해나 노즐 교체 후에는 다시 점검하는 게 안전합니다.
    3D 프린터 레벨링 해결책 요약 인포그래픽

    3D 프린터 레벨링 점검 순서와 해결책을 한눈에 정리한 요약 인포그래픽입니다.