摘要:只能在度到度之間運(yùn)動(dòng),超過范圍,舵機(jī)輕則齒輪打壞,重則燒壞內(nèi)部電路舵機(jī)能度轉(zhuǎn)動(dòng)能控制轉(zhuǎn)速。相關(guān)定時(shí)器的參數(shù)設(shè)置定時(shí)器為例編寫相關(guān)的函數(shù)文件相關(guān)函數(shù)開啟添加定時(shí)器的通道和通道的生成開啟使能函數(shù),放置于到中的用戶代碼區(qū)。
舵機(jī)的分類
按照旋轉(zhuǎn)角度
180°舵機(jī):能給定角度、固定轉(zhuǎn)速。 只能在0度到180度之間運(yùn)動(dòng),超過范圍,舵機(jī)輕則齒輪打壞,重則燒壞內(nèi)部電路.
360°舵機(jī):能360度轉(zhuǎn)動(dòng), 能控制轉(zhuǎn)速。但不能調(diào)節(jié)轉(zhuǎn)動(dòng)的角度
按照控制信號(hào)
模擬舵機(jī):要持續(xù)提供PWM信號(hào)才能固定角度。優(yōu)點(diǎn):便宜。
數(shù)字舵機(jī):只要給一次PWM信號(hào)就能固定角度。優(yōu)點(diǎn):高精度,響就快,抖動(dòng)小,更大的角度固定力。
幾個(gè)重要參數(shù)
最大扭矩
如MG996, 最大扭矩: 13KG/cm. 這個(gè)是在舵機(jī)堵轉(zhuǎn)時(shí)測(cè)得的, 其時(shí)距離軸中心1cm處能掛起的重量.
工作電壓
如常用的3.0V~7.2V, 接入電壓不同, 所能產(chǎn)生的工作扭矩自然不同. 直接影響角度固定力。
引腳說明
紅色:供電;電流比較大,除非測(cè)試, 真不建議在開發(fā)板上取電;
粽色:地線;必須與控制器, 如SMT32芯片共地;
橙色:PWM信號(hào)線;接芯片的TIMx外設(shè)的CHx腳;
原理簡介
舵機(jī)接收的是PWM信號(hào),能使舵機(jī)內(nèi)部電路產(chǎn)生一個(gè)偏置電壓,觸發(fā)電機(jī)通過減速齒輪帶動(dòng)電位器移動(dòng),當(dāng)電壓差為零時(shí),電機(jī)停轉(zhuǎn),從而達(dá)到伺服的效果。
即,給舵機(jī)提供一個(gè)特定的PWM信號(hào),舵機(jī)就可以旋轉(zhuǎn)到指定的位置。
PWM信號(hào)、角度
舵機(jī)接收的PWM信號(hào)頻率為50HZ,即周期為20ms。當(dāng)高電平的脈寬在0.5ms-2.5ms之間時(shí)舵機(jī)就可以對(duì)應(yīng)旋轉(zhuǎn)到不同的角度。
為了更好地理解其信號(hào),和編寫代碼,把PWM關(guān)鍵點(diǎn)轉(zhuǎn)換如下:
PWM信號(hào)周期: 20000us
0度時(shí),高電平時(shí)長: 500us
180度時(shí), 高電平時(shí)長:2500us
每增加1 °,需增加高電平時(shí)長:(2500-500)÷180 = 11.1us
某角度值A(chǔ),需要的總高電平時(shí)長:(A x11.1 +500)us
故在設(shè)置定時(shí)器參數(shù)時(shí)
預(yù)分頻(PSC)
:72-1;
計(jì)數(shù)值(Counter)
:20000-1;(計(jì)數(shù)從0開始,所以要減1)
設(shè)置計(jì)數(shù)值為20000對(duì)應(yīng)PWM信號(hào)周期:20000us;
控制對(duì)應(yīng)的為對(duì)應(yīng)通道的CCR設(shè)置為:500-2500;
重點(diǎn)解釋一下:PSC, ARR, CCR, CNT
PSC:TIM時(shí)鐘的分頻系數(shù):72;內(nèi)部時(shí)鐘經(jīng)PSC值分頻后, 傳給CNT計(jì)數(shù)器使用;
CNT:計(jì)數(shù)器,CNT每計(jì)數(shù)一次的脈沖時(shí)長為:1÷(CLK÷PSC) = 1÷(72000000÷72) = 0.000001s/次 = 1us/次;
ARR:自動(dòng)重裝載值:20000,AutoReload Register
也稱為Counter Period
,CNT計(jì)數(shù)器經(jīng)過多少次脈沖就重新開始計(jì)數(shù)。用這個(gè)值可控制需要的PWM信號(hào)周期:1us x 20 000次 = 20 000us = 20ms
CCR:用于控制周期內(nèi)高電平時(shí)長, 當(dāng)CNT
特別地說明: 把所有ms值, 轉(zhuǎn)換為us值, 是為了方便代碼的編寫和理解
相關(guān)外部晶振的設(shè)置參考:STM32CubeMX筆記(5)–定時(shí)器中斷
1、在STM32CubeMX軟件右側(cè):
選擇Times
定時(shí)器設(shè)置項(xiàng),根據(jù)下圖進(jìn)行配置相對(duì)應(yīng)的定時(shí)器相關(guān)參數(shù)的設(shè)置。
(選擇內(nèi)部時(shí)鐘源、設(shè)置通道的模式、設(shè)置預(yù)分頻、計(jì)數(shù)值)
定時(shí)器頻率=時(shí)鐘頻率/(預(yù)分頻*計(jì)數(shù)值)
T i m e s ( H z ) = I n t e r n e l C l o c k ( M H z ) P S C ? C o u n t e r . Times(Hz) = /frac{InternelClock(MHz)}{PSC*Counter}. Times(Hz)=PSC?CounterInternelClock(MHz)?.
下面圖中設(shè)置的舵機(jī)的頻率為50Hz,使用定時(shí)器8生成PWM波
其中內(nèi)部時(shí)鐘頻率為APB1(InternelClock)
頻率為72MHz(根據(jù)時(shí)鐘樹看出)
預(yù)分頻(PSC)
:72-1; 計(jì)數(shù)值(Counter)
:20000-1;(計(jì)數(shù)從0開始,所以要減1)
設(shè)置計(jì)數(shù)值為20000對(duì)應(yīng)PWM信號(hào)周期:20000us;
控制對(duì)應(yīng)的為對(duì)應(yīng)通道的CCR設(shè)置為:500-2500;
設(shè) 置 生 成 的 頻 率 = 72000000 72 ? 20000 = 50 H z 設(shè)置生成的頻率= /frac{72000000}{72*20000}=50Hz 設(shè)置生成的頻率=72?2000072000000?=50Hz
2、在STM32CubeMX軟件右上角,點(diǎn)擊GEBERATE CODE項(xiàng),生成代碼。
相關(guān)定時(shí)器的參數(shù)設(shè)置:(定時(shí)器8為例)
1)添加定時(shí)器8的通道1和通道2的PWM生成開啟使能函數(shù),放置于到main.c
中的用戶代碼區(qū)。
/* USER CODE BEGIN 2 */ HAL_TIM_PWM_Start(&htim8,TIM_CHANNEL_1); HAL_TIM_PWM_Start(&htim8,TIM_CHANNEL_2);/* USER CODE END 2 */
2)通過類似如下的設(shè)置,即可設(shè)置定時(shí)器8的通道1和通道2的相關(guān)占空比寄存器,直接控制PWM的占空比輸出
TIM8->CCR1 = 800; TIM8->CCR2 = 1800;
3)將上述寄存器進(jìn)行改進(jìn),整合出相關(guān)的函數(shù)文件
/**************************************************************************函數(shù)功能:定時(shí)器TIMx的PWM輸出占空比CCRx設(shè)置函數(shù)入口參數(shù):[TIMx]:TIM1~8、[CHx]:TIM_CHANNEL_1~4、[CCR]:0~65535(舵機(jī)控制時(shí):0~2500)返回 值:無說 明:通過設(shè)置TIMx寄存器CCRx的值設(shè)置輸出通道的占空比**************************************************************************/void TIM_SetCCR(TIM_TypeDef *TIMx, uint32_t CHx, uint16_t CCR) { if(CHx==TIM_CHANNEL_1) TIMx->CCR1 = CCR; if(CHx==TIM_CHANNEL_2) TIMx->CCR2 = CCR; if(CHx==TIM_CHANNEL_3) TIMx->CCR3 = CCR; if(CHx==TIM_CHANNEL_4) TIMx->CCR4 = CCR;}
函數(shù)的引用效果如下:
以下兩個(gè)代碼片段的使用效果相同,如下。
設(shè)置通道1占空比為50hz,高電平時(shí)間800us;
設(shè)置通道2占空比為50hz,高電平時(shí)間1800us;
TIM_SetCCR(TIM8,TIM_CHANNEL_1,800); TIM_SetCCR(TIM8,TIM_CHANNEL_2,1800);
TIM8->CCR1 = 800; TIM8->CCR2 = 1800;
進(jìn)一步測(cè)試,將以下代碼復(fù)制到主函數(shù)的循環(huán)中:
/* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { TIM_SetCCR(TIM8,TIM_CHANNEL_1,800); TIM_SetCCR(TIM8,TIM_CHANNEL_2,1800); HAL_Delay(1000); TIM_SetCCR(TIM8,TIM_CHANNEL_1,1800); TIM_SetCCR(TIM8,TIM_CHANNEL_2,800); HAL_Delay(1000); /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ } /* USER CODE END 3 */
將對(duì)應(yīng)的通道輸出接口連接上舵機(jī)的PWM控制線,進(jìn)行相關(guān)轉(zhuǎn)角的測(cè)試。
對(duì)應(yīng)舵機(jī)來回旋轉(zhuǎn)。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/122110.html
摘要:中央對(duì)齊模式向上計(jì)數(shù)時(shí)當(dāng)時(shí)通道為無效電平,否則為有效電平向下計(jì)數(shù)時(shí)一旦通道為有效電平,否則為無效電平。一般來說,舵機(jī)接收的信號(hào)頻率為,即周期為。 STM32——P...
摘要:本次實(shí)驗(yàn)的采用的舵機(jī)是度伺服,控制關(guān)系如下二舵機(jī)電路圖三高級(jí)定時(shí)器產(chǎn)生波相比普通定時(shí)器初始化中需要多加兩句重復(fù)計(jì)數(shù)器的值主輸出使能四代碼電機(jī)初始化延遲初始化電機(jī)管腳初始化尋跡管腳初始化。 一、舵機(jī)工作原理 ? ? 控制信號(hào)由接收機(jī)的通道進(jìn)入信號(hào)調(diào)制芯片,獲得直流的偏置電壓。它內(nèi)部有一個(gè)基準(zhǔn)電...
摘要:利用可視化界面來進(jìn)行的相關(guān)配置,所以時(shí)鐘滴答定時(shí)器串口等就不用根據(jù)數(shù)據(jù)手冊(cè)去操作標(biāo)準(zhǔn)庫甚至是寄存器了,可以通過軟件直接生成。 使用STM32CubeMX初始化ST...
摘要:較高時(shí),電機(jī)運(yùn)行連續(xù)平穩(wěn)噪音小,但器件功耗會(huì)隨頻率升高而增大較低時(shí),利于降低功耗,并能提高調(diào)速線性度,但過低的頻率可能導(dǎo)致電機(jī)轉(zhuǎn)動(dòng)連貫性的降低。通常時(shí),器件能夠穩(wěn)定的控制電機(jī)。 一、驅(qū)動(dòng)芯片介紹 TB6612?的的用法: ? ? ?TB6612?是雙驅(qū)動(dòng),也就是可以驅(qū)動(dòng)兩個(gè)電機(jī)下面分別是控制...
摘要:單片機(jī)入門指南本文基于常神文章基礎(chǔ)上將單片機(jī)入門部分進(jìn)行細(xì)化盡可能細(xì)節(jié)做到可實(shí)施性先引用一下常神的文章首先假設(shè)大家已經(jīng)對(duì)高中物理的電路部分有所了解。單片機(jī),如,是一種根據(jù)程序控制引腳高低電平的可編程器件,有些場(chǎng)合又將這種行為稱作嵌入式。 ...
閱讀 3653·2021-10-11 10:58
閱讀 2245·2021-10-08 10:05
閱讀 2024·2021-09-27 13:34
閱讀 3558·2019-08-30 15:53
閱讀 2723·2019-08-30 14:02
閱讀 3551·2019-08-29 16:55
閱讀 614·2019-08-29 15:41
閱讀 1061·2019-08-29 15:23