:::: MENU ::::
Posts tagged with: 3d printer

Makerbot, Prusa 그리고 3D 프린팅 시장

최근 메이커봇이 인원을 30% 감원한다는 기사

여기서 Makerbot과 Prusa의 현재 상황과 3D 프린팅 시장을 알 수 있다.

consumers are incapable of 3D design, fixing wonky machines and desire 3D models that aren’t easily found

  • 고객들이 아직은 3D 디자인을 할 수 없고
  • 기기에 문제가 생길 경우 해결이 안되며
  • 원하는 3D 모델을 찾기 여러움

그래서 시장은 아직 일반인 대상이 아니라 DIY community인데, 이쪽을 포커싱하고 있는 Prusa의 경우 90명 정도의 스텝이 월 3천대 이상을 판매한다고 함.

Ultimaker 3 내부 구성

Meet the new Ultimaker 3

Ultimaker 3의 특징 – Ultimaker 3 Spec.

  • 듀얼 노즐:서포트를 쉽게 제거하기 위해 물에 녹는 재질의 필라멘트 사용가능
  • 쉽게 교체 가능한 노즐
  • 향상된 쿨링 시스템
  • 상태를 나타내는 LED
  • Wi-Fi & USB stick 지원: Wi-Fi는 Local에서만 지원된다.
  • 카메라 지원
  • Active bed leveling

Ultimaker 3 내부 구성

A20 LIME2 Linux보드 & ATmega 보드

위 블럭다이어그램에서 보듯이기존 UM2의 경우에는 메인보드에 ATmega2560칩이 있었으나, UM3는 Connectivity를 추가하기 위해 A20 LIME2 Linux보드가 메인이 되고, 기존의 Atmega보드는 실시간 처리가 필요한 모터제어에만 사용이 되었다. 이 보드에 카메라 및 WiFI, Ethernet, USB Host, NFC 리더가 있는데, NFC리더는 필라멘트에 붙어 있는 NFC 테그를 태깅하기 위해 사용이 된다. WiFi의 경우 USB to WiFI 동글이 사용되는데, 앱을 확인해 보니 Local network에서만 사용이 된다.

프린터 헤드 보드

레벨링을 위한 센서 /  쿨링팬 / LED 제어 / 노즐의 온도 컨트롤 및 사용시간 체크를 위한 EEPROM이 있다.

네트웍을 통한 원격제어

REST API를 사용해서 원격 제어가 가능하다. 즉 이런 형태로.. 관련 내용은 https://ultimaker.com/en/community/23283-inside-the-ultimaker-3-day-2-remote-access-part-1 에서 확인할 수 있다.


S3G protocol

  • S3G는 “Sanguino3 Gcode”의 줄임말로 3D 프린터를 제어하는 언어임.
  • 파일의 경우 .s3g를 사용하는데 MakerBot에서 이것을 차용하여 .x3g로 사용함.
  • 초기에 8비트 AVR의 성능때문에 사용함.
  • MakerBot의 경우 s3g, x3g파일을 처리할 수 있고, gcode를 이것으로 변환하는 translator를 내장하고 있음.
  • OctoPrint의 경우 GPX라는 플러그인이 있고,  GpxUI라는 GUI wrapper도 있다.
  • 관련 소스는 https://github.com/markwal/GPX

S3G protocol

구성 및 통신

2가지 네트워크로 구성이 된다.

  • Host network: PC와 보드로 기본적으로 시리얼이다. 115200 or 38400 bps
  • Tool network: 보드와 툴사이로 RS485 사용

에러 방지를 위해 매 패킷의 마지막에 CRC를 사용

3D 프린터 슬라이싱 툴

