본문으로 바로가기

파일의 IT 블로그

  1. Home
  2. 정보/IT
  3. Ramps v1.4 + TMC2209 후기 및 적용 방법

Ramps v1.4 + TMC2209 후기 및 적용 방법

· 댓글개 · KRFile

기존 사용하던 모터 드라이버는 A4988입니다. 값도 천 원 꼴에 힘도 나쁘지 않고 괜찮습니다.

그러나 제일 스트레스받는 게 있다면 역시 소음입니다.

모터 축을 컨트롤 하면서 고주파음이랑 큰 소음이 발생하는데 이게 3D 프린터 소음의 거의 80% 이상을 차지합니다.

(나머지 20%는 SMPS, 익스트루더 팬 소음)

 

이에 대해 가장 좋은 해결방법은 스텝 모터 드라이버를 TMC 드라이버로 바꾸는 것입니다.

TMC 드라이버는 stealthChop, Spreed Cycle 등 몇몇개의 모드를 지원하는데

 stealthChop 기능을 사용하면 무소음에 가까운 프린팅이 가능합니다.

 

http://3dmodularsystems.com/en/stepper-motor-drivers/661-tmc2209-silent-stepper-motor-driver.html

TMC 드라이버엔 여러 버전이 있는데 숫자가 클수록 최신 버전이라는 뜻이라고 이해하면 됩니다.

TMC 2130은 2100번대 끝판왕 모델이기 때문에 모든 기능을 전부 지원하지만 발열 때문에 stealthChop 모드에서 탈조등의 문제가 있습니다. 물론 이건 TMC 드라이버 거의 대부분에 해당되는 것이지만

 

최신판인 TMC2209 에서는 이것이 조금 해결이 됐고

TMC2208에서 아쉬웠던 StallGuard 기능을 지원합니다.

 

StallGuard 란 Sensorless Homing이라는 이름으로 사용되는데 한마디로 엔드 스톱 센서 없이 엔드 스탑의 역할을 드라이버에서 할 수 있는 기능인데요. 엔드 스탑에 걸리게 되면 모터가 더 이상 돌지 않아 역전압이 걸리게 되는데 아마 드라이버가 이를 인식하여 멈추는 기능 같습니다.

 

물론 전 사용하지 않을 거지만 나쁘지 않은 기능 같아 보이고요 ^^ (물론 UART 통신시에만 지원합니다.)

저는 결론적으로 가장 최신 버전인 TMC2209를 구매했습니다.

 

https://ko.aliexpress.com/item/33029587820.html?spm=a2g0s.9042311.0.0.1d634c4dVdVrA3

 

US $5.81 8% OFF|BIGTREETECH TMC2209 V1.2 스테퍼 모터 드라이버 TMC2208 UART 2.8A 3D 프린터 부품 TMC2130 TMC5160 용 SKR V1.3 V1. 4 미니 E3-에서3D 프린터

Smarter Shopping, Better Living! Aliexpress.com

ko.aliexpress.com

제가 구매한 곳입니다. TMC2209 4 PCS 구매했고

BIGTREE 제품이 칩이 아래쪽에 있고 방열판을 위에 붙이는 형식이라 사용하기 편합니다.

 

배송기간은 20일 걸렸습니다. Aliexpress Standard Shipping 이용했습니다.

준등기로 처리돼서 그냥 연락도 없이 우체통에 꽂고 가더라고요.

 

 

 

크기는 생각보다 매우 작습니다. 사진은 좀 커 보이게 나왔는데 엄청 작아요.

뒷면에 TMC2209 X4라고 잘 적혀있네요. 옵션에서 TMC2208과 헷갈릴까 봐 걱정했는데 다행인 듯합니다 ^^

안에는 방열판과 점퍼 케이블, TMC2209 드라이버가 있습니다.

방열판은 위에 저기 금박에 있는 곳에 붙여주면 됩니다.

Github 주소와 핀 맵이 나와있는 종이도 줬네요 친절합니다.

쓸모없는 사용 설명서보다 이게 100배 더 쓸모 있습니다.

GND를 확인해보면 알겠지만 A4988과 GND가 반대이므로 A4988과 반드시 반대방향으로 꽃아 줘야 합니다.

안 그러면 드라이버 사망합니다. 최악의 경우에 보드도 같이 죽을 수 있습니다 ^^;;

방열판까지 붙여줬습니다. Ramps 보드에 기존 A4988과 반대로 장착시켜줍니다..

그리고 가동.. 해봤더니 오잉? 오토홈을 하면 반대로 이동하네요

 

A4988 하고 거꾸로 끼워서 그런지 모터 방향도 반대로 바뀐 듯합니다.

 

귀찮게 펌웨어 바꾸기 싫으시면 그냥 기존 모터선 반대로 꼽으시면 돼요.

UART를 따로 적용 하지 않았다면

tmc2209와 보드가 통신하지 않고 그냥 A4988처럼 드라이버가 자체 제어합니다.

