좌충우돌 로봇 만들기 Season II - 2 : 영양식좀 먹여볼까?


지난 번 글에서는 주로 모터에 대한 이야기를 다루었습니다.
하지만 모터만 해결된다고 될 문제가 아니었습니다.
모터를 잘 움직이게 해줄 무언가가 필요했고 전 그걸 몰랐습니다.
오늘은 ‘그 무엇’에 대한 이야기입니다.



이 과정에서 도움을 주신 페이스북 아두이노 사용자 모임의 김재유님과 차형도님께
감사 인사 드립니다^^


문돌이의 한계 3 - 모터에 대해 더 알아야 할 것들


지난 글에서 우선 모터의 torque에 대해 간단하게 알아보았다.
그리고 torque를 고려하여 몸통의 구조도 바꿔보았다. 크게 바뀌지는 않았지만…
하지만 개선된 것은 없었고 무엇이 문제인가를 좀 더 생각해보아야 했다.


나름 잔머리를 굴려 로봇의 동작 방식을 바꿔보기로 했다.
현재 로봇의 보행은 2개의 다리가 동시에 움직이도록 되어있고 이는 결국 2개의 다리가 앞으로
움직이는 동안 2개의 다리로만 전체 무게를 지탱해야 한다. 하지만 한 번에 하나의 다리만을
움직이도록 구현을 한다면 3개의 다리로 무게를 지탱할 수 있어 문제가 해결될 것이라 생각했다.
아래 그림에서 보면 빨간색으로 칠해진 다리가 무게를 지탱해야 하는 다리이다.


2다리로 지탱3 다리로 지탱


짧은 시간이기에 새로운 보행을 완벽하게 구현하지는 못하고 우선 제자리에서 다리를 들었다 놓도록
구현 후 테스트를 해보았다. 하지만…문제가 해결되지 않았다. 여전히 동작을 시작하면 얼마 안되어
주저 앉고 말았다(아쉽게도 동영상을 찍지 못했다).


여전히 해결이 안되기에 일단 인터넷 검색을 통해 좀 더 알아보다가 페이스북 아두이노 사용자 모임에 
질문을 올렸다. 그리고 무언가 단서를 찾았다.



다시 한 번 MG996R 모터의 데이터 시트를 열어보았다.
거기에 적힌 스펙 중 다음 내용이 눈에 들어왔다.


• Stall Current 2.5 A (6V) 


즉, stall torque를 내기 위해서는 2.5A의 전류가 필요하다는 것이다.
우리가 보통 배터리를 이용할 때 사용하는 단위가 mA이므로 2.5A라면 상당히 큰 전류이다.
그래서 이제 관심은 배터리로 옮겨갔다.


문돌이의 한계 4 - 배터리와 전기


누구나 알고 있듯이 모터는 전기라는 동력원을 통해 움직이는 장치이다.
하지만 나같은 문돌이가 알고 있는 모터들은 1.5V AA 전지 하나 연결해주면 쌩쌩 돌아가는
그런 모터들이다. 하지만 앞서 간략하게 설명한 바와 같이 이 서보모터라는 놈은 성격이 달랐다.
꽤 큰 힘을 쓰는 놈이다보니 먹는 것도 달라야 했다.


처음 2관절로 제작을 했을 때는 모터가 총 8개였고 전원으로는 1.5V AA 배터리 4개를 직렬로 연결하여
총 6V의 전압으로 테스트를 했다. 이전 글에서 보았듯이 무난한 움직임을 보여주었다. 하지만 벌써
이 때부터 전조 증상이 있었다. 한 2~3분 연속으로 움직이고 나면 이내 비실비실해지는 것이었다.
당시에는 그저 ‘그놈 참 배터리먹는 귀신이네’라고 단순하게 생각했다. 하지만 지금 생각하니 내가 배터리와
전기에 대해 몰라도 너무 몰랐던 것이다.


처음에는 무작정 배터리 용량이 빨리 소모되었기 때문이라고 생각했다. 그래서 4구 홀더 2개를 병렬로
연결하여 전압은 6V로 동일하게 하고 용량만 2배로 만들었다. 하지만 여전히 증상은 동일했다.


