基于STM32的移相波形输出

目录

前言

由于之前的期末考试周、电赛的初选和培训停更了较长的一段时间。那么今天想跟大家分享的是基于STM32的移相波形输出,如果你觉得这篇文章对你有所帮助,还请多多支持。如果有错误的话也请直接指出!事不宜迟,我们马上开始!!

一、基本知识储备

1.什么是移相

2.我们移相的目的

二、遇到的主要困难

1.会发生波形漂动

2.单片机处理同样需要时间

3.单片机本身的局限

4.单片机DAC外设的局限性

三、解决方案

既然已经选择了单片机实现方案,这里我们只讨论前两个主要困难。

1.如何解决波形漂动

总结

以上就是本文的全部内容了!祝大家新年有新气象,有缘再会!



前言

由于之前的期末考试周、电赛的初选和培训停更了较长的一段时间。那么今天想跟大家分享的是基于STM32的移相波形输出,如果你觉得这篇文章对你有所帮助,还请多多支持。如果有错误的话也请直接指出!事不宜迟,我们马上开始!!

一、基本知识储备

1.什么是移相

(1)移相,顾名思义就是调整波的相位。这个实现起来非常简单,只需要两个“振动”频率相同的“振动源”间隔适宜的时间起振即可。这个时间间隔只要不是周期的整数倍即可。

2.我们移相的目的

(1)我们移相不是为了移相,而是有着很多必要的其他目标,比如:我们想固定偏移某个确定的相位(最好可算可调),并在一个示波器上稳定同屏显示,进而方便接下来的一系列操作。下面也将以这个目标为例展开说明。

二、遇到的主要困难

1.会发生波形漂动

(1)原因:实际上单片机的晶振也不是绝对准确的(如果是内部的RC振荡电路导出的频率更不准,其受温度的影响大,迫不得已使用时需要引入温度补偿),这样就使得其产生的波形在于相对准确的波形(如信号发生器产生的波形)同频显示时两者之间的相对频率误差会随着时间不断累积,最终肉眼观察的现象就是发生波形漂动,即显示的两波形无法保持相对静止。

2.单片机处理同样需要时间

(1)在处理相对低频的信号时单片机依旧游刃有余,但是参考波的频率一高(比方说达到100KHZ),此时单片机的处理时间反映在示波器上就是多移动了一段相位。这样的话很可能使得对于相位精确度的指标无法达成。

3.单片机本身的局限

(1)单片机的主控是CPU,其工作原理上是单线程顺序执行的,在引入RTOS(实时操作系统)后可以近似看做并行执行(实际上是单线程乱序执行)。但是单片机的性能实在是太有限了,在针对高频信号的捕捉和输出方面乏力。尤其在需要频繁进入中断的情况下,软件资源被大量消耗,想要进行多功能程序的编写非常困难。

4.单片机DAC外设的局限性

(1)在输出PWM波的时候单片机可以轻松的胜任,但是在输出模拟信号时单片机的DAC输出波形的缺点在高级一些的示波器面前便暴露无遗——你可以看到像楼梯一样排列的方波。如果你对于单片机输出波形的平滑度或者美观度有着较高的需求,还是需要慎重考虑的。也可以考虑进行后期的一些处理。

三、解决方案

既然已经选择了单片机实现方案,这里我们只讨论前两个主要困难。

1.如何解决波形漂动

我们前面谈到,波形漂动的来源是单片机晶振的相对误差。我们从此入手,可以考虑使用一个更加准确的外部晶振,也可以只保留一个基准振动源(我个人更推荐后面这个,这个几乎可以完全消除误差,毕竟是一个娘生的)。

具体一点讲,以下是我的实现方案(以PWM波为例):

保留外部的信号发生器发生波形作为基准波形,对其进行移相操作。此时我们可以对单片机的指定GPIO口配置中断(我一般配置外部上升沿触发中断)。这样的话我们每一次监测到外部信号的上升沿就立即调整单片机自身TIMx内部的CNT与ARR的关系,从而实现移相。

 当然,这个方法最致命的缺点就是频繁进入中断,还是按照实际情况来吧。此方法来源于南邮的张学长以及蒋学长的授课,仅供参考。

2.如何解决多出来的一段相位

这个其实可以结合示波器的坐标轴不断调整相位\phi的取值,从而试出这一段的长度,进而消除误差。打个比方,将原本的ARR*360/\phi换成ARR*360/\phi/0.98


总结

以上就是本文的全部内容了!祝大家新年有新气象,有缘再会!
  • 34
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要搭建一个基于STM32F4的SPWM输出电路,你需要以下步骤: 1.选择一个合适的STM32F4单片机,比如STM32F407。 2.设计一个合适的电路板,包括STM32F4单片机、外部晶振、电源管理电路等。 3.编写SPWM输出程序,使用STM32F4单片机的PWM模块产生SPWM信号。 4.连接SPWM信号到功率放大器,驱动三交流电机。 下面是详细的步骤: 1.选择STM32F4单片机 首先,你需要选择一个合适的STM32F4单片机来实现SPWM输出。你可以选择STM32F407单片机,因为它有多个PWM输出通道和足够的Flash和SRAM。它还带有USB、CAN和以太网等接口。 2.设计电路板 你需要设计一个电路板来实现SPWM输出电路。电路板应包括STM32F4单片机、外部晶振、电源管理电路和其他必要的电路。根据电机的功率和电压等级,你可能需要添加一些功率放大器电路。 3.编写SPWM输出程序 你需要编写SPWM输出程序,使用STM32F4单片机的PWM模块产生SPWM信号。你可以使用STM32的标准库或者HAL库进行编程。编程的具体细节因具体情况而异,但通常包括以下步骤: - 配置STM32F4的时钟系统,以确保正确的时钟频率。 - 配置PWM模块,并设置占空比和频率等参数。 - 编写SPWM计算函数,计算SPWM波形的幅值和位。 - 在主程序中,使用SPWM计算函数生成SPWM波形,并将其输出到PWM通道上。 4.连接SPWM信号到功率放大器 最后,你需要将SPWM信号连接到功率放大器,以驱动三交流电机。在这里你需要注意电机的功率和电压等级,以确保选择合适的功率放大器和保护电路。你也需要注意电路板的布局和连接,以确保电路的稳定性和可靠性。 总之,要搭建基于STM32F4的SPWM输出电路,你需要选择合适的STM32F4单片机,设计电路板,编写SPWM输出程序并连接到功率放大器。这需要一定的电路设计和编程技能,但是如果你有经验,这应该是可行的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值