資料介紹
描述
式傳使用此非接觸感器測量交流電流和功率因數(shù)。它是 Seeed Grove I2C 50/60HZ 交流電流和功率因數(shù)模塊。
對于能源管理項目,我希望有一種簡單的方法來測量交流電流和功率因數(shù),最好是非接觸式的,可以很容易地連接到設(shè)備和移除而無需直接連接到任何高壓電路。
我還想要一個 I2C 模塊,它封裝了所有傳感復(fù)雜性并讓我的主 MCU 處理通信。
這個傳感器模塊是我參加Seeed Grove 傳感器共同發(fā)明活動的一部分,這對任何人來說都是一個讓您夢想中的傳感器成為現(xiàn)實的好機會。
有功功率和視在功率

對于交流電源,以瓦特為單位的視在功率就是電壓乘以電流。這是用于計算導(dǎo)線在傳導(dǎo)電流時會發(fā)熱多少的功率。視在功率的單位是 VA,即伏安。
負載使用的實際功率通常小于視在功率,因為??一些功率會被電容或電感電路元件反射。在測量交流電感或電容負載(例如電機或計算機電源)時,以瓦特為單位的實際功率由公式 P = V * I * cos theta 表示。功率的單位通常是瓦特或千瓦。
功率因數(shù)

Cos θ 也稱為功率因數(shù),其中 θ 表示電流的相移或延遲。對于感性或容性負載,電流滯后或超前施加的電壓。對于純電阻負載,θ 為 0,因此 cos θ 為 1。對于電感負載,功率因數(shù)通常在 0.8 到 1.0 的范圍內(nèi)。也就是說,有功功率 [kW] 小于施加電壓乘以電流 [VA]。
對于此傳感器,可以使用非接觸式電流互感器 (CT) 檢測交流電流。感謝一篇關(guān)于DIY 非接觸式交流電壓檢測器的 instructables 文章,我了解到可以使用高阻抗數(shù)字邏輯緩沖器以非接觸方式測量交流電壓信號的相位。在音頻方面,這意味著測量電路中的嗡嗡聲。可以測量電壓和電流之間的相位差來計算功率因數(shù)。
I2C 傳感器
我喜歡在我的項目中使用 I2C 傳感器。它們使測量變得容易,它們處理所有的物理、信號調(diào)節(jié)、模數(shù)轉(zhuǎn)換、校準,并提供一個允許輕松訪問數(shù)字化數(shù)據(jù)的接口。訪問傳感器的任何代碼都沒有所有這些復(fù)雜性。此外,您可以將多個 I2C 傳感器放在同一條 2 線總線上。
我發(fā)現(xiàn) Microchip ATtiny tinyAVR 2 系列非常適合實現(xiàn) I2C 傳感器。它是一款微型 8 位 MCU,具有高級差分 ADC、可編程異步邏輯,并且可以以極低的功耗運行。

Seeed Studio Grove 傳感器 PCB
簡化示意圖

使用差分 ADC,測量電流相對容易,您只需測量電阻兩端的電壓降。對于交流電流,您需要在 50 或 60HZ 周期內(nèi)對電流進行多次采樣,并計算采樣的均方根平均值。AC 電壓信號的相位可以用連接到高阻抗數(shù)字邏輯緩沖器的天線線測量,該緩沖器是 ATtiny 可配置定制邏輯 (CCL) 外設(shè)的一部分。
模塊

如何使用模塊
將 100A 50mA CT 夾在載流導(dǎo)線周圍,從而連接它。CT 有一個 3.5mm 插頭。將其連接到插孔。將插孔線與 20 歐姆負載電阻并聯(lián)連接到 B- 和 B+ 端子。如果使用 0-1Vac CT(內(nèi)置負載電阻),請勿連接 20ohm 負載電阻。



將電源線天線線纏繞到相同的載流電線或電纜上。將其連接到引腳 RX1。不要將電線的導(dǎo)體連接到任何東西,它只是用膠帶粘在絕緣載流電線或電纜上。該天線線感測電壓 (emf)。

