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的LWIP+FREERTOS+Socket构成的TCP服务器

    本实验基于STM32F767制作 一 实验目的 本实验主要目的是通过Socket网络编程方法完成通过以太网控制两个LED的亮灭的 xff0c 同理可用到继电器上控制其它高电压设备 二 实验步骤 1 首先先生成一个带有LWIP和FreeRTO
  • STM32Cube的PWM控制基础篇(一)一路PWM设置

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

    小知识 xff1a 同一个定时器 xff0c 不同通道输出不同输出PWM的特点 对于同一个定时器的不同通道输出PWM xff0c 因为它们是共用一个计数器的 xff0c 所以频率必须一样 xff0c 而占空比由各自的CCR决定 xff0c
  • 舵机PWM信号转互斥继电器开关信号

    本文由 麦粒电子 撰写 xff0c 并提供相应产品服务 叙述 上次的PWM转继电器开关方案得到大家的不少好评 xff08 博客链接 xff09 xff0c 但是发现有些玩家需要一路PWM同时去控制两路继电器开关通断 xff0c 并且两者是互
  • 用PWM控制舵机(以是stm32为例)

    因为做校创需要用到舵机 xff0c 以前知道大致的理论 xff0c 因此看了一些帖子 xff0c 总结一下被以后查看 什么是PWM波 PWM就是脉冲宽度调制 xff0c 也就是占空比可变的脉冲波形 pwm的占空比 xff0c 就是指高电平保
  • Arduino接收航模遥控器RC接收机的PWM数据

    本文将介绍如何使用Arduino读取RC接收机的PWM数据 1 硬件部分 我的设备 xff1a 接收机 遥控器发射机 将Arduino Nano的引脚 D8 D11 接到接收机的1 4通道 xff0c 接收机上的电源正极和负极连接到Ardu
  • 基于HAL库的stm32f103c8t6的快速开发笔记(简易版)—— 5、STM32的PWM输出(附舵机控制)

    1 概念了解 首先了解到 PWM生成是在通用定时器的基础上配置的 每个通用定时器都有多路通道输出PWM信号 这里以TIM4 定时器4 为例 在图形配置面板找到TIM4的通道一作为PWM输出管脚 其管脚为PB6 打开左侧定时器配置面板 可以看
  • STM32Cubeide/STM32F103CubeMX生成自定义HID设备

    前面时钟啥的不管了 USB 48Mhz时钟 USB选择Device USB FS 设置参数 34是配置HID作为电脑识别用的 必须是34 64是数据收发用的 HID最大一次64 可以自定义 这两个是电脑识别之后的硬件ID 不知道什么讲究 不
  • stm32 USB CDC 不接电脑无程序一直在USB中断问题

    前些时间基于STM32CUBE 工具做了个用STM32F103的USB 接口 枚举成CDC的项目 接上电脑程序功能正常 但是在不接电脑时 程序一直在USB中断中 下在给大家分享一下我的解决方法 首先是在 stm32f1xx hal pcd
  • STM32 基础系列教程 47 - MD5

    前言 MD5消息摘要算法 英语 MD5 Message Digest Algorithm 一种被广泛使用的密码散列函数 可以产生出一个128位 16字节 的散列值 hash value 用于确保信息传输完整一致 MD5由美国密码学家罗纳德
  • 魔方机器人之下位机编程-----两种串口通信方式的比较

    由于上位机软件的串口通信部分和魔方复原算法部分已经完成 接下来的一步就是如何将魔方复原的具体步骤 字符串的形式 通过串口发送给单片机MC9S12XS128单片机了 调试的过程中 采用了两种串口通信的方式 一种是查询的方式 另一种是中断的方式
  • STM32CubeMX的使用教程

    STM32 关于STM32CubeMX的使用 打开Cube 点击File New Project 搜索芯片型号这边选择的是STM32L071CB系列上面菜单Docs Resources可以下载数据手册程序手册等 点击Start Projec
  • STM32的PWM控制4个舵机

    本人虽然接触STM32快半年了 但是最近才开始系统的学习STM32 建议一边学 一边做东西 能够更快的提升自己 我用的定时器是TIM3 所以我会把我出现的问题 分享给大家 希望大佬多多指教 因为我先进行部分映射 但是控制某个舵机的PB4引脚
  • STM32 基础系列教程 33 - Lwip_tcp_client

    前言 学习stm32 以太网接口使用 及LWIP使用 用LWIP快速实现一个TCP client网络通信功能 学会基本LWIP的网络数据接收与发送功能 让初学者了解lwip 关于Lwip更多的功能介绍将会在后期的STM32 中级教程中介绍
  • 基于stm32f107 stm32cube 和 LWIP 协议实现 udp 组播通信

    最近在做一个基于stm32f107 实现 UDP 组播通信的项目 项目基于 stm32cube 配置生成 如下图 UDP组播头文件 ifndef MULTICAST H define MULTICAST H include lwip udp
  • 使用HAL库开发STM32:使用Timer输出PWM信号

    文章目录 目的 基础说明 输出PWM信号 总结 目的 单片机输出PWM信号是很常用的一种功能需求 STM32中通常使用Timer来输出PWM信号 这篇文章将对相关内容做个说明 基础说明 在使用Timer输出PWM信号需要了解一些Timer的
  • STM32 基础系列教程 48 – CJSON

    前言 JSON JavaScript Object Notation JS 对象简谱 是一种轻量级的数据交换格式 它基于 ECMAScript 欧洲计算机协会制定的js规范 的一个子集 采用完全独立于编程语言的文本格式来存储和表示数据 简洁
  • 展开角度以获得连续相位

    假设我有一系列与此类似的阶段 import numpy as np import matplotlib pyplot as plt phase np linspace 0 100 1000 np pi plt plot phase plt
  • FPGA 有哪些实际应用?

    我对我的程序为一个小型七段显示器提供动力感到非常兴奋 但是当我向不在现场的人展示它时 他们总是说 那么你能用它做什么 我永远无法给他们一个简洁的答案 谁能帮我吗 第一 它们不需要具有易失性存储器 事实上 大厂商 Xilinx Altera
  • PWM DMA 到整个 GPIO

    我有一个 STM32F4 我想对一个已与掩码进行 或 运算的 GPIO 端口进行 PWM 处理 所以 也许我们想要 PWM0b00100010一段时间为 200khz 但随后 10khz 后 我们现在想要 PWM0b00010001 然后

随机推荐

  • 使用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 其中包括齿轮对接 远