나의 두번째 3D 프린터 - Sunhokey Prusa i3 Printer

Sunhokey Prusa i3 Model

aliexpress를 통해서 구입했다.
가격은 저렴한 편이다. 한국에서 이 가격대에 맞추는 것은 내가 보기엔 불가능해보인다. ^^
어떻게 이 가격에 맞추어 판매할 수 있는지 신기할 따름이다.
Global Factory 임은 틀림이 없다.
배송비와 관세가 붙기는 하지만 대략 300$이면 구입할 수 있다.
이 프린터를 구매한 업체도 나름 최선을 다해 지원을 해준다.
조립후에 LCD가 표시되지 않아 연락했더니 LCD모듈에 대한 비용을 환불해 주었다.
나중에 확인해 보니 LCD모듈이 아니고 LCD모듈과 연결된 케이블이 문제였다.
뭐 돌려주려해도 또 만만치가 않네...

이 프린터키트를 받아서 조립후 바로 출력했을때 아주 잘 나오지는 않았고 쓸만한 아이들이 나왔다.
잘나왔다는 기준이 저마다 다를 수는 있는데 업그레이드 하기위한 부품을 출력해서 사용할 수 있는 정도는 되었다.
쿨링팬을 출력해서 출력물의 품질을 좀더 높였고 
세번째 프린터인 CoreXY를 만들기 위한 부품들을 이 아이가 다 감당했다.
이 정도만 해도 사실 나에게 있어 대단한 일이기에.... ^^
시간이 흐르면서 좀더 품질에 대한 욕심이 생겨 계속 업그레이드를 하고는 있다.
지금 출력물의 결과는 처음과는 다른 많이 좋아진 상태다.

AutoLeveling을 위한 기능개선과 품질개선등
이래 저래 시간과 노력이 들어가는 일들이고 
재미있게 할 수 있는 있들이었다.


Reprap Prusa i3 Rework 3D Printer

3D 프린터관련 자료

처음 3D 프린터를 접하고 오픈된 자료들을 이용해 만들어 보는데 있어 필요한 자료들을 정리했다.

인터넷에는 수많은 자료들이 있지만 또 다른 관점에서의 정리인 만큼 다시 금 자료를 정리해야 하는 부분을 최소화 하기 위해 정리한 것이다.

표준 모델에 해당한다고 할 수 있는 Prusa i3 에 대해 알아보자.

Prusa i3 Rework 모델은 Prusa i3를 기반에서 eMotion Tech라는 업체인듯 한데 개선시켜 공개한것 같다.

Prusa i3 Rewok – Prusa Mendel Iteration 3 rework based on the EiNSTeiN VARIANT

정식 명칭이다.

아래의 링크를 따라가면 실제 정보들이 잘 정리되어 있으나 관점에 따라 부족한 부분과 한국 현지 현황에 맞지 않는다라고 생각하는 부분이 생길 수도 있다.

실제로 만들어 보려고 판매자나 부품들을 구하다보면 본인만의 자료가 만들어질 것이기에…

http://reprap.org/wiki/Prusa_i3_Rework_Introduction/kr

Prusa i3 Rework 라는 모델을 만들기위한 개발가이드라고 해도 될 것 같다.

가끔 들어가보면 자료들이 게속 정리되고 개편되고 있음을 알 수 있다.

3D프린터를 만들려면 다양한 지식들이 필요하다.

Software, Hardware, Mechanical 등등

이 모든 부분에 대해 자료들이 공개 되어 있다.

아래의 링크는 Prusa i3 Rework 3D Printer를 만들기 위해 출력해야 하는 부품들의 STL파일들이 정리되어 있는 사이트이다.

http://www.thingiverse.com/thing:119616

https://github.com/eMotion-Tech/Prusai3_EINSTEIN_Reworked



본인이 3D 프린터를 갖고 있다면 출력해서 준비하면 되지만 이 글을 보는 사람들의 대부분이 자기의 첫 3D프린터를 만들어 보고자 하는

마음에서 자료를 찾는게 대부분이 아닐까 생각된다.

ebay나 Aliexpress에 본인이 출력한 파트를 모아 판매하는 사람들이 많다. 해외 구매를 통해 구매도 충분히 가능하다.

국내에서 출력해서 구매하는 업체나 개인은 없는것 같다. 내가 못찾았을 수도…

아래는 Firmware를 설치하는 방법에 대한 링크이다.

http://reprap.org/wiki/Prusa_i3_Rework_Firmware

 

Firmware

3D 프린터의 소스코드는 아두이노 Atmega2560 기반의 코드이다.

내 관점에서 코드는 완전하게 돌아간다. 부분적으로 기능개선이 필요한 부분도 있을 수 있겠지만 