插入 Grove 連接器并連接到您的 MCU,例如 ESP32。
示例代碼
#include <Arduino.h>
#include <Wire.h>
#include "I2C_AC_Current.h"
AC_Current hct20;
void setup()
{
Serial.begin(115200);
hct20.begin(21,22); // SDA, SCL. 21,22 for ESP32
}
void loop()
{
hct20.read();
Serial.print("Current: ");
Serial.print(hct20.getCurrent());
Serial.print(" PF: ");
Serial.println(hct20.getPF());
delay(1000);
}
安慰
Current: 1.30 PF: 0.96
如果假設(shè)電壓通常是恒定的,則可以計算功率,例如:
const float voltage = 240;
float real_power_watts = voltage * hct20.getCurrent() * hct20.getPF();
傳感器固件
值得慶幸的是,Spence Konde 已經(jīng)為 ATTiny 2 系列編寫了一個Arduino 內(nèi)核,這使得編寫傳感器代碼變得更加容易。該內(nèi)核提供諸如 setup()、loop() 函數(shù)、串行對象、I2C 從 ISR 函數(shù)和用于訪問許多芯片外設(shè)的庫等功能。
傳感器固件代碼可以在github 上找到。
setup() 函數(shù)啟動 ADC、I2C 客戶端,并安裝請求和響應(yīng)回調(diào)。
void setup()
{
...
setupLogic();
ADC_init();
Wire.onReceive(receiveHandler);
Wire.onRequest(requestHandler);
Wire.begin(SHT2x_ADDRESS);
...
}
邏輯庫設(shè)置芯片的自定義可配置邏輯以偵聽 IN2、引腳 PA2 上的電壓信號。
void setupLogic()
{
...
Logic0.enable = true; // Enable logic block 0
Logic0.input0 = in::masked; // PA0 masked
Logic0.input1 = in::masked; // PA1 TX1 masked
Logic0.input2 = in::pin; // PA2 RX1 voltage sense
Logic0.output = out::disable; // Disable logic block 0 output pin PA4
Logic0.filter = filter::disable; // No output filter enabled
Logic0.truth = 0x01; // Set truth: HIGH only if input low
Logic0.edgedetect = edgedetect::enable; // Enable edge detection
Logic0.attachInterrupt(&voltageSenseISR,CHANGE);
Logic0.init();
// Start the AVR logic hardware
Logic::start();
}
它在每次級別更改時調(diào)用中斷服務(wù)例程,每秒發(fā)生 50-60 次。當(dāng) ADC 對電流進行采樣時,此中斷會啟動循環(huán)定時器,并在電流下一次過零時存儲迭代次數(shù)。這個數(shù)字在校準時與電壓和電流信號之間的相移成正比。
主 loop() 函數(shù)每秒對當(dāng)前信號采樣一次,持續(xù) 20 毫秒,并在每個通道上調(diào)用 add_sample()。
hardware_fast_sample_chABC(MAX_SAMPLES,chA,chB,chC); // samples for 20ms
add_sample() 函數(shù)在看到下一個電流過零時保存電壓相位計數(shù)。它將每次迭代的當(dāng)前樣本的平方加到兩個 bin 中,一個 bin 用于 60HZ 信號,另一個 bin 用于剩余的 50HZ 信號。通過檢查哪個 bin 具有平衡信號來選擇正確 bin 的結(jié)果。
void add_sample(int16_t diff) {
_crossguard--;
_phaseCounter++; // set to zero in ISR
if(((diff ^ _lastSample) & _crossguard) >> 15) {
// If crossed unambiguously (one but not both samples negative and crossGuard negative)
_crossguard = 10;
if (_phaseTriggered == 1) { // on first call after phase mark.
_phaseTriggered++;
_phaseCount = _phaseCounter;
}
}
uint32_t sq = ((uint32_t)diff*(uint32_t)diff);
if (_tickNum < SAMPLES_PER_60HZ_CYCLE) {
_sum2_60 += sq;
_n_60++;
if (diff >= 0) { _p++; }
if (diff < 0) { _n++; }
} else {
_sum2_e += sq;
_n_e++;
if (diff >= 0) { _pe++; }
if (diff < 0) { _ne++; }
}
_tickNum++;
_lastSample = diff;
return;
}
在主循環(huán)中,每秒一次,RMS 電流(安培)被縮放并存儲在全局變量中以供 I2C 從 ISR 讀取。
功率因數(shù)也被縮放并存儲在全局變量中。
當(dāng)檢測到 I2C 請求時,將調(diào)用 receiveHandler,并保存請求字節(jié)(命令)。
void receiveHandler(int numbytes)
{
if (numbytes > 0) {
// Called on a Write address, data
g_i2c_command = Wire.read();
}
}
稍后,調(diào)用 requestHandler 并緩沖響應(yīng)以寫入線路。
void requestHandler()
{
if ((g_i2c_command == SHT2x_GET_TEMPERATURE_NO_HOLD) ) {
Wire.write((uint8_t)(g_temperature >> 8));
Wire.write((uint8_t) g_temperature);
uint8_t buf[] = { (uint8_t)(g_temperature>>8), (uint8_t) g_temperature };
Wire.write(sht20_crc8(buf, 2));
} else if ((g_i2c_command == SHT2x_GET_HUMIDITY_NO_HOLD) ) {
Wire.write((uint8_t)(g_humidity >> 8));
Wire.write((uint8_t) g_humidity);
uint8_t buf[] = { (uint8_t)(g_humidity>>8), (uint8_t) g_humidity };
Wire.write(sht20_crc8(buf, 2));
}
}
計劃
未來的計劃是支持 3 個通道,向 I2C 接口添加通道細節(jié),并降低傳感器功耗。
結(jié)論
我期待著使用此模塊通過監(jiān)控各種電力負載來幫助節(jié)省能源。
感謝您的關(guān)注,我很樂意聽到任何評論,或者如果您覺得這有用。
- 非接觸式洗手開源項目
- Matrix IR非接觸式溫度計開源設(shè)計
- DIY IR非接觸式溫度計和物聯(lián)網(wǎng)設(shè)備
- 非接觸式洗手液開源分享
- 非接觸式溫度計開源設(shè)計
- 非接觸式電梯開源項目
- 帶短信通知的非接觸式門鈴開源分享
- COVID 19非接觸式溫度計
- 非接觸式門鈴開源分享
- 非接觸式和基于通知的門鈴開源分享
- SWR和功率計開源分享
- 基于游標(biāo)模型的非接觸式手勢交互方法 8次下載
- MLX90614數(shù)字非接觸式紅外溫度計的驅(qū)動程序免費下載 123次下載
- 非接觸式IC卡技術(shù)
- 使用安全非接觸式技術(shù)與 RFID 的建議
- 非接觸式液位傳感器的工作原理 3016次閱讀
- 交流接觸器壞了會出現(xiàn)什么情況 交流接觸器怎么判斷好壞 4448次閱讀
- 交流接觸器反復(fù)彈跳怎么解決 交流接觸器是干什么用的 7749次閱讀
- 非接觸式溫度感應(yīng)背后的原理與智能方案 1487次閱讀
- 交流接觸器的型號及含義 2648次閱讀
- 基于射頻識別讀寫器芯片實現(xiàn)非接觸式IC識別器的設(shè)計 2865次閱讀
- 基于非接觸式邏輯加密卡的門禁系統(tǒng)的實現(xiàn)方案 3577次閱讀
- 詳解非接觸微位移傳感器工作原理 7164次閱讀
- 非接觸式IC卡的模擬和高頻傳輸通路的接口電路設(shè)計 1829次閱讀
- 如何才能使用低成本實現(xiàn)非接觸式的數(shù)據(jù)交互 5059次閱讀
- dfrobot非接觸式紅外溫度傳感器MLX90614-DCI簡介 1.1w次閱讀
- dfrobot非接觸式液位傳感器簡介 2068次閱讀
- 非接觸式溫度傳感器原理及優(yōu)點 8607次閱讀
- 交流接觸器的結(jié)構(gòu)和工作原理 6.4w次閱讀
- 功率計各種方式分類 2422次閱讀
下載排行
本周
- 1DD3118電路圖紙資料
- 0.08 MB | 1次下載 | 免費
- 2AD庫封裝庫安裝教程
- 0.49 MB | 1次下載 | 免費
- 3PC6206 300mA低功耗低壓差線性穩(wěn)壓器中文資料
- 1.12 MB | 1次下載 | 免費
- 4網(wǎng)絡(luò)安全從業(yè)者入門指南
- 2.91 MB | 1次下載 | 免費
- 5DS-CS3A P00-CN-V3
- 618.05 KB | 1次下載 | 免費
- 6海川SM5701規(guī)格書
- 1.48 MB | 次下載 | 免費
- 7H20PR5電磁爐IGBT功率管規(guī)格書
- 1.68 MB | 次下載 | 1 積分
- 8IP防護等級說明
- 0.08 MB | 次下載 | 免費
本月
- 1貼片三極管上的印字與真實名稱的對照表詳細說明
- 0.50 MB | 103次下載 | 1 積分
- 2涂鴉各WiFi模塊原理圖加PCB封裝
- 11.75 MB | 89次下載 | 1 積分
- 3錦銳科技CA51F2 SDK開發(fā)包
- 24.06 MB | 43次下載 | 1 積分
- 4錦銳CA51F005 SDK開發(fā)包
- 19.47 MB | 19次下載 | 1 積分
- 5PCB的EMC設(shè)計指南
- 2.47 MB | 16次下載 | 1 積分
- 6HC05藍牙原理圖加PCB
- 15.76 MB | 13次下載 | 1 積分
- 7802.11_Wireless_Networks
- 4.17 MB | 12次下載 | 免費
- 8蘋果iphone 11電路原理圖
- 4.98 MB | 6次下載 | 2 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935127次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233089次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費下載
- 340992 | 191390次下載 | 10 積分
- 5十天學(xué)會AVR單片機與C語言視頻教程 下載
- 158M | 183342次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81588次下載 | 10 積分
- 7Keil工具MDK-Arm免費下載
- 0.02 MB | 73815次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65989次下載 | 10 積分
評論