PID稳压

2023-11-07

思路说明:

我们设置一个目标值,这是我们要调节的目标。我们通过AD采样(PC3)采集到当前电压,通过减法运算我们得出当前电压与目标电压的差值,接下来我们只要发现当前电压与目标电压不同,我们就要想办法改变当前单片机的输出电压(PA8),也就是当前电压,使其向目标值靠近,我们知道我们是在中断内通过通道一改变CCR的值来改变输出电压的,并且是通过改变系数coefficient来改变输出电压SPWM波的幅度。因此我们只要发现当前电压比目标电压小,我们就让coefficient增大,我们发现当前电压比目标电压大,我们就让coefficient减小。并且为了增加调节速度和防止超调,我们采用一开始软启动调节,当目标电压与当前电压相差较小时,我们启动PID调节,精确调节。(注意,PA8输出SPWM波时要接一个截止频率为1.5K的低通滤波电路才能得到正弦波)。

PID相关参数函数定义

 

double coefficient=0.02:

float goalVoltage=0.5,goalVoltageIndex=0.1;//目标电压参数 目标电压步进

关于PID调节:我们设置目标值为0.5V,goalVoltageIndex为步进值

按键3和4控制目标电压变化。

    TIM1->CCR1 = arr*(0.5f+coefficient*sin_table_336[Counter_sine1++]);//2000(0.5+0.01*()  2000(0.5+0.48*)

coefficient改变,输出电压幅度改变。系数保护,示波器测得在coefficient处在0.49到0.01之间SPWM有效值输出电压范围为0.33到0.91之间

 

    if(Real_Voltage-goalVoltage<=-0.025f || Real_Voltage-goalVoltage>=0.025f)
                SoftFlagVoltage=1;
            if(Real_Voltage-goalVoltage<0.015f || Real_Voltage-goalVoltage>-0.015f)
                PIDFlagVoltage=1;

在采样处理模块中,在目标值和当前电压值相差大于0.025时,软启动标志位置1

在目标值和当前电压值相差0.015和0.025之间, PID标志位置1。开始PID调节

CloseFlagVoltage为闭环调节标志位。

按键9控制闭环调节的开始与否,置一闭环调节开启

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

