elsa in mac

Marlin 1.1.9 정식버전 릴리즈 본문

3D 프린터/3D 프린팅 관련 정보

Marlin 1.1.9 정식버전 릴리즈

elsa in mac 2018.08.03 09:32

드디어 marlin 1.1 버전의 마지막을 알리는 1.1.9 버전이 정식으로 릴리즈 되었습니다. 1.1.8 정식버전이 지난 2017년 12월 26일에 릴리즈 되었으니까 대략 7개월 만의 공식 업데이트 입니다 

적용할 3D 프린터의 유형에 따라, 1.1.9에 적용된 버그 픽스와 새로운 기능들이 많은 도움이 될 수도 그렇치 않을 수도 있겠죠..  자 그럼 1.1.8 대비 1.1.9에 어떠한 기능들이 새롭게 추가되고, 개선되었는지를 간단히 알아 보도록 하겠습니다.


Configuration.h...

Stepper Driver 유형 설정

Configuration.h에 추가된 옵션들로, X/Y/Z/E... 등 각 Motor에 적용된 Stepper Driver의 종류를 설정하는 옵션 입니다.  Default는 위에서 보는 바와 같이 A4988 드라이버로 정의 되어 있기 때문에, "반드시" 각자 자신이 사용하는 Stepper Driver로 바꿔 주어여 합니다.  옵션은 아래와 같습니다. 

#define X_DRIVER_TYPE  A4988

#define Y_DRIVER_TYPE  A4988

#define Z_DRIVER_TYPE  A4988

#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


 * Options: A4988, DRV8825, LV8729, L6470, TB6560, TB6600, TMC2100,

 *          TMC2130, TMC2130_STANDALONE, TMC2208, TMC2208_STANDALONE,

 *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,

 *          TMC5130, TMC5130_STANDALONE


TMC2130/TMC2260의 경우 SPI 를 사용하는 경우에는 TMC2130 또는 TMC2260을 사용해야 하며, SPI를 사용하지 않는 경우에는 TMC2130_STANDALONE 혹은 TMC2260_STANDALONE을 적용해야 합니다. 같은 논리로 TMC2208의 경우, UART 를 사용하는 경우에는 TMC2208, 그렇치 않는 경우에는 TMC2208_STANDALONE을 사용하면 됩니다. 

기존의 1.1.x Bugfix에서는 사용하는 Stepper Driver가 무엇이냐에 따라 Configuration_adv.h에서 몇 가지 추가적인 옵션들(MINIMUM_STEPPER_DIR_DELAY, MINIMUM_STEPPER_PULSE, MAXIMUM_STEPPER_RATE)을 설정해 줘야 했는데, 1.1.9 정식 버전에서는 Configuration.h에서 위와 같이 Stepper Driver를 지정하기만 하면, Configuration_adv.h에서 추가적인 설정을 하지 않아도, 해당 Stepper Driver의 세부 설정이 자동으로 적용되게 됩니다. 


S Curve Acceleration

/**

* S-Curve Acceleration

 *

 * This option eliminates vibration during printing by fitting a Bézier

 * curve to move acceleration, producing much smoother direction changes.

 *

 * See https://github.com/synthetos/TinyG/wiki/Jerk-Controlled-Motion-Explained

 */

//#define S_CURVE_ACCELERATION


S Curve Acceleration은 직선 구간에서의 가속/감속과 관련된 Motion Planner 입니다. 기존에는 Trapezoidal accleration을 적용했었는데요,  Trapezoidal(사다리 꼴) acceleation은 목표 속도까지 선형으로 가속하고, 목표 속도로 유지하다가 감속 구간에서 역시 선형적으로 감속이 이뤄지는 방식 입니다. S curve 방식은 가속 과 감속이 S자 형태로 비 선 가/감속을 합니다. (아래 그림 참조)

목표 속도에 이르는 시간이 Trapezoidal 방식과 비교시 큰 차이가 없으면서, 방향 전환 시 충격이 적어 Ringing 감소등 출력 품질 측면에서 이론적으로 보다 좋은 planner 로 평가되고 있습니다.  다만, 3D Printer의 경우 단순히 Carrier의 가/감속만 고려되는 것이 아니라, Carrier 가/감속에 따라 Filament 압출도 non-Linear(비 선형)를 따라야 하기 때문에, 단순한 문제는 아닙니다.  직선구간에도 비 선형적으로 가/감속을 하기 때문에 Extruder가 정확하지 않으면 선형 구간에서도 압출 불량 같은 결과가 초래될 수 있기 때문입니다. 물론, Marlin Team에서 충분히 문제가 없게 끔 검토가 되었겠지요.. ^^ 

