부스트 컨버터와 한계

닉시튜브를 이용한 환경 모니터를 만들려는 시도중, 승압회로를 만들다 한계에 봉착했습니다. 그래서 이런 저런 자료를 찾아보다 몇 가지 사실을 알게 되었습니다.

보통 DC-DC 승압회로로 사용하는 것이 Boost Converter(부스트 컨버터)인데요, 이 회로는 인덕터와 스위치(MOSFET)을 이용해 승압을 시키는 방식입니다. 일반적인 회로는 아래와 같습니다.

tumblr_inline_p64sb07xNm1vpz0g9_540

이 회로의 특징은 MOSFET을 켰다 꺼서(On/Off) 인덕터(L)를 충전했다 방전하여 조금씩 전압을 키워 승압시키는 방식이라 생각하시면 좋습니다.

이 방식의 한계에 대해서 알아본 결과 다음의 그래프를 얻을 수 있었습니다.

tumblr_inline_p64sgl93Ll1vpz0g9_540

부스트 컨버터의 승압 능력은 기본적으로 듀티 사이클의 영향을 받는다고 합니다. 다시 말해 듀티 사이클(작동 시간)이 길어지면 길어질 수록 승압의 배율(Vin에서 Vout의 배율)이 증가한다고 합니다. 이론상의 최대 승압 비율은 약 10배(x10)이며, 이 수치가 나오기 위해서는 듀티 사이클(Duty cycle)이 95%이상 나와야 한다고 합니다. 하지만… 저도 잘은 모르겠지만 이건 어디까지나 이론상의 수치라 실제로 부스트 컨버터를 이용한 승압 회로는 6배(x6)를 최대로 보고 있다고 합니다.
네… 이 이야기를 듣고 555타이머와 부스트 컨버터를 이용한 승압회로는 한계가 있음을 깨달았습니다. 오히려 9V를 넣어(Vin) 120V(Vout) 나온것만 해도 장하다고 생각하기로 했습니다.

역시 “교류는 승압도 간단해요!”라고 하셨던 무선통신 강사님의 말씀이 맞나 봅니다.

 References :

1. Determining the practical limit for boost factor in DC-DC voltage conversion

2. Working with Boost Converters

로봇 팔

로봇의 팔을 만들어보자

주의 : 손이 없음

주의 : 작업하다 그만둔문서입니다. 

로봇 팔을 만들어 보고 있습니다. 부제목과 같이 아직 손을 만들 생각은 전혀 없습니다.

(두둥! 그렇다면 팔이 왜 필요해)

…사실은… 손도 같이 만들어 보고 싶지만 팔에 비해서 어마어마하게 복잡하고 또 관절운동도 복잡해서 엄두를 못 내겠 더라구요. 그래서 팔만 만들어 보기로 했습니다.

1. 기본 도안

지난번 로봇을 만들다 포기했던 가장 큰 이유는 “내가 가지고 있는 부품에 딱 맞는 프레임(로봇의 껍질이나 골격등등)을 구하기가 너무나 어려웠기 때문입니다. 그래서 이번에는 직접 디자인을 해서 요즘 많은 관심을 받고 있는 3D 프린터로 직접 인쇄를 해보기로 했습니다. 3D프린터로 출력을 하려면 아래의 도구가 필요하겠지요.

  • 3D 프린터
  • 프린팅용 프로그램 (프린터에 같이 포함되어 있음)
  • 디자인 프로그램 (프린터에 같이 포함되어 있는 경우가 많음)

어차피 저는 3D프린터로 무언가 예쁘고 아름다운 조형물을 출력할 계획은 아니었기 때문에 가능한한 싼 물건을 사기로 했습니다. 제가 고른 것은 Anet A8 제품이고요.

……조립한 당일날 메인보드가 고장나서 모든걸 포기하곤 XYZ 프린팅의 제품을 구입했습니다. “과정에 불가한 3D프린터”에 너무 많은 노력을 하고 싶지 않았다고 할까요?

디자인 소프트웨어는 AutoDesk에서 무료로 공급하고 있는 TinkerCAD를 사용했습니다. 제품 고유의 프로그램을 쓸 수도 있지만 온라인으로 바로바로 작업이 가능해서 이것을 선택했습니다.

