STM32主频

F1主频只有72M,F4芯片主频最高可以达到168M。

F4定时器频率

因为系统初始化SystemInit函数里初始化APB1总线时钟为4分频即42M,APB2总线时钟为2分频即84M,所以TIM1、TIM8~TIM11的时钟为APB2时钟的两倍即168M,TIM2~TIM7、TIM12~TIM14的时钟为APB1的时钟的两倍即84M。

步进电机参数

电机参数如下:步距角 = 1.8°  细分=16  螺距= 1mm(电机转一圈,对应的距离是1mm)

一圈360°需要的脉冲数 = 360/1.8*16 = 3200 pulse

又因为电机转一圈,对应的距离是1mm, 所以 电机带动轮子走1mm = 3200pulse

#define  MM_TO_PLUSE  3200//1mm对应的脉冲数#define PLUSE_TO_MM (1/3200)//一个脉冲对应的距离#define  DIS_MM_TO_PLUSE(dis)   ( MM_TO_PLUSE * (dis)  ) //将以mm为单位的长度抓换成对应的脉冲数#define SPEED_TO_PLUSE(speed) ( (speed) *MM_TO_PLUSE  ) //将mm/s的速度转换成HZ

到此为止,电机之间脉冲和距离之间的关系已经搞明白了,那我们开始言归正传,如何计算出我们需要的定时器频率输出了?

假设我们系统需要达到30mm/s的速度而且我们用的是timer2,30mm/s即1s内路程30mm,30mm需要30*3200=96000个脉冲,即1s内需要96000个脉冲(即频率96KHz),调用宏计算 30mm/s * 3200 = 96000Hz的频率 = 96KHz。意思就是说们只要定时器输出的PWM能够满足96KHz的频率就可以了。

将上面的公式换算成 输出频率 =  定时器的时钟频率(注意是时钟频率不是输出频率)/(分频系数 + 1)/( 计数值+1)

将psc = (84-1) ,内部自动加1 ,带入上面的公式就可以计算出计数值 = 1000。就可以输出对应的速度了。

#define TIMER_CLK   (84000000/84) //84Mhz 84分频#define CALC_ARR(speed)  (TIMER_CLK /(speed)*MM_TO_PLUSE  )

知道速度值就可以调用CALC_ARR宏返回对应的ARR寄存器值啦,我们就可以根据机器的系统参数来控制了。

概念理解

1. PWM模式由TIM_ARR寄存器确定频率,由TIM_CCR寄存器确定占空比的信号。

2. 举例说明:例如TIM时钟频率设置为36MHZ输出比较寄存器中的自装载值为3599即ARR Register = 3599,则输出的PWM频率为

frequency = 36MHZ/(ARR+1)=10KHZ。设置捕获寄存器的值CCR_Value(即高电平计数值)= 1800.,则占空比

                   duty cycle = 1800//3600=50%

STM32F4步进电机速度和位移与定时器输出PWM频率计算相关推荐

  1. 嵌入式学习——使用定时器输出PWM波形,实现 LED呼吸灯的效果

    嵌入式学习--使用定时器输出PWM波形,实现 LED呼吸灯的效果 目录 嵌入式学习--使用定时器输出PWM波形,实现 LED呼吸灯的效果 1. 任务要求 2 PWM波介绍, 2.1 什么是PWM(Pu ...

  2. 嵌入式——使用定时器输出PWM波形,实现 LED呼吸灯的效果

    一.实验要求: 使用TIM3和TIM4,分别输出一个PWM波形,PWM的占空比随时间变化,去驱动你外接的一个LED以及最小开发板上已焊接的LED(固定接在 PC13 GPIO端口),实现2个 LED呼 ...

  3. STM32通用定时器输出PWM控制舵机 —— 重装载值、比较值、当前值

    参考:stm32 定时器输出PWM原理及工作原理+控制舵机 作者:点灯小哥 发布时间: 2021-03-09 23:17:52 网址:https://blog.csdn.net/weixin_4601 ...

  4. STM32通用定时器输出PWM

    1 .TIMx简介 通用定时器是一个通过可编程预分频器驱动的16位自动装载计数器构成. 它适用于多种场合,包括测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和 PWM). 使用定时器预分 ...

  5. STM32单片机一个定时器输出不同频率PWM波

      在使用STM32单片机输出PWM波形的时候,通常可以直接使用定时器提供的PWM模式.可以通过自动重装载寄存器(TIMx_ARR)来设置定时器的输出频率,然后通过捕获/ 比较寄存器 1(TIMx_C ...

  6. stm32 定时器输出PWM原理及工作原理+控制舵机

    1.PWM的工作原理 2.PWM的内部运作机制 3.PWM的模式 模块一  边沿对齐模式 模块二 中央对齐模式 4.自动加载的预加载寄存器 5.定时器输出PWM结构体讲解 6.定时器输出PWM库函数讲 ...

  7. STM32f103C8定时器输出PWM波信号

    利用stm32高级定时器输出PWM,模拟呼吸灯的效果带刹车功能.由于没有示波器查看输出的pwm波形图,所以本次实验使用普通直流电机模拟的. 本文章为学习笔记,其中有些地方解释的不是那么的好,即本笔记可 ...

  8. STM32学习笔记:通用定时器输出PWM

    脉冲宽度调制,简称PWM(Pulse Width Modulation)是利用微处理器的数字输出 对模拟电路进行控制的一种非常有效的控制技术,常用于控制Led灯的亮度.电机转速等. STM32 的定时 ...

  9. STM32定时器输出PWM

    STM32定时器输出PWM 我们设置ARR值,就是设置CNT的上限,设置CCRX的值就是设置了一个临界点,CNT是一直随时间变化而变化的,当CNT>CCRX的时候输出 高/低电平 当CNT< ...

最新文章

  1. python常见函数
  2. 976 AlvinZH想回家(背包DP大作战T)
  3. latex的 多行注释_Latex图形注释的实现方法
  4. prop在java中_jquery中attr和prop的区别
  5. java与freemarker中map的遍历
  6. 操作系统实验--存储管理
  7. MyBatis 入门到精通(一) 了解MyBatis获取SqlSession
  8. 图像质量评价(Image Quality Assessment,IQA)
  9. 【AWVS12】安全漏洞扫描工具,使用详解
  10. clark变换第三行系数的由来
  11. A股将迎来一大波新经济公司:几家欢喜几家愁
  12. errors potentially fixable with the `--fix` option报错的解决
  13. 含类定义的完整python程序_含是什么意思 带含字的男孩名字 用含字起名的寓意...
  14. 数字图像处理与Python实现-Scikit-Image-图像滤波(三)
  15. Mac Gem Menu for OneNote 激活——应用任何版本
  16. Android 图片随着手势缩放,平移,并且支持多点触控
  17. sql中的日期和字符串的转化
  18. OVN Southbound DB简介及其相关命令示例
  19. torch.flatten与torch.nn.flatten
  20. DC 视频教程 第十课

热门文章

  1. PyCharm配置Jupyter
  2. pycharm配置conda虚拟环境
  3. getenv java_Java System类getenv()方法及示例
  4. 基于网格的聚类STING、CLIQUE(机器学习)
  5. 第二章:SQL Server2019 数据库的基本使用之图形化界面操作
  6. 多元微积分_格林定理
  7. 男女生链表创建和合并
  8. android canvas drawrect画图,为什么在android中调用canvas.drawRect时只绘制一个矩形?
  9. 怎么传mysql数据到onenet_STM32 MQTT协议 连接中国移动OneNet服务器 上传接收数据(一)...
  10. 中国冲管注射器行业研究与投资预测报告(2022版)