H-Bridge에서 불타는 이끼

Sep 23 2020

모터를 구동하는 H- 브리지에 문제가 있습니다.


개략도

이것은 H- 브리지의 회로도입니다. 신호 H [4 : 1]은 마이크로 컨트롤러에 의해 생성됩니다. mX 및 mY는 DC 모터의 출력입니다.


작동 원리

마이크로 컨트롤러는 UART를 통해 외부 메시지를 수신합니다. 메시지가 수신되면 마이크로 컨트롤러는 H- 브리지를 전환하여 모터 방향을 반대로합니다. 이 메시지는 4 초마다 한 번씩 수신됩니다. 따라서 실제로 모터는 4 초마다 회전 방향을 변경해야합니다.


마이크로 컨트롤러 펌웨어

while(TRUE) {
    if(receivedCmd == 0x01) {   //direction1
        GPIO_WriteLow(GPIOD, (GPIO_Pin_TypeDef) (GPIO_PIN_2 | GPIO_PIN_3));    //H1-H4
        GPIO_WriteHigh(GPIOC, (GPIO_Pin_TypeDef) (GPIO_PIN_3 | GPIO_PIN_4));   //H2-H3
    }
    else if(receivedCmd == 0x02) {  //direction2
        GPIO_WriteLow(GPIOC, (GPIO_Pin_TypeDef) (GPIO_PIN_3 | GPIO_PIN_4));    //H2-H3
        GPIO_WriteHigh(GPIOD, (GPIO_Pin_TypeDef) (GPIO_PIN_2 | GPIO_PIN_3));   //H1-H4
    }
    else {    //do not activate
        GPIO_WriteLow(GPIOC, (GPIO_Pin_TypeDef) (GPIO_PIN_3 | GPIO_PIN_4));    //H2-H3
        GPIO_WriteLow(GPIOD, (GPIO_Pin_TypeDef) (GPIO_PIN_2 | GPIO_PIN_3));    //H1-H4
    }
}

문제

처음에는 회로가 예상대로 작동하지만 1 분 정도 작동하면 MOSFET Q3 및 Q4가 결국 연소됩니다.


질문

지금은 여분의 mosfet이 2 개 밖에 남지 않았기 때문에 변경 사항을 구현하기 전에 여기에서 도움을 요청하기로 결정했습니다.

  1. MOSFET과 병렬로 플라이 백 다이오드를 추가하지 않았습니다. 정말 필요한가요? 추가해야하나요? 이것이 내 회로에 문제가 될 수 있습니까?
  2. 내 펌웨어에 문제가 있습니까? 모터 방향을 바꾸기 전에 데드 타임을 추가해야합니까?
  3. 반전하기 전에 모터를 차단 (Q1 및 Q3 활성화, Q2 및 Q4 비활성화) 할 수 있습니까?
  4. 무슨 일이 일어나고 있는지에 대한 다른 아이디어가 있습니까?

답변

4 UweD Sep 24 2020 at 03:40

코드를 해석하면 다음과 같습니다.

if(receivedCmd == 0x01) {   //direction1
    GPIO_WriteLow(GPIOD, (GPIO_Pin_TypeDef) (GPIO_PIN_2 | GPIO_PIN_3));    //H1-H4
    GPIO_WriteHigh(GPIOC, (GPIO_Pin_TypeDef) (GPIO_PIN_3 | GPIO_PIN_4));   //H2-H3
}

위의 코드에서 방향 1에서 핀 3과 4가 켜져 있습니다.

else if(receivedCmd == 0x02) {  //direction2
    GPIO_WriteLow(GPIOC, (GPIO_Pin_TypeDef) (GPIO_PIN_3 | GPIO_PIN_4));    //H2-H3
    GPIO_WriteHigh(GPIOD, (GPIO_Pin_TypeDef) (GPIO_PIN_2 | GPIO_PIN_3));   //H1-H4
}

이제 방향 2에서 핀 2와 3이 켜져 있습니다. 핀 1은 사용되지 않습니다.

이것은 양방향으로 핀 3이 켜져 있음을 의미합니다. 이것은 방향 2에서 Q3 및 Q4를 통한 단락을 의미합니다. "H2-H3"및 "H1-H4"라인에 대한 귀하의 의견은 정확하지만 핀이 이렇게 구현되지 않은 것 같습니다.