다만, 3D 프린터의 구조와 내구성에 따라 S Curve Acceleration, 아래에서 설명할 Junction Deviation, Linear Advance 등 다양한 Planner 옵션들이 조합되는 조건과 설정한 출력 속도 등이 품질 문제를 야기할 기능성도 배제할 수 없습니다. 

이런 보다 고급진(?) Planner들은 Smootieware나 Klipper등과 같은 32bit CPU기반의 펌웨어에서 지원하고 있어, 8 bit CPU를 지원하는 Marlin에서는 8bit AVR 에 적용 시 처리속도의 한계로 부적절하다는 의견도 있습니다.  Marlin team도 이러한 견해를 의식해서 인지, 복잡한 연산이 필요한 planner의 경우 C 보다는 Assembly Code로 구현하고 있습니다.  


Configuration_adv.h

Case Light : NEOPIXEL LED 컬러 설정


/**

 * M355 Case Light on-off / brightness

 */

#define CASE_LIGHT_ENABLE

#if ENABLED(CASE_LIGHT_ENABLE)

  //#define CASE_LIGHT_PIN 4                  // Override the default pin if needed

  #define INVERT_CASE_LIGHT false             // Set true if Case Light is ON when pin is LOW

  #define CASE_LIGHT_DEFAULT_ON true          // Set default power-up state on

  #define CASE_LIGHT_DEFAULT_BRIGHTNESS 105   // Set default power-up brightness (0-255, requires PWM pin)

  //#define MENU_ITEM_CASE_LIGHT              // Add a Case Light option to the LCD main menu

  #define CASE_LIGHT_USE_NEOPIXEL           // Use Neopixel LED as case light, requires NEOPIXEL_LED.

  #if ENABLED(CASE_LIGHT_USE_NEOPIXEL)

    #define CASE_LIGHT_NEOPIXEL_COLOR { 255, 255, 255, 255 } // { Red, Green, Blue, White }

  #endif

#endif

NeoPixel LED에 대한 RGBW 기본 색상을 설정할 수 있는 항목이 추가되었습니다. Case Light를 설정한 경우, M355 Gcode를 사용하여, 밝기와 On/Off를 설정할 수 있습니다.  NeoPixel LED는 Adafruit에서 만튼 LED Array로 Strip/Ring/Stick 등 다양한 형태가 존재합니다.  Neopixel LED는 일반 LED 보다 많은 전류를 소모하므로 별도의 5V Power를 사용해야 하며, marlin 빌드를 위해 Arduino IDE에서 Noepixel Library를 추가해야 합니다. 


Junction Deviation

Bugfix에 최근에 새롭게 추가된 것으로, Jerk 설정을 대신하는 Motion Planner 입니다. Junction Deviation은 코너링시의 감속/가속과 관련된 것으로 소위 Smooth Cornering으로 알려져 있습니다. 일반적으로 코너링 진입 시, 감속을 하고 코너링 완료 시 다시 가속을 하게 되는데요.. 이전까지는 방향 전환에 따른 가속(acceleration) 변화에 따른 충격, 즉 Jerk 값을 제한(줄임)하는 방식을 사용해 왔습니다. Junction Deviation은 코너링을 위해서 얼마나 감속할 것인가를 기존과는 다른 알고리즘으로 지정하는 것으로. 값이 작을 수록 감속 폭이 커서 서서히 코너링을 하고, 값이 커지면 빠르게 코너링을 하게 됩니다.  코너링이 빠를 수록 전체적으로 출력 시간이 줄어들게 되지만, 그 만큼 방형 전환에 따른 충격이 켜지기 때문에 구조가 약한 3D Printer에서는 품질 문제를 유발할 수도 있습니다. 

//

// Use Junction Deviation instead of traditional Jerk Limiting

//

//#define JUNCTION_DEVIATION

#if ENABLED(JUNCTION_DEVIATION)

  #define JUNCTION_DEVIATION_MM 0.02  // (mm) Distance from real junction edge

#endif

Junction Devitation을 활성화 시키면, LCD 메뉴의 Control > Motion > Jerk 메뉴 항목이 변경되게 되는데, 기존에 X/Y/Z/E 각각 Jerk 값을 조정할 수 있는 반면, 활성화 시에는 단일 Junction 값을 조정하게 됩니다. 기본 값은 0.02... 기존이나 변경 후나 값 자체가 갖고 있는 의미가 직관적이지 않기 때문에 Try & Error로 자신의 프린터 환경에 맞는 값을 찾아야 하는 점은 동일 하다고 할 수 있습니다. 다만, 기존의 X/Y/Z/E Jerk 값들을 개별적으로 조정하는 것이 전체적인 프린팅 속도와 품질 개선에 어떤 상관관계로 영향을 미치는지가 매우 복잡했다면, Junction 단일 값으로 조정하는 것이므로 사용자 입장에서는 매우 간소화 될 수 있다는 점은 장점이라고 할 수 있을 것 같습니다.  