상용화 된 버전들은 나름 최적화와 기능개선을 통해 상용으로 판매한다.


실체 코드를 다운로드 받을 수 있는 링크이다.

Marlin firmware used for Prusa i3 Hephestos – modified for Prusa i3 Rework

 

필요한 도구들


Delta 3D Printer Bed Calibration 3D Printer

1. DELTA_RADIUS
   숫자가 커지면 가장자리 부분이 내려가고 (오목)
   숫자가 적어지면 가장자리 부분이 올라감 (볼록)

2. DELTA_DIAGONAL_ROD
   이 값을 통해 출력 사이즈 결정

위 두값을 Marlin Firmware를 수정후 컴파일, 다운로드 해서 사용할 수도 있지만 
RichCattell 의 Firmware를 사용하게 되면 Command를 통해 보정및 수정하여 저장하여 사용할 수 있다.


각 타워의 위치에 대한 값을 Marlin firmware내에 이미 명시에 되어 있으나 한번 적어본다.
Firmware 내에서는 Tower 1, Tower 2, Tower 3으로 되어 있으므로 약간의 혼동이 있을 수 있으니 유의해야 한다.

// Effective X/Y positions of the three vertical towers.
#define SIN_60 0.8660254037844386
#define COS_60 0.5
#define DELTA_TOWER1_X -SIN_60*DELTA_RADIUS // front left tower
#define DELTA_TOWER1_Y -COS_60*DELTA_RADIUS
#define DELTA_TOWER2_X SIN_60*DELTA_RADIUS // front right tower
#define DELTA_TOWER2_Y -COS_60*DELTA_RADIUS
#define DELTA_TOWER3_X 0.0 // back middle tower
#define DELTA_TOWER3_Y DELTA_RADIUS


X Tower Position (Tower 1)
G1 X-69.28 Y-40 F5000

Y Tower Position (Tower 2)
G1 X69.28 Y-40 F5000

Z Tower Position (Tower 3)
G1 X0 Y80 F5000

