在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

【CW32模塊使用】SG90舵機

CW32生態社區 ? 來源:CW32生態社區 ? 作者:CW32生態社區 ? 2025-03-29 17:22 ? 次閱讀

一、模塊來源

模塊實物展示:

wKgZPGflMhmAMzFXAAAm8olbBn8586.jpg


資料鏈接:https://pan.baidu.com/s/1QsTIKnoQsOTCkeYLLTTjTA?pwd=8889
資料提取碼:8889

二、規格參數

驅動電壓:3V~7.2V

工作扭矩:1.6KG/CM

控制方式:PWM

轉動角度:180度

以上信息見廠家資料文件

三、移植過程

我們的目標是將例程移植至CW32F030C8T6開發板上【能夠控制舵機旋轉的功能】。首先要獲取資料,查看數據手冊應如何實現讀取數據,再移植至我們的工程。

3.1查看資料

在購買時,需要分清楚你的舵機可以轉180度,還是360度。360度的舵機是無法控制角度的,只可以控制旋轉速度。

wKgZO2flMhmAObn9AABtdiwZJ4A053.jpg

180度舵機

wKgZPGflMhqAGXw0AACKWilGLgU545.jpg

360度舵機

SG90的舵機轉速不是很快,一般為0.22/60 度或0.18/60 度,所以假如你更改角度控制脈沖的寬度太快時,舵機可能反應不過來。如果需要更快速的反應,就需要更高的轉速了。

3.2引腳選擇

wKgZO2flMhqAdkh-AAAfRAr6tyc945.jpg

wKgZPGflMhuAYN0NAAAjyjValJ8437.jpg

wKgZO2flMhuAEImOAADVONzoL3Y607.jpg

模塊接線圖

3.3移植至工程

移植步驟中的導入.c和.h文件與【CW32模塊使用】DHT11溫濕度傳感器相同,只是將.c和.h文件更改為bsp_sg90.c與bsp_sg90.h。這里不再過多講述,移植完成后面修改相關代碼。

在文件bsp_sg90.c中,編寫如下代碼。

/*
 * Change Logs:
 * Date           Author       Notes
 * 2024-06-25     LCKFB-LP    first version
 */
#include "bsp_sg90.h"

unsigned int Servo_Angle = 0;//舵機角度

/******************************************************************
 * 函 數 名 稱:SG90_Init
 * 函 數 說 明:PWM配置
 * 函 數 形 參:pre定時器時鐘預分頻值    per周期
 * 函 數 返 回:無
 * 作       者:LC
 * 備       注:

配置占空比 范圍 0 ~ (per-1)
//    t = 0.5ms——————-舵機會轉動 0 °
//    t = 1.0ms——————-舵機會轉動 45°
//    t = 1.5ms——————-舵機會轉動 90°
//    t = 2.0ms——————-舵機會轉動 135°
//    t = 2.5ms——————-舵機會轉動180°
//    1.我該如何計算括號里的數,從而實現我想要的功能?
//    此處以90度為例。
//    答:PWM周期為20ms,所以占空比就應該為1.5ms/20ms = 7.5%,
//    所以 TIMx 捕獲比較 1 寄存器值就為period-period*7.5% = 84-84*7.5%=77.7
******************************************************************/
void SG90_Init(void)
{
    // 啟用 GPIO 和定時器時鐘
    RCC_SIG_GPIO_ENABLE();       // 啟用 GPIO 時鐘
    RCC_SIG_TIMER_ENABLE();      // 啟用定時器時鐘

    // 初始化 GPIO
    GPIO_InitTypeDef GPIO_InitStruct;  // GPIO 初始化結構體

    GPIO_InitStruct.Pins = GPIO_SIG;             // GPIO 引腳
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;  // 推挽輸出模式
    GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;     // 高速

    GPIO_AF_SIG_ENABLE();       // 啟用 GPIO 復用功能

    GPIO_Init(PORT_SIG, &GPIO_InitStruct);    // 初始化 GPIO

    // 初始化定時器 (GTIM3)
    GTIM_InitTypeDef GTIM_InitStruct;  // 定時器初始化結構體

    GTIM_InitStruct.Mode = GTIM_MODE_TIME;              // 定時器模式
    GTIM_InitStruct.OneShotMode = GTIM_COUNT_CONTINUE;  // 連續計數模式
    GTIM_InitStruct.Prescaler = GTIM_PRESCALER_DIV64;   // 預分頻器 (DCLK = PCLK / 64 = 64 MHz / 64 = 1 MHz)
    GTIM_InitStruct.ReloadValue = 20000 - 1;            // 重裝載值 (20 ms 周期)
    GTIM_InitStruct.ToggleOutState = ENABLE;            // 輸出翻轉功能

    GTIM_TimeBaseInit(BSP_SIG_TIMER, >IM_InitStruct);  // 初始化定時器

    GTIM_OCInit(BSP_SIG_TIMER, BSP_PWM_CHANNEL, GTIM_OC_OUTPUT_PWM_LOW); // 配置輸出比較通道為低電平有效的 PWM 模式

    GTIM_Cmd(BSP_SIG_TIMER, ENABLE);  // 啟用定時器
}