그렇기에 펌웨어에서 TMC 전류 조정이나 센서리스 호밍같은건 불가능해집니다.

 

램프스 모드는 기본적으로 UART 적용이 번거롭기에..

혹시 펌웨어로 드라이버 전류값을 조정하고 싶다 하면 핀만바꾸면 쉽게 uart를 적용할 수 있는 skr v1.4 보드 같은걸 사는걸 추천드립니다.

(가격도 크게 비싼편이 아니며 32bit에 아두이노 램프스처럼 보드 + 쉴드 구조가 아니라 단일 보드기 때문에 훨씬 깔끔합니다.)

 

보드 사는게 귀찮거나 싫으시다면 저기에 있는 가변저항 값을 조정해서 사용하시면 됩니다.

TMC는 1/16 분주를 내부에서 1/256 분주로 변환해서 처리해서 마이크로 스테핑으로 저소음을 구현합니다.

 

쉽게 얘기하자면 스텝모터가 한 스텝갈때 16번씩 돌리던걸 한 스텝갈때 256번, 더 잘게 돌려서

소음을 줄인다는 뜻입니다.

 

마이크로 스테핑을 하면 소음을 줄이는 장점이 있으나 더 잘게 쪼개서 돌리기때문에 힘(토크)이 약해지는 단점이 있습니다. 그래서 TMC사용때 탈조등을 방지하기 위해 전압을 올려서 사용해야 합니다.

 

TMC 드라이버 내의 +모양 가변저항에 테스터기로 +를 잡고 -는 파워 서플라이의 GND에 찍어서 전압을 확인하고 돌려서 올려주면 됩니다.

저같은 경우엔 0.963~1V 내외로 조정하니 발열도 거의 안발생하고 탈조없이 잘 나왔습니다.

(모터 별로 상이하기때문에 적정값을 잘 찾아보시면 됩니다. 너무 낮거나 너무 높으면 모터 드라이버에 발열이 심해져서 출력중에 아무 이유없이 멈춰버리는 경우가 생깁니다.)

 

UART 적용시

skr보드를 기준으로 점퍼를 왼쪽에 전부 몰아주고 tmc 드라이버를 꽃으면 uart 설정이 되게 됩니다.

 

장착이 완료되셨으면 Marlin 펌웨어를 수정해줘야 합니다.

마를린 2.x.x 는 자동으로 인식한다는데 1.1.9의 경우에는 작업을 해줘야 합니다.

 

아두이노 IDE로 이동해 라이브러리 관리창을 열어줍니다

라이브러리 매니저에서 TMCStepper 설치해주세요.

//Configuration.h

/**
 * Stepper Drivers
 *
 * These settings allow Marlin to tune stepper driver timing and enable advanced options for
 * stepper drivers that support them. You may also override timing options in Configuration_adv.h.
 *
 * A4988 is assumed for unspecified drivers.
 *
 * Options: A4988, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,
 *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,
 *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
 *          TMC5130, TMC5130_STANDALONE
 * :['A4988', 'DRV8825', 'LV8729', 'L6470', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE']
 */
#define X_DRIVER_TYPE  TMC2209
#define Y_DRIVER_TYPE  TMC2209
#define Z_DRIVER_TYPE  TMC2209
//#define X2_DRIVER_TYPE A4988
//#define Y2_DRIVER_TYPE A4988
//#define Z2_DRIVER_TYPE A4988
#define E0_DRIVER_TYPE A4988
//#define E1_DRIVER_TYPE A4988
//#define E2_DRIVER_TYPE A4988
//#define E3_DRIVER_TYPE A4988
//#define E4_DRIVER_TYPE A4988

그 후 Configuration.h로 가서 X, Y, Z, E0 드라이버 모델을 TMC2209로 바꿔줍니다.

저는 X Y Z 축에만 적용하고 혹시 나중에 드라이버 사망을 염려해서 익스트루더는 A4988을 그대로

사용하기로 했습니다.

 

//Configuration_adv.h

#if HAS_TRINAMIC

  #define R_SENSE           0.11  // R_sense resistor for SilentStepStick2130
  #define HOLD_MULTIPLIER    0.5  // Scales down the holding current from run current
  #define INTERPOLATE       true  // Interpolate X/Y/Z_MICROSTEPS to 256

  #define X_CURRENT          800  // rms current in mA. Multiply by 1.41 for peak current.
  #define X_MICROSTEPS        16  // 0..256

  #define Y_CURRENT          800
  #define Y_MICROSTEPS        16

  #define Z_CURRENT          800
  #define Z_MICROSTEPS        16

  #define X2_CURRENT         800
  #define X2_MICROSTEPS       16

  #define Y2_CURRENT         800
  #define Y2_MICROSTEPS       16

  #define Z2_CURRENT         800
  #define Z2_MICROSTEPS       16

  #define E0_CURRENT         800
  #define E0_MICROSTEPS       16

  #define E1_CURRENT         800
  #define E1_MICROSTEPS       16

  #define E2_CURRENT         800
  #define E2_MICROSTEPS       16

  #define E3_CURRENT         800
  #define E3_MICROSTEPS       16

  #define E4_CURRENT         800
  #define E4_MICROSTEPS       16

 