PID稳压 的相关文章

  • 工程实践---ZN法整定PID

    工程实践 ZN法整定PID 知乎 zhihu com
  • 基于LabVIEW的PID算法解读

    记录一下 方便以后翻阅 下图是基本的PID算法实现方式 以及实现PID控制器所需的假设和转换 为实现PID控制器 LabVIEW要求算法对输入信号进行采样并离散积分和微分操作 一 误差计算 e k SP k PV k 上式中 e k 表示当
  • DC/DC:闭环控制的降压(Buck)变换电路原理设计及实验仿真

    在各种电力电子装置电源应用中或多或少地存在直流电源变换器 为保证直流输出电压值恒定在负载需要地电压范围内 一般需要设置自动调整单元 以保证在输入电压或者负载发生变换时 其输出电压能快速调整到规定的设定值 降压 Buck 变换电路原理图如图所
  • 基于MATLAB的模糊pi控制器的设计

    基于MATLAB的模糊pi控制器的设计 模糊规则隶属函数的建立 a newfis fuzzypid 添加第一个输入变量e a addvar a input e 1 1 a addmf a input 1 N zmf 1 1 3 a addm
  • Android : 通过pid获取app包名

    方法一 这个方法用在app主线程的activity或service里 因为要有context获取am private String getAppName int pid String pkgName ActivityManager am A
  • 三个闭环负反馈PID调节系统:电流环、速度环和位置环的关系

    三个闭环负反馈PID调节系统 电流环 速度环和位置环的关系 伺服电机为了达到生产的精准控制 电机一般采用三环控制 这主要是为了使伺服电机系统形成闭环控制 所谓三环就是3个闭环负反馈PID调节系统 电压映射电流变化 电流映射转矩大小 转矩大小
  • 进程组必须有一个正在运行的领导进程吗?

    在类 Unix 操作系统中 如果一个进程 pid和它的pgid相等 则该进程是进程组的领导者 但是 如果进程领导者已经退出 并且同组中的其他进程仍在运行 那么谁是继任的领导者进程 没有继任领导者 一旦流程组领导者退出 该组就失去了领导权 没
  • 如何在C++中使用system()命令获取执行进程的pid

    当我们使用system 命令 程序等待完成 但我正在执行process using system 并使用负载平衡服务器 因为该程序在执行系统命令后立即进入下一行 请注意 process可能不完整 system my script after
  • 如何在Python中检查是否存在给定pid的进程?

    有没有办法检查 pid 是否对应于有效进程 我从其他来源获取 pid 而不是os getpid 我需要检查机器上是否不存在具有该 pid 的进程 我需要它在 Unix 和 Windows 中可用 我还在检查 PID 是否未被使用 如果 pi
  • docker和主机之间的PID映射

    docker 命名空间与主机命名空间有何不同以及 pid 如何在这两者之间映射 谁能给我一个想法 有助于使用源代码在主机和 docker 之间映射 pid 的简单方法 您可以在中找到映射 proc PID status文件 它包含这样一行
  • 有人可以解释一下 Erlang 中 Pid(进程标识符)的结构吗?

    有人能解释一下 Erlang 中 Pid 的结构吗 Pids 看起来像这样
  • Java程序如何获得自己的进程ID?

    如何获取我的 Java 进程的 ID 我知道有几种依赖于平台的技巧 但我更喜欢更通用的解决方案 不存在可以保证在所有 jvm 实现中工作的独立于平台的方法 ManagementFactory getRuntimeMXBean getName
  • 有没有办法确定 Linux PID 是否暂停?

    我有一个 python 脚本 它使用 SIGSTOP 和 SIGCONT 命令与 os kill 来暂停或恢复进程 有没有办法判断相关PID是处于暂停状态还是恢复状态 您可以从进程的 proc 目录 proc
  • 如何确定 Linux 上是否使用 Java 或 JRuby 运行不同的进程 ID?

    我需要查看给定的进程 ID 是否正在运行 并且它必须在 Java 或 JRuby 中工作 最好是 Ruby 解决方案 它可能取决于 Linux 系统 特别是 Debian 和 或 Ubuntu 我已经有了我要找的PID 只需要看看它当前是否
  • 打印 pid_t 的正确 printf 说明符是什么

    我目前正在使用显式转换为 long 并使用 ld用于印刷pid t 是否有一个说明符 例如 z for size t for pid t 如果不是最好的打印方式是什么pid t 没有这样的说明符 我认为你在做什么 铸造pid t to lo
  • Bash:是否可以阻止 PID 被重复使用?

    是否可以阻止 PID 被重复使用 例如 如果我运行一份工作myjob在背景中myjob 并使用获取PIDPID 是否可以阻止 linux 系统重新使用该 PID 直到我检查该 PID 不再存在 进程已完成 换句话说 我想做类似的事情 myj
  • os.kill 没有引发 OSError,但是我没有看到给定的 pid 正在运行

    在我的 ubuntu 服务器上运行以下命令 python c import os os kill 5555 0 这样做是为了查看 pid 5555 是否正在运行 根据我的理解 如果 pid 没有运行 这应该会引发 OSError 这不会对我
  • 如何在shell脚本中从fork子进程获取PID

    我相信我可以从父进程派生出 10 个子进程 下面是我的代码 bin sh fpfunction n 1 while n lt 20 do echo Hello World n times sleep 2 echo Hello World2
  • 查找PID所属的tmux会话

    我正在使用 htop 所以看看哪些进程占用了大量内存 以便我可以杀死它们 我有很多 tmux 会话和很多类似的流程 如何检查 PID 位于哪个 tmux 窗格中 以便确定我正在杀死我想杀死的东西 鉴于PID下面一行是目标 pid 号 tmu
  • Mysql 连接到服务器:用户 root@localhost 的访问被拒绝

    edit9 是否有可能我只是缺少文件夹的一些权限 我真的非常非常感谢更多的建议 edit3 由于这篇文章没有得到足够的回复 而且这绝对是至关重要的 我尽快完成这件事 我重建了我的帖子以显示我认为到目前为止我已经扣除的内容 注意 通过许多不同

