RepRap 기반의 3D 프린터 제작에 가장 많이 사용되는 보드 중에 하나인 Arduino MEGA 2560과 RAMPS 보드에 대해 분석을 해보고자 한다.

(사진 및 회로도 출처 : http://arduino.cc/ )

http://arduino.cc/en/uploads/Main/arduino-mega2560_R3-sch.pdf

Arduino MEGA 2560 R3 보드의 회로도이다.

Arduino MEGA 2560은 크게 두 부분으로 나눌 수 있다. PC와 통신을 담당하는 Atmega16u2와 실제 기능을 수행하는 Atmega2560.



USB를 통해 PC와 통신을 담당하는 부분이며, Atmega16u2 나 Atmega8u2 등의 칩이 사용된다. R3 버전의 보드부터 Atmega16u2 가 사용됐다.
이 Atmega16u2에 올라가는 펌웨어를 잘 개발하면, USB2Serial 을 통해 시리얼 포트로  gcode를 전송하는 것이 아니라,
native usb device로 동작하여 binary gcode 를 전송하거나, SD 카드를 PC 와 연결된 상태에서 인식하도록 하는 것 등의 작업이 가능하지 않을까 싶다.

                 


Arduino MEGA 2560 보드의 외부 전원 회로이다. 
X1은 보드상의 DC 잭이고 아답터를 통해 전원을 공급받는다.
D1은 다이오드이며 역전류를 방지한다. 
VIN은 Shield의 파워커넥터와 연결이 된다. 따라서 Shield를 통해서 전원을 공급받을 수 있다.
D1 다이오드는 Shield 를 통해 공급받은 전류가 아답터 쪽으로 역류하지 않도록 한다.
IC1 은 정전압 레귤레이터 이다. http://www.nxp.com/documents/data_sheet/NX1117C_NX1117CE_SER.pdf
이 레귤레이터를 통해 5V 전원이 모두 공급되므로 이 레귤레이터의 용량(1A)을 초과하지 않는 선에서 회로를 추가해야 한다.
리니어 레귤레이터 이므로 입력과 출력 전압 차이는 모두 열로 손실된다. 
Arduino.cc 에서는 7~12V 전원을 사용할 것을 권장하고 있다. 

PC1, PC2, C2 는 안정적인 전원을 공급할 수 있도록 구성된 커패시터이다.



Power-on-reset 회로이다. 
5V 전원이 공급될 때 저항과 커패시터의 RC 딜레이에 의해 일정 시간 동안 리셋을 유지시켜 디바이스가 정상동작 하도록 한다.


  

(햐안 점이 1번 핀)

프로그래머를 이용해 Atmega2560 에 직접 프로그래밍을 하기 위한 프로그래머 포트 이다.

      


5V 전원이 공급되면 켜지는 LED 이다. 회로상엔 녹색 LED.

     



Digital13(or PWM)핀을 통해 제어할 수 있는 LED이다. 회로도 상엔 노란색.
IC7A는  OPAMP 인데 위와 같이 회로를 구성하면, voltage follower 로써 동작한다.
Voltage follower 회로는 입력전압과 동일한 전압을 출력해주는 회로이다.
3번 핀을 통한 전압 입력이 그대로 1번 핀으로 출력된다.
대신 전류 공급은 IC7A를 통해서 하기 때문에, 부족한 포트의 전류를 보완해줄 수 있다.

                                                                                          

                                                                                                                             

                                                                                            

                                                                             


Arduino MEGA 2560은 다양한 방법으로 보드의 전원을 공급받을 수 있다.

1. 외부 DC 아답터
2. Shield 
3. USB

Atmega2560 이 사용하는 전압은 5V 인데, 위 세가지 방법으로 5V 전원을 공급받을 수 있다.
1, 2 번의 경우 제일 처음에 설명한 외부 전원 회로와 레귤레이터를 통해 5V를 공급한다.
3 번의 경우 Atmega16u2 에 연결된 USB를 통해 전원을 공급받는다.

문제는 USB와 DC 아답터 혹은 Shield 를 통한 전원 공급이 동시에 이루어질 경우,
레귤레이터에서 생성된 5V와 USB 단자의 5V 가 충돌하여 PC의 USB 단자가 망가질 우려가 있기 때문에, 
PC를 보호하기 위한 회로가 위의 회로이다.

우선 오른쪽의 IC6(LP2985-33)을 통해 5V 전원으로부터 3.3V 전원을 생성한다.
생성된 3.3V 전압은 IC7B 의 6번핀으로 입력된다. 
IC7B는 IC7A와 마찬가지로 OPAMP이다. (IC7A와 IC7B 는 하나의 부품이며 동일 회로가 2개 내장되어 있다.)
위와 같이 회로를 구성하면 비교기로 동작한다. 
OPAMP의 +입력과 -입력의 전압을 비교하여 + 입력이 큰 경우 VDD(이 경우엔 5V)를 출력한다.
+입력단은 CMP가 연결되어있고, -입력단은 앞에서 생성된 3.3V가 입력되었다.

CMP는 VIN을 10K옴 저항 두개로 분배(전압분배법칙)하였기 때문에 VIN/2 (V)의 전압이 생성된다.
즉 VIN에 6.6V 보다 큰 전압이 들어오면 IC7B의 출력은 VDD(5V), 6.6V보다 작은 전압이 들어오면 GND(0V) 이다.

T1(FDN340P) 는 Single P-channel MOSFET이다. https://www.fairchildsemi.com/ds/FD/FDN340P.pdf

   

P-Channel MOSFET은 일종의 전자 스위치이다. 
G(Gate)에 IC7B의 출력(GATE_CMD)가 연결되어있고, D(Drain)에 USBVCC가 연결되어있고, S(Source)에 +5V가 연결되어있다.
전류는 Source 에서 Drain으로 흐르므로 위 회로에서는 반대로 연결하는 것이 더 낫지 않나싶다.

Gate 입력이 0V(Source 보다 낮은 전압)일 때 P-Channel MOSFET은 ON된다. Gate 입력이 5V(Source 보다 높은 전압)이면 OFF된다.
즉 VIN의 입력이 6.6V보다 크면 GATE_CMP가 5V가 되어 MOSFET이 OFF되고 USB 전원이 차단된다. 
외부 DC 아답터나 Shield 를 통해 6.6V 이상의 전원을 공급 받을 경우 USB 전원이 차단된다는 이야기다.


Atmega2560이 동작하기 위해 필요한 기본 회로이다. Crystal 을 통해 시스템 클럭이 생성된다. 
AVCC는 ADC 같은 Analog 회로를 위한 전원이다. 

나머지 회로들은 Arduino 의 입출력 포트를 포함한 shield 와 연결되는 커넥터 들이다.

Shield로 부터 VIN을 공급받고 Shield 에 5V, 3.3V를 공급하기 위한 전원 커넥터이다.


Analog0~15 핀이다.


Digital0~53 핀이다.
Digital 핀들의 일부는 특정한 용도로 사용될 수 있다. 
예를 들면 50~53 핀은 SPI 통신을 위해 사용될 수 있고,
Digital0, 1, 14~21 은 UART, IIC 등의 통신용으로 사용이 가능하고,
Digital2~13은 PWM 제어용으로 사용할 수 있다.







Posted by mahnee

제작된 Huxley를 열심히 테스트 중이다.


베드도 알루미늄 가공하여 붙여주고,

베드 조립하면서 알게된 사실은 Y축 벨트의 장력 때문에 프레임이 살짝 휜다는 것!!


그래서 프레임을 보강하기로 했다. 



일단 핫베드를 떼어낸다.





핫베드는 MK2 Heated PCB위에 알루미늄 판을 바로 올렸는데, 혹시 사용중 쇼트가 생길까 걱정되어 캡톤테잎을 붙여주기로 했다.

PCB의 사이즈 보다 조금 크게 자른다.




테잎이 너무 얇아 붙이는데 좀 고생을 했다.

아이패드에 보호필름 붙이던 실력을 발휘해서 붙였다.




붙이고 남은 부분은 뒷면으로 돌려 마무리~!




깔끔하게 붙었다.





자.. 이제 프레임을 보강할 차례.

프레임을 보면 화살표 표시한 곳이 안쪽으로 휜것을 볼 수 있다.


타이밍 벨트의 장력에 의해 휜 것이다.





보강용 전산볼트를 절단한다.

원래 삼각형 프레임을 구성하는 전산볼트 길이는 310mm 지만,

바깥쪽에서 조여줄 필요는 없고 모터와의 간섭을 피하기 위해 300mm 로 절단했다.




볼트류를 절단할 때는, 안쪽에 너트 두개를 넣고 시작하는 것이 좋다.

절단시 두 개의 너트가 볼트를 잡아주고, 가이드 역할을 한다.

또한, 절단 후 망가진 나사산을 복구하는 역할도 한다.


나사를 길이에 맞게 끼우고, 바이스에 물려준다.




쇠톱으로 절단을 했다.

절단면이 거칠다. 

바이스로 안쪽 너트만 물리고 바깥쪽 너트는 빼준다.

이 때 일차적으로 나사산이 복구된다.




줄로 절단면을 다듬는다.

그리고 남은 너트를 빼면 다듬으면서 망가진 나사산이 다시 복구 된다.

너트를 빼고 절단면을 줄로 살살 한번더 다듬는다.

이렇게 하면 절단후 너트를 끼우는 것도 쉽다.




미리 뽑아둔 보강용 부품.

삼각형 프레임을 구성하는 부품 중 상단에 올라가는 부품을 수정했다.

프레임을 분해하지 않아도 끼울 수 있게 홈을 팠다.


이 중 하나는 모터와 간섭을 피하기 위해 일부를 잘라냈다.




적당한 간격으로 보강용 부품을 한쪽에 끼운다. 

모터쪽에 먼저 끼우고 간격을 맞추기 쉽게 조정했다.




이런 식으로 끼워지게 된다. 




반대쪽에 부품을 끼우기 전에 부품과 잘라둔 전산 볼트를 아래와 같이 결합한다.

(다 조립하고 보니 와셔를 안끼웠다.)




반대쪽도 간격을 맞춰 부품을 끼워준다. 

이때 전산 볼트의 한쪽을 모터쪽 부품에 먼저 끼워주고 프레임을 조립한다. 






보강용 부품을 끼우고 간격을 재보면,

원래 270mm 이어야 하는 간격이 3mm 가 줄어들어있다.

너트를 돌려 간격을 다시 맞춘다.





간격이 270mm 로 조정되었다.




다시 위에서 보면, 안쪽으로 휘었던 프레임이 곧게 보강이 된 것을 볼 수 있다.




다시 베드를 조립하고 수평 조정을 하면 끝.


Posted by mahnee

모델 출처 : http://www.thingiverse.com/thing:72040


원료 : 잘난남자님 플라실 오렌지색(?)

배율 : 0.5

노즐 온도 : 205

베드 온도 : 100 

속도 : 40mm/s

채움 : 25%(의미없음)

압출량 : 100%

레이어 두께 : 0.2mm

벽두께 : 1.2


출력시간 : ?분(기억 안남 ㅡㅡ;)



품질을 높이기 위해 온도를 낮춰 보았다.

205도에서도 잘 뽑힌다. 




근데... 뒷태가 엉망..




디테일 샷.(클릭하면 커짐!!)


      


'공작 > 3D 출력물' 카테고리의 다른 글

안녕 문어!  (0) 2014.04.10
Posted by mahnee

2014. 4. 10. 00:12 공작/3D 출력물

안녕 문어!

모델 출처 : http://www.thingiverse.com/thing:27053


원료 : 잘난남자님 플라실 오렌지색(?)

배율 : 0.5

노즐 온도 : 240

베드 온도 : 90 

속도 : 70mm/s

채움 : 20%

압출량 : 100%

레이어 두께 : 0.2mm


출력시간 : 32분





표면 울퉁불퉁.

들어올린 다리의 바닥면은 엉망.

머리에 머리카락 한올 생김.

눈은 흘러내림.


팬 필요.

베드 레벨 조정 필요.


'공작 > 3D 출력물' 카테고리의 다른 글

출력테스트 : 꽃병?  (0) 2014.04.14
Posted by mahnee

아.... 


지난번에 RAMPS 보드 불량에 이어 Heated Bed 불량이 발생했다.

어떻게 같은 업체 제품을 두번 구매 했는데 두 번 모두 불량이 발생할 수 있는 건지.....


일단 전체 사진.

이 보드는 발열부가 세 부분으로 구성되는데 그 중 상단에 불량이 발생했다.

불량 발생부위는 나무 스티커로 표시했다.




전체 샷에선 불량 부분이 구분이 안가니 렌즈를 이용해 접사를 시도해 보았다.


우선 중앙부분.. 패턴이 거의 끊어져 간다.




우상단부분 패턴이 파여있다. 




좌상단부분... 여기는 불량이 두군데다.

우측에 쇼트난 부분(지난번 RAMPS 보드랑 동일한 불량이다.)

좌측에 패턴을 파먹은 부분.




발열체이기 때문에 패턴굵기가 일정하지 않으면 패턴이 가늘어지는 곳의 저항이 증가해서,

그 부분의 발열이 많아지고(직렬회로에서 저항이 큰 부품이 전력 소모가 큼) 결국 끊어지게 될 것이다.


주말에 할 일이 하나 줄었네.....




P.S 현미경 사진 추가.


   


   


Posted by mahnee

자작한 핫엔드를 테스트 해보았다.




핫엔드 마운트와 주변부가 프린트된 부품이기 때문에 일단 떼어놓고 테스트..

팬고정부위에 온도 센서를 넣고, 베드 센서 단에 꽂았다.

Cura 에서 온도 셋팅을 하고 진행 그래프를 관찰했다.




빨간 그래프는 핫엔드의 온도 변화, 파란 그래프는 핫엔드 상단(베드센서)의 온도 변화 이다.

빨간 점선(?)은 셋팅된 온도 그래프.


파란색 그래프의 꺾인점이 두군데인데, 50도 부근에서 팬을 껐다.

핫엔드 데워지는 속도가 느린 것 같아서....

파란색 그래프의 최대점에서 팬을 켰고, 55도? 정도를 꾸준히 유지하는 것을 볼 수 있었다.


사용할 수 있겠다.


핫엔드 상단의 온도에 따라 팬을 제어하고 싶은데 가능할라나 모르겠다.




Posted by mahnee

플랫폼 히터 : 24V 80W

센서 : PTC 타입 100옴 내지 110옴 써미스터(?)


부품 주문 전에 단선여부 먼저 확인할 것!

'공작 > 3D 프린터' 카테고리의 다른 글

Heated Bed 불량건!!!!!!  (0) 2014.03.28
Hotend 테스트  (0) 2014.03.28
델타봇의 좌표 변환에 대한 생각.  (0) 2014.02.11
델타봇용 로드엔드 구입  (0) 2014.02.08
3D 프린터 구동용 보드 구매..  (0) 2014.01.21
Posted by mahnee

델타봇은 XYZ 좌표를 Z축과 평행한 세개의 축(A,B,C 라고 지정)에 대한 좌표로 변환하여 구동이 되는 형식이다.


이 때 Z축의 좌표는 세개의 축(A,B,C)을 동일하게 이동하는 것과 같기 때문에 XY 좌표만 생각하면 된다.


XY 평면 상에 델타봇의 각 축과 로드를 나타내면 다음과 같다.





XY평면의 원점은 델타봇의 중심으로 설정한다. 

델타봇의 B, C 축을 연결하는 선이 XY평면상에서 X축과 평행한 선으로 설정한다.


이 때, 델타봇의 각 축의 위치는 다음과 같이 XY 평면상의 좌표로 나타낼 수 있다.





여기서 , d는 원점에서 각 축까지의 거리이다.


계산을 간단히 하기 위해 이펙터의 크기와 로드 고정부품의 크기 등은 무시한다.


XY평면상의 임의의 점 P(x,y)의 좌표를 점에서 각 축까지의 거리로 변환을 해보자.






이다.


델타봇에서 각 로드는 각 축을 중심으로 로드엔드의 운동각(?)의 범위 내에서 축을 중심으로 회전을 하는 것으로 보면 된다.

따라서 델타봇의 각 축과 축의 중심에서 임의의 점을 잇는 선을 직교좌표로 하는 평면으로 가져오면 그림과 같다.



로드의 높이 H는 다음 식으로 구할 수 있다.



여기서 R은 로드의 길이이다.


로드의 길이는 정해져 있고 축의 중심에서 임의의 점까지의 거리는 위 식에서 구한 값이다.

따라서 A축에서 로드의 높이 Ha는 다음과 같다.



같은 방법으로 B, C축에서 로드의 높이를 구하면 다음과 같다.





따라서 xy 좌표로 제공되는 gcode로부터 각 축의 로드 높이를 계산해서 구동이 가능하다.

이렇게 계산된 각 축의 로드 높이에 Z좌표를 offset으로 적용하면 최종 구동 높이를 얻을 수 있다.





※ 혹시 잘못된 부분이나 이상한 점이 있으면 알려주셨으면 합니다. 

    이상하게 간단해서 이게 맞나 싶네요.


※ 이펙터나 로드 고정 부품의 크기를 고려하면 수식이 좀 더 복잡해 지겠죠.




'공작 > 3D 프린터' 카테고리의 다른 글

Hotend 테스트  (0) 2014.03.28
UP! Plus 프린터 플랫폼 히터 및 센서 사양  (0) 2014.03.26
델타봇용 로드엔드 구입  (0) 2014.02.08
3D 프린터 구동용 보드 구매..  (0) 2014.01.21
Y 축 제작  (0) 2013.06.23
Posted by mahnee

델타봇 제작을 위한 로드엔드를 구입했다.


http://www.teamsi.co.kr/shop/shopdetail.html?branduid=85939&search=ax5525&sort=


비용은 13,100원 + 배송비 + 할인 = 14,000원


RC 카를 위한 부품이다.

볼내경은 3mm,

로드 내경은 3.5mm -> M4 나사 가공을 했다.



10개가 한 세트인데

그 중 4개가 볼 형태가 정상이 아니었다.(아래 사진 빨간원)

다행히 수량이 4개 여서 짝이 맞으니 그냥 쓰기로 했다.




'공작 > 3D 프린터' 카테고리의 다른 글

UP! Plus 프린터 플랫폼 히터 및 센서 사양  (0) 2014.03.26
델타봇의 좌표 변환에 대한 생각.  (0) 2014.02.11
3D 프린터 구동용 보드 구매..  (0) 2014.01.21
Y 축 제작  (0) 2013.06.23
관통 구멍 뚫기  (0) 2013.06.15
Posted by mahnee

온라인 전자부품 몰에서 RAMPS 1.4 보드를 구매 했다.

원래 따로 제작하려고 했었는데 시간도 그렇고, 

빨리 뭔가 전자적으로 구동되는 걸 봐야 힘이 날것 같아서 구매해 버렸다.




제품 박스의 내용물이다.

Arduino Mega 2560 호환 보드인 Funduino Mega 2560(중국산 호환 보드인듯)와 Pololu A4988 모듈들, 박스 안에 별도로 들어있는 RAMPS 1.4 보드와 각종 전선 들이다.



X, Y, Z 축과 두 개의 extruder를 구동하기 위한 5개의 A4988 모터 드라이버 모듈과 RAMPS 1.4 보드, Funduino Mega 2560 이다.

보드를 조립하고 Marlin 펌웨어를 올려보았다. 


여기까지는 좋았다.


모터를 테스트 하기 위해 12V를 연결했는데, 과전류가 흐르는 것...!

모터를 너무 많이 달았나싶어 모터 드라이버도 빼보았는데 여전하다.


부품이 문제가 있나 싶어, 부품을 하나하나 들어내기 시작!

(반품하려 했으나, 주말이고 또 그만큼 기다려야 해서 그냥 디버깅 하기로 함)


아무리 부품을 들어내도 증상이 해결되지 않았다.

결국 모든 부품을 보드에서 떼어내게 되었고,

아무 부품도 실장이 되어있지 않은데도 전원부 쇼트 발생!!


결국 회로도와 PCB 레이아웃을 기반으로 확대경으로 들여다 보며 문제를 찾아나가기 시작했다.



그 결과, 위 사진의 빨간 네모속 오류를 발견했다.

해당 패드는 Hotend Heater 제어를 위한 출력 단자 D10의 + 단자의 뒷면 패턴이다.

패드는 12V이고 주변은 GND인데 설계 오류인지 공정 문제인지, 저렇게 연결이 되어있었다.

칼로 패턴을 끊고 모든 부품을 다시 실장.


모터 테스트를 하니 정상 동작한다.



더 이상 테스트 할 것이 없어, 가지고 있는 LCD를 붙여보기로 했다.

그래픽 LCD의 경우 u8glib 라는 LCD 통합 라이브러리를 사용한다. 


문제는 사용된 LCD의 컨트롤러는 SED1520 으로 u8glib 가 지원하지 않는 칩이었던것!

(호환되는 칩이 있는지 모르겠지만 찾지 못함).


결국 라이브러리를 수정하여 SED1520을 지원하는 코드를 추가하였다.

그래서 위와 같은 출력화면을 얻었다.


이제 다시 손을 놓았던 기구부 제작에 들어가야 겠다.


'공작 > 3D 프린터' 카테고리의 다른 글

델타봇의 좌표 변환에 대한 생각.  (0) 2014.02.11
델타봇용 로드엔드 구입  (0) 2014.02.08
Y 축 제작  (0) 2013.06.23
관통 구멍 뚫기  (0) 2013.06.15
베어링 구입  (0) 2013.06.15
Posted by mahnee
이전버튼 1 2 3 이전버튼

블로그 이미지
온갖 자작과 공학 전반에 걸쳐 관심이 많은 ..
mahnee
Yesterday
Today
Total

달력

 « |  » 2024.11
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함