그리고 Configuration_adv.h로 와서 모터 드라이버 전류를 설정합니다.

원래 기존 세팅 그대로 썼는데 역시나 탈조가 발생했습니다.

TMC 전류 공식

모터 허용전류가 1.5A 일때,

((1.5 * 1.77) / 2.5) * 0.85 = 0.963, 소수점 뒷자리만 입력 -> 963

 

사용중인 모터를 구글에 검색해서 rated(정격) 전류를 보시고 저 모터 허용전류 공식에 넣어주시면 됩니다.

TMC에서 85% 까지만 전류를 사용하는걸 권장하고 있습니다.

 

이 값이 너무 높으면 모터 발열이 심해져서 모터 수명에 악영향을 끼칠 수 있습니다.

그렇다고 너무 낮으면 탈조가 발생합니다.

 

모터 발열이 어느정도 올라가는건 문제가 안되나 익스트루더 모터에 TMC를 적용한 경우 익스트루더 모터에 발열이 너무 심해지면 압출불량 등의 현상이 일어날 수 있습니다.

프린터마다 익스트루더 모터는 규격이 다를 수 있으니 꼭 확인하시고 모터 스펙별 적정 전류값을 넣어주시길 바랍니다.

 

참고로 uart통신으로 tmc 의 전류값을 조정한 경우 tmc 드라이버에서 자체적으로 있는 가변저항은 건들필요 없습니다.

가변저항으로 이미 전압값이 세팅된 상태라도 펌웨어에서 설정한 전류값이 우선 적용되는것으로 보입니다.

 

이후 펌웨어까지 올려주면 세팅은 대강 완료입니다.

드라이버 X, Y에만 우선 꼽고 모터 이동해보면서도 이건 대박이라고 느꼈습니다.

진짜 소리가 하나도 없습니다. 말 그대로 무소음이에요.

 

보이시나요? X, Y만 꼽고 테스트해봤는데 소리가 그냥 없습니다. A4988 하고 너무 비교가 심하게 됩니다.

모터 고주파음이나 진동도 없어요. 그런데 엔드 스톱이 조금 이상합니다. X엔드 스톱을 안 찍고 그냥 멈추네요.

아마 엔드스톱 배선에 문제가 생긴듯합니다. 눌려있는 상태로 인식하는 거 같아요.

 

M119 커맨드로 확인해보니 x_min이 항상 눌려있는 상태로 인식이 되네요.

확인해보니 선이 헐겁게 연결되어 있습니다. 수정해줍니다.

 

그렇게 해서...

 

정말 무소음의 꿈이 실현되었습니다. X, Y, Z 모터 소리가 하나도 안 납니다.

동영상 들어보면 소리가 조금 크게 느껴질 수 있는데 이건 익스트루더 모터 소리입니다.

익스트루더 모터는 소음 비중이 그리 크지 않아서 나중에 TMC 2208 하나가 고장 나면 바꾸기 위해

A4988로 남겨두었습니다.

 

팬소리랑 익스트루더 모터 소리 외엔 아무것도 안 들려요.

SMPS 방수로 바꾸고 팬은 녹투아 달면 그냥 소음은 없을 듯합니다 ^^

 

참고로 제가 사용하는 3D 프린터는 코어 200인데 주인장님이 소스코드를 공개하지 않다가 Marlin 오픈소스 문제로 말이 많아서 주인장님의 사정으로 Configuration과 Configuration_adv 만 공개된 상태입니다.

이런 일들을 보니 오픈소스의 대한 마인드가 확산되었으면 좋겠다는 생각이 듭니다 ^^;;

 


총평

가격 대비 굉장히 만족스러운 결과입니다.

모터 소리가 거의 제로가 되었습니다. 제가 예민해서 3D 프린터가 밖에 있는 데도 모터 고주파음이 조금씩 들렸는데 이제는 출력시켜도 출력시킨지도 모를 수준이 되었습니다.

출력 퀄리티도 상승한 느낌이 들고요.

 

아 그리고 안착에 문제 있는 분들은 인터넷에 판매 중인 SP-BED 사서 사용해보세요. 이거 사용하면 오히려 때는 게 스트레스가 됩니다. 너무 잘 붙어서요..  ABS 70도에서 엄청 잘 붙습니다 전기세 절약도 돼요.

 

 

궁금한 점이 있다면 댓글로 질문 부탁드립니다 감사합니다 ^^

 

 

SNS 공유하기
💬 댓글 개
이모티콘창 닫기
울음
안녕
감사해요
당황
피폐

이모티콘을 클릭하면 댓글창에 입력됩니다.