밸런싱 로봇 (Balancing Robot) 만들기 연재
1. 동역학 구축 (1) [바로가기]
2. 동역학 구축 (2) [바로가기]
3. 동역학 구축 (3) [바로가기]
4. 기구부 구성 및 모터 파라미터 측정 [바로가기]
5. 제어기 설계 및 MATLAB을 이용한 시뮬레이션 [바로가기]
6. 밸런싱 로봇 만들기 [바로가기]


우리나라의 월드컵이 끝났네요. 한동안 이것저것 걱정은 잠시 접어두고 월드컵에 푹 빠져있었습니다. 우루과이전을 마치고 흘린 차두리 선수의 눈물이 머릿속에 오래 남아 그 좋아하던 술도 그날은 마시지 않고, 그저 아쉬움을 삼켰네요. 그래도 우루과이와의 마지막 경기는 2002년 월드컵의 그 멋진 경기들 만큼이나 오래 기억될 것 같습니다. 아주 멋진 경기였다고 생각합니다.^^

저도 이제 밸런싱로봇 연재를 계속해야지요. 실험실에 만들어 둔 밸런싱로봇은 각종 전시 및 다른 용도의 테스트를 계속해야해서 건뚱이라는 놈[건뚱이의 블로그]과 새로 하나 만들고 있습니다. 저희의 많은 취약점 중에 제일 큰 것이 기구부를 제작하는 것인데요. 이 건뚱이가 디바이스 마트에서 판매하는 밸런싱로봇용 기구부(모터포함)를 발견했네요.

그래서 없는 돈에 결국 이 기구부(실제로는 얼마안하는 가격이지만)를 구입했습니다. (이제 뭐 먹고 살까 걱정중입니다..ㅠㅠ)


[판매 페이지] 위의 판매페이지의 그림을 보면


이렇는데요. 좀 로봇 높이가 낮은게 아닌가 해서 높이를 높이도록 봉을 교체했습니다. 모터는 엔코더 내장형이구요.


실제 구입한 기구부입니다.


사실 이전에 수립한 동역학방정식[관련글]에 의하면, 위의 모터 파라미터를 다 알 필요가 없습니다. 알파와 베타만 알면 되죠. 그런데 문제가 하나 생겼습니다.


데이터시트를 모터 판매처에 요청해서 받았더니 딱 저 세개의 값이...ㅠㅠ 문제는 마찰계수를 알 수가 없네요. 문제가 생겨도 단단히 생긴 모양입니다. 그러나 우리에게는 실험이라는 막강한 무기(^^)가 있지요.



일단 데이터시트상에서 알 수 있는 값부터 찾아 보도록 하겠습니다.


저항은 나와 있구요. 토크상수의 단위를 유도한 동역학에 적용하기 위해 단위를 변경했습니다.


또 역기전력 상수도 단위를 변경했구요


50:1 기어비를 사용하고 있으므로 n=50까지 적용하면 저렇게 alpha를 알 수 있습니다.


문제는 beta인데요. 마찰계수 f_m을 알기 전에는 beta를 확정지을 수가 없습니다.. ㅠㅠ

일단 이 문젠 좀 놔두고 휠의 이너셔를 찾아야 겠네요


휠의 제원인데요. 그냥 간단히 원통형이라고 가정하면


이렇게 구해집니다. 그런데 기구부를 잘 관찰하면, 모터 축과 휠을 연결하는 축커플링이 있어요.


저걸 따라 측정해서 휠 이너셔에 포함 시키겠습니다.


그래서 합한 결과 휠의 이너셔가 0.00030861이라고 계산했습니다.




   일차계 시스템의 특성 파악 !  
 

1차계 시스템의 경우

 
위와 같이 각속도(omega)와 인가전압(v)에 대한 전달함수가 위와 같습니다. 이를 가지고, 계단응답 특성을 조사하면


