一、查看电路板连接引脚

如图,脉冲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. php中单引号与双引号的区别
  2. mybatis {arg0} 与 {0}
  3. 2017/Province_C_C++_B/2/等差素数列
  4. 多租户数据库设计方法:独立数据库
  5. PAT乙类1008之数组元素循环右移问题
  6. ESXI开启SNMP服务
  7. stringbuffer判断是否为空
  8. linux memcpy 效率,memcpy每秒字节速率
  9. 在WPF里面实现以鼠标位置为中心缩放移动图片
  10. PowerBuilder 五子棋
  11. Tomcat 中文乱码
  12. 台达plc与串口软件通讯测试,台达PLC串口通信
  13. JQuery插件之图片轮播插件–slideBox
  14. intel安装mac os
  15. 淘宝开源深度学习端侧推理引擎 MNN
  16. 7.3 pgfplots点集
  17. 怎么改图片大小kb像素不变?一键快速修改jpg图片大小?
  18. 阿里云学生成长计划领取资格考试答案
  19. 【java】输入一个数输出它的绝对值
  20. 玩游戏4g计算机的内存不足,别再说内存不足了!教你一招彻底解决,电脑运行加速3倍!...

热门文章

  1. ps抠图怎么放大图片_ps中在使用抠图工具时如何用快捷键移动放大的原始图片?...
  2. 五路循迹传感器的优点_用五路循迹传感器做循迹
  3. setCookie时遇到的问题
  4. 计算机学院军训横幅,2020大学军训横幅标语句子精选100句
  5. 使用 reduce 函数计算阶乘
  6. 搭配-最全的配色方案和色彩搭配
  7. 编程为什么有趣?浅谈编程的快乐。
  8. c语言编写英雄联盟,怎么用C#或者C语言注册 英雄联盟 热键
  9. App Store 上架流程
  10. 怎样使用思维导图做计划?分享5个思维导图做计划的模板