다음으로는 전압을 높여보기로 했다. 우선 총 6개의 배터리를 연결하여 9V의 전압을 만들었다.
(아래 테스터기에는 6.72V가 찍혀있으나 배터리 홀더 단자에 바로 연결하여 테스트한 것은 정확히
9V정도가 표시되었고 빵판에 연결한 후 빵판에 테스터 단자를 연결하니 아래와 같이 찍힌 것이다.)




하지만 여전히 결과는 동일했다. 아래 동영상은 지난 글에도 링크한 것이지만 다시 한 번 올린다.




다음은 배터리 8개를 직렬로 연결하여 12V까지 올려보았다. 데이터 시트에는 MG996R 모터의 동작
전압이 4.8V~7.2V까지로 나와있으나 12V까지는 사용가능하다 하여 무리를 해보았다.
(역시 직접 배터리 단자에서 테스트하면 12V가 표시되나 빵판에서 측정하니 아래와 같이 나왔다)




이렇게 하니 확실히 움직임이 달라지긴 했다. 처음 일어설 때와 움직일 때의 힘이 나아진 것 같았다.
하지만 그도 오래가지 못했고 만족할만한 수준은 아니었다.


게다가 조금 지나니 어디선가 연기가 솔솔…이놈이 좌절감에 담배를 피우나 했다.
스위치와 빵판을 연결한 점퍼 케이블에서 연기가 나고 있었던 것이다. 확인해보니 아래 사진과 같이
눌어있었다.




일단 여기까지 하고 하도 답답하여 페이스북 아두이노 사용자 모임에 질문을 올렸던 것이다.
그리고 조금 더 연구를 거듭한 결과 배터리에는 방전률이라는 것이 있다는 것을 알았다.


문돌이의 한계 5 - 배터리와 전기 : 조금 더 상세하게


역시나 문돌이 이기 때문에 자세한 설명은 할 수 없고 필요한 선에서만 간략하게 정리한다.


기본적으로 우리가 흔히 접하는 전기적 단위에는 전압(V)과 전류(A 또는 mA)가 있다.
그리고 배터리 중 충전이 가능한 2차전지에는 용량이 표시되는데 이 때는 mAh라는 단위가
사용된다. 각각의 뜻을 보면


  • 전압 (V) : 전기적인 위치의 차이(전위차)를 나타내는 단위. 물이 높은 곳에서 낮은 곳으로
    흐르며 이 높이의 차이를 수위차라고 하듯이 전기적인 높이의 차이가 있어야 전류가 흐른다.
  • 전류의 세기(A, mA) : 전위차에 의해 전자가 이동을 하게 되는데이를 전류라고 하며 정해진 
    시간 동안 얼마나 많은 전자가 이동하는지를 전류의 세기라고 하고 그 단위가 A 또는 mA이다.
  • 용량 (Ah, mAh) : 한시간 동안 사용할 수 있는 전류의 세기를 용량으로 표시한다.
  • 저항 (Ω) : 전류의 흐름을 방해하는 정도를 저항이라 하며 다양한 환경이 영향을 미친다.


일단 이정도는 상식선에서 모두 알고 있는 내용이다.
중요한 것은 이 성질들의 관계가 어떻게 조합되어 어떤 결과를 만들어내는지 이다.
사실 일반적인 생활에서는 배터리가 필요한 전자기기에서 필요로 하는 전압만 알면 되지만…


우선 사용 중인 모터 MG996R의 데이터 시트로 되돌아가 보자. 이미 위에서 언급했지만
Stall Current 2.5 A (6V)라는 내용이 있다. stall torque를 내기 위해 필요한 전류…
바로 앞에 설명한 개념에 따르면 전압이 있어야 전류가 흐른다. 게다가 높은 곳에서 떨어지는 물이
낮은 곳에서 떨어지는 물보다 세차게 흐르듯 전압이 높으로면 전류도 세진다. 여기까지만 보면
별 문제가 없어보인다.


똑같은 물의 비유지만 이번엔 물총을 생각해보자.
물총의 방아쇠를 당기면 처음에는 멀리 나가다가 점점 힘이 약해지면서 결국에는 코앞에 물이 떨어진다.
1차 전지가 바로 이와 같다. 전류의 사용량이 많아지면 급격하게 전압이 떨어지면서 필요한 전류를 보내지
못하게 되는 것이다.