Software User Price OS
3DPrinterOS Beginners, Advanced Users Freemium Browser, Windows, Mac
Astroprint Beginners, Advanced Users Freemium Browser, Raspberry Pi, pcDuino
Craftware Beginners, Advanced Users Free Windows, Mac
Cura Beginners, Advanced Users Free Windows, Mac, Linux
IceSL Advanced Users Free Windows, Linux
KISSlicer Beginners, Advanced Users Free/$35 Windows, Mac, Linux, Raspberry Pie
MakerBot Print Beginners Free Windows, Mac
MatterControl Beginners, Advanced Users Free Windows, Mac, Linux
Netfabb Basic Intermediate Users, Advanced Users Free Windows, Mac, Linux
OctoPrint Intermediate Users, Advanced Users Free Raspberry Pi, Windows, Mac Linux
Repetier Intermediate Users, Advanced Users Free Windows, Mac Linux
Simplify3D Beginers, Advanced Users $150 Windows, Mac
Slic3r Advanced Users, Professional Users Free Windows, Mac Linux
SliceCrafter Advanced Users Free Browser
Tinkerine Suite Beginners Free Windows, Mac
Z-Suite Beginners Free Windows, Mac

PID 튜닝

Reprap 기반의 코드에 적용되어 있는 PID 를 튜닝하는 방법은 다음과 같이 PID Auto-tune을 사용해서 상수값 Kp, Ki, Kd값을 정하고 Configuration.h에 설정을 한다.

M303 E0 S210 C8

위 코드의 의미는 타겟온도 210도로 하고 8번의 사이클을 거쳐서 값을 정하는것. 그러면 다음과 같이 값이 나온다.

bias: 92 d: 92 min: 196.56 max: 203.75
Ku: 32.59 Tu: 54.92
Clasic PID
Kp: 19.56
Ki: 0.71
Kd: 134.26
PID Autotune finished ! Place the Kp, Ki and Kd constants in the configuration.h

Configuration.h 파일에 설정후 컴파일을 하는 대신에 다음과 같이 M301커멘드로 테스트가 가능하다.

M301 P19.56 I0.71 D134.26

PID Auto-tune

  • The PID test doesn’t use a PID control loop to control the temperature! It shouldn’t matter what values you have stored when you run the autotune. Instead, the autotune function runs the heater in “bang-bang” mode, leaving the heater on for an extended period of time, and then off for an extended period of time, and simply observing the thermal behavior in response to heating and cooling.
  • Each cycle in the autotune run is a test where the controller cycles the heater, intentionally overshooting the target value for 5 seconds and observing how far up it goes, and how long it takes to coast back down to the target temperature. Once below the target temperature for 5 seconds, it observes how far the temp fell, and then cycles the heater on for another run at the target.
  • The first three cycles calculate a “bias” to dial in the level of maximum power that will be used for the remainder of the cycle/tests. You will get to see those bias numbers, but there’s not much you can do with them. You will not get PID parameters from these initial cycles.
  • The fourth and subsequent tests still overshoot by 5 seconds and undershoot by 5 seconds, but this time the observed duration of the heat cycle, and the min and max temperatures reached, are put through the mathematical formulas described in the Ziegler–Nichols PID tuning method. This is a mathematical way to determine PID constants that perform acceptably in many systems. Values for the three parameters Kp, Ki, and Kd will be displayed for the cycle, and a new cycle will begin.
  • After all the test cycles are finished, you can average the values you get from each of these cycles and use those as your baseline parameters.

Kp, Ki, Kd의 의미

  • The proportional (P) constant Kp is in counts/C, representing the change in the softPWM output per each degree of error.
  • The integral (I) constant Ki in counts/(C*s) represents the change per each unit of time-integrated error.
  • The derivative (D) constant Kd in counts/(C/s) represents the change in output expected due to the current rate of change of the temperature.
  • Kp is the “proportional” term. The further off target you are, the more power this term contributes.
  • Ki is the “integral” term. This term contributes more control input as the accumulated offset over time between measured and target temperatures increases. In other words the longer you’ve been off target, the more input this term will contribute in the direction of the target (could be more or less heater power).
  • Kd is the “derivative” term. This term allows the controller to “predict” or look ahead of the current temperature to slow the rate of change down and let the measured temperature creep up on the target. Mathematically speaking it attempts to minimize the slope of the temperature curve with respect to the target.

