STM32Cubemx PWM驱动SG90舵机

简介: STM32Cubemx PWM驱动SG90舵机

一、SG90相关介绍



名 称:9克舵机 180度

尺 寸:23mmX12.2mmX29mm
重 量:9克

扭 矩:1.5kg/cm
工 作 电 压: 4.2-6V
温 度 范 围:0℃--55℃
运 行 速 度:0.3秒/60度
死 带 宽:10微秒




二、Cubemx配置

sys配置



RCC配置




LED小灯



PWM输出一个周期时间为20ms,初始值为0.5ms

计算方法:Timer定时器时钟我们设置为72Mhz,这里我们将预分频设置为72-1,则一个周期为72Mhz/(71+1)=1Mhz(即1us),所以20ms的周期我们需要计数20000-1=19999个填入Counter

Period参数中。

另外,我们还需要一个默认脉冲宽度为0.5ms的,0.5/20*20000=500



生成工程




三、keil中代码配置

main.c

/* USER CODE BEGIN 0 */
void Set_SG90_angle(TIM_HandleTypeDef * htim,uint32_t Channel,uint8_t angle,uint32_t countPeriod,uint32_t CycleTime)
{
  uint16_t compare_value=0;
  if(angle<=180)
  {
    //角度转化为数值
    compare_value=0.5*countPeriod/CycleTime+angle*countPeriod/CycleTime/90;
    __HAL_TIM_SET_COMPARE(htim, Channel, compare_value);//调整占空比
  }
 
}
 
/* USER CODE END 0 */


初始化,此处舵机到达0度位置

 /* USER CODE BEGIN 2 */
  HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_2);
  /* USER CODE END 2 */


while

 /* USER CODE BEGIN WHILE */ 
 while (1)
  {
      HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_13);
  
      //SG90从0°旋转到180°
      for(uint8_t i=0;i<180;i++)//从0到180°递增
      {
        Set_SG90_angle(&htim3,TIM_CHANNEL_2,i,20000,20);//此函数i设置舵机到达的角度
        HAL_Delay(5);       
      } 
 
      //SG90从180°旋转到0°
      for(uint8_t j=180;j>0;j--)//从180°到0°递减
      {
        Set_SG90_angle(&htim3,TIM_CHANNEL_2,j,20000,20);//此函数设置舵机到达的角度
        HAL_Delay(5);       
      }
 
    /* USER CODE END WHILE */


以上代码实现了舵机在180度水平方向反复运动效果。因为初始化默认舵机停留在-90度位置,可以先注释while中的占空比,调整舵机角度。一定注意舵机供电5V。


链接: https://pan.baidu.com/s/1Gk949glHw9BW_1QC6eFV2g?pwd=8swi

提取码: 8swi

目录
相关文章
|
2月前
|
传感器
手把手在STM32F103C8T6上构建可扩展可移植的DHT11驱动
【8月更文挑战第29天】本文详细介绍在STM32F103C8T6上构建可扩展且可移植的DHT11温湿度传感器驱动的步骤,包括硬件与软件准备、硬件连接、驱动代码编写及测试。通过这些步骤,可根据实际项目需求优化和扩展代码。
|
3月前
STM32Cubemx PWM驱动加湿器模拟火山喷发效果
STM32Cubemx PWM驱动加湿器模拟火山喷发效果
60 14
|
3月前
STM32CubeMX mpu6050驱动
STM32CubeMX mpu6050驱动
64 10
|
3月前
STM32CubeMX WS2812B灯驱动
STM32CubeMX WS2812B灯驱动
159 1
|
3月前
STM32CubeMX ULN2003步进电机驱动
STM32CubeMX ULN2003步进电机驱动
44 0
|
2月前
|
编解码 算法
掌握PWM:STM32F103实现PWM控制直流电机小风扇
PWM,即脉冲宽度调制(Pulse Width Modulation),是一种广泛应用于电子和电机控制领域的信号编码方法。PWM的核心思想是通过改变数字信号的脉冲宽度来模拟模拟信号的幅度变化,从而达到控制输出功率的目的。
331 0
|
3月前
STM32Cubemx TB6612直流电机驱动
STM32Cubemx TB6612直流电机驱动
106 0
|
4月前
使用STM32F103标准库实现定时器控制LED点亮和关闭
通过这篇博客,我们学习了如何使用STM32F103标准库,通过定时器来控制LED的点亮和关闭。我们配置了定时器中断,并在中断处理函数中实现了LED状态的切换。这是一个基础且实用的例子,适合初学者了解STM32定时器和中断的使用。 希望这篇博客对你有所帮助。如果有任何问题或建议,欢迎在评论区留言。
353 2
|
3月前
stm32f407探索者开发板(十七)——串口寄存器库函数配置方法
stm32f407探索者开发板(十七)——串口寄存器库函数配置方法
566 0
|
4月前
|
IDE 开发工具
使用STM32F103标准库实现自定义键盘
通过本文,我们学习了如何使用STM32F103标准库实现一个简单的自定义键盘。我们首先初始化了GPIO引脚,然后实现了一个扫描函数来检测按键状态。这个项目不仅能够帮助我们理解STM32的GPIO配置和按键扫描原理,还可以作为进一步学习中断处理和低功耗设计的基础。希望本文对你有所帮助,祝你在嵌入式开发的道路上不断进步!
468 4