기본적인 형태 디자인은 아래와 같습니다.

 

upper
기본형태

한쪽 팔만 다시 보자면..

shoulder

  1. 몸통에 서보모터와 스테핑 모터를 고정시킵니다 (청색은 스테핑 모터)
  2. 커플러에 몸통 밖으로 나갈 축을 연결하고 몸통에 부착된 베어링으로 안정시킵니다
  3. 이 그림에서는 보이지 않지만 관절 역할을 할 유니버설 조인트를 이용해 팔과 잇습니다.
  4. 역시 그림에는 없지만 뼈대 역할을 할 막대와 유니버설 조인트로 전완부와 상완부를 연결합니다
  5. 마지막으로 와이어를 이용해 관절운동을 조절합니다

 

2. 좀 더 세부적인 문제들

여기까지 디자인 하면서 지인분과 많은 이야기를 나눴습니다. 전 기계공학적 머리가 0 상태인데다, 아무 생각이 없기 때문이죠. 지인분이 가장 문제로 삼은 것은 ‘동력전달’ 문제 입니다. 저는 금속 와이어를 사용해서 동력을 전달할 생각이었는데 지인분은 관절축(뼈대)에 모터를 직결하는게 어떤지 물어봤습니다. 사실 이런 방식으로 만들어 본 적이 한번 있지만 다시 한번 고민을 해봤습니다. 아래와 같은 문제가 있었습니다.

SE-A410_4
서보모터의 형태 (출처)
  • 내가 가지고 있는 모터는 대부분 서보모터이다
  • 어깨와 팔꿈치 관절, 그리고 조금 억지를 부리면 손목 관절까지도 구부림, 폄, 내회전, 외회전의 기능이 있다
  • 서보모터라도 이런 움직임을 구현하지 못하는 것은 아니지만 가장 큰 문제는 이런 움직임을 구현하기 위해서는 서보모터의 모터헤드에 움직이려는 관절의 축(뼈대)을 직접 연결해야 한다
  • 모터에 직결한 경우 아래쪽(원위부)의 전체 무게는 모터의 정지부하 또는 하중으로 작용한다
  • 와이어를 쓰던 축을 모터에 직결하던 정지부하가 안 걸리는 것은 아니지만, 모터에 축을 직결하면 손목에서 어깨 관절로 가면 갈 수록 모터는 더 많은 하중을 견뎌야 하고 이로인해 불필요한 전력 낭비가 발생한다
  • 또한 관절부에 모터를 위치시키면 아무리 토크가 높은 모터라고 하더라도 팔 자체의 기본 무게(프레임 + 각종 부품 + 원위부 관절에 달린 모터 무게)로 인해 실제 사용 가능한 토크는 줄어들게 된다
  • 대부분의 서보모터는 모터헤드가 모터의 가운데 위치하지 않기 때문에 설계가 극도로 어려워진다
  • 와이어를 이용하면 팔 전체에 모터의 무게를 제거할 수 있다
  • 모터를 몸통에 위치 시키면 무게 중심을 안정시킬 수 있다
  • 와이어를 안쪽과 바깥쪽에 각각 두 개씩 위치 시키면 비틀림을 구현할 수 있다
  • 와이어가 프레임에 직접적으로 닿는 것을 피하기 위해 추가적인 베어링과 축을 바꿀 부위가 필요하다
  • 와이어를 제어하는 모터의 제어 코딩이 더 복잡해지고, 몸통부에서의 설계가 복잡해진다
  • 모터 직결보다 좁은 범위에서의 관절운동만이 가능하다

뭐 이러한 이유로 인해 와이어를 선택한 것도 있지만, 안 해본 것이니 해보자는 생각으로도 시작을 해봤습니다.

3. 실제 디자인

아래의 사이트에서 직접 도면을 보실 수 있습니다.

  1. 팔의 아래쪽
  2. 팔의 위쪽

기본적으로 어떻게 움직이는지에 대해 많은 고민을 했습니다. 이건 고민을 하며 그려본 기본 개념도입니다.

arm
골격의 움직임 기본 개념(왼쪽이 손목)

관절은 3D프린터로 정밀하게 만들기 어려울 것 같고, 또 두 부위를 연결하기 위한 부품도 복잡해서 유니버설 조인트(Universal joint)라는 것을 이용하기로 했습니다.