이러한 특성 때문에 8개나 되는 배터리를 직렬 연결하여 전압을 12V로 높여도 순식간에 전압이 낮아져
모터를 제대로 구동시키는 못하는 상황이 된 것이다. 그러기에 일정시간 강한 힘을 필요로 하는 경우에는
2차 전지를, 그 중에서도 고방전 배터리라고 부르는 것들을 사용하게 된다. 이런 배터리들은 주로 RC
구동용으로 많이 사용되는데 더이상의 설명은 복잡해지므로 아래 링크로 대신한다.


http://tip.daum.net/openknow/38738178


또하나의 변수 - 전선


어쨌든 페이스북 아두이노 사용자 모임 회원분들의 도움과 다양한 검색질을 통해 배터리에 문제가 있다는 것을
확인한 후 비교적 방전률이 높다는 3.5V 3500mAh 18650 리튬-이온 배터리를 2개 구입하였다.
그런데 착각을 한 것이 리튬-이온 배터리라고 모두 고방전을 지원하는 것은 아니라는 것이다. 다만 고방전
배터리들은 보호회로가 없어 위험을 감수해야 한다. 어쨌든 내가 산 배터리도 지속적으로 3.4A 정도의 출력을
보장해 준다고 한다.


그리고 첫 테스트…리튬-이온배터리를 직렬로 연결하는 배터리 홀더에 장착한 후 로봇을 기동하였다.
아래 동영상에서 보듯이 일단 초기 구동이 꽤 기운차 보인다. 그리고 뒤에 설명하겠지만 보행 방식 변경을 위한
테스트도 움직임이 가벼워보인다. 그런데 막상 기존 보행 방식으로 구동을 하니 기존 일반 배터리 사용시보다는
나아보이나 여전이 불만족 스럽다. 그리고 동영상 마지막에서 보여지는 황급함…-.-
불나는 줄 알았다.





배터리 홀더를 스위치와 연결하고 스위치를 빵판과 연결하였는데 스위치와 빵판을 연결할 때 일반적인 아두이노
점퍼케이블을 사용을 하였더니 이 점퍼케이블이 전류를 버티지 못하고 타버린 것이다. 전류의 흐름이 전선의
길이와 두께에도 관련이 있다는 것을 몰랐던 것이다(물론 저항과도…). 일단 아두이노용 점퍼 케이블은 
5V 이하에서 사용을 해야 할 것 같다.


결국 기존에 넉넉하게 사둔 AA 배터리용 배터리 홀더의 전선을 잘라 스위치와 빵판을 다시 연결하였다.


한 고비를 넘기다.




이제 연기도 안 내뿜고 제법 무게도 버티면서 잘 나간다(뭔가 각도 조절이 잘못된 듯 2개의 다리를 너무 높이
쳐드는 것만 빼고…).


여전히 만족스럽지는 못하지만 더이상 하드웨어에 투자하기는 힘들 것 같다(만일 투자를 한다면 고방전을 지원하는 
니켈-수소 배터리와 전용 충전기 그리고 고출력 모터 4개 정도가 될텐데 최소 40만원은 들 것같다…ㅠ.ㅠ).
그래서 이후에는 소프트웨어적인 방법으로 보완을 해나가려고 한다. 


그 중 첫번째가 글 서두에 언급한 보행 방식의 변경이다. 


현재는 2개의 다리가 동시에 움직이므로 한번에 2개이 다리로 전체 무게를
지탱해야 한다. 그만큼 모터에 부하가 걸리는 것이다. 이 것을 한 번에 하나의 다리가 움직이는 방식으로 변경하면
동시에 무게를 지탱하는 다리가 3개가 됨으로써 부가가 경감될 것이다


다음으로는 기존 보행 방식을 그대로 쓰되 움직임을 줄이는 것이다. 현재는 모든 움직임이 45º 범위에서 움직이는데
이 각도를 30º 정도로 줄일 예정이다.


아무튼 이렇게 해서 일단 한고비는 넘긴 듯하다.
다음 시간부터는 프로그래밍을 통한 세부 조정에 대해 정리를 하겠다.
뭔가 무리인듯한 작업이었지만 나름 많은 것을 배워가고 있는데 만족을 느낀다.
한 번 제대로 만들어봐야겠다. ^^

