徐州制作公司网站,开小程序要多少钱,自己怎么做彩票网站吗,沈阳小装修公司哪家好STM32CubeIDE基础学习-舵机控制实验 文章目录 STM32CubeIDE基础学习-舵机控制实验前言第1章 硬件介绍第2章 工程配置2.1 基础工程配置部分2.2 生成工程代码部分 第3章 代码编写第4章 实验现象总结 前言
SG90、MG996舵机在机器人领域用得非常多#xff0c;因为舵机有内置控制电…STM32CubeIDE基础学习-舵机控制实验 文章目录 STM32CubeIDE基础学习-舵机控制实验前言第1章 硬件介绍第2章 工程配置2.1 基础工程配置部分2.2 生成工程代码部分 第3章 代码编写第4章 实验现象总结 前言
SG90、MG996舵机在机器人领域用得非常多因为舵机有内置控制电路它们的尺寸虽然很小但输出力够大但不同型号的舵机对应的力矩也有不同具体要看具体参数选择。 例如船舵、航模、机器人等都用得非常多。
STM32CubeIDE基础知识学习回顾
实验目的 学习使用定时器输出PWM功能从而实现控制舵机转动指定的角度。 第1章 硬件介绍
舵机控制接口采用定时器4通道3配置时使能该通道即可。
SG90舵机实物如下图所示 这款舵机的控制需要一个20ms为周期的脉冲信号其中高电平的占比在0.5ms ~ 2.5ms之间当高电平的脉宽在0.5ms ~ 2.5ms之间时舵机就可以对应旋转到0 ~ 180度不同的角度。所以可以通过控制控制信号的高电平宽度来调节输出角度从而实现方向的控制。
时间和角度对应的控制关系如下 当然上面这些只是常用且比较好计算的时间和角度关系如果需要旋转其它任意的角度可以改变对应时间即可。
第2章 工程配置
2.1 基础工程配置部分
本实验采用LED实验的工程作为模板直接在上面添加定时器PWM的功能配置即可。
第一步配置定时器时钟源。 按照标号步骤依次选择即可定时器4使用的是内部时钟源通道3输出。
第二步配置定时器和PWM相关参数。 计数配置PSC取7199ARR取199向上计数模式。
PWM配置采用PWM1模式极性为高电平有效参数Pulse的值可以设置也可以不设置让其默认为0这里问题不大后面在使用时还是会改变该值的。
最终定时器及PWM功能配置完成之后可以看到芯片的PA8引脚被配置为了TIM4_CH3如下图所示 2.2 生成工程代码部分
配置完功能之后就可以点击生成工程代码了。 可以看到main文件多了一个定时器的初始化函数和tim.c文件如下图所示 进入定时器初始化函数后如下图所示 里面主要是设置定时器相关参数等。 到此检查生成的初始化代码部分没有问题后就可以编写完成后面的控制功能代码就可以了。
第3章 代码编写
在输出PWM之前需要使能输出通道才可以即使能CC1E位使能之后就可以输出PWM了。直接调用函数如下图所示 根据舵机的控制原理及公式计算比较值为5对应舵机是0度15对应舵机是90度代码编写如下图所示 编译下载代码后可以看到舵机先归零再转90度如此往返旋转。
能单独控制指定角度之后就可以控制常用的角度了代码如下图所示 代码片示例如下 /* Infinite loop *//* USER CODE BEGIN WHILE */while (1){__HAL_TIM_SET_COMPARE(htim4, TIM_CHANNEL_3, 5); /* 0度 */HAL_Delay(1000); /* 旋转间隔时间 */__HAL_TIM_SET_COMPARE(htim4, TIM_CHANNEL_3, 10); /* 45度 */HAL_Delay(1000);__HAL_TIM_SET_COMPARE(htim4, TIM_CHANNEL_3, 15); /* 90度 */HAL_Delay(1000);__HAL_TIM_SET_COMPARE(htim4, TIM_CHANNEL_3, 20); /* 135度 */HAL_Delay(1000);__HAL_TIM_SET_COMPARE(htim4, TIM_CHANNEL_3, 25); /* 180度 */HAL_Delay(1000);/* USER CODE END WHILE */}注意如果前面的PWM模式和极性选择不同则这里的比较值大小也会不同要结合具体情况分析代入。
第4章 实验现象
下载代码后就可以看到舵机可以分别从0度旋转到180度了每次递增45度间隔1秒当旋转到180度时则复位到0度如此往返旋转。 总结
这款SG90舵机还是比较好玩的只要能熟练PWM的使用就可以容易驱动舵机了弄明白时间计算公式把时间代进公式算即可。
注意普通的(没做过电路特殊处理的)单片机开发板不建议接多个舵机3个内一般还可以3个以上可能会对板子造成损害具体要根据板子自身来接。