步进电机的驱动原理

步进电机的知识涉及到比较多的东西,这里只是简单介绍一下,关于具体的知识之后再补充。

步进电机的驱动原理时期就是电磁感应现象,给步进电机供电流,然后会产生磁场,再合成磁场的方向,驱动电机转动。

电机需要一个H桥来控制电机的转动方向。H桥其实就是4个mos管,要实现电机的方向控制,只需要控制对角的两个mos管就可以见下图

                                                                

电机的转动方向就是这样决定的,接下来说一下电机的驱动。

我们知道要驱动电机就得靠PWM波来实现, PWM波有两个重要的参数,一个是占空比,一个是周期(频率)。而占空比是影响电机转速的重要因素,占空比越大,电机转速越快。在stm32里就是修改定时器的分频系数和重装载值。

另外电机有几个参数比较重要

步距角:就是指输入一个脉冲给电机,电机转过的角度。例如博主使用的电机的步距角是1.8°(整步),所以需要360/1.8=200个脉冲才能让电机转一圈。

减速比:减速比1:x是指电机的转轴转动x圈,电机转动一圈(我们人眼看到的电机转动的一圈),x越小电机转速越快

细分:细分的作用是提高电机的转动精度和平稳性

stm32定时器的PWM模式可以可产生PWM波来驱动步进电机。

stm32产生pwm波的原理就是通过定时器的ARR和CCRx寄存器来产生PWM波,具体看下图

定时器工作之后定时器的CNT寄存器就会自加,自加一次就会跟CCRx寄存器去比较, 当CNT<CCRx就输出低电平,如果CNT>CCRx则输出高电平。当计数值到达ARR之后,又开始下一个比较周期。这样的话就可以得到一个PWM波了。由上面可以 看出,周期是由ARR决定的,CCRx决定占空比,关于这部分的内容之后再找时间去写,今天就到这里了。

DRV8711这个驱动芯片的功能还是很强大的,驱动能力很强,可以驱动很大的电机,但是驱动的是两相电机。具体的一些描述我就不说,就算说也是从手册上抄下来,有兴趣的可以自己去看一下手册。

我测试的时候是用demo板来测试的,所以我接下来所说的都是基于demo板的,如果自己layout一块pcb板的话可能有所不同,仅供参考。

所以说一下这个模块的连接。首先这个芯片是SPI通信的,关于SPI通信自己可以网上百度相关知识。我的连接情况是芯片的SDI->PA7,SDO->PA6,CLK->PA5,NSS->PC4。了解SPI的都知道必须要有这四根线。

然后要确保SPI通信成功,你还要配置两个引脚。第一个是reset,第二个是sleep。reset很简单就是复位,每次上电都执行复位,这个脚是低电平有效,然后是sleep,这个脚是唤醒芯片的,高电平有效,芯片工作,低电平的时候芯片处于休眠状态。这两个脚在SPI之前就一定要配置成低电平和高电平,否则芯片不能工作,建议直接接GND和VCC

然后有两个脚是可以获取电机或者说是芯片工作状态的。STALL和FAULT。STALL就是电机失步的时候输出一个低电平给芯片。同时,如果芯片工作出错(至于什么错我也不知道,我暂时没有遇到),就会输出一个低电平给芯片。在demo板上的直接表现就是有两个对应的等会亮。

另外还有两个BIN1和BIN2,按照手册描述这两个脚是桥B的输入1和2。在索引器模式的时候是没有作用的,外部PWM模式的时候控制桥B内部上拉。我在测试的时候直接把这两个脚悬空,但是推荐的电路是接地。这两个脚什么意思我也不太懂。

到这里大概就完成了。然后再配置你自己的需要的电机代码就OK了。开一个定时器就可以控制电机了。之后上传这个工程,自己写的工程是用cube生成的,cube生成的代码是用HAL库的,没用过的要谨慎下载!!!!

参考:https://baijiahao.baidu.com/s?id=1620634997231677691&wfr=spider&for=pc

https://wenku.baidu.com/view/a32e7f6baaea998fcd220e3e.html

