เขียนโปรแกรมบน ESP32 ผ่าน Modbus(RS485) เพื่อรับข้อมูลจาก Power meter

Thanyasit
2 min readFeb 2, 2023

--

การหาค่าการใช้พลังงานของเครื่องจักร วิธีที่นิยมในอุตสาหกรรมที่ง่ายคือการใช้ Power meter ในการบันทึกค่าซึ่งตัว Power meter จะมีอุปกรณ์ต่อพวงที่สามารถส่งข้อมูลมาเก็บรวบรวมที่ส่วนกลางได้แต่จะมีราคาที่ค่อนข้างแพง บทความนี้เลยจะใช้ ESP32 ที่มีราคาถูกมารับข้อมูลจาก Power meter ผ่าน Modbus(RS485) ครับ

1. บัคกรีต่อสายไฟอุปกรณ์ตามภาพที่แสดงในหน้าปก

2. ติดตั้ง Libraries ModbusMaster ลงบน Arduino IDE

3. Upload code (Arduino IDE)

#Emag 4/2/23
#include <ModbusMaster.h>
#define MAX485_DE 5
#define MAX485_RE_NEG 4

ModbusMaster node;
float HexTofloat(uint32_t x) {
return (*(float*)&x);
}
void preTransmission()
{
digitalWrite(MAX485_RE_NEG, 1);
digitalWrite(MAX485_DE, 1);
}
void postTransmission()
{
digitalWrite(MAX485_RE_NEG, 0);
digitalWrite(MAX485_DE, 0);
}
void setup()
{
pinMode(MAX485_RE_NEG, OUTPUT);
pinMode(MAX485_DE, OUTPUT);
digitalWrite(MAX485_RE_NEG, 0);
digitalWrite(MAX485_DE, 0);
Serial2.begin(9600);
while (!Serial2) {
Serial.println("loop for init software serial");
}
node.begin(1, Serial2);// Address
node.preTransmission(preTransmission);
node.postTransmission(postTransmission);
}
void loop() {
long now = millis();
uint16_t result;
uint32_t x;
float power;
Serial.println("Get data");
result = node.readInputRegisters(0x0006, 0x0002);
if (result == node.ku8MBSuccess)
{
Serial.print("Voltage: ");
x = (node.getResponseBuffer(0) << 16) | node.getResponseBuffer(1);
power = HexTofloat(x);
Serial.println(power);
}
}

อธิบาย Code

Key หลักของโปรแกรมจะอยู่ที่ 2 คำสั่งนี้ครับ

  1. node.begin(x, Serial2); // x นี่คือตำแหน่งของอุปกรณ์

2.node.readInputRegisters(0xXXXX,0xYYYY); // X คือตำแหน่งของข้อมูลที่ต้องการจะดึง ส่วน Y จะเป็นครอบเขตว่าดึงไปกี่ตำแหน่ง

DATASHEET POWER METER KEPLER KP835

ใน Code นี้จะเป็นการดึงค่า Phase 1 currenct

เสร็จเรียบร้อยสำหรับเขียนโปรแกรมบน ESP32 ผ่าน Modbus(RS485) เพื่อรับข้อมูลจาก Power meter

Medium : http://medium.com/@thanyasitak

Linkedin : https://www.linkedin.com/in/thanyasit-a-03077621a

--

--

Thanyasit

I am a mechatronic engineer with an interest in hardtech. experienced desing engineer with 5 years of expertice in mechatronics, embedded system, Iot and AI