当前位置:   article > 正文

STM32解鎖ESC30C电调_电调 stm32

电调 stm32

本農之前看過一些教程,按照他們的方法都沒有成功啓動motor,最後用示波器分析出原因,最終解決了問題

1. 如下圖,按照教程的操作,使用測試儀(藍盒子)可以成功啓動esc,但在stm32使用代碼模擬測試儀控制motor,沒有成功在这里插入图片描述

在这里插入图片描述

2. 網上查找了各種資料,都沒有成功啓動motor,不得已,我購買了示波器,進一步分析問題在这里插入图片描述

示波器中所示的波形就是測試儀(藍盒子)所輸出的pwm波形,頻率為50hz,占空比為4.5%,按照下面公式計算,

在这里插入图片描述

參數應該按照如下設置

htim->Init.Prescaler = 72-1;
htim->Init.Period = 20000-1;
  • 1
  • 2

意思就是在基礎頻率72Mhz的條件下,

72Mhz/72/20000 = 50hz
  • 1

然後CCR的值

CCR/20000 = 4.5%
CCR = 900
  • 1
  • 2

按照計算出的參數 在電機接上電源后,應立即設置CCR值,初始化電機,但是實際沒有成功

__HAL_TIM_SET_COMPARE(htim, TIM_CHANNEL_2, 900);        //music, then bb, then b..... long volume
  • 1

示波器顯示如下,很明顯,基礎頻率怎麽才這麽點?

在这里插入图片描述

在程序中獲取當前時鐘頻率

uint32_t sysClockFreq = HAL_RCC_GetSysClockFreq();
USART_SendFormatString("sysClockFreq: %d\r\n", sysClockFreq);
  • 1
  • 2

結果顯示:

sysClockFreq: 8000000
  • 1

原來如此,更改prescaler

htim->Init.Prescaler = 8-1;
  • 1

3. 最終,motor初始化並啓動成功,代碼如下

extern TIM_HandleTypeDef htim2;

void pwm_msc_init(TIM_HandleTypeDef* htim){
    zssLogINFO("<%s  %d> %s(arg: %s)", __FILE__, __LINE__, __FUNCTION__, "LOG_IN");
    HAL_TIM_PWM_Start(htim,TIM_CHANNEL_2);                  //enable PWM
    __HAL_TIM_SET_COMPARE(htim, TIM_CHANNEL_2, 900);        //music, then bb, then b..... long volume
    USART_SendFormatString("please insert vcc line\r\n");
    HAL_Delay(3000 * 100);
    zssLogINFO("<%s  %d> %s(arg: %s)", __FILE__, __LINE__, __FUNCTION__, "LOG_OUT");
}

void pwm_msc_start(TIM_HandleTypeDef* htim){    
    // Implementation goes here
    zssLogINFO("<%s  %d> %s(arg: %s)", __FILE__, __LINE__, __FUNCTION__, "LOG_IN");
    __HAL_TIM_SET_COMPARE(htim, TIM_CHANNEL_2,1000);        //motor begin rotate
	HAL_Delay(3000 * 100);
                        
    zssLogINFO("<%s  %d> %s(arg: %s)", __FILE__, __LINE__, __FUNCTION__, "LOG_OUT");
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

4.注意事項

1) 切記,一定要先確認基礎頻率,這是個大坑

uint32_t sysClockFreq = HAL_RCC_GetSysClockFreq();
  • 1

2) ESC電調解鎖

教程中說需要先將油門加到最大,聽到bb聲后,再調到最小, 我發現不用那麽麻煩,直接調到最小,然後在3s内接上電源即可解鎖

3) CCR值的設置,

好多教程說是設置最小1000,最大2000,其實我感覺這個是不確定的,我試過我的ESC電調1000是無法初始化成功的,最正規的方式是看示波器數據,然後手動計算出初始值.

CCR/20000 = 4.5%
CCR = 900
  • 1
  • 2
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/一键难忘520/article/detail/960044
推荐阅读
相关标签
  

闽ICP备14008679号