인프런 커뮤니티 질문&답변

서주상님의 프로필 이미지
서주상

작성한 질문수

바닥부터 시작하는 STM32 드론 개발의 모든 것

arming 상태 모터 구동 관련

작성

·

274

0

안녕하세요 이번에 안전관련 코딩 강좌를 듣고 CCR 레지스터에 값을 달리 적용하면서 원래 쓰로틀 출력대로 구동되던 모터가 구동되지 않아 질문드립니다.  우선 고정값으로 12000을 주면 잘 작동은 합니다. 그리고 스위치 A가 내려가 있을 때 쓰로틀을 조금만 올리면 부저가 울리면서 코터가 구동하지 않는데 코드에 문제가 있는것 같지만 도무지 문제를 잡을수가 없어서 비교하기 위한 소스파일을 받을 수 있는지 알고싶습니다.

  TIM5->CCR1 = 10500 +500+ (iBus.LV - 1000)*10;

  TIM5->CCR2 = 10500 +500+ (iBus.LV - 1000)*10;

  TIM5->CCR3 = 10500 +500+ (iBus.LV - 1000)*10;

  TIM5->CCR4 = 10500 +500+ (iBus.LV - 1000)*10;

답변 6

0

ChrisP님의 프로필 이미지
ChrisP
지식공유자

Q. 다만 아직 처음 문제였던 while 문안에서 throttle 을 증가시켰을때  다른 while 문에서 갇혀있는건 해결못했습니다.

A. 이 문제는 코드를 제가 하나씩 다 봐드릴수가 없어서 직접 문제를 찾아보셔야 할 것 같네요 ㅜㅜ 우선 다른 연관없는 코드들은 다 주석으로 막고, 필요한 부분만 살려놓고 한번 확인해보세요. 그러면 어렵지 않게 찾으실 수 있을것 같습니다.

Q. 최소 throttle 값이 1030 정도 이상 되었을때 제어가 되게 해놓았는데 이상하게 책상 위에 올려놓고 쓰로틀을 조금올리면 모터 속도가 점점 빨라집니다.

A. 아마 이건 책상에 두었을때 정확히 0도가 아닐수 있기 때문에, I제어가 작동해서 그런것으로 보입니다. I게인을 0으로 해놓고 해보세요. 그렇게 했을때 증상이 사라지면, I제어가 잘 동작하고 있다고 생각하시면 될 것 같네요.

한번 확인해보세요!

0

서주상님의 프로필 이미지
서주상
질문자

이런.... 덕분에 이문제는 해결했습니다. 다만 아직 처음 문제였던 while 문안에서 throttle 을 증가시켰을때  다른 while 문에서 갇혀있는건 해결못했습니다 아 그리고 마지막 강의에서는 최소 throttle 값이 1030 정도 이상 되었을때 제어가 되게 해놓았는데 이상하게 책상 위에 올려놓고 쓰로틀을 조금올리면 모터 속도가 점점 빨라집니다. 그래서 캘리브레이션 문제 인가해서 센서 와 모터 모두 캘리브레이션 해도 증상은 똑같습니다. 요 각도를 중립으로 놓고 피치 롤 변화에 따라 모터 속도 변하는건 잘 변하고 있습니다. 염치없지만 이 부분도 조금만 봐주시길 부탁드리겠습니다 ..

0

ChrisP님의 프로필 이미지
ChrisP
지식공유자

안녕하세요! 보내주신 코드를 확인해보니, 코드상 문제가 있네요.

switch(telemetry_rx_buf[2])

{

  case 0: ...

  break;

  case 1: ...

  break;

  case 3: ...

  case 4: ...

  case 5: ...

  ...

  ...

}

메인 while 문 안에서 이 부분에 case 3부터 break; 문이 빠져있습니다.

각각의 case에 break;를 추가해보시면 잘 동작할 듯 합니다.

복붙의 폐해인 듯 하네요 ㅎㅎ

한번 해보시고 결과 알려주세요~

감사합니다.

0

ChrisP님의 프로필 이미지
ChrisP
지식공유자

아 그렇군요. 뭔가 좀 이상한 증상이네요 ㅎㅎ

네 제 메일로 보내주시면 확인 후 다시 이곳에 답글 달아드리겠습니다.

감사합니다.

0

서주상님의 프로필 이미지
서주상
질문자

지금 알아낸 문제로는 GCS 에서 송신한 게인값을 배터리를 다시 연결 하였을때 Roll in, out 게인까지만 저장되고  

PITCH YAW 부분은 저장되지 않아서 생긴 문제인것 같습니다. 이부분도 강의내용을 보고 다시 작성하였는데 문제가 해결되지 않고 

있네요 ㅠㅠ 제가 작성한 코드를 보내 드릴테니 강사님의 드론에서 돌려봐주실 수 있나요?

0

ChrisP님의 프로필 이미지
ChrisP
지식공유자

SWA 입력받지 않았을때는 쓰로틀 키에 따라서 모터가 잘 동작했었나요?

그렇다면 아마도 SWA 처리 쪽 소스코드 문제일 것 같네요.

우선 강의를 천천히 보시면서 다시 한번 해보세요~

먼저 모터등 하드웨어에 문제가 없는지부터 확인해보셔야 할 것 같습니다!

소스코드는 제가 직접 드리지는 않고, 지금까지 작성한 내용을 보내주시면 확인해드릴 순 있습니다.

확인 후 다시 댓글 부탁드립니다.

감사합니다.

서주상님의 프로필 이미지
서주상

작성한 질문수

질문하기