본문으로 바로가기

요즘은 뭔가 정체성에 대해 고민한답니다.ㅠㅠ. 이제 6월이 되면 18개월이 되는 우리 아가 미바뤼를 보면서 에휴~~~ TV의 육아 프로그램에 나오는 그런것들 다 해줄 수 없어서 한숨도 나오고... 또 맞벌이 하는 와이푸님이 가끔 육아와 함께 힘들다고 하면 또~~ 월급 명세서를 보면서 내가 좀 더 잘 할 수 없을까.. 한숨 쉬기도 합니다...ㅠㅠ. 그러다가 또 저녁이 있는 삶을 꿈꾸는 뭔가 이상한 앞뒤가 안 맞는 이런 상황이라.... 아무튼... 뭔가 살짝... 꿀꿀해지는 2015년 5월의 막바지.. 인가 봅니다. 뭐.. 그러거나 말거나^^ 오늘은 전통적인... 교과서적인... 모터제어에서 이전에 설명한

[The Robot/ControlTheory] - [DC 모터 제어] DC 모터 동역학 및 전류제어기의 MATLAB을 이용한 시뮬레이션

DC 모터의 동역학과 그것을 대상으로 전류 제어기를 설계하고.. 다시 이를 MATLAB / Simulink로 확인하는 일을 했구요... 이를 바탕으로

[The Robot/ControlTheory] - [DC 모터 제어] 모터의 속도 제어기 설계 및 MATLAB 시뮬레이션

에서 속도 제어기를 시뮬레이션을 해보았었네요... 이제~~~ 오늘은 위치제어기를 설계할려고 합니다.^^

위치 제어기까지 설계된 전체 모습입니다. 다시 한 번 차근차근 보면

모터의 특방을 시뮬레이션한 모터 블럭이구요...

안티 와인드업 제어기까지 들어간 전류 제어기입니다.

그리고 속도 제어기 이구요^^

마지막으로 위치제어기 입니다. 통상 ADC를 통해 얻는 전류 측정치나... 또 통상 위치를 측정하는 엔코더를 차분해서 얻는 속도는 노이즈성 성분이 엄~청 많기 때문에 미분(D)기 없이 PI 제어기만 설계를 합니다만.. 위치 제어기는 위에서 보이듯이 PID 제어기를 모두 사용합니다... 그리고~~~ 안티와인드업 제어기도 넣어 두었네요^^

위치 명령을 Sine파로 넣고 각 상태를 비교하기 위해 scope를 별도로 연결했습니다.

진폭 10도에 1Hz진동을 명령으로 인가했네요....^^

위에 명령에 대해 이수한 모습입니다. 시뮬레이션 구조를 잡은거니... 게인을 열심히 튜닝하지 않아서(비겁한 변명^^) 약간 못 따라 가네요^^ 뭐 그래도 나쁘지 않습니다. 왜냐면 모터의 부하 이너셔를 좀 비정상적으로 크게 했거든요^^

그리고 속도 명령과 그 수행 정도입니다. 뭐 역시 나쁘지 않습니다.^^

또한 전류의 결과이구요^^. 이제 이 정도면 모터의 시뮬레이션은 어느 정도 해볼 수 있겠네요^^아~~~ 이 파일은 GitHUB에 올려두었습니다.[바로가기]


