8 bit 컨트롤러 vs . 32 bit 컨트롤러 
 8 bit 컨트롤러 vs . 32 bit 컨트롤러 본문 
 elsa in mac 2019 . 01 . 04 23 : 14 
 사실 은 32 bit 컨트롤러 인 Duet 3 D 의 DuetWiFi 보드 에 대한 리뷰 를 작성 하 려고 계획 을 했었 는데 , 그 보다 앞서 8 bit 컨트롤러 와 32 bit 컨트롤러 에 대한 이야기 를 해야 할 것 같 아 먼저 포스팅 을 해 봅니다 . 조금 은 긴 포스트 가 될 것 같 은데 . . 가 볼까요 ? 
 3 D 프린터 컨트롤러 
 3 D 프린터 의 두뇌 역활 을 하 는 컨트롤러 의 가장 주된 역활 은 간단히 말 하 자면 , 3 D 모델 을 출력 하 기 위해 Slicer 로 부 터 생성 된 GCode 를 해석 ( Parsing ) 하 고 그 결과 에 따라 각 축 의 모션 을 담당 하 는 Stepper Motor 를 구동 시키 기 위해 필요 한 Step Pulse 를 생성 하 여 각 Motor 에 전달 하 는 것 입니다 . 한마디 로 모터 구동 혹은 모터 제어 라고 할 수 있 습니다 . 이 일 을 처리 하 고 도 남 는 시간 에 3 D 프린팅 을 위해 필요 한 나머지 일 들 , 예컨데 , 히팅 요소 들 에 대한 온도 제 어 , 사용 자 인터페이스 ( UI ) 처리 , Active Cooling 을 위한 Fan 제어 등등 의 일 들 을 처리 하 는 것 이 죠 . 
 초창기 컨트롤러 들 은 8 bit 프로세서 들 을 탑재 했 는데 , 보드 의 수급 , 개발 환경 / 접근성 등등 모든 조건 이 8 Bit MCU ( Micro Contoller Unit ) 를 사용 하 는 것 이 자연 스러웠 기 때문 입니다 . 그것 이 90 년 대 중반 이 니 지금 까지 꽤 오랜 시간 동안 여전히 8 Bit 컨트롤러 가 사용 되 어 오 고 있 는 셈 입니다 . 여전히 사용 되 고 있 다는 것 은 트렌드 를 바꾸 면 안 될 정도 로 처리 속도 나 용량 이 뒤떨어지 지 는 않 다는 것 을 반증 하 는 것 이 기 도 하 지만 , 사실 은 단지 현재 시장 에 판매 되 는 대부분 의 3 D 프린터 들 이 8 Bit 컨트롤러 를 사용 하 고 있 는 것 이 이유 이 기 도 합니다 . 
 3 D 프린터 의 컨트롤러 의 전형 으로 사용 되 었 던 , ATMEGA 2560 Arduino 보드 와 CNC Shield 인 RAMPS 보드 
 3 D 프린터 컨트롤러 의 두뇌 로 8 bit MCU 면 충분 하 다는 의견 과 32 bit MCU 로 넘어가 야 한다는 논쟁 은 예전 부터 시작 되 었 고 , 오늘날 에 도 여전히 계속 되 고 있 습니다 . 지금 다시 이 주제 를 끄집 어 내 는 이유 는 최근 들 어 시장 에 나온 32 bit 컨트롤러 이 부쩍 많 아 졌 기 때문 입니다 . 32 bit 컨트롤러 가 대거 등장 한 이유 는 대륙 의 3 D 프린터 관련 부품 메이커 들 간 의 경쟁 떄문 이 기 도 하 지만 , 32 Bit 컨트롤러 를 운용 하 기 위한 펌웨어 ( Firmware ) 들 의 기능 및 성능 이 일정 수준 에 올라 셨 고 , 반 대로 8 bit 컨트롤러 를 지원 하 던 Firmware 들 의 용량 이 점점 커 저 이 를 담 을 그릇 이 거의 한계 에 도달 했 기 때문 이 기 도 합니다 . 
 3 D 프린터 의 Open Souce Firmware 의 대표 격 인 Marlin 도 1 . 1 . x 대 를 마무리 하 고 32 bit 컨트롤러 를 지원 하 기 위한 2 . x 버전 구현 에 박차 를 가하 고 있 죠 . 
 32 bit Controller 들 
 8 bit 프로세서 대비 32 bit 프로세서 의 장점 을 기술 적 으로 논하 는 것 은 꽤 방대 하 고 전문 적 인 지식 을 요구 합니다 . 마이컴 개론 을 여기 서 전부 다 논 할 수 는 없 겠 지요 . . 간단히 말 하 면 , 8 Bit 프로세서 보다 32 Bit 프로세서 가 집적도 가 높 고 , 상대 적 으로 최신 기술 이 며 무엇 보다 동작 속도 가 매우 빠르 다는 점 입니다 . 집적도 가 높 고 최신 기술 이 적용 되 어 동일 한 칩 공간 안 에 보다 복잡 한 연산 을 단일 명령어 로 처리 할 수 있 는 부 가 회로 를 넣 을 수 있 게 되 었 고 , 이러 한 덕분 에 8 bit 프로세서 에서 여러 단계 를 거쳐야 계산 할 수 있 었 던 연산 을 보다 적 은 단계 로 게다가 매우 빠르 게 처리 할 수 있 게 되 었 습니다 . 더욱이 8 Bit 프로세서 보다 훨씬 많 은 Register 와 메모리 , 그리고 다양 한 인터페이스 를 지원 한다는 점 도 장점 이 라고 할 수 있 습니다 . 
 3 D 프린터 의 컨트롤러 가 보다 빠른 처리 속도 를 갖 는다는 의미 는 바꾸 어 말 하 면 동일 한 시간 에 보다 많 은 일 을 처리 를 할 수 있 다는 의미 가 됩니다 . 초창기 X / Y / Z 직교 방식 의 FFF ( Fused Filament Fabrication ) 3 D 프린터 가 등장 했 을 때 는 빠른 출력 을 기대 하 지 않 았 고 , 온전히 3 D 프린팅 이 가능 한 가 에 몰입 되 어 있 었 습니다 . 지금 도 소위 Prusa Style 로 대표 되 는 Classic Cartesian Style 의 3 D 프린터 들 은 최초 의 그것 과 구조 면 에서 는 크 게 다를 바 가 없 습니다 만 , 3 D 프린터 의 진화 와 함 깨 점차 개선 된 구조 의 프린터 들 이 등장 을 하 게 되 는데요 , CoreXY , H - Bot , Delta , Scara 방식 등 의 프린터 들 이 그것 들 입니다 . 이 들 프린터 들 은 구조 상 2 개 혹은 3 개 의 모터 가 반드시 동시 에 구동 을 해야 하 는 구조 여서 X / Y / Z 축 구동 과 관련 된 수학 적 계산 또한 Classic Style 의 3 D 프린터 보다 복잡 합니다 . 즉 , 동일 한 시간 에 동일 한 속도 로 3 D 프린팅 을 한다고 가정 을 해 보 면 , 보다 복잡 한 연산 은 그 만큼 높 은 처리 속도 를 요구 하 게 됩니다 . 더군다나 초창기 보다 복잡 해진 Motion Planer 때문 에 처리 속도 에 대한 요구 도 는 더 높 아 지 게 되 었 죠 . 
 Step Rate 란 1 초 당 Step 수 로 단위 는 steps / sec 입니다 . 3 D 프린터 의 출력 속도 는 Step Rate 에 의해 결정 이 됩니다 . 앞서 3 d 프린터 컨트롤러 의 가장 주된 기능 이 Step Pulse 를 생성 하 고 이 를 통해 모터 를 구동 하 는 것 이 라고 말씀 을 드렸 는데요 . Stepper Motor 는 Step 이 라는 단위 로 회전 을 하 는데 , 일반 적 으로 1 . 8 도 혹은 0 . 9 도 의 Step 을 지원 합니다 . 이 는 자전거 에서 패 달 을 밟 는 것 과 비유 될 수 있 습니다 . 자전거 가 앞 으로 나아가 려면 사람 이 패 달 을 밟 아 줘야 하 는 것 처럼 Stepper Motor 는 Step pulse 를 받 아야 합니다 . 마이크 로 컨트롤 로부터 발생 된 이 신호 는 곧바로 Stepper Motor 로 들어가 는 것 은 아닙니다 . Step Pulse 는 소 신호 이 고 , 실제 Stepper Motor 를 구동 하 기 위해 필요 한 전기 신호 를 만들 어 주 기 위해 Stepper Motor Driver 라는 회로 가 필요 하 죠 . 즉 , MCU -> Stepper Driver -> Stepper Motor 의 과정 을 거쳐야 합니다 . 
 3 D 프린터 의 Hotend 를 한 지점 에서 다른 한 지점 으로 이동 시키 려면 Stepper Motor 의 회전 운동 을 직선 운동 으로 바꿔 주 어야 하 는데요 . 일반 적 으로 Timing Belt 를 사용 합니다 . 널리 사용 되 는 GT 2 벨트 는 한 홈 의 간격 이 2 mm 입니다 . 이 밸 트 를 이용 하 기 위해서 는 동일 하 게 2 mm 간격 으로 홈 이 나 있 는 Gear ( 기어 ) 가 필요 한데 , 이 를 Stepper Motor Pulley ( 폴리 ) 라고 합니다 . 일반 적 으로 20 개 의 홈 을 갖 고 있 는 Pulley 를 사용 하 고 이 각각 의 홈 을 Tooth 라고 표현 합니다 . Pulley 에 GT 2 벨트 를 걸 고 회전 을 시킴 으로써 , Stepper Motor 의 회전 운동 을 직선 운동 으로 변환 되 게 됩니다 . 
 자 이젠 속도 의 개념 을 넣 어 , 1 . 8 도 Stepper Motor 로 1 초 에 10 Cm 를 이동 하 는 경우 를 생각 해 봅니다 . 
 10 Cm 면 100 mm 입니다 . 1 . 8 도 모터 , GT 2 벨트 그리고 20 T pulley 를 사용 하 는 환경 에서 1 초 에 10 Cm 를 이동 하 려면 1 초 에 필요 한 step 수 는 얼마 일까 ? 
 1 mm 이동 에 5 step 이 필요 하 므로 100 mm 를 이동 하 려면 100 배 즉 , 1 초 에 500 step 이 필요 합니다 . 이 경우 step rate 는 500 step / sec 이 ( 가 ) 되 는 것 이 죠 . 이것 을 컨트롤러 입장 에서 생각 해 보 면 , 1 초 에 500 번 의 Step Pulse 를 생성 해서 Motor 쪽 으로 보내 줘야 한다는 의미 가 됩니다 . 
 만일 , 32 Micro Stepping 을 할 경우 를 가정 하 면 , 위 의 계산 식 의 2 배 가 되 어야 하 므로 , 16 KHz 의 Stepping Pulse 를 생성 할 수 있 어야 하 고 , 만약 256 MS 라면 , 16 MS 보다 16 배 많 은 128 KHz 의 Step Pulse 를 1 초 안 에 생성 해 낼 수 있 어야 합니다 . 
 그럼 , 보다 높 은 Micro Stepping 을 사용 한다는 것 은 무슨 의미 인가 ? 
 Step Doubling . . Multi - Stepping 
 자 . . 이제 Step Doubling 이 라는 것 을 살펴볼 차례 입니다 . 
 동일 한 시간 동안 에 많 은 Step Pulse 를 생성 한다는 것 은 동일 한 시간 안 에서 더 많이 자전거 의 패 달 을 밟 는 것 과 같 습니다 . 같 은 시간 동안 에 자전거 의 패 달 을 더 많이 밟 으면 그 만큼 자전거 의 속도 는 빨라 지 죠 . 만일 패 달 을 밟 는 간격 이 일정 하 다면 자전거 의 속도 는 그 에 비래 하 여 일정 하 게 높 아 집니다 . 반대 로 패 달 을 불 규칙 하 게 밟 으면 어떻게 될까 ? 속도 가 올라가 거나 유지 되 기 는 하지만 자전거 는 매우 불 안정 해 질 것 입니다 . 
 3 D 프린터 의 MCU 도 속도 를 제어 하 기 위해 Step Pulse 를 생성 할 때 , Step Pulse 를 일정 한 간격 으로 발생 시키 는 것 이 매우 중요 합니다 . 그래야 안정 적 으로 보다 높 은 출력 품질 을 얻 을 수 있 습니다 . 컨트롤러 는 Motor 를 구동 하 는 이 외 에 도 다양 한 처리 를 하 는데 , 이러 한 처리 가 Step Pulse 발생 주기 에 영향 을 미치 는 것 을 방지 하 기 위해 Interrupt 처리 라는 것 을 하 게 됩니다 . Interrupt 는 System Clock 의 따라 정확히 동일 한 간격 으로 이벤트 가 발생 하 는데 , 특정 Interrupt 발생 주기 때 마다 step pulse 를 발생 시킴 으로써 , 일정 한 간격 을 유지 할 수 있 게 됩니다 . 당연히 System Clock 이 빠르 면 빠를수록 더 많 은 Interrupt 를 발생 시킬 수 있 고 , 따라서 Step Pulse 생 성 주 기 도 짧 아 지 게 됩니다 . 
 현재 3 D 프린터 컨트롤러 에 널리 사용 되 는 MCU 는 ATMEGA 2560 이 라는 8 bit 프로세서 인데요 , 이 프로세서 도 1 초 에 매우 많 은 Interrupt 를 발생 시킬 수 있 지만 , Step Pulse 생성 과 관련 해서 는 대략 1 초 에 10 , 000 번 즉 , 10 kHz 의 ISR ( Interrupt Service Routine ) 을 사용 할 수 있 습니다 . 위 의 설명 에서 1 . 8 도 Stepper Motor 와 GT 2 벨트 , 20 T Pulley 를 사용 하 고 1 / 16 MS 에서 100 mm / s 의 속도 를 낼 경우 8 kHz 의 Step Pulse 를 생성 해 낼 수 있 어야 한다고 했으므로 , ATMEGA 2560 칩 을 사용 한 8 bit 컨트롤러 는 이론 적 으로 1 / 16 MS 에서 100 mm / s 의 속도 를 처리 할 수 있 습니다 . 하지만 , 32 MS 를 적용 할 경우 에 는 16 KHz 가 필요 하 므로 , 이론 상 처리 를 할 수 없 습니다 . 능력 을 초과 하 는 것 이 죠 . 
 그렇 다면 ATMEGA 2560 을 사용 한 컨트롤러 는 32 MS 를 사용 할 수 없 다는 말 인가 ? 
 아닙니다 . 이 는 어디 까지 나 최대 속도 를 100 mm / s 의 속도 를 가정 할 경우 에 그렇 다는 것 이 므로 , 속도 를 반 인 50 mm / s 으로 줄이 면 1 초 당 필요 한 step pulse 도 반 으로 줄어들 기 때문 에 8 KHz 가 되 고 . 따라서 , 최고 속도 를 50 mm / s 로 제한 한다면 32 MS 도 사용 할 수 있 는 셈 입니다 . 같 은 방식 으로 속도 를 25 mm / s 로 제한 하 면 , 64 MS , 12 . 5 mm / s 으로 제한 하 면 128 MS , 다시 1 / 2 을 해서 6 . 25 mm / s 으로 제한 하 면 256 Micro stepping 으로 설정 해도 처리 를 해 낼 수 있 습니다 . 결론 적 으로 속도 를 저 속 으로 구동 한다면 높 은 MS 를 사용 할 수 있 므므로 이론 적 으로 는 보다 정밀 한 출력 을 할 수 있 다는 말 이 됩니다 . 
 이제 좀 더 현실 적 으로 접근 을 해 봅니다 . 
 ATMEGA 2560 에서 32 MS 로 설정 을 하 고 최고 속도 를 100 mm / s 으로 설정 을 하 면 안 되 는가 ? 답 은 될 수 도 있 고 안 될 수 도 있 습니다 . 
 곡선 구간 도 마찬가지 입니다 . 곡선 구간 에 들어가 는 시점 에서 는 감속 혹은 정속 을 해야 하 고 , 곡선 구간 을 빠져 나올 때 다시 가속 혹은 정속 을 유지 해야 합니다 . 이러 한 곡선 구간 이 연이 어 이어져 있 다면 가속 을 할 래야 할 기회 는 없 을 것 입니다 . 즉 , 속도 와 가속도 를 어떻게 설정 했 는가 와 는 무관 하 게 실제 속도 는 설정 치 보다 활씬 못 미칠 수 있 습니다 . 
 그럼 항상 저 속 으로 출력 해야 만 한단 말 인가 ? 
 역시 그렇 치 않 습니다 . 가속도 의 값 을 매우 크 게 하 면 됩니다 . 가속도 의 값 을 크 게 한다는 것 은 보다 짧 은 시간 에 높 은 속도 에 빠르 게 도달 할 수 있 다는 말 이 됩니다 . 물론 최고 속도 가 정해져 있 기 때문 에 그 수준 을 넘어서 서 는 안 됩니다 . 즉 , 가속도 를 높 게 설정 하 여 짧 은 순간 에 최고 속도 인 100 mm / s 에 도달 해 버린다면 32 MS 를 사용 할 수 없 습니다 . 능력 초과 이 기 떄문 입니다 . 
 여기 까지 만 , 이 글 을 읽 으면 이래저래 32 MS 를 사용 할 수 없 는 것 처럼 느껴 지 실 것 입니다 . 하지만 , 이렇게 능력 을 초과 할 경우 에 도 높 은 Micro - Stepping 을 사용 할 수 있 도록 Firmware 개발자 들 은 아이디어 를 냈 습니다 . 그것 이 바로 Step Doubling 혹은 Multi - Stepping 이 라는 기법 입니다 . 
 Step Doubling 이란 , interrupt 이벤트 가 발생 했 을 때 , 한 번 의 Step Pulse 를 발생 시키 는 원칙 을 깨 고 2 번 ( double ) 혹은 4 번 ( quad ) 혹은 8 번 ( octa ) . ... Step Pulse 를 연속 해서 발생 시키 는 기법 입니다 . 원래 는 1 초 마다 1 번 씩 자전거 패 달 을 밟 는 것 이 원칙 인데 , 1 초 에 2 번 혹은 4 번 , 그리고 그 다음 1 초 후 에 또 2 번 혹은 4 번 이렇게 패 달 을 밟 는 것 이 죠 . 패 달 을 많이 밟 기 때문 에 자전거 의 속도 는 올라갈 수 있 지만 , 불 규칙 적 으로 패 달 을 밟 기 때문 에 매우 불 안정 한 상태 가 될 수 있 습니다 . 3 D 프린트 의 실제 출력 중 에 는 저속 / 감속 구간 들 이 매우 많 기 때문 에 높 은 MS 를 설정 해도 사용 할 수 는 있 는데 , 몇몇 구간 에서 는 능력 을 초과 할 수 있 기 때문 에 이 경우 에 만 Step Doubling 처리 를 하 는 것 입니다 . 하지만 , 이러 한 기법 은 자전거 패 달 의 예 처럼 non - uniform stepping 즉 , 불 규칙 적 인 Step Pulse 생성 이 라는 부작용 을 만들 어 냅니다 . 이것 은 Step motor 의 동작 을 미세 하 게 불안 하 게 만드 는 요인 이 되 며 , 각 축 을 당당 하 는 Stepper Motor 들 간 의 동기 화 ( Sync ) 가 불안 해질 수 있 고 , 경우 에 따라서 는 step 이 꼬여 버려 건너뛰 는 Step Lost / Step Skip 현상 이 발생 하 는 등 , 부분 적 인 출력 문제 를 발생 시키 는 요인 이 될 수 있 습니다 . 높 은 MS 을 사용 할 수 는 있 지만 혹은 특정 MS 에서 높 은 속도 를 낼 수 는 있 지만 완전 한 해법 은 아닌 셈 입니다 . 8 bit 컨트롤러 에서 Micro - Stepping 을 16 으로 하나 32 로 하나 혹은 그 보다 높 은 MS 로 설정 을 하나 출력 결과물 에서 별 차이 를 못 느끼 는 이유 가 바로 위 와 같 은 메카 니즘 이 동작 하 기 때문 인 것 입니다 . 
 따라서 , 현실 적 인 대안 은 그냥 보다 빠른 처리 를 할 수 있 는 MCU 를 사용 하 는 것 입니다 . 그리고 여기 에 " 이론 적 인 " 32 bit 컨트롤러 의 정점 이 있 습니다 . 물론 32 bit 컨트롤러 의 경우 에 도 Step Doubling 로직 은 여전히 존재 하 고 동작 합니다 . 사용자 가 얼마나 높 은 속도 와 가속도 를 설정 할 지 를 개발자 는 알 수 없 기 도 하 거니와 어떤 규격 의 모터 를 사용 할지 , 어떤 규격 의 Timing Belt 를 사용 할지 모르 기 때문 입니다 . 
 정리 를 해 보 면 , 8 Bit 컨트롤러 보다 32 bit 컨트롤러 의 처리 속도 와 관련 된 잇 점 은 명백 합니다 만 , 이러 한 32 bit 컨트롤러 의 장점 이 절대 적 일 수 없 는 이유 는 사용 자 가 설정 한 속도 , 가속 도 , Jerk , Micro - Stepping 등 에 따라 8 Bit 컨 트 로러 로 도 충분 할 수 있 기 때문 이 며 , 현실 적 인 측면 에서 고속 출력 이 비단 컨트롤러 의 처리 속도 에 좌우 되 는 것 은 아니 라는 점 때문 입니다 . 오히려 어떤 필라멘트 를 사용 하 는 가가 출력 속도 를 결정 하 는데 더 큰 요소 로 작동 하 게 됩니다 . 굳이 높 은 능력 을 사용 하 지 도 않 을 건데 , 32 bit 컨트롤러 로 바꿀 이유 는 없 는 것 이 죠 . 32 bit 컨트롤러 를 사용 하 고 , 1 / 256 MS 를 설정 해도 여전히 안정 적 인 출력 을 위해서 는 50 mm / s 이하 의 속도 로 출력 을 해야 하 는 것 이 현실 입니다 . ^^. 설사 100 mm / s 에서 안정 적 인 출력 이 가능 한 필라멘트 를 사용 한다 하 더라도 Extruder 의 Heating Block 에서 팔리 멘 트 를 100 mm / s 속도 로 출력 할 수 있 을 만큼 충분히 빠르 게 가열 할 수 없 다면 역시 고속 출력 은 무의미 할 수 있 습니다 . 
 이번 포스트 에서 는 다루 지 않 게 지만 사용 하 는 Stepper Motor 의 규격 에 도 제한 요소 가 있 습니다 . Stepper Motor 는 구조 적 인 특성 상 , 소위 Back EMF 라는 특성 이 있 어 , 특정 속도 이상 에서 는 BEMF 때문 에 torque 가 떨어지 는 문제 가 발생 합니다 . 암튼 이래저래 3 D 프린터 에서 고속 으로 출력 하 기 위해서 는 매우 다양 하 고 많 은 요소 들 을 고려 해야 합니다 . 단순히 컨트롤러 만 빠르 다고 해서 고속 출력 을 할 수 있 는 것 은 아닙니다 . 
 하지만 , 사용 하 는 프린트 구성 이 충분히 사용 자 가 원 하 는 고속 에서 문제 가 없 다면 32 bit 컨트롤러 의 빠른 출력 은 분명 8 bit 컨트롤러 의 한계 뛰어넘 는 것 입니다 . 
 자 다음 은 정밀도 를 봅니다 . 
 32 bit 컨트롤러 의 또 다른 장점 은 높 은 MS 를 사용 함 으로써 , 동일 한 조건 에서 8 bit 컨트롤러 보다 정밀 한 출력 을 할 수 있 다는 점 을 들 수 있 는데요 . 현실 은 그 차이 가 기대 이하 입니다 . 가장 큰 이유 는 Slicer 에 있 습니다 . 
 3 D 모델 은 Polygon Mesh 라는 구조 로 되 어 있 으며 , 수 많 은 다양 한 모양 의 삼 격 형 Mesh Face 라는 단위 로 구성 됩니다 . 
 즉 , Slicer 가 3 D 모델 을 분석 하 여 GCode 를 생성 할 때 , 얼마나 세밀 한 Mesh Face 로 결과 를 낼 것 인가 에 정밀도 와 복잡도 가 1 차 적 으로 결정 되게 됩니다 . 만약 Slicer 가 복잡 한 3 D 모델 을 매우 간략 한 구조 로 결과 를 내 놓 는다면 정밀도 는 떨어질 것 이 고 , 반대 로 매우 세밀 하 게 분석 해 낸다면 정밀도 는 높 아 질 것 입니다 . 물론 용량 은 엄청나 게 커지 게 되 고 , 처리 시간 도 매우 오래 걸리 게 되 겠 죠 . 
 자 그럼 한 가지 예 를 보 도록 하 겠 습니다 . 
 아래 보 시 면 , 지름 10 mm 원 모양 의 모델 을 만들 고 . 이 녀석 을 STL 로 저장 을 할 때 , 기본 해상도 와 높 은 해상도 로 각각 생 성 을 했 습니다 . 그리고 , 이 Mesh 파일 을 다시 , 불러 들여서 Mesh 구조 을 보 면 아래 와 같 습니다 . 
 보 시 면 , 원시 모델 이 가운데 있 고 , 그 오른쪽 에 는 저 해상도 의 Mesh 가 반대 로 왼쪽 에 는 고해상도 의 Mesh 가 놓여 있 습니다 . 고해상도 Mesh 는 너무 세밀 해서 Mesh Face 가 잘 보이 지 도 않 을 정도 이 죠 . 저 해상도 Mesh 의 파일 용량 은 12 KB , 고해상도 Mesh 의 파일 용량 은 84 KB 정도 가 됩니다 . 
 이제 이 둘 을 Slicer ( Slic 3 r PE ) 에 넣 고 Slicing 을 해 봅니다 . 
 보 시 면 , 윗 쪽 이 고해상도 Mesh , 그리고 아래쪽 이 저 해상도 Mesh 입니다 . 아 제 생성 된 GCode 에서 저 해상도 Mesh 와 고해상도 Mesh 의 첫 번 째 최 외각 Circle 에 해당 하 는 Gcode Sequence 만 뜯어내 어 비교 를 하 면 아래 와 같 습니다 . 
 결과 를 보 고 확인 할 수 있 는 첫 번 째 사실 은 원 을 그리 기 위한 GCode Sequence 는 실제로 는 원 을 그리 는 것 이 아니 고 , 63 각 형 혹은 65 각 형 을 그린다는 점 입니다 . 두 번 째 사실 은 저 해상도 Mesh 를 Slicing 하나 고 해상도 Mesh 를 Slicing 하나 단 두 줄 의 차이 밖 에 는 없 다는 점 입니다 . 
 위 에 3 개 의 원 이 있 습니다 . 왼쪽 의 녹 색원 은 63 각 형 입니다 . 가운데 파란색 원 은 진짜 원 이 고 , 오른쪽 빨 강색 원 은 65 각 형 입니다 . 육안 으로 는 셋 모두 원 으로 보일 뿐 차이 가 있 어 보이 지 않 습니다 . 
 원 을 그리 기 위해 63 개 의 직선 을 사용 하 고 있 고 , 그 하나 의 직선 은 매우 작 은 직선 입니다 . 하나 의 그 작 은 직선 을 100 step 으로 출력 하나 , 16 배 인 1600 step 으로 출력 하나 의미 는 없 습니다 . 둘 다 그저 직선 일 뿐 이 죠 . . 더욱이 고해상도 Mesh 로 Slicing 을 한다고 해서 더 짧 고 많 은 직선 으로 촘촘히 원 을 그리 는 것 도 아닙니다 . 이러 니 , 8 bit 컨트롤러 를 사용 하나 32 bit 컨트롤러 를 사용 하나 정밀도 에서 큰 차이 가 날 리 가 없 습니다 . 
 Slicer S / W 를 만드 는 개발자 들 또한 , 현재 8 bit 컨트롤러 들 이 주류 를 이루 고 있 으며 , 그 들 의 처리 능력 의 한계 를 충분히 이해 하 고 있 습니다 . 따라서 , 딱 그 수준 에 맞 는 결과 를 내 놓 고 있 는 것 이 죠 . 바꿔 말 해 32 bit 컨트롤러 들 이 이론 적 으로 는 8 bit 컨트롤러 보다 같 은 시간 에 더 미세 하 게 구동 할 수 있 는 것 은 분명 하 지만 , 실제로 는 8 bit 컨트롤러 가 처리 할 수 있 는 수준 의 GCode Sequence 를 그대로 사용 할 수 밖 에 없 기 때문 에 , 8 bit 컨트롤러 와 32 bit 컨트롤러 의 출력 품질 차이 는 거의 없 습니다 . 설사 더 세밀 한 GCode Sequence 를 생성 해 낸다 하 더라도 육안 으로 는 그 차이 가 도 드라 지 지 않 습니다 . 따라서 , 빠른 출력 이 요구 되 는 매우 특별 한 몇몇 경우 를 제외 하 고 는 일반 적 으로 는 아주 미미 할 뿐 차이 가 거의 없 다고 볼 수 있 습니다 . 
 위 에서 속도 와 정밀도 두 측면 을 살펴봤 지만 , 현실 이 이렇 다면 굳이 32 bit 컨트롤러 로 바꾸 거나 혹은 구매 할 필요 성 을 크 게 느낄 수 없 습니다 . 오랜 시간 32 bit 컨트롤러 의 무용 론 에 무게 가 실린 이유 이 기 도 합니다 . 
 그럼 32 bit 컨트롤러 들 의 장점 이 뭐 란 말 인가 ? 
 32 bit 컨트롤러 와 관련 된 펌웨어 들 은 보다 많 은 Gcode 버퍼링 , 직선 과 곡선 , 가속 과 감속 , 보다 정밀 하 고 부드러운 모션 과 필라멘트 압출 , 보다 안정 적 인 출력 , 8 비트 컨트롤러 에 내제 된 한계점 개선 등 을 실현 하 기 위해 매우 다양 한 기능 들 을 계속 추가 해 왔 고 앞 으로 도 계속 발전 해 나갈 것 입니다 . 서두 에서 도 언급 했 듯이 이제 8 bit MCU 로 는 이러 한 새로운 기능 들 을 담아내 기 가 벅찬 지경 에 이르 렀 습니다 . 즉 , 32 bit 컨트롤러 는 8 bit 컨트롤러 보다 다 빠르 고 더 정밀 한 출력물 을 얻 을 수 있 는 능력 때문 이 아니 라 8 bit 컨트롤러 의 한계점 을 돌파 하 기 위한 대안 일 뿐 입니다 . 
 또한 , 기존 8 bit 컨트롤러 들 이 구 시대 적 인 인터페이스 에 의존 적 인 것 을 탈피 하 여 보다 현실 적 이 고 미래 지향 적 인 인터페이스 를 접목 시키 기 위한 대안 이 32 bit 컨트롤러 인 것 입니다 . 
 따라서 , 기존 8 bit 컨트롤러 의 구성 에 단지 MCU 만 32 bit 로 업그레이드 한 32 bit 컨트롤러 들 은 큰 의미 가 없 습니다 . 사용자 들 로 부터 매우 긍적적인 평가 를 받 는 몇몇 컨트롤러 들 은 보다 많 은 기능 의 펌웨어 , WIFI 나 이더넷 인터페이스 를 제공 하 고 , 보다 유연 한 보드 확정 성 을 지원 하 며 , 보다 강력 한 Stepper Motor Driver 를 장착 하 고 있 고 , 훨씬 더 멋진 UI 인터페이스 를 지원 합니다 . 그래서 좀 비쌉니다 . . ^^ 
 최근 까지 32 bit 컨트롤러 들 은 8 bit 컨트롤러 들 보다 가격 이 높 았 습니다 . 하지만 , 대륙 의 그 들 덕분 에 가격 이 거의 8 bit 컨트롤러 와 같 아 지 는 수준 까지 내려왔 습니다 . 그래서 지금 은 과도기 입니다 . 검색 을 잘 하 지 않 으면 32 bit 컨트롤러 를 구매 할 비용 보다 더 큰 비용 으로 8 bit 컨트롤러 를 구매 하 는 어처구니 없 는 일 을 당할 수 있 는 때 입니다 . 물론 , 같 은 값 이 라면 32 bit 컨트롤러 가 8 bit 컨트롤러 보다 무조건 좋 은 것 이 다 라고 말 할 수 는 없 습니다 . 컨트롤러 를 구성 하 는 부품 의 수준 도 좀 봐야죠 . . 여하튼 , 이런 과도기 를 지나 고 나 면 8 bit 컨트롤러 들 은 차츰 시장 에서 사라질 것 입니다 . 또 그래야 관련 분야 의 기술 도 더 앞 으로 나아갈 수 있 고 . . 그 해택 은 온전히 우리 모두 의 것 이 될 것 이 니 말 입니다 . ^^ 
 이 글 을 다 읽 고 나 면 이렇게 질문 을 할 수 있 을 것 입니다 . 
 " 그래서 , 32 bit 컨트롤러 로 바꿔야 합니까 ? " 
 컨트롤러 를 교체 하 고 싶 다면 나름 의 이유 들 이 있 을 것 입니다 . 그 이유 를 해소 할 만 한 녀석 을 찾 았 다면 . . 뭘 망설이 겠 습니까 . 바꿔야 죠 . . ^^ 단 그 이유 가 속도 나 정밀도 라면 아직 은 실망 하 실 수 도 있 습니다 . 
 BIQU - SKR 1 . 2 업데이트 버전 준비 중 . ( 4 ) 
 Prusa - Slic 3 r PE 1 . 42 . 0 alpha 2 배포 ( 0 ) 
 8 bit 컨트롤러 vs . 32 bit 컨트롤러 ( 16 ) 
 3 D 프린터 컨트롤러 - 32 Bit MKS SGEN vs . BigtreeTech SKR 1 . 1 ( 7 ) 
 Prusa - Slic 3 r PE 1 . 42 . 0 alpha 1 릴리즈 ( 0 ) 
 32 bit , 3 D 프린터 , 8 bit , 컨트롤러 
 2019 . 01 . 07 	 BIQU - SKR 1 . 2 업데이트 버전 준비 중 . 
 2019 . 01 . 05 	 Prusa - Slic 3 r PE 1 . 42 . 0 alpha 2 배포 
 2018 . 12 . 26 	 3 D 프린터 컨트롤러 - 32 Bit MKS SGEN vs . BigtreeTech SKR 1 . 1 
 2018 . 12 . 25 	 Prusa - Slic 3 r PE 1 . 42 . 0 alpha 1 릴리즈 
 뭐 하 라 2019 . 01 . 05 00 : 20 신고 질문 이 있 습니다 ! 
 8 비트 컨트롤러 예 를 들 어 MKS GEN 1 . 4 에 라즈베리 파이 와 klipper 펌웨어 를 사용 하 면 32 비트 컨트롤러 와 비슷 한 처리 속도 를 가질 수 있 을까요 ? 
 elsa in mac 2019 . 01 . 05 00 : 24 신고 비슷 한 정도 가 아니 죠 . . RPI 의 처리 속도 는 GHz 입니다 . 굉장 한 거 죠 . . 32 비트 컨트롤러 와 실 사용 시 에 느낄 수 있 는 차이 는 거의 없 습니다 . 저 도 한 동안 Klipper 를 사용 했 고 , 매우 좋 은 대안 이 될 수 있 습니다 만 . 사용자 층 이 너무 적 다는 게 좀 흠 입니다 . UI 환경 을 포함 하 여 아직 몇 가지 부족 한 부분 이 있 지만 , RPI 를 가지 고 계시 다면 도전 해 보 실 만 합니다 . 개인 적 으로 는 꽤 매력 적 이 라고 느끼 고 있 습니다 . 
 뭐 하 라 2019 . 01 . 05 00 : 34 신고 답변 정말 감사 드립니다 ! 한 가지 만 더 여쭤볼 게 요 
 32 비트 컨트롤러 와 옥토 프린트 조합 에서 는 8 비트 컨트롤러 에서 처럼 속도 지연 같 은 문제 가 없 을까요 ? 
 옥토 프린트 에 8 비트 + klipper 
 옥토 프린트 에 32 비트 조합 중 에 고민 중 입니다 
 elsa in mac 2019 . 01 . 05 00 : 51 신고 음 . . 우선 8 비트 컨트롤러 + 옥토 프린터 에서 의 속도 지연 이 라는 것 이 어떤 것 인지 는 잘 모르 겠 습니다 . 
 저 의 과거 경험 ( 옥토 + Gen 1 . 4 ) 에서 는 속도 지연 이 라는 것 을 경험 해 보 지 는 못했 는데요 . . . 
 문제 의 원인 이 옥토 에 있 다면 32 bit 컨트롤러 를 사용 해도 마찬가지 일 것 이 고 , 컨트롤러 쪽 에 원인 이 있 다면 펌웨어 에 따라 문제 가 해소 가 될 소지 도 있 어 보 입니다 . 
 Marlin 의 경우 GCode Buffer 가 4 개 로 알 고 있 는데요 . . 32 비트 펌웨어 인 Smoothieware 나 ReprapFirmware 등 은 이 보다 크 거든요 . . 
 klipper 를 사용 할 때 는 Gcode 파싱 을 PRI 에서 하 기 때문 에 , 가상 ( Virtual ) SD 라는 것 을 사용 해야 합니다 . 실제 SD 를 사용 하 면 컨트롤러 의 SD 에서 Serial 로 GCode 를 PRI 로 읽 어 드린 후 에 step pulse 를 만들 기 때문 에 문제 가 될 수 있 습니다 . 
 Klipper 는 옥토 에 절대 의존 적 인데 . . Klipper 로 100 mm / s 으로 사용 하 면서 몇 차례 문제 가 있 기 는 했 습니다 . 나중 에 확인 한 사실 이 지만 Klipper 버그 때문 이 긴 했 죠 . 프린트 도중 에 멈추 는 일 도 있 었 고 . . 프린트 속도 를 높인다면 옥토 방열 에 도 신경 을 써야 합니다 . CPU 를 어마 무시 하 게 쓰 는 것 은 아니 지만 , 보통 출력 을 걸 면 몇 시간 씩 출력 을 하 는 경우 가 다 반사 인데 , 열 이 만만 치 않 습니다 . 
 명쾌 한 답변 을 드린 것 같 지 는 않 네요 . . ^^ 
 뭐 하 라 2019 . 01 . 05 00 : 58 신고 자세 한 설명 감사 드립니다 
 속도 지연 은 옥토 로 출력 할 때 랑 sd 에서 직접 출력 할 때 곡선 부분 에서 품질 차이 가 발생 한 것 이 있 어서요 통신 속도 한계 때문 인 것 같 아 보였 습니다 
 아직 도 고민 이 되 기 는 한데 미래 를 위해서 라도 32 비트 쪽 이 좀 더 끌리 긴 합니다 좀더 고민 해 봐야 할 것 같 네요 ㅠ감사합니다 ^^ 
 elsa in mac 2019 . 01 . 05 00 : 59 신고 RPI 도 결국 Linux Kernel 을 사용 할 텐데 , 열 이 많이 발생 하 면 Clock 을 다운 시키 는 Throttle 기능 이 동작 하 지 않 을까 생각 이 됩니다 . 이 경우 Performace 가 떨어질 수 는 있 을 것 같 군요 . . 
 뭐 하 라 2019 . 01 . 05 01 : 07 신고 http : / / bookledge . tistory . com / m / 895 
 북 리지 님 의 글 인데 마지막 부근 에 옥토 프린트 와 컨트롤러 사이 통신 속도 를 의심 하 는 부분 입니다 이게 32 비트 에서 는 해결 이 될지 가 궁금 한 사항 이 었 습니다 ㅎㅎ 
 elsa in mac 2019 . 01 . 05 01 : 28 신고 복 리지 님 ? 의 꽤 긴 글 을 읽 느라 좀 시간 이 걸렸 네요 . . ㅋ 
 음 . . 일단 USB 로 출력 을 할 경우 와 SD 카드 로 출력 을 할 경우 에 품질 에 차이 가 있 다는 의문 은 예전 부터 많이 있 어 왔 습니다 . 
 허나 . . 저 도 그 루트 를 출력 해 본 적 이 있 지만 , USB 로 출력 을 했 다고 해서 복 리지 님 의 경험 처럼 저렇 게 저 품질 로 출력 된 적 은 없 습니다 . 또한 USB 로 출력 하 는 자체 가 저렇게 큰 차이 를 낸다면 , 이미 USB 출력 방식 은 지구 상 에서 사라졌 을 것 입니다 . 
 글 을 작성 한 때 가 작년 4 월 로 아주 오래 전 은 아니 지만 . . 당시 펌웨어 나 Octoprint 의 내부 적 인 버그 때문 일 수 도 있 지 않 을까 생각 이 됩니다 . 
 저 는 최근 까지 도 거의 대부분 USB 로 출력 을 했었 고 , 품질 에 불만 을 가진 적 은 없 습니다 . 해외 유저 들 의 경우 에 도 USB 케이블 을 바꿔 보 기 를 권하 는 수준 이 지 USB 로 출력 하 면 망 이 다 하 고 결론짓 지 는 않 습니다 . 
 32 bit 라고 USB 를 통한 처리 가 8 bit 컨트롤러 와 다를 것 이 라고 생각 하 지 는 않 습니다 . 32 bit 를 사용 한다고 더 빨리 처리 하 는 것 은 아닙니다 . 8 bit 와 32 bit 의 차이 는 X 라는 처리 속도 를 처리 할 수 있 느냐 없 느냐 의 차이 지 동일 하 게 셋 팅 ( 속도 , 가속 도 , MS , Jerk 등등 ) 된 환경 에서 차이 가 나 는 것 은 아닙니다 . 오히려 MS 를 높 혔 다면 더 많 은 일 을 하 겠 죠 . . 다만 앞서 언급 했 듯이 펌웨어 에 따라 다를 수 있 습니다 . USB Buffer 를 얼마나 잡 고 처리 할 것 인가 가 관건 인데 . . 동일 한 Marlin 펌웨어 를 사용 해도 버전 에 따라 patch 가 되 었 을 수 도 있 기 때문 에 과거 의 기록 들 에 연연 하 는 것 은 무의미 할 수 있 다고 봅니다 . 현재 의 펌웨어 , 옥토 버전 에서 는 또 어떨지 모르 는 일 이 니 말 이 죠 . . 
 하지만 , USB 가 SD 로 출력 할 때 보다 더 좋 거나 할 수 없 는 것 은 명백 한 사실 이 기 는 합니다 . 기본 적 으로 flow control 을 하 지 않 는 관계 로 Gcode 파싱 간 에 적절 한 타이밍 이 보장 될 수 없 기 때문 입니다 . 
 우선 현재 에서 문제 를 겪 고 계시 다면 SW 들 을 최신 버전 으로 업데이트 를 하 거나 케이블 을 바꿔 사용 해 보 시 고 , 그래도 문제 가 된다면 SD 카드 를 통한 출력 그래도 불편 하 다면 컨트롤러 변경 을 검토 해 보 시 기 를 권해 드립니다 . 32 bit 컨트롤러 들 은 WIFI 나 이더넷 인터페이스 를 이용 할 수 있 기 때문 에 컴퓨터 에서 GCode 를 컨트롤러 로 보내 는 것 이 USB Serial 을 이용 하 는 것 보다 비교 할 수 없 을 만큼 빠르 기 때문 입니다 . 
 뭐 하 라 2019 . 01 . 05 10 : 52 신고 신경 써서 답변 해 주 셔서 감사 드립니다 ! 
 궁금증 을 참 지 못하 고 처음 으로 klipper 를 사용 해서 출력 해 보 았 습니다 . Ender - 2 라는 프린터 이 고 ATMEGA - 1284 p 를 사용 하 는 보드 입니다 . 
 그 결과 USB 전송 속도 한계 가 아닌 8 비트 프로세서 의 병목현상 이 원인 이 맞 는 듯 합니다 . 이전 에 아주 작 은 선 들 을 연속 으로 빠르 게 그릴 때 느껴졌 던 지연 현상 이 확연히 사라졌 습니다 . 다만 마를린 의 버그 였 던 것 이 klipper 에서 해결 된 걸 지도 모르 지만 요 . 
 병목현상 이 든 펌웨어 문제 든 klipper 로 해결 되 는 문제 라면 32 비트 컨트롤러 에서 도 문제없 는 게 맞 을 것 같 습니다 감사 합니다 
 elsa in mac 2019 . 01 . 05 11 : 31 신고 하 실마리 를 찾 으셨 다니 . . 저 도 기쁩니다 . 지금 은 저 도 klipper 를 사용 하 고 있 지 는 않 은데 저 가 32 비트 컨트롤러 들 이 대거 나오 는 바람 에 klipper 의 매 릿 이 많이 퇴색 될 거 같 아요 . . 정말 멋진 아이디어 인데 말 이 죠 . 하지만 늘 그렇 듯 계속 발전 해 나가 겠 죠 . 단지 우리 들 의 관심 이 필요 할 뿐 ^^ 
 elsa in mac 2019 . 01 . 05 11 : 35 신고 앞서 말씀 드렸 듯이 32 bit 컨트롤러 들 은 이더넷 인터페이스 가 기본 이 라 , 이더넷 을 통해 Gcode 를 컨트롤러 의 SD 로 Upload 하 는 게 정말 빠르 기 때문 에 굳이 USB 로 출력 할 필요 가 없 습니다 . 광장 한 매 릿 이 죠 . . 가끔 잊 지 말 고 들러 주 시 고 . . 궁금 한 거 나 같이 의견 을 나누 고 싶 으신 게 있 다면 언제 든 댓글 남겨 주 세요 ^^ 
 뭐 하 라 2019 . 01 . 05 11 : 49 신고 넵 ^^ 자작 프린터 준비 중 인데 보 드 선정 을 못 해서 요 엘사 님 말 대로 좀 더 개선 된 32 비트 보드 를 기다려 보 고 있 습니다 보 드 나오 면 포스팅 부탁 드려요 ~~ 
 북 리지 2019 . 01 . 15 00 : 53 신고 경험 적 으로 뜨문뜨문 알 고 있 던 것 을 이렇게 명확히 정리 해 알려 주 신 정말 큰 도움 이 되 었 습니다 . 
 앞서 한 분 이 질문 한 내용 에 베이비 그루트 여드름 문제 에 대한 내용 이 있 었 는데 , 그 부분 에 대한 내용 을 잠시 언급 드리 자면 다음 과 같 습니다 . 
 1 . 일반 적 인 직선형 출력 시 에 는 문제 없이 잘 나옴 
 2 . 메 쉬 데이터 가 큰 곡선 이 많 은 데이터 출력 시 여드름 현상 나옴 
 ( 앞서 엘사 님 께서 2 줄 밖에 차이 가 나 지 않 는다는 것 과 달리 슬라이 서 별로 mesh 에 대한 처리 resolution 이 다르 다는 것 을 발견 ) 
 3 . 옥토 사용 시 곡면 형성 에 따른 병목 은 옥토 프린터 제작자 도 인정 한 부분 으로 속도 를 줄여 출력 하 라고 코멘트 
 4 . 마지막 엉망 으로 나온 베이비 그루트 결과물 은 옥토 를 사용 하 면서 델타 프린터 에 적용 한 결과 임 . 속도 도 낮추 지 않 았 고 , 델타 의 많 은 연산 이 들어가 야 하 는 상황 에서 8 bit 보드 의 한계 상황 과 옥토 가 합작품 으로 만든 결과 라고 여겨짐 
 5 . 해외 사용 자 의 경험 들 중 에 는 USB 연결 출력 이 라고 해서 그런 것 은 아니 고 옥토 와 보드 와 의 통신 이 기존 USB 와 는 어떤 차이 를 보이 고 있 음 을 확인 함 . 
 이 를 통해 볼 때 엘사 님 께서 말씀 하 시 는 부분 은 맞 다고 생각 되 며 , 제 가 글 에서 이야기 했 던 것 도 실제 제 가 경험 한 것 을 바탕 으로 한 것 으로 사실 임 을 말씀 드립니다 . 
 아 . . 그리고 저 는 ' 복 ' 이 아니 라 ' 북 ' 리지 입니다 . ^^ 
 엘사 님 의 전문 적 인 접근 에 큰 배움 이 됩니다 . 다시 한 번 진심 으로 감사 드립니다 . 
 elsa in mac 2019 . 01 . 15 00 : 59 신고 아 안녕 하 세요 . .. 이런 제 가 닉네임 을 잘 못 봤었 네요 . . 사과드립니다 . . ^^. 네 . . 3 d 프린터 의 구성 이나 구조 의 조합 에 따라 나타날 수 있 는 품질 문제 는 정말 매우 다양 하 죠 . .. 그래서 참 어려운 것 같 습니다 . ^^ 
 stylehoni 2019 . 04 . 10 22 : 38 모든 분 들 대단 하 십니다 . 좋 은 글 , 좋 은 댓글 . 잘 읽 고 갑니다 
 elsa in mac 2019 . 04 . 10 23 : 00 신고 ^^ 
 Prev 1 · · · 181 182 183 184 185 186 187 188 189 · · · 552 Next