arm joint
관절의 기본 컨셉
IMG_0502
관절의 축과 와이어를 지지할 지지대

관절의 형태는 지금까지 한번도 구상해본 적이 없어서 제 나름대로 디자인을 해봤습니다. 처음 생각에서 조금 차이가 생겼다고 한다면 근육이 되는 와이어를 골격에 붙일 수가 없어서 프레임에 봉(rod)을 달아 연결하기로 했습니다.

이런 저런 것들을 고려한 다음 다음의 형태로 두 개의 플라스틱 판을 만들어 결합시키기로 했습니다.

forearm_upper.png
팔의 위쪽 프레임
lower.png
팔의 아래쪽 프레임

이 두 가지를 3D프린터로 제작해서 결합시키면 제일 위의 그림처럼 연결이 됩니다. 물론 프린트 후 어느정도의 손질이 필요하겠지만요. 아무튼 이런 형태로 조립을 했을 때 로봇의 몸제는 아래의 그림처럼 될 것 같습니다.

concept02
몸통

그림에 갈색은 서보모터구요, 파란색은 스테핑 모터, 그리고 녹색은 아두이노 보드 입니다. 앞 뒤의 회색 부분은 껍질입니다. 네에.. 아무 기능도 없는 껍질입니다. 킁;;

concept01
몸통의 후측면

앞에서 잘 보이지 않지만, 앞쪽 서보모터 네 개는 가운데 붉은색 패널에 구멍을 뚫어 등쪽까지 나오게 했습니다. 그리고 뒤쪽 서보모터 두개는 패널에 수평으로 배치해서 가급적 어깨와 가까운 부위에 모터 헤드가 위치하도록 해봤습니다.

여기까지 디자인을 하고 나서 ‘알리 익스프레스‘에서 이것 저것 부품을 주문했습니다. 알리 익스프레스는 가격이 싼 대신 시간이 오래 걸려서 아마 다음달에나 조립을 시작하지 않을까 싶습니다. 필요한 부품으로 아래의 것들을 우선 주문했습니다.

4.  Bill Of Material (BOM, 자재 명세서)

  • 볼 베어링
  • 커플러
  • 유니버설 조인트
  • 4mm 카본 막대
  • 5mm 스테인레스 막대

5. 제작

3D 프린터가 도착해서 우선 프레임을 제작해 봤습니다. 유니버설 조인트와 카본 막대가 가장 중요한데 아직 도착을 안해서요. ㅠㅠ 대략 두 시간 정도가 걸렸고 아래와 같은 형태가 되었습니다.

2017-08-31 09.37.38

멀리서 보면 아름답기 그지 없지요..?

2017-08-31 09.37.58  2017-08-31 09.37.43

잘 보면 솔기 같은 것도 있고 불규칙한 부분도 있고 그렇습니다. 약간의 사포질은 필요하겠군요.

ㅡㅡ; 나머지 부분도 한번 출력을 해봐야 겠습니다. 반대쪽도 출력해 봤는데 디자인의 사이즈와 실제 출력 사이즈가 달라서 맞물리지가 않았습니다. 또한 가운데 봉을 지지대 없이 설계했더니 엉망이 되어버렸습니다.

2017-08-31 14.49.16
사진을 확대해 보면 거미줄 같은 것이 잔뜩 있습니다
2017-08-31 14.55.47
끼워 보면 끼워지지 않습니다

그런데… 만들다가 크나큰 문제를 하나 발견했습니다. 유니버설 조인트를 이용해 팔의 내회전/외회전을 구현하려고 했는데 그게 축이 조인트와 고정되어 버리면 불가능하겠더군요. 그걸 왜 지금까지 몰랐는지. ㅠㅠ 결국 이 문제를 해결하기 위해서 고민하다가 아주 굵은(?!) 뼈대를 만들기로 했습니다.

arm_shaft_cover.png
플라스틱 샤프트

