一、查看电路板连接引脚

如图,脉冲PUL和方向DIR信号,我这里暂时只用脉冲引脚,所以只需用到PA6引脚以及该引脚的复用功能T3C1。

二、PWM

步进电机需要用PWM来驱动电机,使用PWM需要了解三个参数:

这里CK_PSC是内部时钟频率(用的什么时钟就是什么时钟频率),如果是内部时钟的话一般为72Mhz。

ARR:自动重装器

PSC:预分频器

CCR: 捕获/比较寄存器

为了实现自定义频率脉冲量的输出,需要知道这三个参数的具体逻辑,关系如下:

理解一下流程,72Mhz的时钟频率,理解为1s要数72M次,然后到预分频器这里,就分频,比如PSC当前值为720,那么分频之后的值就为10kHz(72Mhz/720),然后计数器计数,当计数器计到自动重装器的值时,就发出一个更新事件,比如说ARR的值当前为100,那么计数器每满100就触发一次,而这触发一次也叫一个周期,当记到10k时(也就是分频之后的时钟频率)就相当于内部时钟走了1秒,所以这1000个周期走了1s,就是PWM的频率1000Hz,分辨率就是这一个周期走的次数的倒数,是调整频率和占空比时的精细程度,当一个周期次数越多调整的就越精细,占空比的话就用CCR的值除以ARR+1的值,根据自己需要的占空比来调整CCR的值即可。

总结结论:

1、在一定范围内,ARR值越大,占空比和频率就越精确

2、CRR用来调占空比

3、一秒需要的脉冲量,由PSC和ARR决定

三、keil5程序

3.1 h文件

Init函数用于初始化各个引脚和设置PWM的参数;

SetCompare1用来调整占空比,可以通过调整占空比的不同实现呼吸灯等功能;

Start是开启PWM,Stop是关闭PWM,本质上也就是关闭和开启时钟。

3.2 C文件

3.2.1 INIT函数

流程是:

1、开启APB1、APB2的总线时钟,这里GPIO和时钟的选择是根据步骤一中的电路图中得出;

2、初始化GPIO,因为是功能复用成PWM的通道1,所以输出必须为复用推挽输出即AF_PP;

3、初始化TIM3时钟,这里TIM_CKD_DIV1表示不分频,DIV2就是二分频;

4、设置普通时钟输出PWM,TIM_OCPolarity_High这里是根据高电频有效选择的,TIM_OC1Init是根据电路图T3C1选择C1通道的

3.2.2 剩余函数

start和stop本质就是使能TIM3时钟,因为TIM3复用为PWM,也就相当于控制PWM的开关。

3.3 运行程序

这里是设置一秒发送1000个脉冲,最后电机运行实验符合预期目标。

本文参考b站江科大自化协的视频:PWM驱动。

【keil5】pwm驱动步进电机相关推荐

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

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

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

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

  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. 龙芯智龙开发板:驱动步进电机实战入门

    本文面向初学者,请多各位高手包涵.我在此特别致谢勤为本先生为我提供的帮助. 步进电机 步进电机就是一种受脉冲控制的电机,步进电机接收到一系列某种调制顺序的脉冲,做出相应的反应,转到相应的角度或者相应的 ...

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

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

  6. fpga驱动步进电机转动指定角度_PLC对步进电机进行定位控制程序

    三菱PLC和步进电机驱动器的接线图 步进电机是一种将电脉冲转化为角位移的执行机构.当步进驱动器接收到一个脉冲信号时就驱动步进电机按设定的方向转动一个固定的角度(称为"步距角"),其 ...

  7. linux驱动编写(pwm驱动)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] pwm方波可以用来控制很多的设备,比如它可以被用来控制电机.简单来说,就是单位时间内的方波越多, ...

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

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

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

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

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

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

最新文章

  1. git 工作区和暂存区
  2. 希尔排序算法原理与实现
  3. 认识OSSIM中的UUID
  4. windows2003 服务器安全配置的建议
  5. 详解布局之--静态、自适应、流式、响应式
  6. 深刻理解:反向代理服务器
  7. 阴阳师服务器维修拖延,阴阳师12月11日更新维护公告 阴阳师百闻牌联动开启
  8. python装饰器带参数函数_python带参数装饰器的两种写法
  9. 快应用实现网络测速功能_网络阅卷系统应用系统功能实现情况
  10. C++ main函数的几点细节(转载)
  11. 史上最强百度网盘下载限速破解方法大全
  12. [学习笔记-SLAM篇]视觉SLAM十四讲ch3
  13. 2019新闻自动挂机阅读脚本
  14. php 支持zip解压缩,PHP自带ZIP压缩、解压缩类ZipArchiv使用指南
  15. HTML5-俄罗斯方块
  16. Photoshop脚本 压缩并输出GIF图片
  17. C语言实例:百钱百鸡
  18. java实现手机扫二维码登陆
  19. 各种机器学习算法的应用场景分别是什么(比如朴素贝叶斯、决策树、K 近邻、SVM、逻辑回归最大熵模型)?...
  20. 常用传感器讲解十三--霍尔效应传感器(KY-003)

热门文章

  1. 小米允许安装未知来源不用sim卡_视频能独立通话的小米手表,会像小米手机一样好用吗?...
  2. 价格奥秘-在超市遇见亚当斯密--第十章 便宜鸡蛋会创造更多的就业机会?
  3. 黑苹果双系统时间不一致_黑苹果系统与windows时间差问题的解决
  4. Android 开发调用百度地图客户端
  5. Microsoft Excel 已停止工作
  6. matlab 教案,matlab第七讲教案.doc
  7. 高职大学计算机专业老师试讲面试,毫无经验应聘高职院校教师怎么准备试讲和面试...
  8. ios10 申请拍照权限_iOS 10 获取相册相机权限
  9. 【bzoj4173】数学
  10. python牛顿迭代公式_牛顿迭代法Python实现