검색결과 리스트
글
블로그를 통해 몇 번 밝혔지만, 저의 전공이 제어(control)입니다. 그래서 비록 작은 수의 글이지만 제어와 관련된 포스팅도 했었고, 연재도 수행했었는데요. 그런데 창피하게도 한 번도 모터 제어 자체를 수행했던 경험이 없습니다. 왜그랬을까요?^^ 아마 이때까지의 불안정한(unstable) 시스템의 로봇
[프로젝트/Robot] - Cart type Inverted Pendulum (카트형 역진자) 시스템
[프로젝트/Robot] - Rotary type Inverted Pendulum (로터리 역진자) 시스템
[프로젝트/Robot] - [밸런싱 로봇 만들기] 작은 로봇을 하나 완성해서 큰 기쁨을 얻다
들을 다루면서 저는 항상 구동체(모터)의 동역학적 특성을 시스템 전체 동역학에 대입하여 사용했기 때문입니다.
그래서 이번에는 DC 모터의 서보제어(servo control) 중에서 모션제어(motion control)라고 불리는, 위치제어를 수행했습니다.
아.. 그전에 간단히 용어를 정의하고 가볼까요. 서보제어라고 하는 말은 너무 광범위합니다. 위키백과사전의 정의를 빌려오자면
"서보메카니즘이라는 것은 위치, 속도, 혹은 어떤 파라미터의 상태를 제어하기 위해 해당 상태를 센싱하여 에러를 보정하는 기술"
이라고 합니다. 그러나 대부분의 모터 드라이버를 판매하는 회사들의 카달로그를 검색해보면, 서보제어를 위치제어와 거의 동일한 개념으로 많이 사용한다는 것을 알 수 있습니다. 속도제어기만 탑재된 경우에 서보... 라는 이름을 잘 붙이지 않더군요.
그런데도 불구하고, 아직 용어의 개념이 너무 넓고, 또 아직 제가 정확히 결론을 내리기가 좀 그래서, 특별히 모션제어라고 해 두겠습니다. 모션제어의 위키백과의 정의를 보면
"모션제어는 서보제어의 한 부분으로 위치와 속도를 제어하는 기술로 통상 특정 프로파일(삼각, 사다리꼴, 혹은 S-곡선)을 추정하도록 하는 제어기술"
이라고 합니다.
뭐, 결론은 저는 그냥 DC모터의 위치제어를 하고 싶었다는 이야기입니다.^^
항상 제가 하는 일들이 그렇지만, 먼저 동역학을 유도했습니다. 물론 동역학이 너무 간단하긴 하지만, 유도했고, 그로부터 제어기를 설계했습니다. 펌웨어부분과 실질적 테스트는 저희 팀 연구원이 수행했지요^^
일단 대상 모터는
위의 6W급 14:1의 기어를 장착한 소형모터입니다. [판매페이지] 이 모터만 가지고 그냥 놀면 재미없으니까 무게 150g의 막대를
위와 같이 장착해서 테스트를 했습니다.
따라가고자 한 위치 프로파일은
입니다. 물론 딱 저건 아니구요. 실제로 사용할때는 저걸 좀 가공했습니다. 하여간 저와 같은 S-곡선이라는 것이죠. 처음 시작할 때와 도착할때는 저속으로 움직이고, 시작하고서 점점 빨리 움직이다가 도착지점에서는 감속하라는 거죠. 그리고, 위 위치프로파일을 그대로 미분해서 속도프로파일로 사용합니다. 속도프로파일은
입니다. 위 두 형태를 모터의 각각 위치지령과 속도지령으로 사용하는거죠^^ 제어기는
[공학기초/Theory] - 서보제어 Servo Control
에서 이야기한 것을 설계요소만 변경해서 사용했구요. 최종적으로는 PID 제어기입니다. 결과 확인은 동영상으로^^
일단 초반에는 위치지령을 계속 반복해서 몇 회 수행합니다. 그리고 후반부에는 '0'상태를 유지하도록 지령을 내리고 강제로
외란을 가하는 거죠. 이 때, 모터자체가 좀 힘이 낮은 아이이니 따라 오는것은 어쩔 수 없구요.
그러나 손을 놓으면 잽싸게 다시 원상복귀를 하는거죠^^
위 그래프가 한 바퀴를 돌때의 결과입니다. x축은 단위가 100ms이구요. y축은 시작지점부터 끝지점까지가 한 바퀴(360도)입니다. 파란선은 위치지령이고, 빨간선은 그것을 따라가고 있는 실제 데이터죠. 응답속도는 최대 2state정도안에서 수행하고 있습니다. 아 1state가 10ms입니다. 현재는 sample time을 10ms로 세팅한거거등요^^ 그리고 최종단에서의 각도오차는 대략 0.1도와 0.07도 사이입니다. 뭐 이거야 기어비와 각도를 측정하는 엔코더 레졸루션에 달린 문제지만 말이죠....^^
항상 저가형 모터들이 그렇지만, 역학모델을 구축하기에는 비싼 Maxon 모터처럼 파라미터를 다 주는게 아니거든요. ㅠㅠ. 그래서 저희가 직접 다이나모같은 기구없이 모터 ID(Identification)를 수행해서 파라미터를 잡고, 역학적 모델을 수립하고, 이쁜 제어기를 설계하고 실제 테스트된 결과입니다. 괜찮은 성능이네요^^ 이제 다음은 위치제어기 설계가 꼭 필요한 로봇에 적용을 해봐야겠어요. 그리고 그 다음은 BLDC 모터에 또 적용해야죠.^^
에구... 7월말에는 휴가래요... ㅎㅎㅎ
그전에는... 어떻게든 이쁘게 걸을 수 있으야할 텐데 말이죠.....^^
[프로젝트/Robot] - Cart type Inverted Pendulum (카트형 역진자) 시스템
[프로젝트/Robot] - Rotary type Inverted Pendulum (로터리 역진자) 시스템
[프로젝트/Robot] - [밸런싱 로봇 만들기] 작은 로봇을 하나 완성해서 큰 기쁨을 얻다
들을 다루면서 저는 항상 구동체(모터)의 동역학적 특성을 시스템 전체 동역학에 대입하여 사용했기 때문입니다.
그래서 이번에는 DC 모터의 서보제어(servo control) 중에서 모션제어(motion control)라고 불리는, 위치제어를 수행했습니다.
아.. 그전에 간단히 용어를 정의하고 가볼까요. 서보제어라고 하는 말은 너무 광범위합니다. 위키백과사전의 정의를 빌려오자면
"서보메카니즘이라는 것은 위치, 속도, 혹은 어떤 파라미터의 상태를 제어하기 위해 해당 상태를 센싱하여 에러를 보정하는 기술"
이라고 합니다. 그러나 대부분의 모터 드라이버를 판매하는 회사들의 카달로그를 검색해보면, 서보제어를 위치제어와 거의 동일한 개념으로 많이 사용한다는 것을 알 수 있습니다. 속도제어기만 탑재된 경우에 서보... 라는 이름을 잘 붙이지 않더군요.
그런데도 불구하고, 아직 용어의 개념이 너무 넓고, 또 아직 제가 정확히 결론을 내리기가 좀 그래서, 특별히 모션제어라고 해 두겠습니다. 모션제어의 위키백과의 정의를 보면
"모션제어는 서보제어의 한 부분으로 위치와 속도를 제어하는 기술로 통상 특정 프로파일(삼각, 사다리꼴, 혹은 S-곡선)을 추정하도록 하는 제어기술"
이라고 합니다.
뭐, 결론은 저는 그냥 DC모터의 위치제어를 하고 싶었다는 이야기입니다.^^
항상 제가 하는 일들이 그렇지만, 먼저 동역학을 유도했습니다. 물론 동역학이 너무 간단하긴 하지만, 유도했고, 그로부터 제어기를 설계했습니다. 펌웨어부분과 실질적 테스트는 저희 팀 연구원이 수행했지요^^
일단 대상 모터는
위의 6W급 14:1의 기어를 장착한 소형모터입니다. [판매페이지] 이 모터만 가지고 그냥 놀면 재미없으니까 무게 150g의 막대를
위와 같이 장착해서 테스트를 했습니다.
따라가고자 한 위치 프로파일은
입니다. 물론 딱 저건 아니구요. 실제로 사용할때는 저걸 좀 가공했습니다. 하여간 저와 같은 S-곡선이라는 것이죠. 처음 시작할 때와 도착할때는 저속으로 움직이고, 시작하고서 점점 빨리 움직이다가 도착지점에서는 감속하라는 거죠. 그리고, 위 위치프로파일을 그대로 미분해서 속도프로파일로 사용합니다. 속도프로파일은
입니다. 위 두 형태를 모터의 각각 위치지령과 속도지령으로 사용하는거죠^^ 제어기는
[공학기초/Theory] - 서보제어 Servo Control
에서 이야기한 것을 설계요소만 변경해서 사용했구요. 최종적으로는 PID 제어기입니다. 결과 확인은 동영상으로^^
일단 초반에는 위치지령을 계속 반복해서 몇 회 수행합니다. 그리고 후반부에는 '0'상태를 유지하도록 지령을 내리고 강제로
외란을 가하는 거죠. 이 때, 모터자체가 좀 힘이 낮은 아이이니 따라 오는것은 어쩔 수 없구요.
그러나 손을 놓으면 잽싸게 다시 원상복귀를 하는거죠^^
위 그래프가 한 바퀴를 돌때의 결과입니다. x축은 단위가 100ms이구요. y축은 시작지점부터 끝지점까지가 한 바퀴(360도)입니다. 파란선은 위치지령이고, 빨간선은 그것을 따라가고 있는 실제 데이터죠. 응답속도는 최대 2state정도안에서 수행하고 있습니다. 아 1state가 10ms입니다. 현재는 sample time을 10ms로 세팅한거거등요^^ 그리고 최종단에서의 각도오차는 대략 0.1도와 0.07도 사이입니다. 뭐 이거야 기어비와 각도를 측정하는 엔코더 레졸루션에 달린 문제지만 말이죠....^^
항상 저가형 모터들이 그렇지만, 역학모델을 구축하기에는 비싼 Maxon 모터처럼 파라미터를 다 주는게 아니거든요. ㅠㅠ. 그래서 저희가 직접 다이나모같은 기구없이 모터 ID(Identification)를 수행해서 파라미터를 잡고, 역학적 모델을 수립하고, 이쁜 제어기를 설계하고 실제 테스트된 결과입니다. 괜찮은 성능이네요^^ 이제 다음은 위치제어기 설계가 꼭 필요한 로봇에 적용을 해봐야겠어요. 그리고 그 다음은 BLDC 모터에 또 적용해야죠.^^
에구... 7월말에는 휴가래요... ㅎㅎㅎ
그전에는... 어떻게든 이쁘게 걸을 수 있으야할 텐데 말이죠.....^^
Not fearng change is another expression of youth
dreaming independence and soaring high.
dreaming independence and soaring high.
'The Robot > HardwarePart' 카테고리의 다른 글
LinuxCNC/EMC2를 이용하여 스태핑모터 돌리기 설정^^ (20) | 2012/09/05 |
---|---|
로봇 제작시 도움을 주는 도구 - 팝(pop) 너트, 블라인드(blind) 너트 (28) | 2012/05/14 |
주행로봇의 무선 조종기 및 구동 컨트롤러 (16) | 2012/04/19 |
DC 모터의 모션(서보)제어 (Servo Control - Motion Control) (60) | 2011/07/06 |
기울어진 각도 측정. 자이로 센서와 가속도 센서 (NT-ARSv1, ARS) (92) | 2011/04/21 |
드디어 공들인 제품이 나옵니다. G.INS - ARS (관성항법장치) (58) | 2011/04/08 |
1차 상보필터(complementary filter)의 한계 (6) | 2010/12/13 |
자이로센서와 가속도센서를 이용한 각도추정 1차필터 (52) | 2010/07/03 |
옴냐...
하나도 모르겠습니다. ㅎㅎㅎ
아무래도... 공돌이에 100% 맞춰진 글이다 보니 말이죠^^
좋은 하루 보내세요^^
오랜만에 강의를 하시네요,,ㅋㅋ 모터로 예전에 장난감에 많이 연결했었는데..ㅋㅋ
사실.. 요런거 없이.. 그냥 막 돌려도.. 잘 되는 경우도 많긴 하죠.. ㅎㅎ 이것도 일종의 습관일까요^^
좋은 하루 보내세요^^
ㅎㅎ 오랫만입니다. 멍 ~ 하니 핑크윙크님의 말씀 알아듣는척 하는거. ㅋㅋ
(동영상을 보면서도..저 속에 뭔가 결론?이 보인다는거지? 했다니까요 ^^;)
제가 못 뵌 동안에 더욱더 높은 세계로 접어드셨군요 ~
아니에요.. 아는분들이 보면.. 뭐.. 그냥 기초입니다.ㅠㅠ
단지.. 학교때는 공부하는 내용을...
지금은 일종의 제가 맡고 있는 연구소의 홍보성도 좀 있고..
뭐 그런거에요.. ㅎㅎㅎㅎ^^
어떤 내용인지 몰라도... 국가발전과 개인의 앞날에 좋은 개발인 것은 확실하다고 생각합니다.^^
좋은 하루되세요.
ㅎㅎ.. 장마가 다시 시작되려나봐요.. .비가 조금씩 많이 오기 시작하네요... ^^
고가 서보라서 위치 정보가 별도로 주어지는 건가요?
음.. 어떻게 보면 서보모터는 절대좌표식으로 입력을 하는거니까..
위치가 틀어져도 주기적으로 위치신호를 전달해주면 원위치로 오는걸려나요?
뭐.. 그냥.. 엔코더로 위치는 피드백받아요.. ㅎㅎ
현재 위치 목표값 대비 에러을 샘플링 타임에 한번씩 체크해서 수정하는거죠^^
헤에...전에 쓰시던 오토니스는 버리셨나요?ㅋㅋ
그럴리가요.. 예전에 쓰던 오토닉스 엔코더는 제가 학교에 있을때 쓰던거구요. 지금은 회사에 입사했으니 회사에서 쓰고 있는 제품이 보이는 겁니다.
안녕하세요 ^^ 잘 보았습니다.
제가 로봇 팔 관련 DC모터로 서보 제어를 하려고 하고 있습니다.
제어기 설계시에 각 게인들을 저는 모델링을 잘 못하는지라 대부분 노가다로 하고있어요;;;실력이 부족해서 ㅠ ㅎ
모터 ID를 가지고 파라미터를 잡으셨다고 하셨는데 이게 무슨뜻인가요??;;
그리고 역학적 모델이란거 저는 제어 관련 공부를 하고 있어서 모델링 이란게 하고싶지만 전혀 어떻게 하는줄을 몰라서요;;;
일반적으로 모델링 된거를 가지고 제어기를 설계하고 공부하는 단계에 있어서;;저는 ㅠ
여러가지로 많이 알고 싶은데 글로 적기엔 너무 많은거 같네요 ㅎ ㅠㅠ 어떤 팁을 좀 부탁 드립니다 ㅠ
가령 부하가 얼마 더 걸리면 파라미터가 더 바뀌어야 하는데 자동 동조 시키는 방법이라든지요 ㅠㅠ
수고하세용
본문에 걸려있는 링크중에 밸런싱로봇 연재가 있습니다. 그 중에 제가 모터를 ID (Identification)를 하는 과정을 언급한 부분이 있습니다. 저도 동역학을 애초 공부할려고했던것은 아닙니다. 그저 제어기를 꾸미고 싶었을 뿐이었죠... 그러다보니 동역학을 자연스럽게 공부할 수 밖에 없었습니다. 제 생각에 제어라는 글자가 들어간 학과에서는 동역학을 필수과목으로 봐야할것 같아요^^
그리고, 부하에 따른 파라미터 변동에 일정한 공식같은것이 있는지는 저도 잘 모른답니다. 전 그저...LQR을 사용했을뿐이에요.
혹시.. 모터의 제어만 관심이 있으시다면, 저는 적용하지 않았지만, 설승기님의 전기기기제어론이나, 김상훈님의 DC,AC,BLDC 모터제어라는 책을 보시는 것도 괜찮을겁니다.
안녕하세요. ^^ pinkwink님의 글을 항상 애용하는 학생입니다. 저도 제어와 밸런싱 로봇분야에 관심이 있어서.. 항상 PinkWink님의 블로그를 참조하는데.. 이번에 모터를 모델링 하는 부분에 있어서 막혀서 질문을 드릴려고 합니다. ㅠ 사용 모터는 여기 서보제어에 사용된 동일한 모터이구요.. 다른 글들을 참고하여 모터를 모델링하려는데 제실력으로 모터상수들을 구하는게 좀 어려워서 도움을 요청하려 합니다;; 혹시 PinkWink님이 ID하셔서 구한 토크상수와 역기전력 상수.. 파라메터등을 알려주실수 있을까요?? ㅠ http://www.pinkwink.kr/336 이 글을 보면서 방법을 찾고는 있는데.. 잘안되네요 ㅠ
네... 그러나... 해답을 드리는 것은 저도 좀 어렵습니다.
이것을 같이 수행한 저희 연구원에게 그 이유를 설명해야하는 것도 힘들거든요...ㅠㅠ
모터 아이디에 관한 방법을 이야기한 저의 글 내용을 따라가시면 도움이 될 것 같습니다..
물론 그런 것을 따라 간다는 것도 어려울 수도(제가 설명을 잘 하지 못해서...ㅠㅠ)있지만, 그래도... 공부라고 생각하시고, 익히시면 도움이 될거라 생각됩니다.
아...넵ㅎㅎ 그렇군요.. 그래도 답변감사드립니다ㅎㅎ. 다시 한번 시도해봐야겠네요 ㅋ. 제가 맘이 너무 급했나봅니다. ㅋ. 혹시 코일 저항은 단순히 모터를 테스터기로 찍은 저항값이라고 생각해도 될까요?? ㅎ.. 질문드리고 싶은게 너무 많은데. ㅠ 이런 질문들은 어디에 댓글로 달면 좋을까요?. 아 그리고.. 항상 블로그 잘 보고있고 ㅎㅎ 좋은 블로그 감사드립니다~
네... 모터를 조금씩 돌려보면... 약간씩 값이 변동하긴 하지만
모터 양단의 저항을 찍어보면 된답니다.^^
안녕하세요. ㅋ 늦었지만 추석 잘 보내셨길 바랍니다. ㅎㅎ. PinkWink님 또 질문이 있는데요..ㅎㅎ http://www.pinkwink.kr/357 글의 맨 마지막 댓글을 보면 RPM으로 대략적 토크를 확인하셨다고.. 하신거 같은데.. ㅎ 그건 어떤 방법인가요?? 모터를 ID 한다는게 상당히 쉬운게 아니네요. ㅠㅠ. 혹시 어떠한 정량의 무게를 모터에 부착하여 무게에 따른 가속도를 보는건가요?? ㅎ. 시간이 지나면 무게가 무겁더라도 관성에 의해 RPM은 일정 대역으로 나올꺼라 예상이 되서요..아닌가??.. 실험 해봐야 겠네요. ㅋㅋㅋ. 브스즈스크는...그냥 발음이 이상해서 쓰고있어요 ㅋㅋㅋ.
데이터시트와 맞지 않는 싸구려 모터는 아니라는 가정하에...^^
무부하 상태에서... RPM대 토크 곡선이 보통 주어집니다.
그걸 가지고 확인을 했다는 뭐 그런 말입니다.^^
뭐 큰 의미를 가지는 건 아니었습니다.^^
제품으로 나오나요? 360도 700도 1000도.. 이런식으로 이동 가능하게 만들어진 제품이 없을가요? move 1000 머 이런식으로 명령주면 2바퀴 돌고 나머지만큼 또 돌고.. move -1000 이러면 반대로 다시 오는등.. 이런걸로요.
그럴 계획입니다. 좀 더 다양한 모터에 성능을 테스트하고,
사용자와의 통신방법과 프로토콜을 설계중입니다.
그러나... 제품으로 빨리 나올것 같진 않습니다.ㅠㅠ
다른 일들이 많아서요^^
감사합니다.. 기대할께요.
네,,, 저희도.. 열심히 만들려구요^^
모터 링크가 지금은 홈피 새단장으로 인해서 연계가 안되는데
모터 이름이 뭔가요??
http://devicemart.co.kr/goods/view.php?seq=30356 입니다.
안녕하세요 와 잘 봤습니다. 혹시 RC서보에 대해 여쭤봐도 될까요? 서보가 한쪽이 움직일때 신호선을 연장해서 다른또 하나의 서보에 연결을 한다면 동시에 같은 각도로 움직이지 않습니까? 이것을 한쪽이 다른 한쪽에 대해 일정 비율로 움직이게 하는 방법은 없을까요? 회로를 만들려면 복잡해질까요? 정말 궁금합니다!^^
글쎄요. 저라면 MCU를 그냥 이용하면 편할텐데 말이죠. 딱히 회로로는 안해봐서요. 특히 RC 서보라면 특정 Duty Ratio로 움직이도록 되어있으니. 생각보다는 회로로 구현하신다면 좀 어려울듯하기도 하구요. 전 그쪽은 그리 많은걸 알고 있지 않아서요.
안녕하세요. 이번에 모터 위치제어를 실험해보고 있는 학생입니다.
정말 좋은 자료들 보면서 매번 감탄사가 나온답니다 ㅎㅎ 정말 감사합니다.
근데 혹시 위의 desired position 그래프가 어떤 식인지 알고 싶은데 혹시 가르쳐 주실수 있으신가요?ㅠ
위에 있는 형태를 사용했습니다만, 실제는 수식을 사용한 것이 아니라, 배열로 미리 저장해서 사용했습니다. 그래서 그냥 저런 형태라는 것이지요^^
계속 여쭤봐서 죄송합니다.ㅠㅠ
3번째 그림처럼 미리 경로를 만들어 주고 (trajectory) 현재 위치를 받아서 (current position)
두 값의 차이(error)를 이용해 LabVIEW로 PID제어하려고 하는데...
배열로 미리 저장했다면 각 샘플링 값 마다의 에러로 제어했다는 말씀이신가요?
그리고 3번째 그림은 울프람 알파에서 식 입력했을 때 나오는 그래프 플랫폼 같은데...
식을 알아야 그래프를 얻을 수 있잖아요.. 3번째 그래프에 관한 식을 알 수 없을까요?
네 레퍼런스 위치에 대한 에러를 잡는겁니다.
수식은 arc tan입니다.
안녕하세요. ^^
저도 위치제어를 하려고 하는데, 잘 안되서 이렇게 블로그를 보며 공부하고 있습니다.
궁금한게, 프로파일을 어떻게 적용하게 되는거죠?
프로파일이, -2~2까지 -1~1로 되어있는데...
input에 저 형태의 필터를 씌워서 제어기 입력으로 들어가는건가요?
그리고 저의 시스템상 통신으로 데이터를 받고 있는 상황이라, 10ms로 encoder 입력을 받고 있어서, 이러한 경우 제어가 가능할까요? BLDC모터인데, 제어 응답은 150ms 내에 원하는 포지션에 도달해야하는데...
마지막으로 하나만 더 여쭤봐도 될지..^^;;
포지션에 따라 로드가 다른데, 히스테리 시스도 크구요. 그냥 PID 제어만으로도 가능할까요?
위에 이야기한 프로파일은 기준치로 입력한것입니다.
reference값을 시간에 따라 변화시켜주는 것이지요.
모터제어는 일반적으로는 서울대 설승기교수님의 전기기기제어론이라는 책에 나타나있는 것을 많이 사용합니다. 토크제어, 속도제어, 위치제어의 순서로 흘러가는 것이지요^^
reference 값을 시간에따라 변화한다는 말이..
desired input 을 바꾼다는 말과 상통하는거 맞나요?
desired input를 시간에 따라 최종 목표치에 도달하도록... 같은 말이되는건가요?
네 그렇습니다. 일반적으로는 사다리꼴 모양을 많이들 씁니다만^^
감사합니다^^
포지션 입력은 알겠는데, 스피드 제어를 어떻게 입력으로 넣는건지... 아직 잘 모르겠네요 ^^;;
포지션 input을 스텝으로 주지 않고, 사다리꼴이나 저런 프로파일을 주는것은 안정된 제어를 위한거겠죠?
질문이 있어요 ^^; (계속 질문만 ^^;;)
저렇게 프로파일을 가지게 입력을 주는게, PID 게인 튜닝이 끝나고 하는건가요? 아니면 입력 프로파일을 가지고 PID 게인 튜닝을 하는건가요?
PID등의 제어기와 관련이 없습니다. 그 다음 단계이지요. http://pinkwink.kr/362 를 참조해주세요.
크악 어렵다ㅋ
열공해보고 문의드릴께요ㅎ
좋은일있기를 빕니다.
제가 사람팔을 따라 움직이는 로봇팔을 만들려합니다
사람팔은 로터리 엔코더로 각도를 계산하고 그값만큼 로봇팔이 움직이게 할려합니다
이게 가능한가요 만약 가능하다면 로봇팔에 어떤종류의 모터를 써야하는지 알려주세요
네 당연히 가능합니다.
모터는 작은 크기라면 RC 서보모터도 많이 사용하며
좀 크게 만드시려면 여러 고용량의 모터 (DC, BLDC, 액츄에이터 등)를 사용하게 됩니다.
로봇팔 쪽에 엔코더 모터를 달면 PID제어를 해서 더쉬울까요?
어떤 형태로든 각도를 알아야합니다. 사람이 움직인 형태와 동일하게 꾸미실려면, 역시 양쪽 기구부가 모두 각도를 알 수 있어야하고, 구동되는 암쪽은 해당 각도를 잘 따라가도록 제어기를 구성해야지요. 그 제어기가 PID든 뭐든 상관은 없습니다... 잘 동작되도록 해야죠^^
하하 감사합니다 한동안 이 얘기로 친구랑 탁상공론만 했는데
전문가입장에서도 맞다고 하시니 괜찮겠죠 ㅋ 감사합니다
맞다 안맞다의 문제라기 보다는 좀더 가능성있다의 문제로 답변을 드린 것입니다.
하여간 좋은 성과있으시길 바랍니다.
제가 이번에 볼봇이라는 로봇을 만들어 보려고 하는데요
mcu는 수업시간에 이용하는거라 atmega128을 써야할 듯 합니다.
그런데 atmega128에 타이머/카운터가 8비트 2개 16비트 2개 총 4개가 있는데요.
모터 4개를 pid제어하면서 엔코더로 값을 읽고 싶은데 그럼 총 8개의 카운터/타이머가 필요한거 맞죠?
그런데 4개 뿐인데, 어떻게 방법이 없을까요?? 아니면 mcu를 2개라도 써야할까요?
mcu 한개로 가능하다면 모터는 3개까지도 줄여볼 수 있을 것 같은데요.
답변 부탁드립니다.
글쎄요. 여러가지 방법이 있겠습니다만, 그냥 로봇을 만드는게 목적(즉 모터를 동작시키는게 목적이 아니라면)이라면 2ch채널 모터드라이버를 두 개 사용하시면 되죠^^
네... 모터 드라이버를 사용해도 PMW 파형을 MCU 핀 4곳에서 출력해줘야 하잖아요. 개별적으로 컨트롤하려면... 흠.. 그런데 그 각각의 모터의 엔코더 값을 받아야 하는데, 그럼 카운터가 또 4개가 필요한거 아닌가요?
제가 이해를 잘 못하고 있는건가요?
아마 찾아보시면 pwm으로 모터를 구동하기도 하지만, can이나 serial통신으로 구동히키는 드라이버도 있습니다. can은 멀티 통신이 가능하므로 그런 제품을 사용하셔도 괜찮을듯 한데요^^
제 mcu는 can통신이 없는것 같습니다... 다른 방법이 없을까요?
글쎄요.. 많은 방법이 있을거지만, 4개의 모터와 4개의 엔코더라면, 역시 통신을 이용해서 모터 제어와 엔코더를 받을 수 있는 드라이버를 사용하시는 방법이 제일 나을 듯 합니다. 해당 MCU로 안되면 MCU를 두개이상 사용하시는 것도 고려를 하셔야할 듯 하구요.
pinkwink님 잘보았습니다.
혹시 참고 도서를 좀 알수있을까요?
음.. 이 글을 적을때 사용한 제어기는 흔히들 모터 제어에서 많이 쓰는 방식은 아니었구, 그냥 상태궤환으로 LQR 제어기를 설계했었던 겁니다. 참고 도서는 음... 현대제어...라는 Dorf라는 분의 책이라고 해야겠네요.^^
모터의 파라미터는 어떻게 구하나요?
실험을 통해서 flexible drive position servo를 하는데
파라미터 구하는게 까다롭네요 ㅜㅜ
제 블로그 검색창에서
"파라미터 추정"
이라고 검색하시면 몇번의 관련글이 있습니다.
파라미터를 찾는 과정이 좀 노가다성이 있긴하죠^^
감사합니다. 파라미터를 구하고 시뮬레이션을 해봤는데 실험과 너무 다르게나오네요..ㅜㅜㅜㅜ
참 희한한것은 항상 처음할때는 그런 시행착오를 겪게 되던데요... ^^
저도 처음할때는 파라미터로 구한것이 참인지... 잘못한건지... 이론적으로 공부한것이 틀린건지... 심지어 MATLAB이 엉터리인건지.. 아까운 돈주고 구입한 책이 엉터리인건지. 뭐 이런 생각들을 했었지요.
그러면서 이유를 하나하나 찾아가면서 또 실력이 늘어나는 것 같았습니다.^^
역시 그런건가요..실험이 잘못된건지..모델링을 잘못한건지..코딩이 잘못된건지...뭐가 문제인지 모르겠네요.
하나하나 블로그 통해서 많이 연습해보겠습니다. 기회가 된다면 제 블로그에도 올려볼게요 :) 감사합니다.
네... 그런 과정을 같이 공유하면 또 도움받을 수 있는 기회가 많더라구요. 성공을 기원합니다.^^