블로그 이미지

마즈다

이제 반백이 되었지만 아직도 꿈을 좇고 있습니다. 그래서 그 꿈에 다가가기 위한 단편들을 하나 둘 씩 모아가고 있지요. 이 곳에 그 단편들이 모일 겁니다...^^

댓글을 달아 주세요


좌충우돌 로봇 만들기 2


일단 무작정 시작한 로봇 만들기의 시작은 그리 나쁘지 않았다.
블루투스 통신도 성공을 했고, 4개의 서보모터를 외부 전원을 이용하여 구동하는 것도
성공을 했고, 아이폰 앱을 통해 서보모터를 간단하게나마 제어하는 것도 성공을 했다.
그래도 이정도 하고 나니 할만 하겠다는 생각도 든다.


이제 본격적인 작업에 들어가기 위해 몇가지 준비가 필요하다.

  1. 보드 교체 : 총 12개의 관절이 필요하므로 PWM 핀을 여유있게 사용 가능한 아두이노 MEGA로 보드 교체
  2. 로봇 프레임 제작 : 일단은 집안에서 쉽게 구할 수 있는 재료들을 이용할 생각인데…이 글 중간에 언급하겠지만 이게 의외로 쉽지 않다…ㅠ.ㅠ
  3. 응용 프로토콜 설계
  4. 4족 보행 걸음 걸이에 대한 분석 : 이거…참 어렵다. Youtube 동영상을 보니 몇가지 패턴이 보이는데 어떤 식으로 구현해야 할지가 살짝 어려웠다.


일단 오늘의 목표는 위 3가지이다.
그럼 구체적으로 들어가보자.


아두이노 메가로 보드 교체하기


일단 지난 시간 까지의 테스트 진행에는 아두이노 나노를 사용하였다. PWM 핀이 
총 6개이므로 서보모터 4개를 테스트하는데는 무리가 없었다. 하지만 이제 본격적으로
작업을 시작하면서 점차 모터 수를 늘려야 하기에 보드를 메가로 바꾸었다.


아두이노 메가의 핀 배치는 아래 이미지를 참고하시라



하지만 문돌이가 하는데 어디 순순하게 되는게 있으랴…-.-
우선 블루투스(HM-10) 연결에서부터 문제가 생겼다.
아두이노 나노에서 쓰던 스케치 소스를 그대로 이용하여 아두이노 메가의 D2에 TX룰,
D3애 RX를 연결하였다. 그리고 테스트를 하는데…블루투스에서 아이폰 앱으로는
정상적으로 데이터 전송이 되는데 폰에서 HM-10으로의 전송이 안되는 것이었다.


메가가 맛이 갔나? HM-10이 맛이 갔나?
우선 다시 나노를 이용하여 테스트 해보았다. 정상 작동한다.
그럼 메가가 맛이 갔나?
구글링 결과 역시 무지의 소치였다.
다음 유의 사항을 명심하자


유의사항 1.

아두이노 우노/나노의 경우 하드웨어 Serial은 1개 뿐으로 이 것은 주로
하드웨어간 통신(주로 PC와의 USB 연결 등)에 쓰인다. 따라서 가급적면
다른 Serial 통신을 위해서는 SoftwareSerial을 사용한다. 하지만
아두이노 메가 2560의 경우 하드웨어 Serial이 모두 4개로 하드웨어간
통신을 위해 1개를 남겨 두더라도 모두 3개의 추가 Serial을 사용 가능하다.


즉, 아두이노 나노에서 테스트했던 코드는 SoftwareSerial을 이용하여 D2, D3 핀을
이용하는 것이었는데 아우이노 메가에서는 이게 정상 작동하지 않았던 것이다.
결국 하드웨어 시리얼 중 하나인 D14(TX3), D15(RX3)로 연결하여 성공하였다.


참고로 스케치 상에서 TX0과 RX0은 Serial로 TX1과 RX1은 Serial1로 TX2와 RX2는
Serial2로 TX3과 RX3은 Serial3으로 사용하면 된다.


그리고 아두이노 메가의 어떤 핀들이 PWM핀인지 몰라 검색하던 중 위의 이미지를
찾았다. 보시다시피 2~13은 모두 PWM 출력이 가능하며 추가로 D44, D45, D46 핀이
PWM 핀으로 총 15개를 PWM으로 사용 가능하다.

