stm32按键控制mg90s数字舵机、pwm调节舵机转动角度

昨天做了一个简答的小实验,我感觉挺有意思的跟大家分享一下。

我用了按键控制mg90s数字舵机,前不久一直研究模拟舵机,数字舵机与模拟舵机的控制方式是一样的pwm时序。
数字舵机接线方面:

与模拟舵机一样红线接vcc,棕线接GND,黄线接定义的板子引脚。

具体的对应角度如图所示:

在这里插入图片描述
我的板子引脚规定是
舵机信号线接PB5,key0引脚是PC5,key1引脚是PA15

在这里大家看一下我的程序:
main.c

#include "led.h"
#include "delay.h"
#include "sys.h"
#include "key.h"
#include "timer.h"
#include "usart.h"


 int main(void)
 {	
	 
	u8 t=0;	  
	 
	delay_init();	    	 //延时函数初始化	  
	LED_Init();		  	 	//初始化与LED连接的硬件接口
	KEY_Init();          	//初始化与按键连接的硬件接口
	LED0=0;					//点亮LED
	 
	u16 pwm_val=0;

   

   	TIM3_PWM_Init(199, 7199);//50hz
	 
	
	while(1)
	{
		if(KEY1==0)
		{
					pwm_val=190;//45

					TIM_SetCompare2(TIM3,pwm_val);

					delay_ms(2000);
			
					pwm_val=195;//0

					TIM_SetCompare2(TIM3,pwm_val);

		}
		else if(KEY0==0)
		{
					pwm_val=185;//90

					TIM_SetCompare2(TIM3,pwm_val);

					delay_ms(2000);
			
					pwm_val=195;//0

					TIM_SetCompare2(TIM3,pwm_val);

		}
		else if(WK_UP==0)
		{
					pwm_val=180;//45

					TIM_SetCompare2(TIM3,pwm_val);

					delay_ms(2000);
			
					pwm_val=195;//0

					TIM_SetCompare2(TIM3,pwm_val);

		}
	}
}

/**************************************

PB5——PWM信号线(黄线)
+5v——+5v(红线)
GND——GND(棕线)
0度——195
45度——190
90度——185
135度——180
180度——175
**************************************/

  • 5
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 要控制STM32控制任意角度转动,可以利用PWM信号来实现。 首先,我们需要连接STM32MG995。将MG995的信号线连接到STM32的一个PWM输出引脚上,同时将MG995的电源线和地线分别连接到适当的电源和地线上。 接下来,在STM32上编写代码来生成PWM信号。首先,我们需要调整PWM定时器的参数,使其产生适合MG995PWM信号频率。MG995一般工作在50Hz的频率下,所以我们可以选择一个适当的定时器和预分频系数,使得定时器的频率为50Hz。 然后,我们需要根据的目标角度来计算出PWM信号的占空比。MG995的工作范围一般是0-180度,对应的PWM信号的占空比范围一般是2.5% - 12.5%。我们可以根据目标角度计算出所需的占空比,然后将该值设置为PWM信号的占空比。 最后,我们就可以通过改变PWM信号的占空比来控制角度。可以通过设置PWM定时器的占空比寄存器来实现,具体的操作可以在代码中进行。 需要注意的是,不同型号的STM32可能有些许差异,具体的引脚和寄存器设置可能会有所不同。在实际编写代码时,需要参考相应的STM32开发板手册和芯片参考手册。 总结起来,要实现对MG995任意角度转动,在STM32上通过设置PWM信号的占空比来实现。先根据的工作频率调整PWM定时器的参数,然后根据目标角度计算出相应的占空比,最后改变PWM信号的占空比来控制转动角度。 ### 回答2: 要实现STM32控制转动任意角度(0-180度),可以通过以下步骤来进行: 1. 硬件连接:首先,将控制线(通常为黄色线)连接到STM32的任意一个GPIO引脚上,同时将的电源和地线连接到合适的电源和地线引脚上。 2. 配置GPIO引脚:在STM32的开发环境中,需要对所连接的GPIO引脚进行配置。可以使用STM32的库函数来完成这个操作。首先需要初始化GPIO引脚为输出模式,并将其设置为默认低电平。 3. 编写代码:使用STM32提供的库函数或者定时器中断来产生PWM信号。PWM信号的占空比可以控制转动角度。占空比为0%对应0度角度,占空比为100%对应180度角度。可以根据具体的参数来调整控制信号的频率和占空比。 4. 控制角度:在主程序中,可以通过改变PWM信号的占空比来控制角度。可以通过使用定时器来定时更新PWM信号的占空比,或者使用外部触发或串口指令等方式来改变占空比。 5. 调试和优化:根据具体硬件和软件环境,可能需要对控制信号的频率和占空比进行调试和优化,以达到准确控制角度的需求。 总结:以上是一种基本的实现方法,要控制STM32控制转动任意角度,需要连接硬件、配置GPIO引脚、编写代码并进行调试优化等步骤。具体的实现方式可以根据具体的型号、硬件平台和开发环境来进行调整和改进。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值