Advanced Pause Feature

Advanced Pause Feature는 기존에 Filament Change 기능으로 알려져 있던 기능이죠. load 액션이 Slow/fast로 세분화 되었고, Unload, Load 시 Acceleration 설정 항목 추가 되었으며, 옵션 명칭들이 약간씩 변경되었습니다. 


Stepper Motor 설정

TMC26X Stepper Driver에 대한 설정 지원이 추가되었고,  TMC2130/TMC2208 Stepper Driver 설정에서 Sensorless Homing에 Z Axis에 대한 Homing Senssitivity 설정 항목이 추가 되었습니다, Z축에 Probe(BLTouch, Inductive Sensor, Mechanical Switch 등등...)를 사용하지 않고, TMC2130의 Sensorless 기능을 사용하는 것은 일반적이지 않으며, Bed가 완전히 고정된 Delta 방식 Printer 정도에서 사용할 수 있을 것으로 판단이 됩니다.  Z Axis에 대한 Sensorless Homing 설정이 추가되면서, 부가적으로 Current와 Height 옵션으로 미세 조정할 수 있는 옵션이 추가되었습니다. 

  #if ENABLED(SENSORLESS_HOMING)

    #define X_HOMING_SENSITIVITY  8

    #define Y_HOMING_SENSITIVITY  8

    #define Z_HOMING_SENSITIVITY  8

  #endif


  /**

   * Enable M122 debugging command for TMC stepper drivers.

   * M122 S0/1 will enable continous reporting.

   */

  //#define TMC_DEBUG


  /**

   * M915 Z Axis Calibration

   *

   * - Adjust Z stepper current,

   * - Drive the Z axis to its physical maximum, and

   * - Home Z to account for the lost steps.

   *

   * Use M915 Snn to specify the current.

   * Use M925 Znn to add extra Z height to Z_MAX_POS.

   */

  //#define TMC_Z_CALIBRATION

  #if ENABLED(TMC_Z_CALIBRATION)

    #define CALIBRATION_CURRENT 250

    #define CALIBRATION_EXTRA_HEIGHT 10

  #endif


사실 업데이트된 펌웨어는 표면적으로 들어난 옵션의 추가나 변경 사항보다는 내부적인 버그픽스와 성능 최적화가 더 큰 의미가 있지만, Controller와 3D Printer의 유형이 워낙 다양하기 때문에, 서두에 언급한 것과 같이 사용하는 프린트에 따라서는 예상치 못했던 버그가 나타날 수도 있고, 이전 버전 대비 오히려 불편하거나 성능이 저하될 수도 있다는 점을 간과해서는 안됩니다. 

메이커 프린터를 사용하고, 제조사가 Marlin Firmware 업데이트를 제공한다면, 기다렸다가 제조사에서 제공하는 펌웨어를 받아 적용하는 것도 좋은 방법입니다. 

업데이트를 하실 때는 다시 되돌아갈 수도 있다는 가정에서 기존 소스코드를 잘 보관하시고 신중히 업데이트 해야 하며, LCD에서 변겅한 파라미터 값들이 있다면, 이 값들도 별도로 확인해 놓아야 하며, 업데이트 후 터미널에서 M502 명령으로 Default 설정, M500 명령으로 EEPROM에 저장된 정보를 갱신하고,  파라미터 값들을 추가적으로 설정하시면 됩니다.    

Marlin 역시 트렌드에 맞춰 32bit Controller들에 대한 지원과 동시에 최근에는 RTOS 도입을 검토하는 등, 느린것 같지만 지속적이고 다양한 각도로 업데이트를 추진하고 있고 있는 것 같습니다.  

1.1.9 릴리즈 후에 몇 가지 문제점들이 보고되고 있는데, 이번 버전을 끝으로 1.x 버전을 종료한다고 밝힌 만큼, 1.1.x Bugfix Branch를 통해 Minor Bug fix를 지원할 지, 아니면 2.0 Bugfix를 통해 지원할 지는 좀 더 지켜봐야 할 것 같습니다. 