최종 연결 형태는 다음과 같다.


로봇 프레임 제작


일단 인터넷에 보면 너무나 멋진 4 또는 6족 로봇들이 검색된다.
특히 마음에 들었던 것은 종이로 프레임을 만든 ZURI라는 프로젝트였다.
아래 이미지에서 보다시피 마치 공각기동대에 나왔던 로봇 그 느낌이다.


하지만 종이라고 만만하랴…처음에 하드보드지를 이용하여 해보려고 했으나
하드보드는 워낙 자르기가 어렵고 또 두껍다보니 접을 경우 모서리가 갈라지기도 하여
아무래도 어려울 것 같았다. 그렇다고 프레임에 돈을 투자하기도 아깝고…일단
방향은 폐 페트병이나 캔, 스티로폼 등 재활용 가능한 재로를 목표로 하였다.


맨 아래 결과 동영상에서 보다시피 일단 몸통은 공CD 케이스를 선택하였다.
저 밑판이 생각보다 두꺼워서 모터 고정시킬 나사 구명 뚫느라 고생 좀 했다.


결국은 나사보다 조금 가능 간이 드라이버를 불에 지져 구멍을 뚫었다.


이후 숙제는 제 2관절을 어떻게 붙일 것인지 그리고 2관절과 3관절 사이, 3관절
끝의 다리를 어떻게 만들 것인지가 문제다…프레임 만들다 시간 다보내게 생겼다.
배보다 배꼽이 더 큰…


응용 프로토콜 설계

이건 뭐 설계라고 하기엔 뭐하고…
암튼 응용 프로토콜을 나름 만들어 사용하기로 했다. ASCII 코드를 기준으로 하였다. 
간단하게 아래 이미지 참고하시길…

간단하게 아래 이미지 참고하시길…


4족 보행 걸음걸이 분석


역시나 가장 어려운 부분이 아닌가 싶다.
게다가 나는 이제 관절 1개를 붙인 상태이다보니 실제로 전진도 못하고 2번째 관절까지
고려해야 하는데 이 작업을 동영상을 토대로 상상을 하면서 할 수밖에 없었다.
결국 아직은 미완의 작업이다.


Youtube를 통해 검색을 해보면 대체로 3가지 패턴이 보인다.

  1. 다리 4개를 각각 대각선 방향으로 순차적으로 움직이면서 전진
    [https://youtu.be/PL4174oBPTs]
  2. 대각선상의 다리 2개씩을 동시에 번갈아가면서 움직임
    https://youtu.be/Dfke2byJknk
  3. 같은쪽 앞뒤 다리를 순차적으로 움직인 후 전체 1관절을 돌려 몸을 앞으로 밀듯이 전진하는 움직임
    https://youtu.be/87nNW4DgTBc


하지만 동영상을 보면 대체로 하나의 로봇에 2가지 이상의 움직임을 구현하는 경우가
대부분이다.


어쨌든 2번이 조금 쉬울것 같다는 판단에 2번을 우선 구현해 보기로 하고 작업을 하였다.
계획은 대각선 상의 2 다리가 2관절을 들어올려 앞으로 내딛는 동안 바닥에 닿은 나머지
대각선상의 2개의 다리는 1관절만 몸을 앞으로 미는 방식으로 전진하는 것이다.


일단 오늘은 여기까지로 작업 결과는 아래와 같다. 조금 더 부드러운 동작을 표현하고 싶어


for문을 통해 서보모터의 각도를 증감하였다. (나무젓가락 다리가 참 애틋해 보인다...ㅠ.ㅠ)

다음주 부터가 문제인데…도대체 다리를 어떻게 이어붙여야 할지…ㅠ.ㅠ
한 주 동안 열심히 고민을 해봐야겠다.



최종 소스 링크

https://github.com/mazdah/BluetoothController

블로그 이미지

마즈다

이제 반백이 되었지만 아직도 꿈을 좇고 있습니다. 그래서 그 꿈에 다가가기 위한 단편들을 하나 둘 씩 모아가고 있지요. 이 곳에 그 단편들이 모일 겁니다...^^

댓글을 달아 주세요