3D프린터로 샤프트를 만드는 겁니다. 가운데 4mm 카본 막대가 들어갈 수 있는 공간을 만들었고, 양쪽 끝 부분에 볼베어링이 들어갈 수 있는 공간도 확보했습니다. 카본 막대는 통으로 쓰는 것이 아니라 절반 정도로 잘라서 위/아래에 각각 따로 끼울 겁니다. 그리고 그 카본 막대를 볼 베어링에 끼우면 플라스틱 샤프트와 카본막대가 따로 움직일 수 있기 때문에 내회전/외회전이 가능할 것으로 생각합니다. 양쪽에 있는 작은 네모 구멍은 와이어를 90° 간격으로 고정하기 위한 구멍입니다.

설계대로 출력을 해 봤는데 원하는 사이즈가 나오지 않아서 다시 조정을 한 후 출력을 했습니다.

2017-09-01 11.24.20
출력한 결과물

생각보다 오차가 심각해서 조금 더 수정을 해야 할 것 같습니다. 베어링이 제대로 안 들어가네요. 그리고… 몇 번의 시행착오 끝에 추가로 조금 변경했습니다. 와이어를 고정할 위치와, 와이어가 지나갈 구멍을 만들어 주었지요. 아래는 그 이미지입니다.

rev_shaft
수정한 샤프트

몇 차례의 리비전 후에 이런 모습이 되었습니다. 처음보다는 많이 복잡해 졌지요? 저도 만들다 보니 이렇게 복잡하다는 것을 알게 되었습니다. ㅎ

일단 안쪽에 베어링을 넣을 공간을 총 네 개 만들었습니다. 카본 샤프트의 흔들림을 막기 위해 각각 두 개의 베어링을 끼울 수 있도록 했구요, 와이어를 고정한 후 그 와이어가 샤프트의 방향을 따라 위치할 수 있도록 중간에 작은 걸쇠를 만들었습니다. 물론 이 부분은 추후에 바뀔 가능성이 높습니다. 아무래도 스텐레스보다 플라스틱은 경도가 약하기 때문에 부러질 수 있다는 생각이 들었거든요.

2017-09-04 17.25.24

어라.. 사진이 돌아갔네요. 왜 그러지…? 아무튼 베어링 위치는 잘 맞습니다.

2017-09-04 17.25.37

베어링도 잘 들어가 있습니다. 삐딱한 것은 고정을 안해서 그런 것이구요. ㅎ 일단은 이대로 만들어 볼 생각입니다.
이제.. 나머지 재료만 오면 되겠군요. 기다려야 겠습니다. 기다리면서 시간도 남고 해서 어깨 관절을 위한 플라스틱 프레임을 만들어 보기로 했습니다. 초기 디자인과 사뭇 다른 부분도 있지만 기본적인 개념은 아래와 같습니다.

2017-09-02 01.10.15
기본 개념

까만 동그라미는 와이어의 방향(벡터)가 바뀌는 부위입니다. 위쪽 그림을 보시면 이해가 되실 거구요, 몸통의 스테핑 모터를 기준으로 몇 번의 각이 바뀌며 와이어가 몸통에 이어지도록 했습니다. 측면도를 보시면 조금 더 이해가 쉬울지도 모르겠습니다.

2017-09-02 01.14.43
기본 개념. 측면도 포함

잘 보시면 아주 복잡한 각도로 벡터가 바뀌게 됩니다. 어쩔 수 없어요. 제가 머리가 나쁘니 더 좋은 방법을 찾아내질 못했습니다. ㅠㅠ

2017-09-03 10.26.12
모터의 위치

모터가 아주… 어마어마하게 붙어 있습니다. 가운데 정사각형은 스테핑 모터이구요, 나머지는 전부 서보모터 입니다.

2017-09-03 10.26.17
Pullley(도르레)를 이용한 결선도

지금 생각은 중간에 몇 군데 도르레를 위치 시켜서 와이어의 방향을 바꾸면 어떨까 생각해 보고 있습니다. 아직, 어떻게 구현할 지는 제대로 정하지 못했어요. 아무튼 여기까지 해 놓고 3D 디자인을 해 보았습니다.

shoulder_final
어깨 구동축. Pulley 없음

Pulley를 넣지 않았는데도 어마어마하게 복잡한 형태가 되었습니다. 좌우에 튀어나와 있는 곳은 전부 서보모터를 고정하기 위한 곳이구요, 가운데 정사각형 공간에는 커플링과 모터의 축이 위치할 공간입니다. 실제 서보모터는 뒤쪽에 위치하구요. 여기까지는 되었는데! 아직 도르레(Pulley)를 넣을 공간을 만들지 못했습니다. ㅠㅠ

 

