国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

STM32CubeMX筆記(9)--定時器生成PWM特定波形,控制舵機轉動

darryrzhong / 3666人閱讀

摘要:只能在度到度之間運動,超過范圍,舵機輕則齒輪打壞,重則燒壞內部電路舵機能度轉動能控制轉速。相關定時器的參數設置定時器為例編寫相關的函數文件相關函數開啟添加定時器的通道和通道的生成開啟使能函數,放置于到中的用戶代碼區。


1、舵機相關知識

1.1 相關舵機的知識點:

  • 舵機的分類
    按照旋轉角度
    180°舵機:能給定角度、固定轉速。 只能在0度到180度之間運動,超過范圍,舵機輕則齒輪打壞,重則燒壞內部電路.
    360°舵機:能360度轉動, 能控制轉速。但不能調節轉動的角度
    按照控制信號
    模擬舵機:要持續提供PWM信號才能固定角度。優點:便宜。
    數字舵機:只要給一次PWM信號就能固定角度。優點:高精度,響就快,抖動小,更大的角度固定力。

  • 幾個重要參數
    最大扭矩
    如MG996, 最大扭矩: 13KG/cm. 這個是在舵機堵轉時測得的, 其時距離軸中心1cm處能掛起的重量.
    工作電壓
    如常用的3.0V~7.2V, 接入電壓不同, 所能產生的工作扭矩自然不同. 直接影響角度固定力。

  • 引腳說明
    紅色:供電;電流比較大,除非測試, 真不建議在開發板上取電;
    粽色:地線;必須與控制器, 如SMT32芯片共地;
    橙色:PWM信號線;接芯片的TIMx外設的CHx腳;

1.2 舵機的控制:

  • 原理簡介
    舵機接收的是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值, 是為了方便代碼的編寫和理解


2、STM32CubeMX引腳設置和代碼生成

2.1 相關STM32CubeMX生成代碼配置如下:

相關外部晶振的設置參考: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為例)


3、編寫相關的C函數文件

3.1、相關PWM函數開啟:

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 */

3.2、相關PWM占空比設置:

2)通過類似如下的設置,即可設置定時器8的通道1和通道2的相關占空比寄存器,直接控制PWM的占空比輸出

   TIM8->CCR1 = 800;    TIM8->CCR2 = 1800; 

3.3、相關PWM占空比設置函數改進:

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 */

4、編譯工程文件,使用ST-Link燒錄,測試定時器中斷

將對應的通道輸出接口連接上舵機的PWM控制線,進行相關轉角的測試。
對應舵機來回旋轉。


文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/122110.html

相關文章

  • 10. STM32——PWM 控制舵機(超聲波感應開蓋垃圾桶)

    摘要:中央對齊模式向上計數時當時通道為無效電平,否則為有效電平向下計數時一旦通道為有效電平,否則為無效電平。一般來說,舵機接收的信號頻率為,即周期為。 STM32——P...

    jasperyang 評論0 收藏0
  • 項目六:時器一產生PWM控制舵機

    摘要:本次實驗的采用的舵機是度伺服,控制關系如下二舵機電路圖三高級定時器產生波相比普通定時器初始化中需要多加兩句重復計數器的值主輸出使能四代碼電機初始化延遲初始化電機管腳初始化尋跡管腳初始化。 一、舵機工作原理 ? ? 控制信號由接收機的通道進入信號調制芯片,獲得直流的偏置電壓。它內部有一個基準電...

    kelvinlee 評論0 收藏0
  • 使用STM32CubeMX初始化STM32F031F6Px系列

    摘要:利用可視化界面來進行的相關配置,所以時鐘滴答定時器串口等就不用根據數據手冊去操作標準庫甚至是寄存器了,可以通過軟件直接生成。 使用STM32CubeMX初始化ST...

    Zhuxy 評論0 收藏0
  • 項目三:利用PWM波和GPIO控制電機

    摘要:較高時,電機運行連續平穩噪音小,但器件功耗會隨頻率升高而增大較低時,利于降低功耗,并能提高調速線性度,但過低的頻率可能導致電機轉動連貫性的降低。通常時,器件能夠穩定的控制電機。 一、驅動芯片介紹 TB6612?的的用法: ? ? ?TB6612?是雙驅動,也就是可以驅動兩個電機下面分別是控制...

    taowen 評論0 收藏0
  • 單片機入門指南

    摘要:單片機入門指南本文基于常神文章基礎上將單片機入門部分進行細化盡可能細節做到可實施性先引用一下常神的文章首先假設大家已經對高中物理的電路部分有所了解。單片機,如,是一種根據程序控制引腳高低電平的可編程器件,有些場合又將這種行為稱作嵌入式。 ...

    nevermind 評論0 收藏0

發表評論

0條評論

darryrzhong

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<