有刷電機是電機里面最簡單,也是歷史最悠久的一種,到現在仍然廣泛應用于各個領域。他的控制很簡單,在電機的兩個電極加正向電壓,則正向旋轉,如果加反向電壓,則旋轉方向也反過來。電機的轉速可以通過控制加在電極上的電壓來調節。在電機控制電路中最常用的器件就是 MOS 管了。可以分為兩個大的類型:P 溝道 MOS 和 N 溝道 MOS。MOS 管可以簡單的理解為一個自來水閥門,Gate 是控制端,調節 Drain 和 Source 端之間流過的電流大小。
下面是兩種 MOS 的典型用法。P 溝道的 MOS 一般 S 接電源正極,然后 Vgs 需要一個負電壓來打開電流通道,而 N 溝道的 S 極一般接電源的負極,Vgs 需要一個正電壓來打開電流通道。
資料來源于 IOR 公司數據手冊我們先從一個最簡單的驅動電路開始。單片機控制 MOS 管柵極為高時,電流從電源經過電機和 MOS 管到地。當柵極為低時,MOS 管斷開,此時電機線圈內的電流繼續通過續流二極管回流電機的正極。我們通過調節柵極控制端的PWM占空比,就可以控制電機的轉速。
2.TIM模塊
TIM 模塊最重要的三個寄存器是:Counter Register (TIMx_CNT) 計數寄存器Auto-Reload Register (TIMx_ARR) 重置寄存器Capture/compare mode register 1 (TIMx_CCMRx) 輸入捕獲/輸出比較寄存器
Counter 在時鐘的驅動下計數Auto-Reload 設定計數的最大限制值Capture/Compare 鎖存一個事件發生時的計數值到Capture/計數達到 Compare 值后觸發一個事件在 PWM 模式下,Auto-Reload 寄存器設定PWM的周期,Compare 設定占空比。有一點需要注意的是一個 TIM 模塊只有一個計數器和一個重置寄存器,而有多個輸入捕獲/輸出比較寄存器。所以一個 TIM 模塊的多個通道可以設置不同的占空比,但周期都是相同的。所以我們在選用 MCU 的時候,如果需要產生多種周期的 PWM,不僅要看它的定時器模塊一共有多少通道數,還要看是否有足夠的獨立 TIM 模塊。
3.代碼
我們在下面這個工程的基礎上修改來實現用一個可調電阻控制PWM占空比,來控制電機的轉速。STM32Cube_FW_F0_V1.11.0ProjectsSTM32F030R8-NucleoExamplesTIMTIM_PWMOutputMDK-ARMProject.uvprojx這個工程默認使用TIM3模塊輸出4路PWM,我們可以只保留其中一路。然后把ADC采樣的代碼添加進來:
Step 1:
stm32f0xx_hal_conf.h
#define HAL_ADC_MODULE_ENABLED
Step 2:
main.h
添加ADC相關宏定義
Step 3:
stm32f0xx_hal_msp.c
添加ADC使用的引腳的初始化代碼
Step 4:
把ADC的驅動文件添加進工程,在主程序初始化ADC。
Step 5:
讀取 ADC 的值,寫入 TIM 的 CCR 寄存器,觀察 PWM 占空比的變化。根據電機的特性,還可能需要改變 PWM 的周期。
審核編輯:符乾江
-
單片機
+關注
關注
6037文章
44566瀏覽量
636031 -
電機
+關注
關注
142文章
9028瀏覽量
145668
發布評論請先 登錄
相關推薦
評論