STM32Cube的PWM控制算法篇(一)数字锁相环初步设计Digital phase locked loop

2023-05-16

**

数字锁相环

**
Digital phase locked loop数字锁相环是一个通过PID算法使PWM调频改变相位,以达到与目标模型同频同相或同频稳定相位差的目的,在实际应用中较为常见,其中包括齿轮对接、远距离水下超长波低频通信等

正弦波函数

为毛子要讲正弦波呢?
正弦波是一个贼有用的东西,不管是信号通信、电机驱动基本都是正弦波,要了解正弦波就要了解正弦波基本函数结构(放心,中小学知识,不会讲很难):
正弦函数y:正弦波
A:幅值
ω:角速度
x:x自变量
φ:相位偏移
现在我们根据嵌入式的方法简化一下这个正弦波:

简化正弦波
A:当前幅值
ω:角速度
t:时间
φ:相位偏移

在此引入正弦波周期和频率公式:
在这里插入图片描述
T:周期
ω:角速度
f:频率
所以得到ω=2π×f

若使A=sin(2π×f×t),f=50
得到的图像同matlab仿真就是如下所示:
加粗样式
上图为50Hz正弦波,现在问题来了,我们如何改变频率来改变相位呢?

正弦波函数推导

已知有:
在这里插入图片描述
而且
在这里插入图片描述
我们改变频率:f
就可以改变周期:T 则有
在这里插入图片描述
因为原始波形的周期是不变的保持为T,所以我们改变频率后每运行一个周期,就会与原始波形产生一个固定相位差,如下图棕色框中棕色线段所示
在这里插入图片描述
在0<=t<0.04时,蓝色波与红色波频率幅值相位均一致,频率为50Hz
在0.04<t后,蓝色波频率变高到60Hz,经过一个周期之后,蓝色波相位超前红色波一个固定时间,记为p

由上述公式可以得出

在这里插入图片描述
p :一个周期产生的相位差
T :原始周期
T':变化后的周期

在得到一个周期相位的变化量之后,我们就可以将一个固定的相位差S分解成N个p,经过N个周期叠加后,相位移动就为S,则可以得到:
在这里插入图片描述
N :周期数
S :需要移动的相位
p :单周期的相位移动
所以我们变频经过N个周期后恢复原始频率,就可以保证相位角可以前移或后移固定角度。
最后通过结合以上所有公式得到一个通式:

在这里插入图片描述
N :周期数
S :需要移动的相位
f :初始频率
f':变频频率

Matlab代码如下:

clc;
clear;
S=2*pi/3;
f1=50;
f2=60;
f3=f1;
dp=(((1/f1)-(1/f2))/(1/f1))*2*pi;
N=S/dp;
t1=N/f1;
t2=N/f2;
t3=N/f3;
fs=3000;
t=0:1/fs:(t1+t2+t3);
y=sin(f1*2*pi*t);
p=rem((f1*2*pi*t),2*pi);
part1=sin(f1*2*pi*t).*(t>=0&t<=t1);
part2=sin(f2*2*pi*(t-t1)).*(t>=t1&t<=(t1+t2));
part3=sin(f3*2*pi*(t-t1-t2)).*(t>=(t1+t2)&t<=(t1+t2+t3));
yy=part1+part2+part3;
pp1=rem((f1*2*pi*t.*(t>=0&t<=t1)),2*pi);
pp2=rem(((f2*2*pi*(t-t1)).*(t>=t1&t<=(t1+t2))),2*pi);
pp3=rem(((f3*2*pi*(t-t1-t2)).*(t>=(t1+t2)&t<=(t1+t2+t3))),2*pi);
pp=pp1+pp2+pp3;

d=p-pp;

subplot(2,2,1)
plot(t,yy,"b");xlabel('时间/S'),ylabel('信号y')
hold on
box off

subplot(2,2,2)
plot(t,pp,"b");xlabel('时间/S'),ylabel('相位p')
hold on
box off

subplot(2,2,3)
plot(t,y,"r");xlabel('时间/S'),ylabel('信号y')
hold on
box off

subplot(2,2,2)
plot(t,p,"g");xlabel('时间/S'),ylabel('相位p')
hold on
box off
subplot(2,2,4)
plot(t,d,"y");xlabel('时间/S'),ylabel('相位差p')
hold on
box off

