阻抗分析中的軟件解調計算

接上篇

重溫無功功率測量-CSDN博客

已知被測阻抗兩端電壓與流過 通過兩個ADC同步采集到。

激勵頻率10k, 采樣率1M, 每周期100個點

關鍵是:采樣率除以激勵頻率, 得是4的倍數... 所以ADC不能自由運行, 得用一個timer來觸發.

因為要進行同相分量正交分量計算。

1:直流分量計算

    int buf_size = sizeof(pdc->data.adc_buf) / sizeof(pdc->data.adc_buf[0]);for(int i = 0; i < buf_size; i++) {mean_v += pbuf[i].v;mean_i += pbuf[i].i;}mean_v /= buf_size;mean_i /= buf_size;         // 求平均值, 用于直流平衡

2:計算相位

    for(int i = 50; i < buf_size - 50; i++) {prod_i += -(pbuf[i].v - mean_v) * (pbuf[i].i - mean_i);          // v和i做直流平衡后相乘, 累加得到同相分量prod_q += (pbuf[i + 25].v - mean_v) * (pbuf[i].i - mean_i);    // 激勵頻率10k, 采樣率1M, 每周期100個點, 因此移動25個點再平衡, 相乘, 累加就是正交分量了}prod_i /= buf_size;prod_q /= buf_size;phase = atan2(prod_q, prod_i);              // 同相分量和正交分量, atan2即得到相位差

原理解釋

使用 atan2 函數和同相、正交分量的平均值,確實可以得到相位角。 這也是一種在數字信號處理中非常常用和穩健的相位計算方法。

原理簡述

首先,讓我們理解什么是同相分量和正交分量。

假設你有一個信號 s(t)=Acos(ωt+?),它的同相分量 (In-phase, I) 和正交分量 (Quadrature, Q) 可以通過將其與參考信號(通常是 cos(ωt) 和 ?sin(ωt) 或 sin(ωt))相乘,并取其在周期內的平均值來得到。

  • 同相分量 (I): 表示信號在參考信號 cos(ωt) 上的投影。它與信號的幅度和相位有關。

  • 正交分量 (Q): 表示信號在參考信號 sin(ωt) 上的投影。它也與信號的幅度和相位有關。

通過積分或求平均值,我們可以得到:

  • I=T1?∫0T?s(t)cos(ωt)dt=2A?cos(?)

  • Q=T1?∫0T?s(t)sin(ωt)dt=2A?sin(?)

注意:在數字信號處理中,積分會變成求和。

為什么 atan2(Q, I) 有效?

根據上面的公式,我們可以看到:

IQ?=2A?cos(?)2A?sin(?)?=cos(?)sin(?)?=tan(?)

所以,?=arctan(IQ?)。

但是,arctan(y/x) 有一個問題:它只能輸出 ?π/2 到 π/2 之間的角度,無法區分第一、三象限第二、四象限的角度。

atan2(y, x) 函數解決了這個問題。它通過同時使用 y (這里的 Q) 和 x (這里的 I) 的正負號信息,來確定相位角所在的完整 2π 范圍,即 ?π 到 π。

  • 如果 I>0,Q>0,相位角在第一象限。

  • 如果 I<0,Q>0,相位角在第二象限。

  • 如果 I<0,Q<0,相位角在第三象限。

  • 如果 I>0,Q<0,相位角在第四象限。

因此,atan2(Q, I) 能夠精確地計算出信號的相位角,而不會產生象限模糊。

步驟

  1. 選擇基準頻率:確定你要分析的信號的基波頻率 f0?,并生成兩個正交的參考信號:cos(2πf0?t) 和 sin(2πf0?t)。

  2. 計算同相分量 (I):將你的原始采樣信號與 cos(2πf0?t) 相乘,并對結果求平均值(或在一個周期內求和)。

  3. 計算正交分量 (Q):將你的原始采樣信號與 sin(2πf0?t) 相乘,并對結果求平均值(或在一個周期內求和)。

  4. 計算相位角:將得到的 Q 和 I 值代入 atan2 函數:

相位角=atan2(Q,I)

這個方法等同于對信號進行離散傅里葉變換 (DFT),然后取基波頻率處的實部和虛部。同相分量 I 對應于傅里葉變換的實部,正交分量 Q 對應于傅里葉變換的虛部。因此,這是一種非常可靠且常用的方法。

這種方法通常被稱為 I/Q 解調 (In-phase and Quadrature Demodulation) 或 正交解調

在數字信號處理中,I/Q 是同相 (In-phase)正交 (Quadrature) 的縮寫。通過將信號分別與一對正交的參考信號(例如 cos(ωt) 和 sin(ωt))相乘并求平均,我們可以提取出信號的 I 分量和 Q 分量。

  • I 分量 對應于信號的實部

  • Q 分量 對應于信號的虛部

這兩個分量共同構成了一個復數,這個復數包含了信號的幅度和相位信息。而 atan2(Q, I) 函數正是用來從這個復數中計算出精確的相位角。

因此,這個方法在很多領域都有廣泛應用,尤其是在通信、雷達和各種數字信號處理系統中,用來對信號進行解調、分析和處理。

3:計算阻抗模

    for(int i = 50; i < buf_size - 50; i++) {rms_sq_sum_v += pow((pbuf[i].v - mean_v),2);            rms_sq_sum_i += pow((pbuf[i].i - mean_i),2);}float U_rms = sqrt(rms_sq_sum_v / buf_size);float I_rms = sqrt(rms_sq_sum_i / buf_size);float Z_modulus = U_rms / I_rms;

原理解釋?

第1步:計算電壓的有效值 (U_rms)

有效值(方均根值)代表了交流信號的等效能量。它的計算方法是:

  1. 對每個電壓采樣點進行平方。

  2. 將所有平方值相加求和。

  3. 將求和結果除以采樣點數 (1000)。

  4. 對最終結果開方。

第2步:計算電流的有效值 (I_rms)

使用同樣的方法計算電流的有效值:

  1. 對每個電流采樣點進行平方。

  2. 將所有平方值相加求和。

  3. 將求和結果除以采樣點數 (1000)。

  4. 對最終結果開方。

第3步:計算阻抗的模 (∣Z∣)

阻抗的模等于電壓的有效值除以電流的有效值。

∣Z∣=Urms??/Irms?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/91845.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/91845.shtml
英文地址,請注明出處:http://en.pswp.cn/web/91845.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ubuntu 鏡像克隆

一、克隆 1、準備 一個u盤&#xff08;制作啟動盤&#xff09; 一個移動固態硬盤&#xff08;大于要克隆系統盤的1.2倍&#xff09; 2、使用 rufus生成系統啟動盤 &#xff08;1&#xff09;下載ubuntu iso 桌面版 https://cn.ubuntu.com/download &#xff08;2&#x…

Axure下拉菜單:從基礎交互到高保真元件庫應用

在Web端產品設計中&#xff0c;下拉菜單&#xff08;Dropdown Menu&#xff09; 是用戶與系統交互的核心組件之一&#xff0c;它通過隱藏次要選項、節省頁面空間的方式&#xff0c;提升信息密度與操作效率。無論是基礎下拉菜單、圖標式下拉菜單&#xff0c;還是復雜的多級下拉菜…

復現YOLOV5+訓練指定數據集

一、復現YOLOV5代碼 1.github下載&#xff1a;https://github.com/MIPIT-Team/SSA-YOLO 2.配置環境&#xff1a;創建虛擬環境yolo5 conda create -n yolo5 python3.9 #對應文件夾下pip install -r requirements.txt報錯&#xff1a;ERROR: pips dependency resolver does no…

Agents-SDK智能體開發[4]之集成MCP入門

文章目錄說明一 Agents SDK接入MCP1.1 MCP技術回顧1.2 MCP基礎實踐流程1.2.1 天氣查詢服務器Server創建流程1.2.2 服務器依賴安裝和代碼編寫1.2.3 環境配置文件1.2.4 客戶端代碼編寫1.3 測試運行二 MCPAgents SDK基礎調用2.1 weather_server.py2.2 client_agent.py2.3 運行測試…

Camera相機人臉識別系列專題分析之十九:MTK ISP6S平臺FDNode傳遞三方FFD到APP流程解析

【關注我,后續持續新增專題博文,謝謝!!!】 上一篇我們講了: 這一篇我們開始講: Camera相機人臉識別系列專題分析之十九:MTK平臺FDNode傳遞三方FFD到APP流程解析 目錄 一、背景 二、:OcamMeta傳遞FFD到APP 2.1:OcamMeta 2.2 :OcamMeta::process更新FFD 2.…

【實時Linux實戰系列】構建實時監測與報警系統

在實時系統中&#xff0c;監測與報警系統是確保系統正常運行和及時響應異常情況的關鍵組件。實時監測與報警系統能夠實時收集系統數據&#xff0c;分析關鍵事件&#xff0c;并在檢測到異常時發出警報。這種系統廣泛應用于工業自動化、醫療設備監控、網絡安全等領域。掌握實時監…

PHP入門及數據類型

PHP數據類型 PHP標記 //HTML風格 <?phpecho "hello world"; ?> //簡短風格 <?echo "hello world"; ?>數據類型 PHP 最初源于 Perl 語言&#xff0c;與 Perl 類似&#xff0c;PHP 對數據類型采取較為寬松的態度。PHP 規定&#xff0c;變量數…

沸點 | 嬴圖參加世界人工智能大會

2025 WAIC于 7 月 26 日至 28 日在上海舉行。大會展覽面積突破 7 萬平方米&#xff0c;800 余家企業參展。嬴圖作為圖數據庫領域的領先企業&#xff0c;攜前沿技術與創新應用精彩亮相。?大會期間&#xff0c;嬴圖創始人兼CEO孫宇熙與來自全球的頂尖學者、企業代表共同探討人工…

2. 字符設備驅動

一、設備號 1.1. 什么是設備號 設備號是用來標記一類設備以及區分這類設備中具體個體的一組號碼。 設備號由主設備號和次設備號組成。主設備號的作用為標記一類設備、用于標識設備驅動程序,而次設備號的作用是為了區分這類設備中的具體個體設備及用于標識同一驅動程序下的具…

uboot armv8 啟動流程之 linker script

section 詳細說明.text按如下順序&#xff0c;中斷向量表vectors, 啟動入口代碼start.o,普通text, glue &#xff08;arm thumb2 相互調用時自動生成的代碼&#xff09;*(.vectors)CPUDIR/start.o (.text*)*(.text*)*(.glue*)__image_copy_start 標記為text 段入口&#xff0c;…

xxljob總結

XXL-Job 支持多種任務類型&#xff0c;以下是常見任務類型的示例 Demo&#xff0c;包含核心配置和代碼片段&#xff0c;幫助快速理解用法&#xff1a;一、Bean模式任務&#xff08;最常用&#xff09;通過注解 XxlJob 定義任務方法&#xff0c;直接在 Spring 容器中管理&…

Python包安全工程實踐:構建安全可靠的Python生態系統

在現代計算環境中&#xff0c;性能往往是Python包成功的關鍵因素。本文將深入探討Python包的性能優化技術&#xff0c;包括并發編程模型、性能分析工具、內存優化策略以及原生代碼集成等高級主題&#xff0c;幫助你構建高性能的Python組件。1. 性能分析基礎1.1 性能分析工具矩陣…

kubernetes基礎知識

個人博客站—運維鹿: http://www.kervin24.top CSDN博客—做個超努力的小奚&#xff1a; https://blog.csdn.net/qq_52914969?typeblog一、kubernetes介紹Kubernetes本質是一組服務器集群&#xff0c;它可以在集群的每個節點上運行特定的程序&#xff0c;來對節點中的容器進行…

winntsetup安裝驅動和光驅安裝F6功能一樣----NT5.2.3790源代碼分析

D:\drv>dir驅動器 D 中的卷是 新加卷卷的序列號是 443D-D64BD:\drv 的目錄2025-08-03 23:57 <DIR> . 2025-08-03 23:57 <DIR> .. 2008-05-27 10:01 119,068 yk51x86.cat 2008-05-20 10:01 969,380 yk51x86.inf…

Web 開發 11

今天完成了workshop2&#xff0c;進度有點慢&#xff0c;但是記錄一下極為愚蠢的一輪輪問答和思考~&#xff01;&#xff08;還是有點成就感的&#xff09;ps&#xff1a;【】內為我的提問1 導入語句&#xff08;ES6 模塊導入語法&#xff09;【import CatHappiness from "…

寫作路上的迷茫與突破

曾經&#xff0c;我也是那個在寫作面前躊躇不前的人。每次提筆&#xff0c;滿心都是“我寫不好”“我沒什么可寫的”“我達不到別人的高度”……這些念頭像藤蔓一樣&#xff0c;緊緊纏繞著我&#xff0c;讓我寸步難行。我看著群里的小伙伴們一個個妙筆生花&#xff0c;自己卻只…

23 Active Directory攻擊與防護策略解析

引言 Active Directory&#xff08;AD&#xff09;是企業IT環境中用戶認證、訪問控制和身份管理的核心。因其掌握整個網絡的"鑰匙"&#xff0c;AD常成為攻擊者的首要目標。 從憑證轉儲到隱蔽偵察&#xff0c;攻擊者通過多種手段控制AD。無論您是網絡安全分析師、紅…

【內容規范】關于標題中【】標記的使用說明

【內容規范】關于標題中【】標記的使用說明 在信息爆炸的時代&#xff0c;如何讓內容更易識別、更具條理性&#xff0c;成為內容創作者和平臺運營者共同關注的問題。標題中【】標記的使用&#xff0c;正是在這種需求下形成的一種實用規范。 這種規范的核心作用在于建立統一的內…

centos 9 安裝docker教程

拉取相關依賴 dnf -y install dnf-plugins-core設置阿里云鏡像庫 dnf config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo安裝docker dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plu…

關閉Jetbrains Mono字體連寫、連字功能

所謂的關閉Jetbrains Mono字體連寫&#xff0c;其實就是更換為Jetbrains Mono NL字體二者的區別就是符號間距的大小不同&#xff0c;也就是有無連字功能。 下圖以Visutal Studio為例&#xff1a;