1002|2

75

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

【ST NUCLEO-U5A5ZJ-Q开发板测评】3PWM驱动SG90舵机 [复制链接]

准备工作:
1.硬件工具:
SG90舵机,单片机本体,一根usb数据线,杜邦线
2.软件工具:
STM32CubeMAX,STM32CubeIDE
3.需要了解
SG90舵机所需信号,脉宽调制信号(PWM):对于180°的舵机,一般来说周期为20ms(频率为50Hz),脉宽(一个周期内高电平持续时间)为500–2500us。其中为1500us使得舵机转轮处于中间位置,可以理解为90°的位置,为500-1500us和1500–2500us之间分别会朝着0–90°和90–180°的方向旋转。
4.接线
舵机从上至下的棕色红色橙色线分别对应GND,VCC,PWM信号线,注意vcc需接5v电压方可驱动,PWM信号线接单片机上D9引脚
具体步骤:

 

1.配置CubeMAX
通过翻阅手册,这里选用D9引脚,定时器4通道4
打开cubemax,芯片选择等基础操作不再多赘述,来到引脚配置,找到D9对应的PD15,选择启用定时器

 

选择石英晶振
时钟树配置
接下来来到最重要的一步,配置PWM,首先启用通道4,开启内部时钟
这里频率是160MHz,首先将其16000分频:现在的计数器加一需要消耗的事件为1/(160MHz/16000)= 0.1ms,想要周期为20ms,那就需要计数20/0.1 = 200次,那么自动重装载值就是200,现在周期为20ms,我们需要设置脉宽了,计数200就是20ms,想要高电平持续时间为1.5ms,就需要计数15次,那么我们的比较值就需要是15
 
2.代码生成

 

  1. 启动PWM的输出
    在main函数里边添加:
    ​HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_4);

    表示启动定时器4,通道4的PWM输出

  2. 在while循环里边添加:

    TIM4->CCR4=5;
    HAL_Delay(2000);
    TIM4->CCR4=15;
    HAL_Delay(2000);
    
    ​

    表示改变比较值,使输出的脉宽在500us和1500us之间进行切换,从而实现角度的偏转。

  3. 整体main函数:

    int main(void)
    {
      /* USER CODE BEGIN 1 */
    
      /* USER CODE END 1 */
    
      /* MCU Configuration--------------------------------------------------------*/
    
      /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
      HAL_Init();
    
      /* USER CODE BEGIN Init */
    
      /* USER CODE END Init */
    
      /* Configure the system clock */
      SystemClock_Config();
    
      /* Configure the System Power */
      SystemPower_Config();
    
      /* USER CODE BEGIN SysInit */
    
      /* USER CODE END SysInit */
    
      /* Initialize all configured peripherals */
      MX_GPIO_Init();
      MX_ICACHE_Init();
      MX_MEMORYMAP_Init();
      MX_TIM4_Init();
      /* USER CODE BEGIN 2 */
      HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_4);
      /* USER CODE END 2 */
    
      /* Infinite loop */
      /* USER CODE BEGIN WHILE */
      while (1)
      {
        /* USER CODE END WHILE */
    	          TIM4->CCR4=5;
    	  	  	  HAL_Delay(2000);
    	  	  	  TIM4->CCR4=15;
    	  	  	  HAL_Delay(2000);
        /* USER CODE BEGIN 3 */
      }
      /* USER CODE END 3 */
    }

    3.现象

    8dfa09be359e3d448efa886bba11c8e4

可以看到定时器旋转了90度

工程: PWMSG90.zip (15.88 MB, 下载次数: 0)

 

此帖出自stm32/stm8论坛

最新回复

编写一个用串口通信控制舵机旋转任意角度看看  详情 回复 发表于 2024-2-4 16:10
点赞 关注
 

回复
举报

243

帖子

0

TA的资源

纯净的硅(初级)

沙发
 

编写一个用串口通信控制舵机旋转任意角度看看


此帖出自stm32/stm8论坛

点评

想法可以,再封装一个角度的函数,我研究研究  详情 回复 发表于 2024-2-5 15:39
 
 

回复

75

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
qiao--- 发表于 2024-2-4 16:10 编写一个用串口通信控制舵机旋转任意角度看看

想法可以,再封装一个角度的函数,我研究研究

此帖出自stm32/stm8论坛
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表