위와 같습니다. 정상상태일때는 인가전압*alpha/beta의 관계가 있습니다. 그리고, 시정수 66.6% 지점을 읽으면, 그때 시간값이 J/beta가 됩니다. 여기서 관성모멘트에는 휠과 모터축이 같이 들어가 있기 때문에 놔두고, 정상상태의 속도값을 읽어서 beta를 확정지음으로서 마찰계수를 찾도록 하겠습니다.






   모터의 마찰계수 찾기 !  
 


모터에 5V를 인가했을대 각속도의 그래프입니다. 진동하는 부분은 실제 엔코더의 값을 차분하면서 생기는 문제입니다. 0.2초 후에는 확실히 정상상태에 들어간다는 것을 다른 실험에서도 확인해서 0.2초부터 끝까지의 평균값을 구하도록 하겠습니다.


왼쪽 오른쪽 모터를 5V부터 20V까지 인가해서 측정했습니다. 위의 표에서 평균각속도가 정상상태에서의 평균각속도값입니다. 위의 f_m을 구하는 과정은


저 식에 대입했을때


위의 식으로 마찰계수 f_m을 찾을 수 있습니다.

다시 표를 보면, f_m이 0V에 가까운 값과 아닌값이 차이가 크다는 것을 확인할 수 있고, 또한 아주 크다는 것도 확인할 수 있습니다. 이는 저가형 DC모터에서 역시 저가형 기어박스(동축이 아닌)를 사용한 경우 자주 확인되는 경우입니다. 그리고, 우리는 이전 경험에 의해 실제 제어는 대체로 5V이내에서 이뤄진다는 사실을 알고 있어서 5V의 데이터에 좀 더 큰 가중치를 주고 평균을 구해서


마찰 계수 f_m을 위의 값 1.7747을 사용하겠습니다.

오랜만의 포스팅이었네요. 요즘 제가 졸업을 위해 발악중입니다. 너무나도 초라한 실적에 좌절 중이기도 합니다. 어쩌겠습니다. 중간에 그저 돈 좀 벌어보겠다고 과하게 알바를 했던 저에게 잘못이 있겠지요...ㅠㅠ 이후에는 모터를 제외한 나머지 파라미터를 수립하도록 하겠습니다.

