日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

STM32控制舵机转动_从0到1

發布時間:2024/3/12 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 STM32控制舵机转动_从0到1 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

清單

  • STM32F103C8T6 1個,Jlink下載線 1根
  • MG90S舵機 1個
  • 12V電源 1個,12V轉5V降壓模塊(給舵機供電) 1個
  • 杜邦線數根
  • MG90S舵機

    如圖所示,舵機有三根線,紅色接5V正極,黑色接地;黃色為信號線,接收PWM信號

    實物圖

    輸出PWM控制舵機

    STM32控制舵機,總的來說是向舵機信號線發送周期為20ms的PWM(Pulse Width Modulation 脈沖寬度調制)信號來控制舵機轉角,PWM脈沖的占空比決定了舵機的轉角位置,對應關系如下圖;

    STM32靠定時器TIM實現PWM信號的輸出,STM32有多個定時器,分為通用定時器和高級定時器,每個通用定時器都可以輸出4路PWM,本文采用TM2_CH4,及定時器2的第4路PWM;對應STM32F103C8T6上的PB11引腳;

    創建工程輸出PWM

    本文使用STM32CubeMX創建工程,更加簡單高效,即便對單片機不熟悉也可操作成功;

    一、打開STM32CubeMX,新建一個工程,搜索并選擇STM32F103C8,然后start project;

    二、進行基本設置,配置RCC、SYS、HCLK

  • RCC -> 設置高速外部時鐘HSE 選擇外部時鐘源
  • SYS -> 選擇Debug方式 serial wire
  • HCLK -> 設置為72MHZ


  • 三、設置定時器

  • 選擇TIM2
  • 選擇內部時鐘源
  • 設置Channel4為PWM模式
  • 右側對應管腳自動設置為復用模式
  • 設置定時器參數
    控制舵機我們需要設置PWM輸出一個周期時間為20ms的信號,定時器時鐘為72Mhz

  • 預分頻Prescaler設置為720-1,則單周期為72M/(Prescaler + 1) = 100Khz(0.01ms)
  • 以20ms為周期,則Counter Period為20ms/0.01ms - 1 = 1999
  • 此處可設定默認脈沖寬度為0.5ms,及0.5/20*2000 = 50
  • 四、接下來設置輸出格式

  • 添加工程名PWM
  • 修改IDE為MDK-ARM V5
  • 在Code Genetator中設置包含庫與工程格式

  • 至此STM32CubeMX已設置完成,接下來GENERATE CODE,并打開文件;
    在main函數中啟動定時器,并輸出一定的脈沖的PWM信號即可驅動舵機;

    五、修改代碼

    在main.c文件相應位置處添加如下代碼

  • 啟動PWM輸出
  • 輸出PWM信號
  • /* USER CODE BEGIN Includes */ #include "stdio.h" /* USER CODE END Includes *//* USER CODE BEGIN 2 */HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_4); //啟動定時器int compareValue = 150; //將compareValue設置為50、150、250分別對應0°、90°、180°/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */__HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_4, compareValue); //輸出PWM信號HAL_Delay(10);}/* USER CODE END 3 */ }

    添加完以上代碼之后,編譯,然后通過JLink將程序LOAD到STM32F103C8T6,將舵機信號線連接PB11(TIM2_CHANNEL4)口,并接上電源,舵機即可轉動到指定角度;由以上定時器設定可知,compareValue值50、150、250 對應 0.5ms、1.5ms、2.5ms 對應 0°、90°、180°;若想讓舵機連續轉動,在50~250內循環改變compareValue值即可;

    六、接線

    開始時用單片機的5V輸出給舵機供電,舵機噠噠噠響,但是不轉,懷疑是供電不給力,單獨供電后驅動成功;

  • JIink連接電腦和單片機,下載程序到單片機并給單片機供電
  • 舵機黃色信號線接STM32F103C8T6引腳PB11,接收PWM信號
  • 舵機紅色電源線接穩壓板5V輸出正極,舵機黑色地線需與單片機地相連
  • 調試

    實操中可能會出現各種各樣的問題,以下有幾種調試方法

    一、舵機測試

    調試模塊一端接電,一段接舵機,手動模式下,舵機會跟著旋鈕同步旋轉,可以用來測試舵機是否健康;

    二、串口調試助手

    可下載串口調試助手,用ttl轉USB模塊連接電腦,在特定位置進行打印輸出,檢查程序是否按預設運行

    總結

    以上是生活随笔為你收集整理的STM32控制舵机转动_从0到1的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。