结果如图:
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STM32Cube的PWM控制算法篇(一)数字锁相环初步设计Digital phase locked loop 的相关文章

  • STM32Cube的PWM控制基础篇(一)一路PWM设置

    以下是有关STM32cube的PWM的花式操作 xff0c 大佬们在看下面链接之前建议先看完本博客 xff0c 个人觉得写的比较详细 xff0c 欢迎大佬之指正 xff01 STM32Cube的PWM控制基础篇 xff08 二 xff09
  • jetson nx fan auto pwm

    参考 xff1a Jetson Nano PWM自动调速 Ay yzx的博客 CSDN博客 代码 xff1a usr bin env python import os import commands from the path of thi
  • stm32高级定时器实现pwm互补输出

    简介 stm32设备一般都有很多类型的定时器 xff0c 常见的有systick timer 基本定时器 通用定时器 高级定时器 看门狗定时器 RTC等等 xff0c 本文简单介绍高级定时器是如何实现pwm互补输出 详细 我这里使用的dev
  • 解决SQLite中的 database is locked

    前些时候 xff0c 同事在站点服务端使用SQlite存储一些临时数据 xff0c 但是在多人并发的时候Sqlite会抛出异常 xff1a The database file is locked database is locked xff
  • rk3399下pwm驱动

    现在记录一下rk3399下pwm的驱动编写 xff0c 下面是内核pwm的API xff0c 从开源论坛复制 xff08 firefly的开源论坛里面的Wiki教程 xff09 1 在要使用 PWM 控制的设备驱动文件中包含以下头文件 xf
  • 电机控制基础——定时器基础知识与PWM输出原理

    单片机开发中 电机的控制与定时器有着密不可分的关系 无论是直流电机 步进电机还是舵机 都会用到定时器 比如最常用的有刷直流电机 会使用定时器产生PWM波来调节转速 通过定时器的正交编码器接口来测量转速等 本篇先介绍定时器的基础知识 然后对照
  • 学习PS2无线手柄解码通讯手册

    学习 PS2 无线手柄的使用方法 将市场上 PS2 手柄通过解码应用到我们自己产品之中 比如控制智能车 机械臂等等任何涉及无线通信控制的一些diy场景 本次主要让大家了解 PS2 无线手柄的工作原理 以及掌握 PS2 无线手柄的使用并最终通
  • STM32 基础系列教程 18 – IWDG

    前言 学习stm32 独立看门狗 IWDG 接口使用 学会用STM32内部独立看门狗 IWDG 实现程序异常时自复位功能 STM32F10xxx内置两个看门狗 提供了更高的安全性 时间的精确性和使用的灵活性 两个看门狗设备 独立看门狗和窗口
  • 直流电机控制 pwm 和 pid 算法

    下面的文章是我转载的 所以作者若是看到不允许转载 请给我留言或给我邮件 lushiliangcsdn 163 com 我会立即删除 转载原因 这篇文章把pid 算法解释的很详细 我担心以后这篇文章无故删除 才转载到我这边的 谢谢 转载来源于
  • STM32CubeProg 下载及安装教程

    先点赞 再看博客 顺便点个关注鼓励一下 如果文章看完 觉得不错的话可以点个收藏 日后不迷路 STM32CubeProg 下载及安装教程 1 前言 1 1 基本介绍 1 2 主要特点 1 3 准备工作 2 软件下载 2 1 Java 官网下载
  • STM32CubeMX的使用教程

    STM32 关于STM32CubeMX的使用 打开Cube 点击File New Project 搜索芯片型号这边选择的是STM32L071CB系列上面菜单Docs Resources可以下载数据手册程序手册等 点击Start Projec
  • STM32 基础系列教程 33 - Lwip_tcp_client

    前言 学习stm32 以太网接口使用 及LWIP使用 用LWIP快速实现一个TCP client网络通信功能 学会基本LWIP的网络数据接收与发送功能 让初学者了解lwip 关于Lwip更多的功能介绍将会在后期的STM32 中级教程中介绍
  • 使用STM32CubeMX和STM32CubeIDE的常见问题和注意事项

    STM32CubeMX和STM32CubeIDE是ST公司的STM32Cube生态系统中最重要和最常用的2个软件 使用这2个免费软件可以高效地进行STM32系统的开发 CubeMX用于对一个STM32器件进行可视化的配置 然后生成CubeI
  • STM32通用定时器输出PWM控制舵机 —— 重装载值、比较值、当前值

    参考 stm32 定时器输出PWM原理及工作原理 控制舵机 作者 点灯小哥 发布时间 2021 03 09 23 17 52 网址 https blog csdn net weixin 46016743 article details 11
  • 快速学习Stm32舵机控制板控制多个舵机运动以及调速

    本次分享stm32对多个舵机的控制 之前讲解过单个舵机的控制 以及控制原理 定时器的使用和pwm的输出来控制一个舵机的角度转向 这次就和大家分享一下多个舵机的控制以及调速 利用单片机实现对 8 个舵机的同时控制 掌握多个舵机控制程序实现方法
  • BeagleBone Black (v4.14) 上的 PWM 芯片到引脚映射

    关于如何在较新版本的内核上配置 Beaglebone 进行 PWM 的信息非常少 我按照以下指示进行操作BeagleBone Black v4 14 上的 PWM https stackoverflow com questions 5020
  • 使用 fft 查找每个谐波的相位

    我用的是Matlab 我有一个正弦信号 X 放大器 220 频率 50 我添加了 3 个谐波 x1 gt h2 放大器 30 频率 100 相位 30 x2 gt h4 放大器 10 频率 200 相位 50 x3 gt h6 放大器 05
  • 在 XCode 的复制标头构建阶段将角色更改为公共时,如何保留子组?

    目前 层次结构已变平 所有头文件都被复制到我的 Classes 文件夹中的单个 Headers 目录中 无论它们位于哪个子文件夹中 如果标头具有引用子文件夹中其他标头的 include 语句 则在引用标头时就会出现问题 特别是 这会搞砸 B
  • C# 中的数字签名,无需使用 BouncyCastle

    不使用第 3 方 BouncyCastle 库 有没有办法读取自定义私钥并签署消息 sha256哈希 使用私钥加密 从技术上来说 是的 根据您拥有的密钥类型 答案会变得更加棘手 编辑 2019 年 10 月 NET Core 3 0 以 D
  • windows关闭tomcat后保持端口锁定

    我遇到了一个问题 该问题发生在不同站点的 3 台不同服务器上 问题是 当我关闭 Windows 服务器上的 Tomcat 7 和 8 5 版本 服务并尝试重新启动该服务后 该服务将无法启动 因为 tomcat 认为端口仍在使用中 以下是错误