http://pinkwink.kr/trackback/336 관련글 쓰기
  • 핑구야 날자 2010/06/30 08:11

    우리아이들에게 잠깐 보여주었더니 호기심이 확.... 사내아이들이라..
    미래의 꿈에 로봇박사 이런게 없어서 애비마음에...조금 더 보여주어야겠어요. 그런다고 되는 것은 아니지만 부모맘이란,.,..ㅜㅜ

    • PinkWink 2010/06/30 12:01

      그래요?? 우와... 훌륭한 아이가 되겠는데요..ㅎㅎ^^

    • 핑구야 날자 2010/06/30 17:58

      그럼요, PinkWink님의 명 포스팅이 어디 가나요 ㅋㅋ

    • PinkWink 2010/06/30 18:05

      헉... 아니에요... 그저 허접한 공부하는 과정이지요... 잉..ㅠㅠ

  • 아이미슈 2010/07/01 01:00

    다 완성하면 이거 타고 다니시는건가요?
    그 포스팅이 기대되는데요..ㅎ

    • PinkWink 2010/07/01 01:02

      헉.. 아니에요.. 작은 사이즈로 만드는거에요^^

  • 김현진 2010/07/04 20:16

    핑크윙크님 DC모터의 속도제어를 위해 부가적인 제어기를 구성하시는건가요? 아니면 모터쪽은 개루프로 가져가시나요?

    • PinkWink 2010/07/04 20:27

      모터의 제어를 위해 제가 한 일은 전체 동역학을 보면 아시겠지만, 모터의 특성방정식을 전체동역학에 대입해버립니다. 그렇게하면 모터의 제어기를 고민할 필요가 없다는 장점을 가지지요...^^

    • 김현진 2010/07/04 20:39

      그렇게 되면 모터에 달린 엔코더는 쓸모가 없어지는 건가요?

    • PinkWink 2010/07/04 20:48

      아니요.. 상태를 측정해야하기 때문에 필요하지요.
      모터의 특성방정식에서도 현재 모터 회전속도가 필요하구요.

    • 김현진 2010/07/04 20:48

      모델에 포함된 모터의 특성방정식은 무부하시의 모터특성인데 부하가 인가되면 외란으로 작용하여 모터특성이 많이 달라지지 않을까요?

    • PinkWink 2010/07/04 20:50

      선형성을 보장 받는 영역에서만 다루면 되지 않을까요??
      그리고 그 선형성을 보장받는 영역안에서는 특방이 정확하진 않지만 일반적으로는 쓸만하다고 하니까요...

    • 김현진 2010/07/04 20:57

      잘 이해가 가지않습니다.
      더불어 제가 너무 많이 여쭤보는건 아닌지 죄송스럽습니다.^^;
      염치 불구하고 여쭤보겠습니다 ㅠ_ㅠ
      실제 모델에서는 모터부에서 토크 혹은 전압이 그 입력으로 나타나는데 구현시 모터 드라이버 입력에는 PWM신호를 주는데에서 나타나는 모델과 시스템의 차이는 어떻게 해결해야할까요?ㅠ

    • PinkWink 2010/07/04 21:06

      동역학 모델의 최초 입력은 토크였습니다. 거기에 전압을 입력으로 가지는 모터의 특성방정식을 포함시켰으니... 전체 동역학은 전압을 입력으로 가지게 됩니다.
      이제 전압을 구현하는 문제가 남게되는데, 이는 통상적으로 PWM을 이용하게 됩니다. 물론 PWM으로 구현하면서 나타나는 약간의 전압강하, 그리고, 이외 소자들에 의해 나타나는 전압강하가 있을 수 있습니다. 이는 정확한 계산을 통해 극복할 수 있지만, 경험상 펜들럼과같은 간단한 종류의 시스템에는 어차피 세세한건 무시하겠다는 선형제어기를 설계했으니 역시 무시해도 된다는 것을 알고진행하고 있습니다. 추후 실제 시스템에 적용했을때 모터의 출력이 약하다고 판단되면 LQR 제어기 설계시 가중치를 조절하면 됩니다.
      나머지 약간의 위상차는 역시 무시할만하더군요. 예전경험으로는...

    • 김현진 2010/07/04 21:10

      답변 정말 감사합니다^^
      한번쯤 PWM 튜티증가에 의한 평균전압을 비교해보고싶습니다.
      모르고 있었는데 균형로봇 프레임이 나왔군요
      모터는 아마도 D&G 모터인것 같네요
      엔코더가 13p/r 이어서 고생 많이 하실거같습니다.ㅠㅠ

    • PinkWink 2010/07/05 00:26

      네... 그러나 50:1 기어를 사용하는거라 괜찮지 않을까 생각중입니다.

  • JEon 2010/07/21 14:56

    상판지지대 교체하신거 보니까 길이가 디바이스 마트에서 파는것들 보다 긴것 같은데요. 혹시 별도로 주문하시는 곳이 있나요?

    • PinkWink 2010/07/21 17:45

      디바이스마트의 판매페이지 옆에보면 봉 사진도 같이 있습니다. 거기서 좀 긴 봉으로 주문한 겁니다.

  • 다질문 2010/08/10 20:14

    pinkwink님......계속 턱턱 막히네요...그럴때마다 가슴도 턱턱 막힙니다....

    coil resistance가 terminal resistance와 같은 말인가요?? 모터는 2224 DC

    모터를 사용하는데.. 스펙책을 봐도 영......그리고 voltage constant는 없고

    current constant만 있는데 여기에 저 위의 resistance를 나눠서 구해도 될

    런지요....

    • PinkWink 2010/08/11 11:06

      저도 그런 용어에는 좀 약한데, coil resistance가 Rm일겁니다. 의심나시면, 모터 양단의 전압을 멀티미터로 찍어보시면 됩니다. 그게 저항값이거든요^^

  • 재오리 2010/08/16 13:56

    질문이 있습니다. 동역학 모델 식에는 Jm이라고 모터의 회전관성이 존재하는데요. 이 모터 회전관성을 측정할려니 어려움이 있습니다. pinkwink님께서는 모터의 회전관성을 어떻게 측정하셨나요

    • PinkWink 2010/08/16 15:58

      제가 구입했던 모터는 모터축의 관성모멘트가 제시되지 않았었습니다. 물론 제 블로그의 각 내용을 보면 추정이 가능하긴 하지만, 사실, 이제껏의 경험으로 두께 5mm정도, 길이 몇 센티의 모터축은 관성모멘트가 너무 작습니다. 그래서, 오차가 나도 얼마나지 않을거라 생각하고, 모터축(기어부포함)의 형상을 보고, 길이와 두께만 고려해서 그냥 계산했습니다.^^

  • 재오리 2010/08/16 16:23

    그렇군요ㅋ 모터축만 고려해서 측정해봐야 겠습니다ㅋ 언제나 잘 배우고 갑니다.

    • PinkWink 2010/08/16 17:20

      네... 좋은 성과있으시면.. 저한테도 알려주세요^^

  • 다질문 2010/08/16 20:09

    혹시 위에서 구한 마찰계수 fm의 단위를 알수 있을까요??

    • PinkWink 2010/08/16 20:32

      마찰계수는 어떤 힘과 마찰력사이의 비례식에서 사용하는 비례상수로서 단위가 없습니다.

  • 다질문 2010/08/17 20:45

    제가 머리가 나쁘다보니까 위에 말이 잘 이해가 안가는 부분이 있는데요...

    평균각속도 Ws를 구할때, 그 단위가 rad/sec니까, 일정시간동안 임의의 전

    압 V를 인가해서, 회전한 엔코더를 카운터해서 Ws를 구한다는 말씀이신가

    요??

    • PinkWink 2010/08/17 20:54

      일정한 전압을 인가했을때, 중간단계말고 일정한 각속도에 도달하게 되는 그 평균각속도(물론 엔코더를 차분한)를 이야기합니다. 처음 변화하는 부분은 이 경우는 포함시키면 안됩니다. 본문중에 언급되어있습니다.^^

  • theshy 2010/08/22 22:31

    안녕하세요. pinkWink님의 블로그를 보면서 세그웨이 공부하는 학부생입니다.^-^ 저희도 디바이스마트에서 같은 바디를 사서 하고 있는데요. 모터가 dnj RB-35GM 11type 감속비 1/50 12V인데 같은 모델이 맞나요?? coil resistance를 잴려고 모터 양단을 멀티미터 저항으로 찍어봤는데 이게 매번 다르더라구요. 포스팅 하신 내용대로 코일저항이랑 토크상수그냥 써도 될까요?

    • PinkWink 2010/08/23 10:15

      네... 전기자의 위치상 조금씩 저항값이 달라질 수 있다고 합니다. 저항값은 그 회사에서 제공한 것을 사용해도 됩니다.^^

  • 다질문 2010/08/23 21:44

    핑크윙크님 저기 위에 평균각속도 제셨는데...
    5v인가했을 때 1.7rad/sec가 나왔는데, 1초에 한바퀴도 안돈다는 말씀이신가요?? 전 30이 나오길래 fm을 계산해봤는데 마이너스가 나와서 먼가 잘못 계산한 부분이 있는 거 같아서요,,,

    • PinkWink 2010/08/24 04:29

      예.. 아주 저속입니다. 원래 모터도 저속인데다 50:1 기어까지 달려서 5V에서는 초당 반바퀴도 안되는 속도가 맞더군요^^

    • 다질문 2010/08/24 13:48

      50:1기어가 달려있다는 말씀이 이해가 안가는데요.. 모터의 평균 각속도 측정할 때, 순수 모터 하나만 가지고 일정 전압을 인가했을때 엔코더를 카운터해서 각속도w를 알 수 있수 있는 거 아니예요?? 모터자체에 그 기어가 달려있다는 말씀이신가요??

    • PinkWink 2010/08/24 14:14

      ^^ 전 기어가 달려있는 상태 그대로 테스트했거든요. 모터와 기어를 분리해서 측정할 이유가 없기 때문이지요. 본 포스팅에서 사용한 모터의 기어는 상당히 낮은 가격의 기어로 마찰이 아주 높은 종류입니다. 그러니 마찰계수를 찾는 실험을 수행한 것이지요.

  • 다질문 2010/08/24 14:18

    아~~~~~~~~~~~~~~~~~~~ 그렇군요... 저는 거의 0이라고 볼수 있을 정도의 크기로 마이너스값이 나오길래 아 뭐지 싶어서 ㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎ 아~~~~ 돌대가리 트이는 소리가 거기까지 갈듯한데요 ㅋㅋ
    감사합니다~

    • PinkWink 2010/08/24 14:42

      응?? 너무 그러지 마세요... 저도 많이 멍청하답니다...ㅠㅠ
      그래서 우리는 또 공부하고 또 배우고 그러나 봅니다.^^

  • goldlightbv 2010/08/30 15:32

    안녕하세요. 세그웨이 로봇 만드는 걸 도전하는 한 대학생입니다.
    저 기구부를 구매 하셨을 때 모터를 기본 스팩
    (토크:2kgf cm에 회전수 107RPM )으로 구매 하셨는지 알고 싶고 또 충분히 기구부를 구동 하는데 큰 무리가 없는지 알고 싶습니다.

    • PinkWink 2010/08/30 15:58

      12V에서 24V로 올리고, 엔코더가 내장되어있는 모델로 바꾸었습니다. 디마이스마트에서 말이죠^^

  • theshy 2010/09/02 20:17

    안녕하세요~전에 한번 질문했던 학부생입니다..^^;;
    저희도 같은 바디를 디바이스마트에서 구입해서 하고 있는데요
    윗글 보니 모터를 바꾸셨다고 했는데 모델명좀 알려주시면 안될까요?

    • PinkWink 2010/09/03 15:55

      http://www.devicemart.co.kr/mart7/mall.php?cat=017016005&query=view&no=18356 입니다.

  • 마이크로 2010/11/02 17:17

    모터 타입을 12v에서 24v로 올리신 이유를 알고싶습니당~

    • PinkWink 2010/11/02 17:46

      12V짜리는 무부하 전류가 120mA에 정격전류가 470mA였습니다.
      두개를 사용할 것이니 240mA에 940mA가 되네요.
      당시 저희 판단으로는 같은 전력 개당 3.14W지만
      24V는 무부하시 60mA에 210mA의 정격전류를 가지고 있었습니다.
      두개를 사용하니까 12mA에 420mA지요.
      거기에 DSP와 JTAG, 각종 센서가 사용하는 전류를 감안했을때
      (당시에 작성된 이 글에는 배터리를 사용하지 않고 파워서플라이를 사용했는데요)
      파워서플라이 공급 전류가 한계치(3A)를 위협한다고 생각했기 때문에
      낮은 전류를 선택한것 뿐입니다.

  • eom 2011/07/30 21:49

    제 석사 논문이 마찰력 보상을 했었는데 LuGre모델을 사용하여서
    LuGre모델의 파라미터를 고정시키고 했었는데 이걸 보니 실험적으로
    파라미터들을 구할 수 있겠군요.. 많은것들을 얻어갑니다.^^

    • PinkWink 2011/07/31 14:38

      아핫.. LuGre??는 잘 모르지만,
      저야 뭐... 제가 할 수 있는 한에서 쉽게 찾고 싶었거든요^^
      이건 당시.. 대학원때 지도교수님께서 알려주신 방법이랍니다.^^

  • ksp 2011/10/26 03:03

    아직 보실까 모르겠지만.. 의문점이 있어서요
    계산값 보면 베타값이 2.3xxx정도 될텐데 시상수는 대충 0.04~0.05s 정도로 보이구요
    그럼 시상수 = 이너샤/베타 이니까 이너샤는 0.1xxx 정도 나오는것 아닌가요? 실제 측정치랑 차이가 너무 많이나는데...
    저도 비슷한 모터로 테스트중인데 왜 이런지 아무리 생각해도 모르겠어요

    • PinkWink 2011/10/26 16:17

      네 맞습니다. 당시 저도 그부분을 고민을 하긴 했습니다.
      당시의 유추로는 정상상태의 속도치가 과연 정확한 것인가에 의문을 가지고 있었습니다. 왜냐면, 모터자체의 마찰과 기어의 마찰을 모두 가지고 있기 때문이었습니다. 기어를 제거할 수 없었거든요.
      그래서, 기어까지 없는 것과 비교하여 정상상태의 속도 그리고, 정상상태까지 도달 시간에 오차가 생기지 않았을까 생각했었습니다.
      그래서 가급적 시정수가 들어가는 수식은 건드리지 않고, 정상상태의 경우만 따지긴했었습니다만,
      이 부분에서는 1년밖에 되지 않았지만, 살짝 정확하다고 말씀드리기는 어렵네요...ㅠㅠ

  • jang 2012/03/25 22:52

    저에게 신세계를 보여주시는군요;; 이블로그를 알게된건 행운인듯 합니다.
    자주 찾아오게 될것 같아요

    • PinkWink 2012/03/26 12:31

      네.. 좋은 도움이 되었다면 다행입니다.^^

  • riskey 2012/07/23 16:15

    여쭈어 볼 것이있습니다 ㅎㅎ
    모터 마찰계수를 찾기! 그래프를 저도 그려보고 싶은데, 어떻게 하셨는지 여쭙니다.
    실제 모터에 마이크로프로세서를 달아서 전압인가 후 엔코더 펄스값을 가져와서 그래프를 그리는 것인지도
    함께 여쭙니다. ㅎㅎ

    • PinkWink 2012/07/24 10:12

      네.. 엔코더를 장착하고, MCU에서 데이터를 수집해서 시리얼통신으로 PC에 보낸걸 MATLAB에서 분석한 것입니다.

  • 떠돌이 2012/09/11 11:16

    핑크윙크님 여쭈어볼게 있는데요,,
    모터를 12V 짜리에서 24V 짜리로 바꾸셧다고 했는데
    디바이스마트에서 찾아보니 24V짜리 모터의 타입이
    9,12,22 TYPE 이 있더군요 (RB-35GM+Encoder 로요)
    이중 어느타입으로 하셨고, 또 감속비는 어떤거루 하셧는지
    알려주시면 감사하겠습니다.

    • PinkWink 2012/09/12 09:03

      오래전이라 기억이 정확하진 않은데..
      당시 모터는 디바이스마트가 아니라 제조사? 아니면 한국 판매사?에 직접 연락해서 구매했던걸로 기억납니다.

  • powerred 2013/12/18 23:15

    안녕하세요. 핑크윙크님

    부산대학교 석사과정 학생입니다...

    여쭈어볼게 있습니다. 위에 동일한 모터를 가지고 수학적 모델링을 하려고 하는데요.

    모터에 90g r=0.45 휠을 장착했습니다.

    모터 댕핑, 인덕턴, 모터 관성 모멘트를 어떻게 알 수 있을까요?ㅠ

    정확한 수치는 아니더라도 알 수 있는 방법이 없을까요?

    • PinkWink 2013/12/19 08:23

      위 본문의 내용이 그걸 알려주고 있습니다만^^

  • powerred 2013/12/19 10:19

    정확히 이해가 가질 않습니다..ㅠㅠ

    인덕턴스 값은 어느 부분에서 알 수 있죠?

    모터 댐핑 계수 는 베타를 말하시는건가요?

    모터 관성 모멘트는 Jw를 말씀하시는건가요?

    • PinkWink 2013/12/19 11:42

      그렇군요. 원하는 팩터들을 확인하긴 힘들수도 있겠군요.
      본문의 글에서는
      L은 작다고 보고 무시했으며,
      모터의 마찰과 모터의 관성모멘트는 어차피
      바퀴를 포함한 전체 마찰과 전체 관성모멘트에 흡수될 것이므로 따로 구하지 않고 전체를 구했다는 내용입니다.
      관성모멘트야 워낙 모터 축과 로봇 전체를 보면 모터의 것은 작기때문에 무시되어도 상관없을겁니다만...