STM32F103单片机控制SG90舵机

前言

在智能衣柜系统中,试用SG90旋转0°-180°,模拟衣柜的开关门,舵机正转开门,180°-0°反转模拟一个关门的现象。

一,SG90舵机

1.1SG90链接:

【淘宝】https://m.tb.cn/h.UjfPasG?tk=10CNdeeB4Il CZ0001 「SG90 9g舵机MG996R mg90s MG995模块马达遥控飞机航模9克360度180」
点击链接直接打开 或者 淘宝搜索直接打开

1.2SG90舵机

图:1.1.1SG90舵机图片

 舵机是一种角度伺服的驱动器,使用于不断变换角度的控制系统,舵机可以接收单片机PWM信号,PWM周期为20ms,通过调整电平pwm不同的占空比,实现舵机不同角度的驱动,如下图所示

二,舵机----STM32CUBEMAX部分

2.1 时钟树配置

第一步:时钟树配置频率为72Mhz,挂载在APB1和APB2上的定时器频率也设置为72Mhz。

 第二步:RCC时钟配置如下。

 第三步:开启定时器3,时钟来源为内部时钟,使用PWM通道1驱动舵机        

 第四步:定时器基础配置如下所示,预分频计数值为720-1,重装载计数值为2000,pwm配置1000-1

 数值参考以下公式:

计算过程,可以根据自己不同的定时器频率计算。 

 第六步:定时器配置好之后,可以靠芯片引脚为PA6。

 

三 ,软件部分---Keilv5代码部分

第一步:在main函数中调用HAL库函数,实现pwm初始化

 代码如下:

 HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_1);

第二步:在main函数中测试舵机不同占空比的选择角度

 代码段:

  printf("45\r\n");
	 __HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_1,50);
	  HAL_Delay(1000);
	  printf("90\r\n");
	 __HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_1,100);
	   HAL_Delay(1000);
	  printf("135\r\n");
	   __HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_1,150);
	   HAL_Delay(1000);
	  printf("180\r\n");
	   __HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_1,200);
	  HAL_Delay(1000);
	  printf("0\r\n");
	   __HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_1,250);
	   HAL_Delay(1000);

四:测试

SG舵机接线说明:橙色线接信号线(PA6),红色线:接芯片3.3V/5V电源,棕色接GND注意电源线不要接反了。三根线是合并在一起的,测试时候不太方便,建议买一点公母杜邦线,把舵机的接口引出来好接线测试

sscom串口输出测试:

实际控制测试

9d6204de08c013f3dd4a569b19bd03bf

五:总结

sg90舵机工作驱动频率为50mhz,定时器产生的20时钟周期,通过pwm调制高低电平实现不同的占空比,使其旋转不同角度。文章可能还是有点问题,希望大家多多交流指正。

说一下可能后面的步进电机部分不会很快发出来了,先把蓝牙模块和显示屏模块给更出来。公司项目有点忙,有点分身乏术。

对STM32单片机感兴趣的同学可以在b站搜索 up洋桃电子 ,观看stm32物联网入门30步,这个up说的比较通俗易哦。

  • 8
    点赞
  • 75
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于STM32的PWM波控制舵机是一种常见的应用。舵机是一种位置伺服的驱动器,可以通过控制PWM波的脉冲宽度来控制舵机的角度。在STM32中,可以使用定时器来产生PWM输出信号。定时器的输出通道可以连接到舵机控制引脚,通过改变PWM波的脉冲宽度来控制舵机的角度。 在STM32中,可以使用不同的定时器和通道来控制多个舵机。例如,使用TIM1和TIM8高级定时器可以同时产生多达7路的PWM输出,而通用定时器也可以同时产生多达4路的PWM输出。这样,STM32最多可以同时产生30路PWM输出。 要控制舵机的角度,需要设置PWM的周期和占空比。PWM的周期是指信号从高电平到低电平再回到高电平的时间,而占空比是指高电平的时间占整个周期的比例。通过改变占空比,可以改变舵机的角度。 因此,基于STM32的PWM波控制舵机的步骤如下: 1. 配置定时器的工作模式和频率,设置PWM的周期。 2. 配置定时器的输出通道,将其连接到舵机控制引脚。 3. 设置PWM的占空比,通过改变占空比来控制舵机的角度。 需要注意的是,不同型号的舵机可能有不同的控制方式和电气特性,因此在控制舵机之前,需要查阅舵机的规格书,了解其控制方式和电气参数,以确保正确的控制舵机。 引用[1]:在机器人机电控制系统中,舵机控制效果是性能的重要影响因素。舵机可以在微机电系统和航模中作为基本的输出执行机构,其简单的控制和输出使得单片机系统非常容易与之接口。舵机是一种位置(角度)伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。目前在高档遥控玩具,如航模,包括飞机模型,潜艇模型;遥控机器人中已经使用得比较普遍。舵机是一种俗称,其实是一种伺服马达。本次实验使用的舵机是MG90S。[1] 引用[3]:简介 脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。简单一点,就是对脉冲宽度的控制STM32 的定时器除了 TIM6 和 7。其他的定时器都可以用来产生 PWM 输出。其中高级定时器 TIM1 和 TIM8 可以同时产生多达 7 路的 PWM 输出。而通用定时器也能同时产生多达 4路的 PWM 输出,这样,STM32 最多可以同时产生 30 路 PWM 输出!PWM的频率 是指1秒钟内信号从高电平到低电平再回到高电平的次数(一个周期);也就是说一秒钟PWM有多少个周期。PWM的周期 T=1/f 周期=1/频率[3]。 因此,基于STM32的PWM波控制舵机的步骤如下: 1. 配置定时器的工作模式和频率,设置PWM的周期。 2. 配置定时器的输出通道,将其连接到舵机控制引脚。 3. 设置PWM的占空比,通过改变占空比来控制舵机的角度。 需要注意的是,不同型号的舵机可能有不同的控制方式和电气特性,因此在控制舵机之前,需要查阅舵机的规格书,了解其控制方式和电气参数,以确保正确的控制舵机

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值