/******************************************************************
 * 函 數 名 稱:Set_Servo_Angle
 * 函 數 說 明:設置角度
 * 函 數 形 參:angle=要設置的角度,范圍0-180
 * 函 數 返 回:無
 * 作       者:LC
 * 備       注:無
******************************************************************/
void Set_Servo_Angle(unsigned int angle)
{
    if(angle > 180)
    {
        angle = 180; // 限制角度在0到180度之間
    }

    // 計算PWM占空比
    // 注意:這里的20000是基于GTIM_Period設置為20000的
    // 0.5ms對應的計數 = (0.5 / 20) * 20000
    // 2.5ms對應的計數 = (2.5 / 20) * 20000
    // 因此,角度從0到180度時,占空比應該從0.5ms到2.5ms線性變化
    unsigned int ServoAngle = (unsigned int)((0.5 + (angle / 180.0) * 2.0) / 20.0 * 20000);

    GTIM_SetCompare1(BSP_SIG_TIMER, ServoAngle);
}


/******************************************************************
 * 函 數 名 稱:讀取當前角度
 * 函 數 說 明:Get_Servo_Angle
 * 函 數 形 參:無
 * 函 數 返 回:當前角度
 * 作       者:LC
 * 備       注:使用前必須確保之前使用過
                void Set_Servo_Angle(unsigned int angle)
                函數設置過角度
******************************************************************/
unsigned int Get_Servo_Angle(void)
{
        return Servo_Angle;
}

在文件bsp_sg90.h中,編寫如下代碼。

/*
 * Change Logs:
 * Date           Author       Notes
 * 2024-06-25     LCKFB-LP    first version
 */

#ifndef _BSP_SG90_H
#define _BSP_SG90_H

#include "board.h"

#define RCC_SIG_GPIO_ENABLE()       __RCC_GPIOA_CLK_ENABLE()

#define PORT_SIG                    CW_GPIOA

#define GPIO_SIG                    GPIO_PIN_6

#define GPIO_AF_SIG_ENABLE()        PA06_AFx_GTIM3CH1()

#define RCC_SIG_TIMER_ENABLE()      __RCC_GTIM3_CLK_ENABLE()
#define BSP_SIG_TIMER               CW_GTIM3  // 定時器
#define BSP_PWM_CHANNEL             GTIM_CHANNEL1



void SG90_Init(void);
void Set_Servo_Angle(unsigned int angle);
unsigned int Get_Servo_Angle(void);
void TIM3_PWM_Init_AllChannel(void);

#endif

四、移植驗證

在自己工程中的main主函數中,編寫如下。

/*
 * Change Logs:
 * Date           Author       Notes
 * 2024-06-25     LCKFB-LP    first version
 */
#include "board.h"
#include "stdio.h"
#include "bsp_uart.h"
#include "bsp_sg90.h"

int32_t main(void)
{
    int i = 0;

    board_init();

    uart1_init(115200U);

    SG90_Init();
    Set_Servo_Angle(180);
    delay_ms(1000);
    Set_Servo_Angle(0);
    delay_ms(1000);

    while(1)
    {

        Set_Servo_Angle(i++);
        if( i >= 180 )
        {
            i = 0;
        }

        delay_ms(10);
    }
}

移植現象:舵機從0度轉到180度后,再從0度重新開始轉。

wKgZPGflMhuAA30JAABXTT4j_TE066.jpg

模塊移植成功案例代碼:

鏈接:https://pan.baidu.com/s/1bWrJCuW5w55yN94rDQfZGQ?pwd=LCKF

提取碼:LCKF

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 開發板
    +關注

    關注

    25

    文章

    5339

    瀏覽量

    100411
  • 舵機
    +關注

    關注

    17

    文章

    292

    瀏覽量

    41547
  • CW32
    +關注

    關注

    1

    文章

    232

    瀏覽量

    1001
