STM32控制舵机转动_从0到1
清单
- STM32F103C8T6 1个,Jlink下载线 1根
- MG90S舵机 1个
- 12V电源 1个,12V转5V降压模块(给舵机供电) 1个
- 杜邦线数根
MG90S舵机
如图所示,舵机有三根线,红色接5V正极,黑色接地;黄色为信号线,接收PWM信号
实物图
输出PWM控制舵机
STM32控制舵机,总的来说是向舵机信号线发送周期为20ms的PWM(Pulse Width Modulation 脉冲宽度调制)信号来控制舵机转角,PWM脉冲的占空比决定了舵机的转角位置,对应关系如下图;
STM32靠定时器TIM实现PWM信号的输出,STM32有多个定时器,分为通用定时器和高级定时器,每个通用定时器都可以输出4路PWM,本文采用TM2_CH4,及定时器2的第4路PWM;对应STM32F103C8T6上的PB11引脚;
创建工程输出PWM
本文使用STM32CubeMX创建工程,更加简单高效,即便对单片机不熟悉也可操作成功;
一、打开STM32CubeMX,新建一个工程,搜索并选择STM32F103C8,然后start project;
二、进行基本设置,配置RCC、SYS、HCLK
- RCC -> 设置高速外部时钟HSE 选择外部时钟源
- SYS -> 选择Debug方式 serial wire
- HCLK -> 设置为72MHZ
三、设置定时器
- 选择TIM2
- 选择内部时钟源
- 设置Channel4为PWM模式
- 右侧对应管脚自动设置为复用模式
设置定时器参数
控制舵机我们需要设置PWM输出一个周期时间为20ms的信号,定时器时钟为72Mhz
- 预分频Prescaler设置为720-1,则单周期为72M/(Prescaler + 1) = 100Khz(0.01ms)
- 以20ms为周期,则Counter Period为20ms/0.01ms - 1 = 1999
- 此处可设定默认脉冲宽度为0.5ms,及0.5/20*2000 = 50
四、接下来设置输出格式
- 添加工程名PWM
- 修改IDE为MDK-ARM V5
- 在Code Genetator中设置包含库与工程格式
至此STM32CubeMX已设置完成,接下来GENERATE CODE,并打开文件;
在main函数中启动定时器,并输出一定的脉冲的PWM信号即可驱动舵机;
五、修改代码
在main.c文件相应位置处添加如下代码
- 启动PWM输出
- 输出PWM信号
/* USER CODE BEGIN Includes */
#include "stdio.h"
/* USER CODE END Includes *//* USER CODE BEGIN 2 */HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_4); //启动定时器int compareValue = 150; //将compareValue设置为50、150、250分别对应0°、90°、180°/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */__HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_4, compareValue); //输出PWM信号HAL_Delay(10);}/* USER CODE END 3 */
}
添加完以上代码之后,编译,然后通过JLink将程序LOAD到STM32F103C8T6,将舵机信号线连接PB11(TIM2_CHANNEL4)口,并接上电源,舵机即可转动到指定角度;由以上定时器设定可知,compareValue值50、150、250 对应 0.5ms、1.5ms、2.5ms 对应 0°、90°、180°;若想让舵机连续转动,在50~250内循环改变compareValue值即可;
六、接线
开始时用单片机的5V输出给舵机供电,舵机哒哒哒响,但是不转,怀疑是供电不给力,单独供电后驱动成功;
- JIink连接电脑和单片机,下载程序到单片机并给单片机供电
- 舵机黄色信号线接STM32F103C8T6引脚PB11,接收PWM信号
- 舵机红色电源线接稳压板5V输出正极,舵机黑色地线需与单片机地相连
调试
实操中可能会出现各种各样的问题,以下有几种调试方法
一、舵机测试
调试模块一端接电,一段接舵机,手动模式下,舵机会跟着旋钮同步旋转,可以用来测试舵机是否健康;
二、串口调试助手
可下载串口调试助手,用ttl转USB模块连接电脑,在特定位置进行打印输出,检查程序是否按预设运行
STM32控制舵机转动_从0到1相关推荐
- stm32控制舵机任意角度_如何对舵机建模仿真?
卓大大 您能发篇推文讲解一下舵机控制的传递函数如何求解吗 在做智能车仿真时卡在这里了. 舵机的传递函数如何建立 的确,宅在家里手里没有实际的智能车模,也无法实际调试.利用所学习的理论知识来对智能车建模 ...
- 迷你四足机器人制作_从0到1
前言 本文基于STM32F103C8T6作为主控,实现单腿二自由度的舵机驱动小四足:详细介绍了从 简单原理 到 硬件组成 到 代码实现 各个部分. 楼主认为非常适合作为单片机入门的项目,既可简单实现, ...
- STM32超声波模块测距串口输出/通用定时器中断并输出PWM控制舵机/系统定时器延时
参考:stm32 超声波模块 原理 实现测距 +舵机使用 作者:点灯小哥 发布时间: 2021-03-10 19:37:16 网址:https://blog.csdn.net/weixin_46016 ...
- STM32通用定时器输出PWM控制舵机 —— 重装载值、比较值、当前值
参考:stm32 定时器输出PWM原理及工作原理+控制舵机 作者:点灯小哥 发布时间: 2021-03-09 23:17:52 网址:https://blog.csdn.net/weixin_4601 ...
- STM32 PWM控制舵机
目录 舵机简介 舵机工作原理 什么是PWM 硬件连线 代码 实现结果 总结 舵机简介 舵机是指在自动驾驶仪中操纵飞机舵面(操纵面)转动的一种执行部件.分有:①电动舵机,由电动机.传动部件和离合器组成. ...
- stm32中如何使用PCA9685控制舵机(详解)
这里写自定义目录标题 一.PCA9685简介 二.硬件 1.电压 2.i2c地址 3.使能脚 4. 频率 5.地址定义表 6. 舵机角度 最近在公司实习,都说跨入职场是让人进步最快的方式,记录一下我自 ...
- STM32 F767控制舵机
STM32 F767 控制舵机 前两天用阿波罗f7的开发板做了一下舵机控制,写个笔记做个记录以便以后复习,有错误的地方希望大家批评指正. 1. 舵机介绍 2. PWM信号产生原理 3. STM32 F ...
- STM32 PWM控制舵机——原理、接线、源程序
STM32--PWM 控制舵机 通用定时输出PWM PWM的工作原理 PWM的模式 TIM_OCMode_PWM1 (边沿对齐模式) TIM_OCMode_PWM2(中央对齐模式) 占空比 舵机 实物 ...
- STM32控制16路舵机控制板PCA9685
介绍 PCA9685 是最新的快速模式 Plus(Fm+)系列中的一员. Fm+器件可以提供更高的频率 (高达 1MHz)和更频繁(densely populated) 的总线操作(高达 4000pF ...
最新文章
- 现代软件工程 结对编程 (I) 三维棋类游戏
- 计算机的工作原理题,计算机工作原理试题期中试卷
- linux svn强制注释,svn强制提交时添加注释
- tp5 if 如果有html判断,tp5条件判断,in,notin,between,if等
- VIM配置ActionScript
- hadoop-0.21.0 在Windows环境下的部署(1)Cygwin 安装
- 科普篇 | 推荐系统之矩阵分解模型
- POJ1821 Fence
- [react] React16新特性有哪些?
- 数据分析的5层解读,报表仍是有效的落地实践!
- 诡异的ie8堆栈溢出异常
- HTML之基础篇--陈小沫
- Caustics焦散
- element+后台管理系统数据导出为excel+进度条导出
- 多思计组实验实验四、数据通路实验
- 天龙八部手游服务器找不到了,为什么天龙八部手游同样版本,区跟服务器都会 – 手机爱问...
- 一次搞懂:正数 负数 左移<< 右移>> 移位运算规则 移位后的空位添补规则
- 基于matlab的音频信号低通滤波实验
- matlab求kcf算法响应图_matlab求kcf算法响应图_剖析KCF
- 比较笨的ass双语特效ass字幕做法,留档