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