내가 갖고 있는 모델은 Auto Calibration 기능이 없고 X, Y, Z, Center의 값으로 영점을 잡은후 그대로 사용하고 있다.
Firmware는 RichCattell(https://github.com/RichCattell/Marlin)의 Marlin Firmware를 사용했다.

수동으로 Bed Leveling을 할때는 Pronterface가 사용자 버튼을 직접 만들 수 있어 편하게 사용할 수 있다


Kossel Linear version 3D Printer 3D Printer


Aliexpress를 통해 델타방식 3DPrinter Kit를 구매해서 만들어 봤다.
출력결과는 정말 훌륭하다.
필라멘트와 온도가 적당하면 출력물의 품질은 잘 나오는 편인것 같다.
키트 가격은 210불
정말 저렴하다.
어떻게 이 가격에...

히트베드는 없고 Z Probe영점은 소프트웨어와 메뉴얼로 해야 하지만
Linear Guide와 알루미늄 프로파일의 구성은 만족할만 하다.
Prusa i3 모델의  키트들과 CoreXY를 직접 구성해봤서 출력해봤지만
지금의 이 델타방식의 Kossel 3D Printer의 출력물이 최고다.
기계적인 부분이 약해서 인지...
연구가 더 필요하다... 쩝...

yoda
입술쪽 프린팅이 깔끔하지 못하다.
번들 필라멘트와 권장온도인 210도로 출력했을때이다.
이거 출력이전에 갖고 있던 검은색 국산 필라멘트로 185도로 출력했을때
깔끔하게 출력되어었다.
(사진을 찍기전 선물로 주는 바람에...)
하지만 디테일의 표현은 정말이지 내 수준에서는 아죽 쥑인다고 생각하고 있다.
이전에 수많은 실패작들이....
계속 품질을 개선해야 겠지만 ... 쉽지만은 않다 ㅎ
요다 한 번 찍는데 4시간반정도 걸린다.
시간의 제약에 걸려 다양한 시험을 못해보고 있지만
몇번의 과정을 거치면 훌륭한 품질의 출력물이 나올듯 하다.

3DBenchy 라고 Thingiverse에 올라와 있는 토쳐테스트용 배이다.
배 밑면은 깔끔하게 올라간 편인데
굴뚝출력시 210도로 열이 집중되고 팬이 약해서 인지
노글 노글 해져 버렸다.
영점이 정확히 맞지 않을 수도 있지만... ^^
대략적인 영점을 잡은 후 출력한 모델인지라 이 정도면 만족할만 하다.

Dialog Enter & ESC 키 처리 MFC

BOOL CMyDialog::PreTranslateMessage(MSG* pMsg)

{

if ( pMsg->wParam == VK_RETURN)

{

WPARAM WParam = MAKEWPARAM(IDC_BTN_GETRESPONSE, BN_CLICKED); 

PostMessage(WM_COMMAND, WParam, NULL);

return TRUE;

}

if ( pMsg->wParam == VK_ESCAPE )

return TRUE;

return CDialog::PreTranslateMessage(pMsg);

}



쓸만한 에디터 컴퓨터 일반


무료 에디터로서는 
Notepad++ 가 아주 유용하다.
화면 스타일도 기본적으로 제공하는 theme을 이용하면 일반적으로 사용하는 화면스타일로 바꿔사용 할 수가 있고
폰트의 변환도 그러하고
제공하는 플러그인들을 잘 활용하면 아주 유용한 개발툴로서 손색이 없어보인다.
File Explorer 와 FTP는 사용중인 유용한 플러그인이다.

유료이지만 무료로 사용하며 사용기간 제한이 없는 
http://www.sublimetext.com/ 이 에디터가 윈도우즈나 맥, 리눅스에서도 사용가능한 에디터이다.


파워앰프내 각 스위치의 기능들에 대해서...

BOSTONAUDIO EX2400의 기능스위치 설명


ST: Stereo
각각의 입력에 대응해 출력이 나온다.

PL: Parallel
하나의 입력으로 두개의 출력을 만들 수 있고 각 채널의 출력은 볼륨에 의해 조절된다. 

Bridge Mode
두개의 앰프를 이용해 파워앰프의 출력을 배가 시키는 방법


음향/영상 서비스를 위한 설계

1. HD-SDI 급의 신호전송을 하려면 보통 5C 정도 굵기의 동축케이블이 설치되는 것이 좋다. 물론 선의 종류에 따라 회사에 따라 그 질에 따라 에러 없이 전송가능한 속도가 정해져 있다고 보면 된다. 물론 선의 종류에 따라 전송가능한 거리도 결정되며 필요에 따라 리피터나 광모듈등을 사용해서 전송할 수 있을 것이다.  문제는 비용적인 부분이다. 

2. 음향 라인도 가급적 좋은 선으로 설치하는 것이 좋을것이다. 무산소동선으로된 Shield 라인을 잘 선택하면 좋을 것 같다.

3. 보급형 영상장비의 신호들은 대부분 HDMI를 많이 지원하고 있는 것 같다. HD-SDI를 지원하는 카메라나 장비등은 가격이 상대적으로 많이 비싸다. 이를 극복하기 위해 시중에 나와 있는 컨버터를 이용해서 많이 사용하게 되었다. 국산도 품질과 가격면에서 유리한 면이 많은 것 같다.

4. HD-SDI급의 신호를 처리하는 비디오 스위처도 가격대비 성능을 잘 따져보아야 한다. 1080i 정도에서 처리하는 과정가운데 Latency가 생겨 당혹스러운 경험을 하기도 했다. Data Video SE-2000 으로 처음 사용하다 보니 피할 수 없는 부분이었다.
1080i 모드로 사용중인데 720p나 부하를 줄이면 Latency는 없어지지 않을까 생각되지만 화질 또한 떨어지고 높이 달려있는 각 카메라의 출력셋팅값을 수정해야 하는 부담이 있어 쉽지만은 않을 것 같다.



Visual Studio의 Project에서 사용가능한 Macro의 정의방법 MFC


some.vcxproj 파일에 추가하면 된다.
 
 <PropertyGroup Label="Globals"> 
 <Test>C:\Program Files\Microsoft SDKs\Windows\v7.0A\</Test>

이렇게 할때 프로젝트의 속성정보에서 $(Test)라는 형태로 매크로를 사용할 수 있다.

참고: 시스템에서 지원하는 매크로를 재정의해도 변경되지 않는다.

DirectX Device Initialize

#if 0
    for( driver = 0; driver < totalDriverTypes; ++driver )
    {
        result = D3D11CreateDeviceAndSwapChain( 0, driverTypes[driver], 0, creationFlags,
                                                featureLevels, totalFeatureLevels,
                                                D3D11_SDK_VERSION, &swapChainDesc, &swapChain_,
                                                &d3dDevice_, &featureLevel_, &d3dContext_ );

        if( SUCCEEDED( result ) )
        {
            driverType_ = driverTypes[driver];
            break;
        }
    }
#else
    {
        result = D3D11CreateDeviceAndSwapChain( 0, D3D_DRIVER_TYPE_HARDWARE, NULL, 0,
                                                featureLevels, 1,
                                                D3D11_SDK_VERSION, &swapChainDesc, &swapChain_,
                                                &d3dDevice_, &featureLevel_, &d3dContext_ );

        if( SUCCEEDED( result ) )
        {
            driverType_ = driverTypes[driver];
        }
    }
#endif


1 2 3 4 5 6 7 8 9 10 다음