15 Comments
  • 프로필사진 ikim 2018.08.03 19:18 신고 안녕하세요
    오랜만에 인사드리네요 ^^~~~ 백호
    요새 다시 로봇팔 설계를 하고 있는데 ^^ 쉽지 않네요
    Niryo One, Dobot, BCN 3D 로봇팔 들을 참고해서 만들어 볼까 하는데

    스텝모터 토크 구하는게 쉽지 않네요
    유투브에 살펴보면 매트랩 + 솔리드웍스 활용해서 토크 검증하는거 같은데

    공식들이 너무 어렵게 보이네요
    기계과에서 배운 공식들은 오래되서 그런지 기억이 가물가물 하네요 ^^
    https://www.youtube.com/watch?v=OYEvD8UHT8Y


    3D 프린터 만드실 때, 토크 선정할 때 어떻게 하셨나요??
    3D 프린터 만드신거 구동은 잘 되나요??
    저는 어느세월에 로봇팔로 뽑아볼런지 ㅋㅋ

    https://imgur.com/a/PdTBuyu

    위에 주소는 제가 짐 구상중인 로봇팔 입니다.
    왼쪽이 BCN-16kg 예상 / 오른쪽; Niryo- 3kg

    아 지금 휴가 가셨을 수도 있겠네요
    가셨다면 잘 놀고 오시길~~~
  • 프로필사진 Favicon of http://elsainmac.tistory.com elsa in mac 2018.08.03 21:47 신고 안녕하세요 iKim 님..
    네 오랫만이네요.. 무더운 날씨 건강에 유념하시기 바랍니다. ^^

    stepper motor의 토크로 고민을 하고 계시군요..
    일단 3D Printer 설계와 관련하여 적절한 stepper motor를 선정하는 것은 로봇 팔과는 좀 다를 수 있다고 판단이 됩니다...

    음.. 그럼 제가 알고 있는 torque 계산 이론을 좀 풀어 봅니다.

    torque(T) 는 F(force) * L(Length) 로 정의할 수 있습니다. 즉, 어떤 사람이 1m 길이의 막대를 수평으로 잡고 있다고 가정하고, 막대 끝에 1kg짜리 추를 걸었다고 가정할 때, 막대의 수평을 유지하기 위해 써야 하는 힘을 토크라고 할 수 있습니다. 일반적으로 그래서 holding torque라고도 합니다.

    L을 로봇팔로 생각하면 각 모터의 shaft 중심에서 로봇팔의 끝까지의 직선거리(arm length)로 생각하시면 될 겁니다.

    물론, 여기서 F는 우리가 알고 있는 뉴턴 2법칙 F = ma로 구하죠..
    m(Mass)는 모터가 이동시키는 Carrier의 전체 무게 입니다.

    예를 들어 X축 모터라면, 이와 관련딘 Mass는 Hotend Carrier의 총 무게라고 볼 수 있습니다.
    Direct Drive 방식을 가정한다면, Extruder Motor + Nozzle + Heat break + Heat Block + Cooling Radiator + 4개의 V-Wheels +
    Bracket 등 Hotend Carrier를 구성하는 모든 구성품 무게의 총 합이죠. 예를 들어 이 합이 대략 0.9kg 이라고 가정을 해 봅니다.

    a(가속도)는 acceleration 이고, 해당 프린터의 Hotend가 낼 수 있는 최대 가속도가 1200 mm/sec^2 (= 1.2m/sec^2) 라고 가정하면
    F = ma 공식에 의해, F = 0.9 kg * 1.2 m/sec^2 = 1.08 N(newton) 이 됩니다.
    GT2 벨트를 사용하고, 16T Motor Pulley를 적용한다고 했을 때(실제 제가 설계하고 있는...)
    Motor Pulley의 지름은 대략 9.4mm 가 됩니다. Motor Shaft 중심에서 Belt까지 L = 9.4/2 = 0.47 Cm 가 되겠죠.. 따라서 요구되는 Torque(T) = FL 에 의해 1.08N * 0.47Cm = 0.5076Ncm 가 됩니다.

    Stepper Motor가 1.8도 규격이라면, 한 바퀴도는데 200step이 필요 하고...
    360도/1.8도 = 200 step

    2mm 피치의 16치아 Pulley를 사용하므로, 한 바뀌를 회전에 32mm 가 됩니다.

    즉, 이 둘을 연산하면, Stepper motor의 1 step에 0.16mm 를 이동 시킬 수 있다는 결론이 나옵니다.
    Hotend의 최대 속도(V)를 100 mm/s으로 가정한다면, 100/0.16 = 625 step/sec 이 됩니다.
    바뀌 말하면. Hotend가 최대 속도(100mm/s)를 낼때 1초에 625 step을 회전해야 한다는 의미입니다.

    여기서 고려 할 것은 Stepper Motor의 Data Sheet를 보면, 모터의 구동 전압(V)과 Steps/sec의 성능 챠트입니다.
    Stepper Motor는 구동 전압에 따라 효율 특성이 다릅니다.

    Ex) http://www.pbclinear.com/Download/DataSheet/Stepper-Motor-Support-Document.pdf

    위의 예로든 모터를 보면, Single Stack을 기준으로 12V DC를 사용할 경우, 거의 holding torque의 효울이 100%(0.35/0.35)임을 알 수 있습니다.
    따라서, 0.5076Ncm / 1 = 0.5076Ncm 가 됩니다.

    3D printer의 경우 대부분 1/16 microstep을 사용하는데요, microstep을 사용하면, full step을 사용할 때와 비교시 Torque가 떨어지게 됩니다. torque의 효율이라고도 할 수 있는데요, 1/16일 경우 대략 incremental Torque는 9.8% 정도가 됩니다. 이 말은 Full Step 일때의 torque의 대략 10% 정도 밖에 torque를 낼 수 없다는 의미 입니다.

    0.5076 / 9.8% = 5.179 Ncm

    즉, 900g 정도되는 hotend carrier를 1/16 microstep으로 12V DC 상황에서 최대 100mm/s 의 속도와 1.2m/sec^2의 가속도로 동작시키기 위해서는 5.2 Ncm 정도의 torque를 낼 수 있는 모터를 사용해야 한다는 것이죠.

    물론, 실제로는 모터의 효율은 이 보다 좀더 떨이질 것이고... 오차도 있고 하니.. 대략 70%선에서 모터의 성능을 쓴다고 가정하면..

    5,2:0.7 = X:1 = 5.2/0.7 = 7.4Ncm 이상의 torque를 낼 수 있는 stepper motor를 사용하야 합니다.

    하 지 만... 현실에서 가성비, 그리고 stepper motor 선택의 폭, 설계상 요구되는 Motor의 외형 치수 등등을 고려해야 하므로 위와 같은 이론적인 Torque 계산이 무의미 할 수도 있습니다. TT

    대략 몇 가지 stepper motor 후보군이 있을 때, 계산 상 수치를 좀 더 선회하는 선에서 선택을 하게 되는 것이 현실이죠..

    쓰고 보니 너무 장황해 졌는데.. 참고가 되었으면 합니다.

    -------------------

    저도 프린터 설계가 예상보다 많이 지연되고 있습니다. 이것저것 고려해야할 사항(디자인, 성능, 안전.. 가성비..등등)이 한둘이 아니니...
    그래도 하루하루 조금씩 앞으로 나아가고 있답니당...^^
  • 프로필사진 ikim 2018.08.04 12:37 신고 올려주신 글 잘 봤습니다.
    full 토크 대비 10% 사용한다고 하니, 너무 효율이 낮네요 ^^
    5kg 짜리 쓰면 --> 실제 pay Load는 ★0.35 kg 네요.....5*0.1*0.7


    예전에 BCN(왼쪽) 모터(shoulder) 토크가 너무 높길래 이상하다 싶었는데, 좀 이해가 가네요
    28kg(nema 23)*2ea 인데
    56 kg --->★3.9 kg.....56*0.1*0.7

    좋은 정보 알려주셔서 감사합니다.
    토크를 좀 더 널널히 해야 겠네요
    아직 계산이 안 되지만 ^^

    주말 잘 보내세요
  • 프로필사진 ikim 2018.08.26 17:37 신고 엘사님 안녕하세요
    좀 전에 스텝 모터 토크- 수기 계산이 얼추 된거 같네요

    정말 토크 계산하려고 스텝모터 활용 책까지 보면서
    토크 공부했는데

    막상 쓴 공식은 f=ma / 질량관성모멘트 / 무게 중심 거리(웍스 활용) 이네요
    웍스에서 토크도 출력 해 보고 싶지만
    간단하게 토크 출력 해 봤는데, 너무 높네요 ^^


    수기 계산하면서 느낀 점은
    ★프레임 회전 속도를 늦추면 필요한 토크도 많이 줄어드네요

    ★스텝모터 속도를 펌웨어(마린)에서 제어 할 수 있겠죠


    현재 모터가 총 7ea인데...숄더 2ea
    메가 한대에 다 물리기에는 부하가 클거 같고


    ★메가 2대(램프까지)에 can 통신 해 볼까 생각중입니다
    (can 통신 기억도 안 나는데 ^^)
    근데 아두이노로 모터 제어하면, 부드럽게 되지 않는거 같아요

    메가 해 보고, 라즈베리(내년쯤 ^^)로 해 볼 생각입니다
    대부분 major에서는 라즈베리(64비트) 쓰더군요

    p.s; 두서 없이 쓴거 같네요
    위에 별(★) 표시 한거 위주로 보세요 ^^
    https://imgur.com/a/xnwaWsn
    짐까지 완성된 놈이에요. 내일부터 좀 최적화 시켜야죠 ^^
  • 프로필사진 Favicon of http://elsainmac.tistory.com elsa in mac 2018.08.26 21:10 신고 안녕하세요 iKim님..
    모델링 좋네요 ^^ 디자인 좋습니다.
    정말 제대로 만드시는 것 같네요... 고려 할 것이 한 두가지가 아닝텐데.. 대단하십니다. (응원의 박수.. 짝짝짝)

    ★프레임 회전 속도를 늦추면 필요한 토크도 많이 줄어드네요
    - 회전속도와 토크는 반 비례하는 것은 맞습니다만, 스텝핑 모터의 특성 상, 너무 저속일 경우 진동이 발생합니다.

    ★스텝모터 속도를 펌웨어(마린)에서 제어 할 수 있겠죠
    - marlin의 장점은 Motion planner에 있죠.. Gcode를 날려 주기만 하면, smooth하게 구동해주는 셈인데.. 최종적으로는 Front-end S/W는 필요해 보일 듯 합니다. Marlin은 Back-end죠..

    ★메가 2대(램프까지)에 can 통신 해 볼까 생각중입니다
    (can 통신 기억도 안 나는데 ^^)
    근데 아두이노로 모터 제어하면, 부드럽게 되지 않는거 같아요

    - 각 Axis 구동은 메가+RAMPS에 Marlin을 사용하는 것이 맞는 것 같습니다. 앞서 언급했듯이, 이미 marlin에 굉장히 휼륭한 motion planer가 돌어 있으니.. 따로 개발할 필요가 없죠..

    - Raspberry를 사용하는 것은 Front-end 용이죠.. 모터 구동을 위한 S/W(marlin)는 Back-End 구요.. Raspberry pi에는 WIFI, Ethernet, USB, HDMI등 각종 Interface가 있어서 사용자 운용환경 및 통신환경을 갖추기에 매우 매력적인 솔루션이죠.. 가성비도 매우매우 좋구요.. 최종적으로는 Gcode로 모터 제어를 해야 하는 것이니까Raspberry쪽에 USB로 메가와 통신하기 위한 Middleware를 만들어 주면 될 것 같고... 7개의 모터를 구동하기 위해 2쌍의 Controller를 둔다면. 굳이 메가끼리 통신할 필요는 없어 보입니다. Raspberry Pi에서 USB로 각각 연결된 두 쌍의 메가를 실시간으로 제어하면 되니까요..
    결국, Raspberry Pi에 들어가는 S/W가 관건인것 같군요.. ^^

    DuetWIFI 를 사용하면, 확장보드로 최대 10개의 Stepper motor를 구동시킬 수 있지만.. 가격이 넘사벽(expantion 보드 포함 대략 200달러)이라...
  • 프로필사진 ikim 2018.08.27 07:30 신고 Motion planner 라 공부해 봐야 겠군요 ^^
    또 좋은 정보 알려주셔서 감사합니다.
    요번주는 비가 많이 올거 같네요
    한주 잘 시작하세요~~~~~
  • 프로필사진 ikim 2018.09.13 13:34 신고 스텝모터 4V 와 12V 차이점은 뭐가 있을까요

    12V 힘이 더 좋을 거 같은데, 스펙을 비교해 보면 12V 감속기 기어드 스텝모터
    토크가 더 작네요

    만약 12V 스텝 모터를 쓴다면, 파워서플라이는 24V를 쓰는게 좋지 않을까요
    현재는 12V 350W 사용예정, (tb6560 사용하여 병렬로 연결)


    로봇팔에 사용하려고, 감속기 기어드 스텝 모터를 찾고 있습니다.
    유니폴라에서 com 단자 사용 안 하면, 바이폴라로 사용하면 되겠지요


    로봇팔 이미지 참고
    https://imgur.com/a/zZXzOKg

    p.s; 기어드 스텝모터 구매하기 힘드네요 ^^
    처음엔 모터 뱅크의 GM35B-NK245 사용하려고 했는데
    https://goo.gl/oPHQVU

    알고보니 유니폴라도 바이폴라로 쓰는데는 무리가 없네요 ^^


    결국은 알리에서 세팅해볼까 해요...에어로 쏴야 될거 같아요 ^^
    이미 BCN 검증 됬으니깐, 좀 낫지 않을까 싶네요
    Arm; 20kg(5:1) https://goo.gl/cWLxuj
    숄더;49kg*2EA(14:1) https://goo.gl/KpJmhE


    파워; smps 12V 350W + <mega2560 + ramps 1.4 + tb6560(6ea)>

    이제 만들어 볼까 합니다. 한번에 구동 성공하기는 힘들겠죠 ^^
  • 프로필사진 Favicon of http://elsainmac.tistory.com elsa in mac 2018.09.15 03:36 신고 안녕 하세요 ikim님. ^^

    음.....

    스탭모터에서의 "힘" 이란 holding torque.. 일반적으로 그냥 토크라고 하죠.. 이 토크를 의미 합니다.말씀하신 4V이니 12V이니 하는 것은 rated voltage를 의미 합니다. 전압이 높다고 힘이 좋아지는 것은 아닙니다. 그저 각자의 스펙에 명시되어 있는 토크 값을 확인하면 됩니다. ^^

    아시는 바와 같이 스탭모터는 간단히 말해 전자석 덩어리라고 할 수 있습니다. 전자석에 정해진 전압이란 존재할 수 없죠... 다만, 모터를 만들 때, 어떻게 구성했는가에 따라 여러 특성이 결정되게 될 것 입니다.

    스탭모터 특성 요소를 보면, registance per phase (그냥 registance라고 표시되어 있기도 함)라는 것이 있는데, 이는 말 그대로 phase (스탭 모터의 단위 회전) 시의 저항 값을 의미 합니다. rated voltage라는 것은 간단히 모터 내부 coil에 인가되는 voltage를 의미 합니다. 4V 모터라면 4V, 12V 모터라면 12V 가 됩니다. 우리가 사용하는 입력소스 전원의 전압과는 무관하죠..

    스탭모터는 스탭모터 드라이버를 통해 제어가 되는데요... 우리가 사용하는 대부분의 스탭모터 드라이버는 일명 chopper driving을 사용합니다. 즉, coil에 걸리는 rated current를 제한하고 이 값이 허용 값을 넘어서지 않게 하기 위해 chopping(매우 높은 주파수의 펄스를 사용.. 평균전류를 초과하지 못하도록 함..)을 하게 됩니다.

    예를 들어 모터의 스펙이 12V, 1A짜라기 있다면, 이 의미는 모터의 coil에 12V가 걸리면 coil에 걸리는 current가 1A가 된다는 의미 입니다. 당연히 registance는 12옴 이겠죠..

    일반적으로 스탭 모터는 rated voltage의 20 배까지는 안전하게 견딜 수 있다는 것이 정설이지만.. 열은 많이 발생하겠죠..4V 라면 80V까지 사용할 수 있다는 말이 됩니다. 일반적으로는 4~8배 정도의 전압을 걸어 줍니다.

    이유는 rated voltage는 규격에서 정한 토크를 내기 위해서는 coil에 인가되어야 하는 voltage를 의미 하는데. 12볼트 모터라면 12V를 인가해야 함을 의미 합니다. 하지만, 이것은 Holding Torque의 경우 입니다. 즉, Toqrue에 해당되는 힘으로 정지 상태를 유지할 수 있는데 필요한 Voltage 입니다. 회전을 할 경우에는 역기전력도 생각을 해야 하는데.. 이 경우 rated voltage 만으로는 회전을 시키기에 역부족입니다. 더 많은 전압이 요구되죠...

    자 정리하면.. 스탭 모터 제작사는 사용자가 이 모터를 스탭 모터 드라이버로 제어할 지 혹은 직접 제어할지를 알 수 없습니다. 따라서, 스펙을 명시하는 이유가 되는 데요.. 스탭 모터 드라이버를 사용한다면, rated voltage는 큰 의미가 없습니다. 모터의 자속은 전류 x coil의 권수(winding) 이므로 전압은 직접적인 고려 대상이 아니기 때문입니다.

    여기에 또하나 눈여겨 볼 만한 모터의 스펙이 있는데요.. 바로 인덕턴스 입니다. 실제 모터가 충분한 토크로 회전을 하려면 모터의 스펙에 해당하는 rated current가 충족되어야 합니다. 물론, 이 current는 모터 드라이버에 의해 max 값이 제한되죠.. 모터 드라이버가 chopping을 할 때, coil에 인가되는 current가 충분히 도달해야 회전을 하게 되는데, 인덕턴스가 높으면 시간이 걸리게 됩니다. 더 빠른 주파수로 chopping을 해야 하는 경우라면..(microstepping) chppoing frequency가 높으면 current를 체우기도 전에 chopping step이 끝나기 때문에 모터가 제대로 구동될 수 없게 됩니다. 결국 바꿔 말하면.. 인덕턴스가 큰 모터라면 그 만큼 빠른 구동을 할 수가 없게 되는 셈 입니다. 바꿔 말해, 만일 동일한 시간에 얻어지는 torque의 관계로 보자면.. Inductance가 높은 모터의 경우, 동일 시간에 더 작은 토크밖에 얻을 수 없게 됩니다. micro stepping이 놓을 수록 토크가 기하급수적으로 작아지는 이유이기도 합니다.

    문제는 일반적으로 rated voltage가 높은 모터들이 인덕턴스가 크다는 점 입니다.

    결론 입니다.

    1. 스탭모터는 current로 제어된다.
    2. rated voltage는 고려 대상이 아니다.
    3. inductance가 높을수록 빠른 구동이 어렵다.
    4. inductance가 높을수록 동일 시간에 얻을 수 있는 토크는 작다.
    5. power supply 전압이 높을 수록 빠른 구동, 동일 시간에 얻을 수 있는 토크가 크다.
  • 프로필사진 ikim 2018.09.16 11:50 신고 모터 책 하나 쓰셔도 될거 같아요 ^^
    좋은 강의 잘 들었네요.... 정말로 감사합니다. (다른 아두이노 카페 물어봐도, 다들 이상한 소리만 하는데)
    이제 머리속에 있던 궁금증이 풀려 가네요 ^^

    이제 볼트나 발주리스트 거의 다 됬네요
    내일 구매하면 될거 같아요

    p.s; 새벽까지 제 답변 신경 써주셔거 감사합니다.

    ★Motion planner - Front-end S/W 필요
    하다고 하셨는데, 구매하려니 잘 안보이네요. 혹시 모터 드라이버 안에 내장되어 있을까요
  • 프로필사진 ikim 2018.09.30 20:33 신고 안녕하세요 엘사님
    추석을 잘 보내셨는지요??


    로봇팔을 프린터로 출력해 봤네요
    https://imgur.com/a/Q75idAq


    저번 백호는 판재 유형이라 출력하기 쉬웠는데
    이번건 좀 고생 좀 했네요
    덕분에 이것저것 연습 많이 했네요

    GT2 타이밍 벨트 풀리 출력할 때는, 처음에 안 맞아서
    제 프린터(블랙 위도우)가 좀 정밀한 부분은 안 되나 싶었는데
    제 설계에 문제가 있었더군요
    설계 공식 적용해서, 풀리 외경을 1에서 0.7mm 정도 보정하니 잘 맞네요

    이제 모터 테스트 해 볼까 합니다.
    또 뭔 고생을 할지 모르지만, ^^ 움직여 봐야죠

    p.s
    1. 출력하면서 필라가 잘 들어갈 수 있게 틈틈히 돌려줬는데
    - 땅바닥에서 필라를 거치대에 걸었습니다.
    너무 그러네요, 무게추를 달아볼까 생각도 해 보고

    2. pla 추천 해 주실곳 있나요
    이번에 삼디몰에서 흰색으로 37,500/17,500 원 다 써 봤는데
    둘다 괜찮기는 한데, 이외로 머리카락 많아요 ^^
    짐 출력물 곳곳에 박혀있네요
  • 프로필사진 Favicon of http://elsainmac.tistory.com elsa in mac 2018.09.30 20:55 신고 네 ikim님도 추석 잘 보내셨지요 ? ^^
    PLA는 이것저것 많이 써본 후에 예전에 포스팅도 했디만 eSUN PLA+만 씁니다. 아직 ESUN을 뛰어넘는 만족도를 준 PLA가 없다는.... 출력 품질도 좋고 트러블도 거의 없습니다. 가격도 준수하고.. 추천 !!
  • 프로필사진 Favicon of http://elsainmac.tistory.com elsa in mac 2018.09.30 20:58 신고 출력공차가 0.7-1mm 라면 좀 큰데요...
    프린터 튜닝이 잘 되어 있다면 공차가 없거나 0.2mm 이하여야 합니다. (0.4mm 노즐 기준)Z축 방향으로는 점 더 클 수도 있겠지만.... 암튼 이 부분은 나중에 고려해 보시길
  • 프로필사진 Favicon of http://elsainmac.tistory.com elsa in mac 2018.09.30 21:14 신고 와우.. 멋지네요.. (사진을 이제 봤네요..)
    Good~ 모델링으로만 보다가 실제 보니 더 근사하네요..

    음.. 일단 PLA로 출력을 하신것은 괜찮은데.. 최종적으로는 PLA는 권장하지 않습니다. 굉장히 단단해 보여도 PLA는 PLA이죠... 열에도 약하고.. 특히 모터 마운트 부분.. 열이 많이 안난다면 별 상관 없지만.. PLA는 대략 55도 ~ 60도 부근에서 변형이 일어납니다. 서서히 조금씩... Carbon+PETG나 PC(폴리카보네이트) 을 추천하는데.. 이 녀석들 다루기가 좀 힘들어서.. 일단 이것도 나중에 검토해 보세요.. ^^
  • 프로필사진 ikim 2018.10.01 19:22 신고 필라멘트 추천해 주신건 잘 검토해볼께요
    지난주 금요일에 삼디몰에서 또 필라 시켜서 또 2통 와 있어요 ^^

    출력공차는 괜찮아요,
    구멍도 수직으로 출력하면 거의 정치수 나오고, 눞히면 0.2 정도 덜 나오더라구요
    제가 말씀드린건, GT2 타이밍 벨트 풀리 외경 치수 잡을 때, 제 설계오류 였습니다. ^^

    베이스 출력하면서...처음 사진 하루 밤 샜어요 ^^
  • 프로필사진 Favicon of http://elsainmac.tistory.com elsa in mac 2018.10.01 19:51 신고 ㅎㅎ.. 고생 많이 하셨네요... 고생하신 보람 있어보입니다. 멋져요 ^^
댓글쓰기 폼