**
舵機是通過高電平的占空比來調節輸出軸的角度,舵機的驅動訊號是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...