之前的电机成功地转了起来,但其噪音非常大,因为之前尝试过自带细分功能的优质驱动器,关于其具体原理我没有系统学习,在使用L298N驱动电机时就感觉到有些吃力,于是在这里补一下步进电机微步细分原理的功课,以及用另一种控制电机的方法----定时器输出比较

微步细分原理

在我之前提到过的步进电机的工作原理中,我们知道电机定子的转动是通过不同线圈产生的磁场进而驱动电机转动一定步距角来实现的,但是市面上的电机步距角都是出厂时就已经配置好了的,一般为0.9°&1.8°,很明显这种过大的角度是很难满足用户的需求的,因此便有了细分

驱动器细分

以两相四线电机为例,驱动器一般的原理都是通过改变两相的电流差来对磁场的大小进行微操,进而精准地控制转子转过对应的角度,打个比方,如果我的步距角为1.8°,我设置为4细分,则实际上当电机收到一个脉冲时对应转过的角度应该为1.8°/4 = 0.45°

软件细分

如果出现了不带细分功能的驱动器(可能不是专门给步进电机使用的),就需要我们用到软件细分,具体的原理和硬件驱动类似,也是改变两相的电流大小进而产生不同的磁场控制转子转动,这个时候就需要用到定时器,结合上一篇提到的电机单步工作的代码,我们只需要将A-A+B-B+分别接到定时器的两个PWM通道分出四条线接到电机线组上即可,再通过控制输出的占空比和通道极性来实现传输到线圈上的极性和电流大小,具体操作可以参考这篇文章(14条消息) 用PWM实现仪表步进电机的微步细分驱动_张联利的博客-CSDN博客_微步细分

输出比较驱动

这个原理我之前提到了一下下,其实控制电机最基本的就是两点:方向&速度,前者翻转引脚实现,后者则是通过控制发送脉冲数的频率来实现,具体原理为:在输出比较模式下,重装载值ARR已经设定好了,在一个ARR周期中,计时器每记一次比较值CCR,TIM就通过对应的通道发送一次脉冲,举例来说,设定ARR = 1000,CCR = 250,则在一个ARR周期中定时器输出比较通道会发出1000/250 = 4个脉冲,如果此时我将CCR减50,那么定时器能发出的脉冲则变为1000/200  = 5个,电机速度就变快了,因为周期时长不变,脉冲数增多,代表脉冲发送频率增大,电机速度自然增大,下面我来说说如何用代码实现

工程搭建

代码实现

uint8 ccr;    //设置初始比较值
void HAL_TIM_OC_DelayElapsedCallback(TIM_HandleTypeDef *htim)    //定时器比较回调函数
{if(htim->Instance == TIM3){__HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_2,ccr);}
}
/* USER CODE END 0 *//*** @brief  The application entry point.* @retval int*/
int main(void)
{/* USER CODE BEGIN 1 *//* USER CODE END 1 *//* MCU Configuration--------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* USER CODE BEGIN Init *//* USER CODE END Init *//* Configure the system clock */SystemClock_Config();/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals */MX_GPIO_Init();MX_TIM3_Init();/* USER CODE BEGIN 2 */HAL_TIM_OC_Start_IT(&htim3,TIM_CHANNEL_2);    //开启输出比较中断/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */Key = Key_on();   //检测按键switch (Key)    //对应模式{case 1:dir = !dir;Key = 0;break;    //翻转方向case 2:ccr += 50;Key = 0;break;    //电机减速}Motor_Start(dir);   //启动电机}/* USER CODE END 3 */
}

验证实现

结合细分操作,不出意外电机已经可以稳定的转起来了