크리에이티브 커먼즈 라이선스
이 저작물은 크리에이티브 커먼즈 저작자표시-변경금지 4.0 국제 라이선스에 따라 이용할 수 있습니다.

아두이노 우노(Arduino UNO) 설계도

아두이노 기본 사이즈에 대한 설계도

로봇 만들기를 진행하면서 필요에 의해 찾은 자료입니다.

원본 출처는 여기 입니다. 개인적인 생각으로는 이 분도 이곳 저곳에서 검색을 통해 정리하신 것 같습니다.

1. Arduino UNO

arduino_uno_dims_lg.png

Screen-shot-2013-08-28-at-18.14.41.png

Arduino-Uno-Mega-Dimensions

arduino_uno_drawing_1000x703.png

2. Arduino Mega

arduino_mega_drawing_1000x528

3. Arduino Nano v3.0

arduino-nano-v30-atmega328-blue-4.jpg

arduino-nanomanual23-3-728

크리에이티브 커먼즈 라이선스
이 저작물은 크리에이티브 커먼즈 저작자표시-변경금지 4.0 국제 라이선스에 따라 이용할 수 있습니다.

IRF-540을 이용한 햄스터 온풍기

제가 자주가는 ‘재미있는 전자공작소’에 올렸던 햄스터 온풍기 입니다.

여기서도 변명을 풀어보자면.. 햄스터가 생각보다 활동가능한 온도가 제한적이라는 사실을 발견했지요. 그래서 겨울에도 햄스터가 따뜻하고 신선한 공기를 제공받을 수 있도록 120mm 팬과 발열소자를 사용해 온풍기를 만들기로 했습니다.

냉각용으로 사용하는 120mm팬들이 소리가 좀 커서.. 지난번에 펠티어 냉풍기를 만들때 썼던 Kraft팬을 사용했습니다. PWM으로 팬의 회전속도를 조절하는 능력이 있으면 좋겠지만.. 불행이도 그렇지가 않아서 조용하고 저속회전을 보여주는 이 팬이 좋더군요. (냉각 목적이 아니니까요)

255156_550

그리고… 발열 모듈은 이것을 사용했습니다. 사진을 보시믄 알겠지만 납작한 판때기처럼 생겼는데 AC든 DC든 전기만 가하면 240도까지 발열하는 재미있는 제품입니다. 실제 내부구조가 조금 궁금하긴 하지만.. 아무튼 그렇습니다. ㅎㅎ

032016008000000030

사실… 이 부품 두개가 전부지요.;;; 이것 말고 꼭 필요한 제품이라고 한다면..
MOSFET일겁니다. 전 IRF540을 사용했어요. 쉽게 설명하면 MOSFET이란 전압을 걸어주면 전류가 흐를 수 있도록 스위치를 올려주는 회로라고 생각하시면 되요. 다리두.. 달랑 세개 달려 있어 Gate, Drain, Source이렇게 세군데를 이어주면 작동하게 됩니다. 저같은 경우 펠티어 냉풍기를 만들때 사용할 목적으로 구입하다보니 상온에서 25A까지 흐를 수 있는 대용량을 쓰게되었습니다. 하지만… 폴리스위치가 4A까지 용인하다보니 큰 의미가 없어졌지요. ^^;
사실 폴리스위치가 햄스터 온풍기에서 하는 역할이라고 한다면… 효율을 떨어뜨리는 것 말고는 없습니다. 훨씬 고출력으로 발열모듈을 사용할 수 있는데 일정 출력이상 작동할 수 없게 만드니까요. 그럼에도 불구하고 제가 폴리스위치를 사용한 것은 아무래도 화재의 위험성때문일겁니다. 발열모듈이라니..;; 무섭거든요. ㅎㅎ;

어쨌거나 저쨌거나 기판을 얼렁뚱땅 조립했습니다.

2014-09-23 14.10.17.jpg

