3D 프린터2017.04.30 14:30

지난 글(http://cortkd.tistory.com/42)은 X Y 축의 크기 교정을 위한 것이었다면, 높이 오차가 있는 경우에 어떻게 해야할까에 대한 정보도 궁금해서 간단히 서칭 및 정리해 본다.


3D프린터에서 출력물 높이는 크게 오차가 생길일이 없는데, 간혹 발생하지만 대부분 간단히 수정 가능한 문제이다.


구글에서 서칭을 해보면...


I am using a GT2 belt and a 20 teeth pulley on a NEMA 17 stepper motor

 

nema17 = 1.8 degrees per step (200 steps per revolution)

stepper driver microsteps default = 16 (16 microsteps per step on the stepper motor)

microsteps per revolution = 200x16 = 3200

gt2 belt = 2mm pitch

20T pulley = 20T per revolution => 20Tx2mm = 40mm per revolution = 3200 steps

steps/mm = 3200/40 = 80


출처: https://www.3dhubs.com/talk/thread/delta-printer-printing-dimensions-wrong


위 글에서 확인해볼 사항이 나와있다.


1. 사용하는 모터의 스텝 수

1.1. 1회전당 스텝수 및 마이크로 스텝

2. 벨트 피치

3. 풀리 잇수 및 직경


박스안에 예시의 계산은,


1. 스텝당 1.8도 (즉 1회전에 200스텝)

1.1.모터 드라이버의 마이크로스텝 수 = 16
즉, 1회전당 3200 마이크로 스텝

2. 2mm 피치

3. 20T 풀리 = 1회전당 20잇수


200( 1회전당 스텝 ) × 16( 마이크로스텝수 ) ÷ 2 ( 벨트 피치 ) ÷ 20 ( 풀리 잇수 ) = 80



마를린 코드에서 "configuration.h"에 아래와 같이 입력해주면 된다.


#define XYZ_FULL_STEPS_PER_ROTATION 200 // 1회전당 스텝수

#define XYZ_MICROSTEPS 16 // 마이크로 스텝

#define XYZ_BELT_PITCH 2 // 벨트 피치

#define XYZ_PULLEY_TEETH 20  // 풀리 잇수


마를린 펌웨어에 따라 개별적으로 입력하는 변수 정의가 없는 경우에는,


#define DEFAULT_AXIS_STEPS_PER_UNIT {X축,Y축,Z축,Extruder}


이 값에 입력해주면 되는데, 위의 계산을 통해나온 값인 80을 X축, Y축, Z축에 넣어줘야한다. 

Posted by Chuck Hong
3D 프린터2017.04.30 00:18


원제: Diagonal rod correction for delta printing XY dimensional calibration

원저자: Salmeron Valdivieso, H

2017-02

출처: http://www.thingiverse.com/thing:1274733




목차


1. 서론

2. 수학적 모델

3. 적용

a. Thingiverse 파일 사용

i. 리피터 펌웨어 값 수정

ii. 마를린 펌웨어 값 수정

iii. 예제

4. FAQ





1. 서론


가정용 3D프린팅은 지속적이고 문제가 많은 교정(calibration)으로 매우 실망스러운 작업이 될 수 있다. 이러한 어려움은 델타방식의 3D프린터를 사용할 경우 더 커지는데, 델타방식이 조형과 교정이 더 어렵기 때문이다. 이 글은 델타구조에서의 각 축(tower)의 "diagonal rod"값를 계산을 풀어낸 것이다. 이것으로 XY치수 오차를 해결할 수 있을 것이다(Horizontal Radius와 모터의 스텝수가 정확하다는 가정 하).



2. 수학적 모델


베드 중심에서 각 3개 중 하나의 축까지로 평행이동 모델을 만들어 보자. 여기서 D0를 컨트롤러에 입력한 "diagonal rod" 값으로, D를 치수가 정확해지는 실제 "diagonal rod" 값으로 정하자.


컨트롤러는 수평 방향으로 명령내려진 L*를 가기 위해 주어진 파라미터와 함수로 계산된 Dh만큼 "carriage"를 이동한다. 코드(software)는 파라미터를 교정하기 위해 h*를 계산한다. 노즐이 베드의 중심일때  "diagonal rod" 투영(대각선의 수평길이)은 "Horizontal Radius"인 R과 같다. 피타고라스 정리에 따라서:




그림 1: 평행이동의 개략도


노즐은 (실제로) 다른 거리인 L(실제 우리가 측정할 수 있는 거리)을 이동한다. 이것은 계산된 Dh가 실제 수치와 입력된 수치의 차이로 인해 달라졌기 떄문이다. 이때 실제 측정할 수 있는 L값을 이용해서 실제 "diagonal road"값 D를 계산해 볼 수 있다.



이 식에서 볼 수 있듯 직교방향(수직-수평간)의 수치 오차는 "diagonal rod"값에만 영향을 받는 것을 알 수 있는데, 이것을 바탕으로 각 축(tower)의 "diagonal rod"값에서 생긴 에러를 분간할 수 있다.



3. 적용


이러한 방법을 확인할 수 있는 쉬운 도구는 "Thingiverse"에 올렸다(http://www.thingiverse.com/thing:1274733).


상기 계산을 적용하기 위해서는 식 (1), (2) 및 (3)을 풀어야 한다. 정확한 "diagonal rod" D값을 계산하려면 L*, L, R, D0값을 구해야하고, 이를 위해 조형물을 하나 출력해서 측정해고 대입해야 한다. 이때 좋은 방법은 육각형을 출력하는 것인데, 각 축 방향으로 두 면을 가지고 있어 두번의 측정을 통해 두 배의 정확도를 가질 수 있기 때문이다.


a. Thingiverse 파일 사용

적용은 간단히 첨부된 육각형을 출력하고, 실제 출력된 길이를 측정하여 첨부된 스프레드시트에 넣으면 가능하다.

출력은 아무런 XY 치수나 "diagonal rod" 값을 수정하지 않아야 하며, 기계부 수정도 없이  진행해야 한다.

측정값의 표기는 아래 그림 2에 표시하였다.

그림 2: 육각형 출력물 측정

L은 양쪽 마주보는 면의 사이 거리로, 각 축방향의 직교방향으로 Lx, Ly 및 Lz가 측정해야할 길이이다.

Lx, Ly 및 Lz를 실제 상기 수식에 적용하기 위해서는 반으로 나눠야하는데, 이는 상기 식이 베드 중심에서 이동한 것으로 가정한 것이기 때문이다. 이것은 이미 주어진 엑셀 시트에 반영되어 있다.

Lx, Ly 및 Lz값을 엑셀 시트 LX, LY, LZ에 대입하여 넣고, 현재 펌웨어에 입력되어있는 "horizontal radius"와 "diagonal rod"값도 엑셀 시트에 넣어주면 아래 그림과 같이 결과를 얻을 수 있다.

그림 3: 스프레드 시트 입력 예시

i. 리피터 펌웨어 값 수정

상기 값을 이용해서 그림 4와 같이 리피터 소포트웨어에서 값을 수정할 수 있다. 

그림 4: Eprom 메모리 에디터 창

ii. 마를린 펌웨어 값 수정

마를린 펌웨어에서 각 "diagonal rod"값을 수정하는 것은 까다로운데, 아주 어려운 것은 아니다. 아래 내용은 하나의 방법으로 각 사용자에 따라 다른 버전 및 변형된 마를린을 사용하고 있으므로 아래 코드 부분이 이 사용자의 코드에 없을 수 도 있다.

1 단계

마를린 소스코드에서 "Marlin_main.cpp"를 연다. 그림 5에 있는 코드를 찾아서 그림 6의 코드로 수정한다. "Diag_rod_x", "Diag_rod_y" 및 "Diag_rod_z"가 새로운 "diagonal_rod" 값이다.

그림 5: 마를린의 원래 코드

그림 6: 새로운 코드

2 단계

그림 7의 코드를 그림 8의 코드로 바꿔준다.

그림 7: 마를린의 원래 코드

그림 8: 새로운 코드

3 단계

마지막으로 "Configuration.h"에서 DEFAULT_DELTA_DIAGONAL_ROD 값을 스프레드 시트에 있는 값으로 수정해 준다.

iii. 예제

패쓰.


4. FAQ

패쓰


5. 번역한 사람의 경우

a. 측정

그림 9. 교정을 위한 육각형 출력물

- 육쪽마늘 같은 출력물에 각 마주보는 변 사이를 측정해서 엑셀 시트에 투입하여 값 산출

- 처음 기존 치수가 맞지 않는 세팅값으로 출력한 것: 1st

- 수치 측정하여 펌웨어 수정 후 출력한 것: 2nd

- 다시 출력 후 "diagonal rod"값 재수정한 것: 3rd

그림 10. 최종 수정 후 20mm 큐브 결과물

- 교정 전 큐브 크기 가로 21.5, 세로 22mm 수준으로 오차에서 20±0.05mm로 교정 완료

b. 마를린 코드

저는 Anycubic Delta Kossel 버전의 마를린이었기 때문에, 제 경우에는 마를린코드가 달랐습니다. 

아래와 같이 수정하였습니다.

• "Configuration.h"에서:

(1) DELTA_DIAGONAL_ROD 부분

#define DELTA_DIAGONAL_ROD 217                     ← 원래 입력되있던 값

 

 

#define DELTA_DIAGONAL_ROD_X 221.324  

#define DELTA_DIAGONAL_ROD_Y 221.119 ← 스프레드 시트 결과 값

#define DELTA_DIAGONAL_ROD_Z 221.324  

(2) DELTA_DIAGONAL_ROD_2 부분

#define DELTA_DIAGONAL_ROD_2 pow(DELTA_DIAGONAL_ROD,2)  

#define DELTA_DIAGONAL_X_ROD_2 pow(DELTA_DIAGONAL_ROD_X,2)

#define DELTA_DIAGONAL_Y_ROD_2 pow(DELTA_DIAGONAL_ROD_Y,2)

#define DELTA_DIAGONAL_Z_ROD_2 pow(DELTA_DIAGONAL_ROD_Z,2)1

• "Marlin_main.cpp"에서:

(1) calculate_delta 함수 부분

 delta[X_AXIS] = sqrt(DELTA_DIAGONAL_ROD_2

                      - sq(DELTA_TOWER1_X-cartesian[X_AXIS])

                      - sq(DELTA_TOWER1_Y-cartesian[Y_AXIS])

                      ) + cartesian[Z_AXIS];

 delta[Y_AXIS] = sqrt(DELTA_DIAGONAL_ROD_2

                      - sq(DELTA_TOWER2_X-cartesian[X_AXIS])

                      - sq(DELTA_TOWER2_Y-cartesian[Y_AXIS])

                      ) + cartesian[Z_AXIS];

 delta[Z_AXIS] = sqrt(DELTA_DIAGONAL_ROD_2

                      - sq(DELTA_TOWER3_X-cartesian[X_AXIS])

                      - sq(DELTA_TOWER3_Y-cartesian[Y_AXIS])

                      ) + cartesian[Z_AXIS];

delta[X_AXIS] = sqrt(DELTA_DIAGONAL_X_ROD_2

                      - sq(DELTA_TOWER1_X-cartesian[X_AXIS])

                      - sq(DELTA_TOWER1_Y-cartesian[Y_AXIS])

                      ) + cartesian[Z_AXIS];

 delta[Y_AXIS] = sqrt(DELTA_DIAGONAL_Y_ROD_2

                      - sq(DELTA_TOWER2_X-cartesian[X_AXIS])

                      - sq(DELTA_TOWER2_Y-cartesian[Y_AXIS])

                      ) + cartesian[Z_AXIS];

 delta[Z_AXIS] = sqrt(DELTA_DIAGONAL_Z_ROD_2

                      - sq(DELTA_TOWER3_X-cartesian[X_AXIS])

                      - sq(DELTA_TOWER3_Y-cartesian[Y_AXIS])

                      ) + cartesian[Z_AXIS];



Posted by Chuck Hong
기타/잡동사니2017.04.08 09:59

은행 수신 금리가 없는것이나 마찬가지인 상황에서 P2P 투자의 4~15% 수익률을 보고 점점 투자액이 증가하고 있다. 


P2P금융협회 회원사 현황(링크)을 보면 2017년 3월말 누적투자액은 7,344억 원 정도, 상환완료를 제외한 금액은 4,349억 원 수준.


나도 8퍼센트에 투자를 하고 있다. 자동분산투자로 리스크를 회사 부도율 수준으로 낮추고(수익도 평균화 되겠지만), 가끔 하는 프로젝트 성 투자(예전에 더 부스, 쏘카, 패스트 파이브 같은)에 조금 더 투자하면 신경안쓰고 놔둬도 안정적으로 굴러갈거라 생각했기 때문이다.


사실 P2P 투자를 시작하게 된 이유는, 수익률보다는(사실 투자금액이 몇백인데, 수익률 따져봐야.. 그냥 치킨한번 안사먹는게 낫다.) 카드론이나 다른 고액의 사채를 적은 금리로 대환하는 기능이 합리적이고 사회에 기여하는바도 클 것이라는 기대 때문이었다. 


실제로 카드론이나 기타 캐피탈에서의 높은 이자나, 높은 카드연체이자에 힘들어하는 사람들이 대환대출하는 상품도 많이 있었고 지금도 많이 있다. 또 대부분 원금분할상환 방식을 통해 투자자에게도 월단위 투자회수금을 지급하고, 대출한 사람도 상환계획도 잘 짤 수 있게 해주는 등.. 긍정적인 면이 많을 것 같다는 생각도 했고.


그치만 작년 9월쯤 부터 더이상 투자하고 있지 않다. 이유는, 두가지.


- 슬금슬금 생기는 연체율, 부도율


시작한지 얼마 되지않은 업체는 대부분 연체/부도율이 0이지만, 2년정도 업력을 가진 업체는 연체/부도율이 생기고 있다. 물론 아직 추이를 살펴보기엔 시간이 부족하지만, 2014년에 시작한 8퍼센트는 2017년3월말 현재 연체율 0.88%, 부도율 1.21%이다. 


연체/부도율이 있는 다른 업체는 대부분 1~2%정도의 부도율을 가지고 있는데, 적은금액을 모든 채권에 투자했다고 보면 수익율이 대략 부도율만큼 내려간다고 보면 된다. P2P는 "투자"이기 떄문에 원금보장이 되지 않는데, 부도가 났다는 말은 원금을 돌려받지 못한다는 이야기이다. 


쉽게, 10% 수익의 100개의 채권에 만원씩 투자해서 백만원을 투자해서 모두 안정적으로 진행되어 다 돌려받으면 10만원의 수익을 얻을 수 있다. 여기서 2%의 부도율을 가졌다면? 100개에 만원씩 총 100만원 투자, 9만 8천원의 수익, 2만원의 원금손실 = 최종 107만 8천원.


그런데, 만약 그 부도가 어떤 한 채권에 집중되어 있는것이라면, 또 그 부도 채권에 큰 금액을 투자했다면.. 수익률을 따질 문제가 아니라 손실율을 따질 문제가 된다. 이건, 바로 다음 부정적인 요소인 부동산 투자로 넘어간다.


- 부동산투자 증가


작년 9월, 8퍼센트에서 부동산투자를 한다기에 한번 살펴봤는데, 물건이 건설 중(95%준공?)에 경매에 들어갔고 다른 은행 채무, 국세/지방제 등 체납 사실이 있었다. 회사는 8퍼센트에 대출을 받아서 다 정리하고, 공사 마무리한 다음 분양 후 분양대금으로 상환하는 것으로, 약 40억 원을 모집하고 10%이상의 수익률을 예상했다.


이때, 8퍼센트의 총 누적투자금이 400억 원 수준이었는데, '좀 무리하는 것 아닌가?' 하는 생각과, '이제 그만 투자해야겠다'는 생각이 들었다. 오랜만에 생각나서 해당 투자 현황을 보니, 연체중. 흠...


여튼, 부동산은 담보를 잡고 투자를 한다는 측면에서, 부도가 난다고 해도 회수가능성이 높다곤 하지만, 상대적으로 큰 금액으로 투자하게 되는(해당 투자는 최소 투자금액이 100만원 부터) 등, 조심해야할 필요가 있다. 해당 물건에 대해서 경매사실은 없는지, 부동산 등기를 떈다던지(한건당 700 원 밖에 안드니..) 하는 약간의 노력이 필요할 수도 있다.


여튼, 그리해서 해당 투자에는, 

투자시 위험 안내

8percent는 원금과 수익률을 보장하지 않으며 투자 손실의 가능성이 있습니다.

엄격한 대출자 신용 평가와 금리 산정으로 평균 수익률 연5%를 목표로 합니다. 


이런 안내가 붙어 있다. 

(왜 갑자기 5%가 목표지.. 업체명은 8퍼센트인데.)

(왜 다른 투자글에는 위험안내가 없지?)



+ 여튼, 대환대출의 긍정적인면 + 이자수익보다 높은 투자수익률(부도를 감안한다 해도)로 좋은점은 많다. 다만, 부동산 투자를 하지 않는 소액대출 위주의 업체가 더 좋지 않을까 하는 생각이 들고, 또 믿을만한(무슨 기준이 있을지 모르겠다, 언론에 자주 노출되면? 그거 다 광고잖아?) 업체...여야 하는데... 어디가 좋을지 모르겠다. 랜딧은 가입만 해놨는데, 몇일전에 이제 수수료 생긴다는 메일을 받았고... 


회원사에는 40여개의 업체가 있고, P2P금융투자자협회(?)에도 몇개의 업체가 있는데, 50여개의 업체가 난립하고 있는 상황인데, 옥석이 가려지려면 대형 부도 건이 하나 둘 터지는 사건이 나고 나서쯤일 것 같다.


그냥, 아주 까먹어도 상관없는 금액정도를 장기적으로 자동투자 해놓는 수준에서.. 안정적으로 보이는 몇 업체에 나눠 놓거나, 안하고 치킨 사먹는게 더 이득일 듯!



'기타 > 잡동사니' 카테고리의 다른 글

P2P 투자 - 괜찮을라나  (0) 2017.04.08
SNAP FIT 스냅핏 디자인  (0) 2017.02.04
보그 병신체  (0) 2013.03.03
Stigler's law of eponymy  (0) 2013.01.18
Skeuomorphism 스큐어모피즘, Skeuomorph 스큐어모프  (0) 2013.01.16
Posted by Chuck Hong