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