舵機原理與STM32f103 控制

2021-10-03 14:13:12 字數 1818 閱讀 8918

**

舵機是通過高電平的占空比來調節輸出軸的角度,舵機的驅動訊號是50hz的方波訊號,每個週期為20ms,其中高電平的佔比在0.5ms-2.5ms之間,對應關係如下:

0.5ms--------------0度; 

1.0ms------------45度;

1.5ms------------90度;

2.0ms-----------135度;

2.5ms-----------180度;

所以我們可以通過控制控制訊號的高電平長度來調節輸出角度,從而實現方向的控制。

**(1)直流電機轉動一圈,舵機在一定角度內轉動。

但數字舵機可以在舵機模式和電機模式中切換,沒有這個問題。

(2)普通直流電機無法反饋轉動的角度資訊,舵機可以;

(3)用途不同,普通直流電機整圈轉動作動力用,舵機控制某物體轉動一定角度(比如機械人關節)

舵機內部有驅動電路,所以訊號線可以直接接普通i/o口。

如果控制部分和電源部分是分開的,兩者一定要共地(gnd要一起)

**森森也是學習stm32微控制器不久,很明白大家的困難在**。森森不才,說說自己個人心得。

一、csdn確實是乙個很好的**,開始我想搜搜舵機的原理啥的,發現都是廣告,沒有乾貨。抱著試試的態度,csdn上好多有用的東西。我學舵機的第一步就是在csdn上找文章,看原理。

二、**部分

1、困難主要在定時器和pwm波上。因為舵機的驅動訊號是50hz的方波訊號,所以要用定時器通道一配置頻率50hz的pwm波,arr=39999,psc=36,36分頻,pwm頻率=72000000/(36*40000)=50hz。

2、在經過以上設定之後, pwm 其實已經開始輸出了,只是其自動重裝載值和預分頻係數都是固定的,而我們通過修改 tim3_ccr1 則可以控制 ch1 的輸出占空比。繼而控制舵機 的角度。主函式中tim_setcompare2(tim3,led0pwmval)就是控制占空比。

3、定義乙個 2.5ms 的週期,那麼按照上面的原理,當 2.5ms 週期中有 0.5ms 為高電平時候就為 0 度,為 1.0ms 時候就為 45 度,以此類推,原理到此結束

可以利用stm32的 定時器的pwm輸出功能輕鬆地調出我們需要的50hz脈衝訊號,通過調節pwm輸出的時長來調節舵機的角度,定時器的配置**如下:

main函式如下

#include "led.h"

#include "delay.h"

#include "sys.h"

#include "pwm.h"

//舵機是通過高電平的占空比來調節輸出軸的角度,舵機的驅動訊號是50hz的方波訊號,每個週期為20ms,其中高電平的佔比在0.5ms-2.5ms之間,對應關係如下:

// 0.5ms--------------0度;

//  1.0ms------------45度;

//  1.5ms------------90度;

//  2.0ms-----------135度;

//  2.5ms-----------180度;

int main(void)

}

定時器的配置**如下:

void tim3_pwm_init(u16 arr,u16 psc)

STM32F103系列驅動舵機

舵機的控制一般需要乙個20ms左右的時基脈衝,該脈衝的高電平部分一般為0.5ms 2.5ms範圍內的角度控制脈衝部分。以180度角度伺服為例,那麼對應的控制關係是這樣的 0.5ms 0度 1.0ms 45度 1.5ms 90度 2.0ms 135度 2.5ms 180度 由公式 定時器溢位時間 s ...

stm32f103外部中斷

void extix init void 外部中斷0服務程式 void exti9 5 irqhandler void 這是簡單的外部中斷的配置,pc7作為中斷輸入 上面補充io口的初始化 gpio initstructure.gpio mode gpio mode ipu pc6配置為快充指示 1...

STM32F103啟動檔案

目錄 一 概述 二 彙編指令 2.1 equ 2.2 area 2.3 space 2.4 preserve8 2.5 thumb 2.6 export 2.7 dcd 2.8 proc 2.9 ldr 2.10 blx 2.11 bx 2.12 temport 2.13 b 2.14 if,els...