[수중 추진기 제어] STM32를 사용하여 PWM을 통해 ESC를 제어하는 방법은 무엇입니까?
일에 Fengyukun 님이 게시
마이크로 컨트롤러를 사용하여 추진기의 작동을 제어하려는 많은 연구자들이 인터넷에서 많은 정보를 찾았지만 그 중 많은 정보가 명확하게 작성되지 않은 것을 발견했습니다. APISQUEEN은 문제 해결 방법을 대략적으로 기록합니다.
모두가 댓글 영역에서 자신의 경험을 공유하고 더 많은 사람들에게 도움이 되기를 바랍니다.
우리가 구매한 ESC는 다를 수 있지만 전반적인 컨트롤 아이디어는 동일하므로 이 글을 읽고 나면 목표를 달성하실 수 있을 것이라 믿습니다.
PWM 신호:
(1) PWM 웨이브 제어(일반적으로 esc는 50Hz 또는 20ms PWM 웨이브 제어를 사용함)
(2) 중간 일시 중지(여기서는 일반적으로 높은 수준의 듀티 사이클을 나타냄) 1.5ms, 실제로는 1.475ms와 1.525ms 사이의 중간 일시 중지입니다.
(3) 제어 범위는 1ms ~ 2ms입니다.
(4) 1.5ms에서 2ms 앞으로 이동하고, 1.5ms에서 1ms 뒤로 이동합니다.
다음은 Arduino를 기반으로 한 간단한 참조입니다.
참고: ESC를 사용하려면 잠금을 해제해야 합니다! ESC를 전원에 연결하면 경고음이 3번 울린 다음 성공적으로 잠금 해제되면 경고음이 2번, 총 5번 울립니다. ESC를 성공적으로 잠금 해제하지 않으면 제어에 사용할 수 없습니다. 따라서 위의 코드를 참고하면 ESC를 해제하는 방법은 초기화 후 중립 신호로 설정하고 속도 제어를 시작하기 전에 신호 수신(비프음 2회)을 기다리는 것이라고 결론을 내릴 수 있습니다.
제어 및 디버깅 방법
우리는 프로그래밍과 디버깅을 위해 STM32F7 개발 보드와 HAL 라이브러리를 사용하고 있으며 실제로 타이머는 PWM 웨이브를 출력합니다. 그러나 주의해야 할 사항이 많고 불분명한 세부 사항은 실제로 시간과 에너지를 낭비합니다.여기 디버깅 경험에 대해 몇 마디 말씀드리겠습니다.
먼저, 타이머에서 PWM 웨이브를 구성할 때 잠금해제 신호로 초기화하거나 임의의 값을 주거나 구성하지 않도록 주의하시기 바랍니다. ESC는 타이머와 PWM이 초기화된 후에만 잠금 해제되기 때문에 내 예를 들어 보면 1.5ms의 중간 정지 신호가 잠금 해제 신호이므로 처음부터 PWM을 1.5ms로 구성할 수 없습니다. 그렇지 않으면 ESC는 이후에 한 번만 경고음을 울립니다. 전원 신호음이 세 번 울리고 나서도 패들이 여전히 회전하지 않습니다.
둘째, 딜레이 사용에 주의하세요. 처음에는 딜레이를 사용하지 않아서 결과적으로 ESC가 삑삑 소리만 나고 그다음엔 반응이 없더군요.. 그러다가 오실로스코프로 PWM파를 관찰해보니 제가 초기화한 PWM이 직접 플래싱되는걸 발견하고, ESC에게 잠금 해제 신호를 수신할 시간을 주세요. 그런데 이때도 주의하셔야 할 점은 처음에는 Delay_us()를 이용하여 구성을 했는데 문제가 해결되지 않더니 나중에는 Delay_ms(1000)으로 변경했는데 구성시간이 1초라는 뜻입니다. 여전히 문제가 있습니다. 그런 다음 시간을 조정했습니다. 마지막 경고음이 두 번 울리고 나면 모터가 회전하기 시작합니다. 따라서 이 잠금 해제 신호의 수신 시간을 파악하는 것이 매우 중요합니다.
또한 사용 중에 구성한 신호에 문제가 있는지 확인하기 위해 오실로스코프를 사용하는 방법을 배우는 데 주의하세요. 아래는 처음에 초기화한 듀티 사이클 1.5ms, 주기 20ms, 진폭 3.3V의 PWM 웨이브입니다.
요약하자면, 전체 프로세스는 다음 사항에 주의를 기울여야 합니다.
(1) ESC는 일반적으로 50Hz의 주파수로 제어되며 제어 범위는 대략 1ms에서 2ms 사이입니다. 물론 상황에 따라 다릅니다.
(2) 전원이 켜진 후 ESC에서 삐 소리가 3번 울리고, 잠금 해제에 성공한 후에는 삐 소리가 2번 울립니다. 그러나 ESC에서 경고음이 한 번만 울리면 ESC가 구성한 신호를 수신했지만 장치 잠금을 성공적으로 해제하지 못했음을 의미할 수 있으므로 잠금 해제 코드를 다시 확인하여 오류가 있는지 확인해야 합니다. ESC에서 소리가 나지 않으면 신호를 수신하지도 않는 것입니다. 배선과 코드를 다시 확인하세요.
(3) ESC가 잠금 해제 신호를 수신할 수 있는 일정 시간을 제공하기 위해 지연 기능을 사용하는 데 주의하십시오. 각 ESC는 다르기 때문에 이를 직접 조정할 수 있습니다.
(4) 접지에 주의하고 ESC 신호 라인을 제어 보드의 신호 출력 포트에 연결한 다음 신호 라인을 제어 보드의 GND 접지에 접지하십시오.
(5) 오실로스코프를 사용하여 구성된 신호를 확인하는 방법을 배웁니다.
잘못된 선을 연결하지 마십시오!