收藏 人收藏

    評論

    相關推薦

    舵機SG90

    ` 本帖最后由 街甪丶的祝福 于 2017-8-7 16:12 編輯 有沒有哪位大佬,會搞SG90,如果有51控制程序或者51改變舵機方向的程序,能否發一個給我,謝謝!!!這種舵機,沒有人搞過嗎?`
    發表于 08-07 10:55

    有關SG90伺服電機(舵機)的基礎知識匯總

    什么是SG90伺服電機(舵機)?SG90伺服電機(舵機)的硬件包括哪些部分?
    發表于 06-28 07:32

    如何利用51單片機去控制SG90舵機

    SG90舵機是如何進行接線的?SG90舵機旋轉的角度有哪幾種?如何利用51單片機去控制SG90舵機
    發表于 07-29 07:50

    控制舵機SG90的教程

    目錄前言一、SG90舵機二、CubeMax配置1.選型2.配置時鐘樹3.PWM相關定時器配置4.生成代碼三、代碼編寫總結前言這是一篇基于STM32F429的保姆級入門的用CubeMAX配置生成并編寫
    發表于 08-10 06:05

    SG90馬達使用介紹

    介紹SG90 是基礎使用廣泛,分90度版、180度版、360度版,除了旋轉角度不同,其他都一樣,MG90S相當于SG90的金屬齒加強版,安裝尺寸和S
    發表于 09-13 07:34

    如何使用STM32來驅動SG90舵機

    如何使用STM32來驅動SG90舵機
    發表于 11-26 07:17

    SG90舵機+超聲波簡介

    +超聲波模塊,這個舵機SG90模擬舵機,網上有很多的資料模擬電機與數字電機的區別SG90的驅動是靠不同占空比的50hz的PWM波來控制0度
    發表于 01-05 06:09

    SG90舵機的相關資料推薦

    【基于STM32】Stduino拓展學習(二)SG90舵機本文轉載自:http://www.stduino.com/forum.php?mod=viewthread&tid=64&
    發表于 01-17 08:12

    STM32驅動SG90舵機的方法

    1. 材料介紹STM32F103VET6開發板,此處我使用的是野火的指南者,不過F103系列的應該都是可以通用的,具體大家可以自行參考相對應開發板的用戶手冊。SG90舵機一個。我使用的是180°旋轉
    發表于 02-21 06:54

    STM32控制SG90舵機的方法步驟

    STM32控制SG90舵機 在這篇博客中,我講解的是SG90的180°型號的舵機。其它型號的舵機也可以參考。首先,
    發表于 02-21 07:21

    如何使用STM32來驅動SG90舵機

    如何使用STM32來驅動SG90舵機
    發表于 02-28 07:14

    微雪電子SG90舵機簡介

    SG90舵機 機器車 航模 機械手臂配件 轉動角度:180°、產品扭矩:2.0kg/cm(4.8V),2.2kg/cm(6V) 型號 SG90 Servo
    的頭像 發表于 12-30 10:36 ?3.1w次閱讀
    微雪電子<b class='flag-5'>SG90</b><b class='flag-5'>舵機</b>簡介

    STM32驅動SG90舵機

    1. 材料介紹STM32F103VET6開發板,此處我使用的是野火的指南者,不過F103系列的應該都是可以通用的,具體大家可以自行參考相對應開發板的用戶手冊。SG90舵機一個。我使用的是180°旋轉
    發表于 12-24 19:24 ?48次下載
    STM32驅動<b class='flag-5'>SG90</b><b class='flag-5'>舵機</b>

    pwm控制SG90舵機資料分享

    pwm控制SG90舵機資料分享
    發表于 07-10 09:22 ?42次下載

    RK3568開發板SG90 舵機模塊的功能實現

    RK3568開發板SG90 舵機模塊的功能實現-迅為電子
    的頭像 發表于 09-20 14:29 ?1017次閱讀
    RK3568開發板<b class='flag-5'>SG90</b> <b class='flag-5'>舵機</b><b class='flag-5'>模塊</b>的功能實現
    主站蜘蛛池模板: 四虎永久在线观看免费网站网址 | 亚洲天堂网在线观看 | 在线视频免费视频网站 | 亚洲小便 | 黄色在线观看网站 | 极品美女洗澡后露粉嫩木耳视频 | 性夜影院爽黄e爽在线观看 羞羞色院91精品网站 | 色婷婷社区 | 久久久噜噜噜久久中文字幕色伊伊 | 天堂最新版免费观看 | 六月婷婷在线 | 伊人久久大香线蕉电影院 | 全色网站 | 人人澡 人人澡 人人看 | 亚洲男人的天堂久久香蕉网 | 2019偷偷狠狠的日日 | 日本黄色一区 | 一级毛片一级毛片一级级毛片 | 色老头久久久久久久久久 | 国模私拍一区二区三区 | 日日爽夜夜| 激情婷婷综合久久久久 | 五月婷婷之婷婷 | 婷五月综合 | 亚洲最大色网站 | 日本三级在线观看免费 | 亚洲成网站www久久九 | 色妹子综合 | 免费欧洲美女与动zooz | 亚洲国产精品综合久久网络 | 国产午夜精品理论片 | 上色天天综合网 | 午夜免费体验 | 一区二区高清在线 | 国产精品一久久香蕉产线看 | 精品精品国产自在久久高清 | 女人张开腿让男人做爽爽 | 日韩黄a级成人毛片 | 欧美亚洲综合另类型色妞 | 台湾黄色毛片 | 四虎影院观看视频在线观看 |