天天看點

不可錯過的stm32單片機直流電機驅動與測速詳解

  stm32直流電機驅動與測速

  說實話就現在的市場應用中stm32已經占到了絕對住到的地位,51已經成為過去式,32的功能更加強大,雖然相應的難度有所增加,但是依然阻止不了大家學習32的腳步,不說大話了這些大家都懂要不然也不會學習stm32的人那麼多!!!

  進入我們今天的主題,今天給大家介紹的是stm32中一個很小但是比較實用的stm32直流電機驅動與測速,話不多說先給大家上一段直流電機控制的代碼。

  void pwm_ARRPreloadConfig(void)

  {

  PrescalerValue = (uint16_t) (SystemCoreClock /TIM2_rate) - 1;

  //設定的是定時器的頻率,要設定pwm的頻率為50hz要乘以對

  //應的arr值

  TIM_TimeBaseStructure.TIM_Prescaler = PrescalerValue; //TIM_Prescaler

  設定了用來作為TIMx時鐘頻率除數的預分頻值

  TIM_TimeBaseStructure.TIM_Period = PWM_ARR;

  //設定了在下一個更新事件裝入活動的自動重裝載寄存器周期的值

  TIM_TimeBaseStructure.TIM_ClockDivision = 0;

  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//向上計數模式

  TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);

  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;

  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;

  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;

  TIM_OC3PreloadConfig(TIM2, TIM_OCPreload_Enable); //pwm3已經調好可以用 PB0

  TIM_OC4PreloadConfig(TIM2, TIM_OCPreload_Enable); //pwm4已經調好可以用 PB1

  TIM_ARRPreloadConfig(TIM2, ENABLE);

  TIM_Cmd(TIM2, ENABLE);

  }

  123456789101112131415161718192021222324252627282930313233

  這段代碼是關于PWM來控制電機的,相信有很多朋友可以直接拿去用,如果對這一段代碼有什麼地方不懂可以參照針對stm32直流電機控制與測速的專門錄的視訊

  STM32電機驅動與測速:

       http://www.makeru.com.cn/live/1392_1218.html?s=45051

  可能有些朋友會說你就是為了讓大家看這個視訊,對沒錯

  我不否認,為什麼呢?因為完全靠寫我是很難表達清楚其中的一些細節,對于會的人來說細節不重要完全不用看就會,正所謂難者不會會這不難,對于不會的朋友某一個點不清楚那就拜拜了,沒戲。

  隻适合初級新手朋友老油條對這種方式不喜勿噴。

不可錯過的stm32單片機直流電機驅動與測速詳解