Inflearn Community Q&A
소형 모터 구동 및 teleplot 오류
Resolved
Written on
·
128
·
Edited
0



안녕하세요 제어쟁이님, 소형모터 구동이 잘 되지 않아 디버깅 하는 중 질문 드립니다. STM32에서 강의와 같이 RpmRef, Ki, Kp, SpdFlg를 설정하고 teleplot 조회 시 영상과는 달리 아무런 변화가 나타나지 않고 쓰로틀을 눌렀을 경우 Rpm 피드백 값이 거의 10000 가까이 튀는 것을 확인했습니다. 모터는 프로그램을 연결시키고 처음 쓰로틀을 눌렀을 때만 회전하고, 그 이후로는 잘 움직이지 않습니다.
보이시는 사진과 같이 STM32, UART, 쓰로틀, 소형모터를 연결하고 24V 입력을 주었는데 이 과정에서 제가 놓쳤거나 이해를 잘 못한 부분이 있는지 검토 한번 부탁드리겠습니다.
감사합니다.
Answer 2
0
답변이 조금 늦어서 죄송합니다..!
HALL_EDGES_PER_REV 를 24.0f 으로 변경하셨고 RpmRef 값은 변경되는데 Kp,Ki를 변경해도 모터의 피드백 속도인 motor_speed_rpm의 값의 거동이 변화가 없다는 말씀이실 까요?
네 맞습니다.. motor_speed_rpm값은 쓰로틀을 연결해서 물리적 입력변화를 줄 때만 변하고, 그 외의 경우에는 사실상 0에서 고정입니다.


실습 진행에 불편을 드려 죄송합니다. main.c 파일의 341~350라인을 주석 처리한 뒤 다시 실습해 보시겠어요?
확인 결과, 속도 제어 시 VoltageRef 값이 0으로 고정되어 있어 제어기가 정상적으로 동작하지 않는 오류를 발견했습니다. 우선 해당 부분을 주석 처리하고 진행해 주시면, 제가 코드를 면밀히 재검토하여 빠른 시일 내에 수정본을 다시 배포해 드리겠습니다.
소중한 피드백 덕분에 오류를 빠르게 잡을 수 있었습니다. 다시 한번 시도해 보시고, 결과가 어떠한지 말씀 부탁드립니다. 감사합니다!
주석 처리 결과 영상과 동일하게 작동하네요 감사합니다.
주석 처리 경우 영상과 같이 live expressions의 변수로 모터 제어,
주석 처리 없을 경우 모터는 쓰로틀로 인해 작동하며 모터 속도 = 108000/HALL_EDGES_PER_REV 로 설정되는것을 확인하였는데 이런 작동 방식이 제어쟁이님의 설계 의도와 맞는지 궁금합니다..!
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다. 하드웨어님.
현재 STM32를 사용한 소형 모터 구동에서 RPM 피드백 값이 예상보다 높게 변동되고 있으며, 모터가 초기에는 회전하나 후속 동작이 원활하지 않은 문제를 겪고 계시는군요. 이런 경우, 몇 가지 점검 사항을 참고하시면 해결에 도움을 드릴 수 있을 것 같습니다.
진단 및 해결 방법:
PID 제어 파라미터 튜닝:
- 설정하신
Ki,Kp등의 파라미터가 적절한지 확인해 주세요. 잘못된 PID 값은 과도한 출력이나 진동을 유발할 수 있습니다. 초기에는Ki값을 낮게 설정하고Kp만으로 반응을 조율한 뒤 필요 시Ki값을 조정하는 것이 좋습니다.
- 설정하신
하드웨어 연결 확인:
- STM32, 모터 드라이버, UART 등 연결이 제대로 되었는지 다시 한번 확인해 주세요.
- 배선이 헐겁거나 잘못 연결된 부분이 없는지 확인이 필요합니다.
- STM32, 모터 드라이버, UART 등 연결이 제대로 되었는지 다시 한번 확인해 주세요.
전원 공급 문제:
- 24V 입력이 꾸준하게 제공되고 있는지 확인하세요. 전압 강하나 공급 부족으로 모터가 회전하지 않을 수 있습니다.
- 24V 입력이 꾸준하게 제공되고 있는지 확인하세요. 전압 강하나 공급 부족으로 모터가 회전하지 않을 수 있습니다.
UART 데이터 통신 확인:
- Visual Studio Code에서 Teleplot으로부터 피드백 데이터가 정확히 수신되고 있는지 확인합니다.
Failed to evaluate expression오류는 데이터 수신 문제를 시사할 수 있습니다.
- UART 설정이 올바른지, 특히 BAUDRATE나 핀 연결을 점검해 주시면 좋습니다.
- Visual Studio Code에서 Teleplot으로부터 피드백 데이터가 정확히 수신되고 있는지 확인합니다.
소프트웨어 디버그:
- 디버그 모드에서 실행 시 그때그때 들어오는 값들이 제대로 평가되는지, 변수에 의도하지 않은 값이 입력되는지 확인해보세요.
- 디버그 모드에서 실행 시 그때그때 들어오는 값들이 제대로 평가되는지, 변수에 의도하지 않은 값이 입력되는지 확인해보세요.
시스템 로그와 에러 코드:
- 디버깅 시 나타나는 로그와 에러 코드를 꼼꼼히 확인하여, 오류의 구체적인 원인을 파악하는 것도 도움이 됩니다.
- 디버깅 시 나타나는 로그와 에러 코드를 꼼꼼히 확인하여, 오류의 구체적인 원인을 파악하는 것도 도움이 됩니다.
또한, 유사한 문제나 기타 사용자들이 솔루션을 논의한 강의 내 질의응답 내용을 참고하고 싶으시면 전동킥보드로 배우는 임베디드 실전 프로젝트 강의 게시판을 참고해 보시는 걸 추천드립니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.






감사합니다 구동 잘 되네요. 한 가지만 더 여쭈겠습니다..
debug모드에서 RpmRef,Kp,Ki 변수를 변경해도 teleplot에는 RpmRef값만 반영되고 Kp,Ki 변경 시 feedback에 아무런 변화가 없으며, 실제 소형 모터의 속도 변경은 config.h에서 HALL_EDGES_PER_REV 값에 따라 변화하는 것을 확인했습니다.
소형 모터로 실습을 진행했다고 하셨는데 제어쟁이님의 영상을 보면 소형 모터를 제어하는 Throttle_ADC 변수는 쓰로틀이 아예 연결이 안 되어있을때의 값(~0.002)을 가지고, teleplot의 feedback이 Kp/Ki값에 의해 변하는 것으로 확인이 되는데 제어쟁이님처럼 Kp,Ki값에 의한 teleplot 값 변화를 보고 싶습니다. 혹시 제가 놓친 부분이 있나요?
감사합니다.