STM32+DRV8711驱动步进电机相关推荐

  1. STM32+ULN2003驱动步进电机

    选用的步进电机的型号为28BYJ-48(或MP28GA,5V,转速比1/64),驱动电路选用uln2003芯片的驱动板,其控制时序图如下: 四相八拍:A->AB->B ->BC -& ...

  2. 【STM32篇】4988驱动步进电机

    本文介绍的步进电机驱动为毕设所用,学习时也借鉴了其他博主和商家的资料,介绍的都很详细.但对于刚入门的友友萌来说,可能还会存在的一些不解.而我就是被卡在驱动电源上.下文为我对4988驱动的一些理解,希望 ...

  3. STM32H743+CubeMX-SPI与DRV8889串行通讯,驱动步进电机

    文章目录 一.前言 二.硬件设计 2.1.PCB原理图设计 2.2.PCB Layout 三.CubeMX 3.1.RCC 3.2.DEBUG 3.3.Clock Configuration 3.4. ...

  4. arduino步进电机程序库_【MM32 eMiniBoard测评报告】+驱动步进电机

    1. 引言 先简单聊一下我与MM32的故事.在去年,我开始做BLDC的项目,于是开始学习了解各家的mcu及其解决方案.有幸获得了灵动微电子的MM32 SPIN系列开发板,给我的感觉是开发板做工精良,开 ...

  5. 【Proteus仿真】【STM32单片机】步进电机控制系统设计

    文章目录 一.主要功能 二.硬件资源 三.软件设计 四.实验现象 联系作者 一.主要功能 本项目使用Proteus8仿真STM32单片机控制器,使用ULN2003电机模块.LCD1602模块.按键模块 ...

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

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

  7. 【Proteus仿真】Arduino+uln2003驱动步进电机+单按键启保停正反转控制

    [Proteus仿真]Arduino+uln2003驱动步进电机+单按键启保停正反转控制 Proteus仿真 功能实现 采用外部中断来获取按键信息 程序代码 #define LED ( 13 )#de ...

  8. 【Proteus仿真】Arduino UNO利用Stepper库实现uln2003驱动步进电机转动

    [Proteus仿真]Arduino UNO利用Stepper库实现uln2003驱动步进电机转动 Proteus仿真 Proteus说明 Proteus软件里面的步进电机的步距角默认是90,和代码中 ...

  9. 【Proteus仿真】Arduino UNO+uln2003驱动步进电机+按键启保停正反转控制

    [Proteus仿真]Arduino UNO+uln2003驱动步进电机+按键启保停正反转控制 Proteus仿真演示 功能说明 正反转采用2和3 引脚外部中断,3和4引脚调节加减速. 示例程序代码 ...

最新文章

  1. 利用 AssemblyAI 在 PyTorch 中建立端到端的语音识别模型
  2. 阿姨帮悬赏通缉,紧急扩散!
  3. selenium作业题
  4. Unity3d Time的使用
  5. 浅谈数据结构-平衡二叉树
  6. 【转】sqlserver游标概念与实例全面解说
  7. 2007.2.14 日程安排
  8. 有向图生成树是如何画的_漫画:什么是最小生成树?
  9. 【Google 行销课】产品关键词的搜索门道
  10. python示例_Python中的缩进示例
  11. wikioi 1306 机智Trie树
  12. 2017-11-17 为Python添加中文关键字 1
  13. 找不到或是无法加载主类 不是原创
  14. ET7.0+HybridCLR(huatuo)热更教程
  15. c语言中数组int*,C语言数组
  16. Rtf(富文本格式)解析
  17. EDGE浏览器打开网页缓慢解决
  18. 计算机混合运算java,大话Java混合运算规则
  19. 搭配Online:南方航2020年1月正式退出天合联盟
  20. 图像的模式(RGB和CMYK)、通道(8位、16位、32位)分别有什么作用

热门文章

  1. linux可执行文件剪裁
  2. xfs文件系统恢复工具xfs_undelete
  3. 地理坐标系、投影坐标系详解
  4. 机器学习-贝叶斯分类
  5. 机器学习与深度学习:微积分知识汇总
  6. 到底什么是用户体验?
  7. hdu 2852 KiKi's K-Number (线段树)
  8. 下载的时候提示:“写入到文件时产生错误(请用磁盘检查工具检查修复)”的解决办法
  9. ps参考线设置,ps参考线定位,ps参考线怎么用
  10. Java md5加解密汉字_Java加解密_MD5