수동으로 조정

  • if it overshoots a lot and oscillates, either the integral gain needs to be increased or all gains should be reduced
  • Too much overshoot? Increase D, decrease P.
  • Response too damped? Increase P.
  • Ramps up quickly to a value below target temperature (0-160 fast) and then slows down as it approaches target (160-170 slow, 170-180 really slow, etc) temperature? Try increasing the I constant.
  • if the temperature is getting too hot before settling down, increase Kd and decrease Kp (more creeping up on the temperature and less muscling it around)
  • if the temperature tapers off just under the target and never quite reaches it, decrease Kd and increase Ki (less creeping up alongside the target, and more correction for cumulative offset) Increasing Ki means that cruising just a hair under the target for a long time will cause Ki to gradually put more power into the heater until it reaches the target. A higher Kd would fight this process by decreasing power to get the measured temperature curve parallel to the target temperature line.
  • if the temperatures are taking a long time to settle, oscillating or hunting indefinitely, decrease Ki and increase Kd (less agitation from cumulative error, and more gliding into alignment with the target); alternatively try decreasing all three terms… the PID equivalent of taking some deep breaths and relaxing the amount of control you’re exerting


Cura 2.1 open beta 버전 빌드

Ultimaker에서 기존 Cura와 다른 GUI를 가진 Cura를 개발해서 베타버전을 내놓았다. 이유는

This is the new, shiny frontend for Cura. daid/Cura is the old legacy Cura that everyone knows and loves/hates.
We re-worked the whole GUI code at Ultimaker, because the old code started to become a unmaintainable

사실 daid의 Cura의 경우 맥에서의 빌드는 본인도 hell이라고 표현을 하는데, 이번 베타버전의 큐라를 빌드해 보니 스무스하게 빌드가 된다. 단 빌드 시간은 엄청나게 오래 걸린다.

Mac에서의 빌드 방법

필요한 파일들 설치

  • xcode 설치
  • cmake 설치 – brew install cmake
  • openssl 설치 – brew install openssl
  • brew link openssl –force
  • gcc 설치 – brew install gcc


  • git clone [email protected]:Ultimaker/cura-build.git
  • cd cura-build
  • mkdir build
  • cd build
  • cmake ..
  • make

추가적인 머신 설정 방법

Json 파일을 만들어야 하는데, 맥에서의 파일 위치는 /Users/AteamRnd/Downloads/Cura.app/Contents/Resources/cura/resources/machines

베타버전의 메뉴얼

다른 OS에서의 빌드는 링크를 참고.

관련 내용: https://ultimaker.com/en/resources/20511-change-machine-settings

MOD-t에서 Cura 사용하기

Indiegogo에서 얼리버드로 $239에 구매한 MOD-t

MOD-t뿐만 아니라 Cura에 기본적으로 설정이 되어 있지 않은  3D 프린터는 이와 같은 방법으로 기기를 추가하고, 프로파일을 추가할 수 있다.

  • 메뉴에서 Machine > Add new machine…을 선택
  • Next버튼을 누르고 맨 밑에 있는 Other를 선택후 다시 Next를 선택
  • 기기의 이름, 빌드 사이즈, 노즐 사이즈, 베드의 센터를 기입하고 Finish를 한다.

  • File > Open profile…을 클릭후 첨부된 profile을 로드한다.
  • 프린팅을 할때는 desktop app에서 “Advanced Mode”를 선택하고, 좀 전에 설정한 큐라에서 슬라이싱한 Gcode를 선택한다.



MatterHackers의 블로그 기사로 초보자들이 3D 프린터를 이해하는데 도움이 될 듯.

Hotend – All Metal vs PEEK/PTFE
By not using any plastic insulators in their construction, all metal hot ends are able to reach much higher temperatures and print a wider range of materials. However, they require active cooling.

Hotend – Heat Sink / Hot End Fan
This ensures that heat does not travel up the plastic and melt it prematurely before it reaches the nozzle. This phenomenon is called heat creep and it causes jams, especially with PLA. This fan should be running whenever the hot end is warm.


그 밖에 괜찮은 자료는