使用 Arduino ESP32 搭配 INA219 電流感測器,來打造一個能源計量儀表
步驟與項目
使用 Arduino ESP32 搭配 INA219 電流感測器,來打造一個能源計量儀表
在這個專案中,我們將使用ESP32 開發板和INA219電流感測器來創建一個能源計量儀表。這個能源計量儀表能夠測量直流電流、電壓和功率。我們將使用ESP32和16×2 I2C顯示器來即時顯示所有的能源數據。請查看之前的文章,了解使用INA219直流電流感測器的 Arduino 能源計量儀表。
零件清單
在開始之前,請確保您擁有以下必要的元件:
- ESP32 開發板
- INA219 電流感測器
- LiquidCrystal_I2C 顯示模組(16x2)
- 杜邦線(Jumper wires)
- 麵包板(可選)
- ESP32 的電源供應器
ESP32 能源計量儀表使用 ESP32 作為主控制器。它使用 INA219 電流感測器測量電流和電壓。
INA219 DC電流感測器
INA219是一款常用於電子專案中,用於測量和監控電流流動的直流電流感測器。它是一個高精度的感測器,能夠測量高達3.2A的電流,並提供0.1mA的解析度。
它的操作方法是將一個小電阻放在負載電路中,並通過INA219將這個電阻上的電壓轉換為電流量。它使用I2C通信協議,這使得它能夠輕鬆地與其他支援I2C的設備進行整合。
規格:
- 電阻:0.1歐姆,精度1%,2瓦特功率。
- 電壓範圍:最高可達+26伏特。
- 電流測量:±3.2安培,解析度為±0.8毫安培。
- 尺寸:0.9英寸 x 0.8英寸 PCB。
- 電壓感測:0伏特至26伏特範圍。
- 介面:I2C通信。
- 數據:測量電流、電壓和功率。
- 地址:16個可編程地址。
- 過濾:提供過濾選項。
- 校準:包括校準寄存器。
連線圖和連接方式
這個設置的連接非常簡單且容易理解。(以下是一個基本的連接示意圖,請注意根據您的具體硬體配置進行調整)
INA219 / LCD -> ESP32
- VCC -> 5V
- GND – > GND
- SDA -> D21
- SCL-> D22
原始碼和函式庫
- 安裝所需的函示庫:
將以下程式碼上傳到您的 ESP32 開發板。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
#include <Wire.h> #include <LiquidCrystal_I2C.h> #include <Adafruit_INA219.h> Adafruit_INA219 ina219; LiquidCrystal_I2C lcd(0x27, 16, 2); float busvoltage = 0; float current_mA = 0; float power_mW = 0; void setup() { lcd.init(); lcd.backlight(); lcd.setCursor(0, 0); lcd.print("ESP32 Energy"); lcd.setCursor(0, 4); lcd.print("Monitor"); delay(2000); if (!ina219.begin()) { lcd.clear(); lcd.setCursor(0, 0); lcd.print("FAILED TO FIND"); lcd.setCursor(0, 1); lcd.print("INA219 MODULE"); while (1) { delay(10); } } Serial.begin(115200); } void loop() { measureValues(); // Other operations you might want to perform in the loop } void measureValues() { busvoltage = ina219.getBusVoltage_V(); current_mA = ina219.getCurrent_mA(); power_mW = ina219.getPower_mW(); lcd.clear(); lcd.setCursor(0, 1); lcd.print("V:"); lcd.print(busvoltage); lcd.setCursor(9, 1); lcd.print("I:"); if (current_mA < 3) { lcd.print("000"); } else if (current_mA < 10) { lcd.print("00"); lcd.print((int)current_mA); } else if (current_mA < 100) { lcd.print('0'); lcd.print((int)current_mA); } else { lcd.print((int)current_mA); } lcd.setCursor(0, 0); lcd.print("Power(mW):"); lcd.print((int)power_mW); delay(2000); } |
專案工作和演示
上傳程式碼後,就可以測試ESP32電能表了。
- 連接 電池作為電源
- 連接 LED 作為負載。
設備的能耗以毫瓦 (mW) 表示,電流以毫安培 (I) 為單位測量,電壓等級以伏特 (V) 表示。
發佈留言
很抱歉,必須登入網站才能發佈留言。