随机推荐

  • 条款20:当std::shared_ptr可能悬空时使用std::weak_ptr

    自相矛盾的是 如果有一个像std shared ptr 见条款19 的但是不参与资源所有权共享的指针是很方便的 换句话说 是一个类似std shared ptr但不影响对象引用计数的指针 这种类型的智能指针必须要解决一个std shared
  • 《算法:第四版》课后练习 1.1 答案

    以下答案纯属个人愚见 作为IT新手 算法代码中难免有逻辑漏洞和其他不足之处 欢迎朋友你点评拍砖 交流争辩能极大开阔思维 愿一起加油进步 1 1 19 在计算机上运行以下程序 1 public class Fibonacci 2 3 publ
  • springboot集成RedisTemplate

    RedisTemplate使用 基本信息 Maven依赖 yml配置文件 redisConfig配置类 Redis操作string Redis操作list 基本信息 spring 封装了 RedisTemplate 对象来进行对redis的
  • c语言间接级别不同_间接寻址不同问题?求解决!

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 错误18error C2040 FineStu Student int 与 int 的间接寻址级别不同e vs study study study c1441Study include incl
  • python 基本概念整理

    一 简介 1 基本概念 Python 是一个高层次的结合了解释性 编译性 互动性和面向对象的脚本语言 Python 的设计具有很强的可读性 相比其他语言经常使用英文关键字 其他语言的一些标点符号 它具有比其他语言更有特色语法结构 Pytho
  • post和get调用API接口的优势分享和实例

    post和get调用API接口 POST和GET都是HTTP协议中的方法 用于客户端向服务器发送请求并获取响应 在调用API接口时 一般使用GET或POST方法 GET方法是通过URL向服务器请求资源的一种方法 在URL中 请求参数会被编码
  • vue3.0之-watch全面解析

    1 监听ref 创建的基本数据类型 栗子1 监听多个数据
  • OpenJDK 64-Bit Server VM warning: Options -Xverify:none and -noverify were deprecated in JDK 13 and

    OpenJDK 64 Bit Server VM warning Options Xverify none and noverify were deprecated in JDK 13 and will likely be removed
  • Anaconda下载与安装详解

    第一步 进入官网下载符合自己电脑版本的anaconda 官网地址 https www anaconda com products distribution 其它版本 下拉最后 如图所示 第二步 双击打开下载好的安装文件 如图所示 点击 Ne
  • KNN分类算法原理及其Matlab实现

    KNN算法原理 K近邻算法是一种简单的监督学习算法 对于给定测试样本 直接计算该样本和训练集的距离 将距离最近的k个 邻居 点的类别作为参考 作为预测结果返回 测试数据 测试数据来自林智仁的分类任务数据集 链接 https www csie
  • 想在Android应用程序中将XLS文件转换为PDF吗?看完这篇教程就懂了

    在各种情况下 您可能需要通过Internet共享Excel文件 为避免篡改 最佳做法是在共享之前将这些文件转换为PDF格式 因此 在本文中 将学习如何在Android应用程序中将Excel XLSX或XLS文件转换为PDF 另外 还将讨论E
  • Svelte 实现 keypress 快捷键功能

    有些框架中内置了常用的事件修饰符和按键修饰符 例如 Vue 中就提供了按键 enter 13 修饰键 ctrl alt shift meta等修饰符 简化了很多快捷键功能的实现 在 Svelte 中也提供了 preventDefault s
  • C++ stack容器

    C stack容器 1 stack容器的基本概念 2 stack容器的创建 stack 默认构造函数 创建一个空的 stack 对象 例如 下面一行代码使用默认的 deque 为底层容器 创建一个空的堆栈对象 s stack
  • 扫雷

    扫雷 扫雷游戏是晨晨和小璐特别喜欢的智力游戏 她俩最近沉迷其中无法自拔 该游戏的界面是一个矩阵 矩阵中有些格子中有一个地雷 其余格子中没有地雷 游戏中 格子可能处于己知和未知的状态 如果一个己知的格子中没有地雷 那么该 格子上会写有一个一位
  • 计算机网络---TCP/IP网络编程实验

    文章目录 计算机网络 TCP IP网络编程实验 一 实验目的 二 实验环境和任务 三 实验步骤及实验结果记录 四 实验结果分析和总结 计算机网络 TCP IP网络编程实验 一 实验目的 掌握TCP IP协议的基本知识 TCP IP协议的基本
  • 2023秋招,软件测试面试八股文(有答案版),金九银十季,涨薪涨薪

    最近呢有很多的小伙伴问我有没有什么软件测试的面试题 由于笔者之前一直在忙工作上的事情 没有时间整理面试题 刚好最近休息了一下 顺便整理了一些面试题 现在就把整理的面试题分享给大家 希望可以帮助到各位 废话就不多说了直接上干货 Tip 我整理
  • jQuery插件开发全解析,jQuery.extend , (function($){ , $.fn.pluginName

    序 匿名函数 匿名函数没有实际名字 也没有指针 怎么执行滴 其实大家可以看看小括号的意义就应该可以理解 小括号有返回值 也就是小括号内的函数或者表达式的返回值 所以说小括号内的function返回值等于小括号的返回值 不难理解 functi
  • Python for循环的使用

    一 for循环的使用场景 1 如果我们想要某件事情重复执行具体次数的时候可以使用for循环 2 for循环主要用来遍历 循环 序列 集合 字典 文件 甚至是自定义类或函数 二 for循环操作列表实例演示 使用for循环对列表进行遍历元素 修
  • 使用策略模式+工厂模式对接口进行分配处理。远离if else

    使用策略模式 工厂模式对接口进行分配处理 远离if else 背景 在项目中我们会遇到不同时间或者不同条件下 调用不同的方法或处理方式 因此我们可以采用策略模式进行满足不同的对象执行不同的具体行为 再用工厂模式进行匹配对应的对象 首先我们做
  • PID稳压

    思路说明 我们设置一个目标值 这是我们要调节的目标 我们通过AD采样 PC3 采集到当前电压 通过减法运算我们得出当前电压与目标电压的差值 接下来我们只要发现当前电压与目标电压不同 我们就要想办法改变当前单片机的输出电压 PA8 也就是当前