随机推荐

  • 使用makefile编译freeRTOS

    freeRTOS的文件结构 FreeRTOS LabsFreeRTOS Plus 包含freeRTOS 43 的组件和demo项目FreeRTOS 包含内核和demo项目 Source目录 xff1a 三个必须文件list c queue
  • 2013 一路走过

    2013 一路走过 想起当初找工作的时候 xff0c 一个人早上坐火车跑到其他大学的招聘会上去逛一圈 xff0c 了解招聘情况 然后下午又坐火车回学校 记得那天我投了十几份简历出去 xff0c 本打算投着试试 xff0c 没想到回来后有几家
  • 编译vs2008的samples程序总是跳过

    编译vs2008的samples程序总是跳过 xff0c 要配置属性还显示 未能完成操作 未指定的错误 的解决办法 作者 admin 分类 开发问题 发布时间 2013 03 12 09 22 974 浏览数 6 没有评论 文章转自王牌软件
  • MFC 用户界面线程:界面线程的退出 窗口关闭的流程

    原文链接 xff1a http wenku baidu com link url 61 6CFkWbLOeFgNoUsJniCX3ksw6 RztxMr9Z e6t7uu3e vV7UTKThUEkyRkq8IXwxIw5qYctN8gIx
  • MFC用户界面多线程实例2

    以下是 MFC 用户界面线程相关知识 由于用户界面线程含有自己的消息循环 xff0c 可以出来 Windows 消息 xff0c 并可创建和管理诸如窗口和控件等用户界面 元素 因此 xff0c 这 种线程较工程线程更为复杂 创建用户界面线程
  • 反汇编定位代码崩溃位置_1

    原帖 xff1a http blog csdn net gwzz1228 article details 9045853 利用map xff0c cod文件定位崩溃代码行 利用vs2010 新建一个空的控制台项目 xff0c 添加文件gtg
  • 反汇编定位代码崩溃位置_3

    原帖 xff1a http blog sina com cn s blog 141f234870102van8 html win7 43 vs2010通过map文件和cod文件找到崩溃的代码行 2015 01 11 11 31 04 转载
  • 反汇编定位代码崩溃位置_4

    原帖 xff1a http blog csdn net xiao article details 23177577 GDB如何从Coredump文件恢复动态库信息 标签 xff1a GDBcoredumpso调试动态库 2014 04 08
  • STM32Cube的串口设置(二)一个串口接收另一个串口发送

    串口系列 STM32Cube的串口设置 xff08 一 xff09 即学即用 通过串口设置第一部分大家应该基本会使用单个串口进行收发了 所以本次介绍通过串口进行转发 适合情景为一个串口设备波特率为38400 xff0c 但是接收模块仅支持1
  • C链表反转

    节点 struct Note int value Note pNext typedef struct Note PList 生成一个链表 Note GenerateList 输出一个链表 void PrintList Note pHead
  • PMP考试重点知识

    第一章 引论 前三章 是整个知识体系的支撑框架 xff0c 每次考试中都会考到 xff0c 但是一般在15道题左右 xff0c 前 三章 学不好后面的章 节很难理解透彻 1 项目的特点 xff1f 2 什么是项目管理 xff1f 3 项目和
  • pcb焊接技巧

    焊接的先后次序 要想更高效 可靠地焊好一块板子 xff0c 是要遵循一定的原则 xff08 如 先小后大 xff09 的 xff0c 不可乱来 xff0c 更不是看哪个元件顺眼就焊哪个 一般我拿到一块板子后的处理流程是 xff1a 打印 P
  • js中通过document获取标签节点

    使用id名表示标签 xff0c 不够严谨 在html语法中 xff0c id名随便起 xff0c 可以是js中的关键字 xff0c 但是在js中使用id代表标签 xff0c 就不能使用关键字 xff0c 所以我们需要一种更加严谨的方式获取标
  • 安装ubuntu-desktop

    目录 安装ubuntu desktop 解决root登录受限 安装远程访问软件 方法一 xff1a 安装vnc4server 方法二 xff1a Teamviwer安装 传送门 推荐 正文 回到顶部 安装ubuntu desktop 复制代
  • python读取C语言头文件

    在使用python编程过程中 xff0c 经常需要对C语言文件进行操作 xff0c 即 h文件进行读取操作 xff0c 这里举例说明 xff0c python读取C语言头文件 xff0c 提取其中 define 宏定义 废话少说 xff0c
  • makefile(详细讲解)

    目录 1 makeflie2 多个文件执行makefile 1 makeflie makefile带来的好处就是 自动化编译 xff0c 一旦写好 xff0c 只需要一个make命令 xff0c 整个工程完全自动编译 xff0c 极大的提高
  • WLAN、LAN、WAN的区别

    1 LAN局域网 xff08 Local Area Network xff09 xff1a 通俗讲就是路由器和用户之间接口 2 WAN广域网 xff08 Wide Area Network xff09 xff1a 通俗讲就是路由器和外部网络
  • PX4环境搭建记录(ROS+Gazebo+mavros+PX4+QGC)

    全过程记录PX4环境搭建 xff08 ROS 43 Gazebo 43 Mavros 43 PX4 43 QGC xff09 本人飞控专业在读 xff0c 近段时间在老师的建议下 xff0c 开始搭建PX4环境配置 因为并没有之前相关环境配
  • 无人机仿真—PX4编译,gazebo仿真及简单off board控制模式下无人机起飞

    无人机仿真 PX4编译 xff0c gazebo仿真及简单off board控制模式下无人机起飞 前言 在上篇记录中 xff0c 已经对整体的PX4仿真环境有了一定的了解 xff0c 现如今就要开始对无人机进行起飞等仿真环境工作 xff0c
  • STM32Cube的PWM控制算法篇(一)数字锁相环初步设计Digital phase locked loop

    数字锁相环 Digital phase locked loop数字锁相环是一个通过PID算法使PWM调频改变相位 xff0c 以达到与目标模型同频同相或同频稳定相位差的目的 xff0c 在实际应用中较为常见 xff0c 其中包括齿轮对接 远