아두이노의 2파이 잭에도 전원을 공급받을 수 있게 했구요, 오른쪽 위에 보이는 6핀 PCIe 커넥터로 전원공급을 받게 했습니다. 그리고… 오른쪽 아래에 있는 두개의 거대한 커패시터. 이건 쿨링팬을 위한 겁니다(의외였죠?). 이것도 안전을위한 저만의 고민이었는데요, 고온으로 발열모듈이 작동하다 갑자기 쿨링팬이 꺼져버리면 위험할 것 같아서요. 그래서 쿨링팬에 2200uF의 커패시터를 써서 전원이 꺼져도 약간의 시간차를 두고 멈추게 했습니다.

2014-09-23 21.43.16

이건 아까보신 발열모듈입니다. 발열모듈에 40x40mm 히트싱크 두개를 앞뒤로 붙이고 간극은 전부 써멀 그리스로 매꿨습니다. 그리고… 와이어로 다시 고정을 했지요. 열을 뿜어내는 발열체다 보니 조금 무섭기도 해서 공중에 매달아 두고 쿨링팬으로 이 발열체에 바람을 불어주기로 했습니다.

2014-09-23 22.16.09

이건 온습도 센서입니다. 엘레파츠에서 특가로 팔때 잽싸게 샀지요. ㅎㅎ 기본적으로 이 온습도 센서의 온도 데이터를 이용해 발열모듈과 팬을 작동시키기로 했습니다.

회로가 복잡하지도 않고… 머리가 좋지도 않아 뚝딱뚝딱 금방 만들었습니다 ㅎㅎ;

2014-09-25 00.22.27.jpg

MDF라고 파티클보드 비슷한 나무판에 올려놨습니다. 생각보다 이 나무판에 구멍내는데에 더 오랜시간이 걸렸던 같습니다. ㅎㅎ

약간의 코딩을 하고나니 별 문제없이 작동을 시작했습니다. ㅎㅎ

2014-09-25 00.22.27-1

사진이 뿌연것은… 햄스터들이 살고있는 리빙박스가 반투명이라..;;
아무튼 사진에 보시면 왼쪽 위에 작은 온습도센서를 걸어놨고요… 팬의 아래쪽에 발열모듈이 대롱대롱 달려있습니다. 음.. 원래 두개를 달 생각이었는데 히트싱크가 모자라 하나는 아직 못 달았어요. ㅎㅎ;;;
원래는 작동상태를 알아보기 쉽게 LED를 몇개 더 달아서 현재 온도와 발열모듈의 작동여부를 알수있도록 할까 생각했었는데…. ‘귀찮아서’ 걍 시리얼 출력으로 알 수 있게 만들었습니다. 물론 LED에 대한 욕구를 참지 못해 디지털 13번 핀을 이용해 아두이노 기판에서 발열모듈의 작동여부는 알수있게 만들었어요. ㅎㅎ;
이건 시리얼모니터에서 보여주는 현재 측정값입니다.

RetrievingData

가운데 것을 잘 보시면 총 네가지 데이터가 나오는데요, Temperature는 온습도 센서에서 출력되는 값입니다. 28.1도라… 좀 이상하죠? 아무튼. 두번째 RH%는 상대습도 입니다. 현재 56.7%라네요. 그리고 TMP Temperature는 아까 이야기 하지 않았는데 TMP36GZ에서 나오는 값입니다. 이 제품은 온도가 어떻게 나오는지 궁금해서 추가로 달아봤는데 마지막에 보여주듯이 2.8도 정도 센서끼리 차이가 납니다. ㅠㅠ

아무튼… 뭐든지 적당히 넘어가는 곰닥터이므로… 그냥 살기로 했습니다. ㅋ
조금 웅웅거리는 소리가 나서 걱정이긴 하지만 어쨌든 햄스터들이 겨울에 춥지는 않을것 같아요.

아참… 데이터 쉬트는 아래와 같습니다.

1. 발열모듈 :     HP05-1/22-24
2. MOSFET :    IRF-540
3. 온습도센서 : HT-01DV

마지막으로 말씀드리고 싶은건, 여기까지 제가 만든것은 ‘그냥 재미로’한 것입니다. 온라인쇼핑몰 가시믄 만 이삼천원에 애완동물용 온돌방석을 팔고 있어요. ㅋ 그냥 그거 사세요. ^^;
크리에이티브 커먼즈 라이선스
이 저작물은 크리에이티브 커먼즈 저작자표시-동일조건변경허락 4.0 국제 라이선스에 따라 이용할 수 있습니다.