HAL库配置STM32F1系列定时器驱动步进电机(三)相关推荐

  1. HAL库配置STM32F1系列定时器驱动步进电机(四)(梯形加减速)

    前言 经过之前的一些学习我们已经成功地让电机成功地转了起来,但是在实际应用中这样的电机是很难满足工业上的一些需求的,因为电机在启动和停止时都很难在一瞬间达到目标速度,我们可以从波形图的角度来看,如果我 ...

  2. HAL库配置STM32F1系列PWM驱动步进电机(一)

    步进电机在3D打印机.机床CNC等很多领域有广泛的应用,这个系列用于记录笔者在学习步进电机过程中遇到的问题以及解决思路 1 电机原理 电机的分类有下述几种 具体原理可以参考这篇文章,介绍的很详细 (7 ...

  3. HAL库配置STM32F1系列PWM驱动步进电机(二)

    接着上一篇,我要先补完利用PWM对步进电机进行调速的实验 PWM主要有两大要素:频率&占空比 频率 简单来说就是信号在1s内由高电平跳转到低电平再跳转回高电平的次数,一高一低再一高,这便是一个 ...

  4. STM32F1系列HAL库配置系统时钟

    STM32F1系列HAL库配置系统时钟 其实一开始对于时钟我也是知之甚少,在MSP432中我就一直忽视时钟配置,其实也是在STM32学习时落下的病根,现在趁有空补一下. 时钟简单讲解 对于时钟系统,在 ...

  5. STM32F4系列HAL库配置定时器实验——输入捕获

    STM32F4系列HAL库配置定时器实验--输入捕获 输入捕获简单讲解 输入捕获模式可以用来测量脉冲宽度或者测量频率.我们以测量周期和频率为例,用一个简图来说明输入捕获的原理 假定定时器工作在向上计数 ...

  6. HAL库配置GPIO

    HAL库配置GPIO HAL库与标准库不同的特点: 使用`CubeMX`配置GPIO底层参数: 总结HAL库中GPIO的相关功能: GPIO的寄存器: 总结 HAL库与标准库不同的特点: 标准库中初始 ...

  7. 【STM32】HAL库-系统滴答定时器SysTick

    SysTick定时器被捆绑在NVIC中,是一个简单的定时器,对于CM3.CM4内核芯片,都有Systick定时器.Systick定时器常用来做延时,或者实时系统的心跳时钟.这样可以节省MCU资源,不用 ...

  8. HAL库学STM32 关于定时器的几个问题

    编者按:路漫漫其修远兮,吾将上下而求索.这句从小学在"日积月累"模块背下来的话,是对屈原最深刻的印象了.昨晚又看了三毛的<撒哈拉的故事>,人生的最大的感动,左不过就是在 ...

  9. HAL库配置FreeRTOS

    HAL库配置 配置时钟源 1:修改HAL库定时器时钟源. 由于HAL库内部会使用systick定时器用于系统延时功能,而FreeRTOS也需要一个定时器用于操作系统内核调度的使用,顾需修改HAL库的时 ...

最新文章

  1. 《Windows Server 2012 Hyper-V虚拟化管理实践》——1.3 物理服务器选型建议
  2. 工具栏对象GUI Status 与GUI Title
  3. 叶杰平入选、华人占4成,2020年ACM杰出科学家榜单出炉
  4. 使用@functools.wraps的理由
  5. 网络爬虫入门系列(3) httpClient
  6. 团队开发个人总结05
  7. linux 看不到mysql_linux的mysql下看不到mysql上的其他数据库只能看见 information_schema这一个数据库...
  8. 如何使用ABP框架(2)三层架构与领域驱动设计的对比
  9. eclipse扩展点_Eclipse扩展点评估变得容易
  10. 三星为什么要卖芯片?手机干不过华为小米,半导体好挣钱!
  11. 子进程会继承父进程的哪些内容_【学习教程】Node.js创建子进程方法
  12. 29 MM配置-采购-采购申请-采购申请审批策略-编辑特性
  13. ZABBIX自动发现Redis端口并监控
  14. Linux 内核的网络协议栈
  15. 基于matlab的倒立摆系统,基于matlab的一级倒立摆系统仿真研究
  16. PyHook3 的下载与安装
  17. maven添加阿里云仓库
  18. 第一节计算机课开场白,老师第一节课的开场白
  19. 加班到凌晨三点?一张图看懂华为员工睡眠时间!!
  20. 程序员被科大讯飞裁员:试用期三个月被开,公司连应届生都不放过

热门文章

  1. macOS卸载Karabiner-Elements
  2. ns-3 教程 —— 资源
  3. 从0开始构建一个k8s集群
  4. 鲁能群英荟萃 萝卜开会
  5. 笔杆网试用---感官体验篇一
  6. c语言与多字节编码,什么是单字节,双字节和多字节编码
  7. 评分模型的检验方法和标准信用评分及实现
  8. 垦丁小吃:一碗150元台币的芒果冰
  9. HDU:2026 首字母变大写
  10. 此图形驱动程序无法找到兼容的图形硬件的解决方案(复制粘贴源于百度http://jingyan.baidu.com/article...