댓글을 달아 주세요

  1. BlogIcon 핑구야 날자 2015.05.29 08:28 신고

    오늘은 아침부터 덥네요~~ 잘 보고 가요

  2. BlogIcon 여행쟁이 김군 2015.05.30 00:27 신고

    :D 어려워 보이지만~ 잘 보고 갑니당^^

  3. BlogIcon 악랄가츠 2015.05.31 22:22 신고

    열심히 일하는 엄마, 아빠님이 있기에
    미바뤼도 다 이해할 거예요! 아자 아자 파이팅!

  4. 공돌입니다. 2015.08.06 01:00

    올리신 정보에 항상 많을 것들을 배우고 갑니다 ㅎㅎ
    쿼드콥터 했을때도 많은 도움이 되었습니다.

  5. BlogIcon 조정태 2015.11.29 15:06

    DC모터 토크에 관련된 시뮬링크는 있으신가요? 아니면 현재 나와있는 시뮬링크로 토크도 구할수있나요?

    • BlogIcon PinkWink 2015.11.30 09:43 신고

      글 초반에 있는 전류제어기의 링크로 가시면 설명이 되어있지만... 이 상태에서 모터의 토크를 측정할 수 있습니다.

  6. 울랄라 2016.05.03 14:44

    안녕하세요...여기서 꽤 오랫동안 눈팅하면서...많이 배웠는데요...정말 감사합니다^^

    다름이 아니라, 위의 파일을 GitHUB 에 올려 놓으셨다고 해서 받았는데요.

    파일 받고 바로 실행을 하니 오류가 뜨던데, 다른 설정을 해야 하는건가요??
    Undefined function or variable 'curKa'.
    Undefined function or variable 'motJ'.
    Undefined function or variable 'posKa'.
    Undefined function or variable 'velKa'.

    • BlogIcon PinkWink 2016.05.03 19:12 신고

      제가 글을 쓰는 습관때문에 발생한 일입니다.ㅠㅠ
      글 초반에 전류제어기이야기를 했다는 링크를 걸었는데요

      http://pinkwink.kr/732

      이 글을 가보시면 해당 변수에 대한 정의를 내려두고 있습니다.

      혹은 git에 있는 m-file을 실행하시면 됩니다.

  7. 핑그구독자 2017.07.27 22:11

    안녕하십니까~? 올리셨던 글들 잘읽고 있습니다.
    궁금증이 생겨서 댓글 달아봅니다.
    스코프의 값들이 계속 진동하면 무엇이 문제일까요? 게인이 문제일까요? 아니면 시스템이 불안정한걸까요?
    예를들어, 목표지점이 0인데 +10-10 이런식으로 반복하는 것을 말하는 것입니다
    상태가 안정한건지도 의문이 드네여

    • BlogIcon PinkWink 2017.07.28 04:55 신고

      DC 모터의 선형화된 방정식을 시뮬레이션했는데 오실레이션이 나타난다면, 어디선가 문제가 있을 겁니다. 부호, 각 계수 등을 확인해 보셔야할 듯 합니다. 그러나 모두 정확해도 그냥 공진이 일어날 수도 있습니다.

  8. geon 2020.01.02 20:54

    안녕하세요? 기어드 DC 모터 PID 위치 제어에 관심이 있는 학생입니다. 궁금한게 있는데요.
    기어드 DC모터가 PWM 주기의 10% 정도를 넘지 않으면 안움직이는 현상이 있더군요.(물론 주기에 따라 다르긴 했지만요) 전문적인 용어로는 데드존이라고 하던데요. 모터 위치를 제어할 때 이 데드존을 오프셋으로 미리 줘서 제어하는 것이 낫나요? 아니면 그냥 이 데드존을 무시하고 PID제어를 하는게 낫나요? 또 한가지 방책으로는 PWM 주기를 조작해서 1의 듀티사이클만 발생해도 움직이도록 주기를 조작하는 방법도 생각해 봤는데 이건 어떤지 궁금합니다.(주기가 낮을수록 낮은 듀티 사이클에도 모터가 움직이더라구요.) 더 나아가서 DC모터의 PWM 주기는 어떻게 설정하는 게 나은지도 궁금해지네요.
    질문이 많지만 답변해주시면 감사하겠습니다.
    참고로 제가 쓴 모터는 http://www.devicemart.co.kr/goods/view?no=1329606 200RPM 모터 였습니다.

    참고로 모터에 로드가 없을 때에는 10%의 듀티사이클을 주고 PID를 적용하면 잘 됐는데, 로드가 발생하니까 문제가 많이 발생하더군요. 작은 외란에도 목표 위치에 도달하지 못해서 P게인을 높였더니 목표 위치에서는 자꾸 진동하고 그러더라구요.. 그래서 PID 튜닝이 참 어렵구나를 느꼈고, 어떻게 상용 서보모터들(sg90 같은)은 로드가 뭔지도 모르는데 그렇게 위치를 잘 제어하는지 궁금해 지기도 했습니다. 그런 서보모터도 단순 PID 제어를 쓸까요? 그런데도 그렇게 제어가 되는 것 처럼 보여서 괜히 위축도 되더군요..

    • BlogIcon PinkWink 2020.01.06 01:05 신고

      네 데드존으로 처리할 것인지 아닌지는 현장 엔지니어가 판단해야하지만, 말씀하신 정도의 모터는 데드존이 딱 떨어지지 않아서 채터링 현상도 있을 겁니다. 피드포워드 게인을 조금 잘 잡으면 해소될때도 많더군요.^^
      PWM 주기가 너무 낮아도 모터 구동에 문제가 있을 겁니다.
      그리고 페이로드에 따라 게인을 튜닝하는 것은 자주 있는 일입니다. 그래서 오토튜닝 기능에 관심을 가지는 분들도 많구요^^

    • geon 2020.01.08 14:03

      답변 감사합니다. PWM 주기가 반대로 너무 높아도 문제가 발생하나요? 그리고 말씀하신 정도의 모터라고 말씀하셨는데 Maxon 모터 정도 하이엔드 급이면 데드존이 딱 정확히 떨어지나요?

    • BlogIcon PinkWink 2020.01.08 15:55 신고

      상황을 파악해야하지만, 흔히 좋은 모터와 기어라고 하면 그런 부분이 작아지긴 합니다. 그러나 아예 없을 수는 없습니다. 참고 쓸건가, 극복할 방법을 찾을건가 등의 문제겠죠.^^

    • geon 2020.01.08 18:45

      질문이 많아서 죄송한데, 혹시 데드존을 보통 어떻게 처리하는지 궁금합니다.. 여기에 대한 좋은 자료라도 있을까요?

    • BlogIcon PinkWink 2020.01.18 23:22 신고

      케이스바이케이스로 적용했었는데, 보통 극복하는 방법은 잘 모르겠네요