Как можно считывать данные с анализатора мощности с помощью arduino NANO через rs485
так вот, у меня есть этот энергетический анализатор. И я хочу читать данные с Arduino NANO, через rs485
вот продукт и вот таблица регистрации этого устройства.
Я использую boud rate 9600, без четности, slave 1
кроме того я прочитал эту ссылку и это видео
но все равно я не могу считывать данные с анализатора мощности с помощью arduino.
там 3 темы, в которых я не уверен:
-
- Какую библиотеку мне следует использовать? теперь я использую modbus master
-
- Как должно быть соединение arduino и преобразователя tll/rs-485?
-
- Как читать такие данные, как:
Address Dec: 0, Address Hex: 0000, Format Word: uint32, Counts : 2, Unit: V, Примечания: Напряжение L1-N, Множитель: 0.1
например я использовал эти коды
#include <SoftwareSerial.h>
#define SSerialRX 10 //Serial Receive pin
#define SSerialTX 11 //Serial Transmit pin
#define SSerialTxControl 3 //RS485 Direction control
#define RS485Transmit HIGH
#define RS485Receive LOW
#define Pin13LED 13
/*-----( Declare objects )-----*/
SoftwareSerial RS485Serial(SSerialRX, SSerialTX); // RX, TX
/*-----( Declare Variables )-----*/
int byteReceived;
String ph_hexa, ph_hexa_hight_byte, ph_hexa_low_byte, ph_hexa_value;
byte request [] = {
0x01,
0x03,
0x17,
0x70,
0x00,
0x01,
0x65,
0x80
};
//01 03 17 70 00 01 65 80 из примера таблицы регистрации на последней странице
void setup() /****** SETUP: ВЫПОЛНЯЕТСЯ ОДИН РАЗ ******/
{
// Запустите встроенный последовательный порт, вероятно, для последовательного монитора
Serial.begin(9600);
Serial.println("YourDuino.com SoftwareSerial remote loop example");
Serial.println("Use Serial Monitor, type in upper window, ENTER");
pinMode(Pin13LED, OUTPUT);
pinMode(SSerialTxControl, OUTPUT);
digitalWrite(SSerialTxControl, RS485Receive); // Init Transceiver
// Start the software serial port, to another device
RS485Serial.begin(19200); // set the data rate
}//--(end setup )---
void loop() /****** LOOP: RUNS CONSTANTLY ******/
{
if (RS485Serial.available()) //Искать данные из другого Arduino
{
Serial.print("Response: ");
for (int i = 0; i <= 6; i++) {
byteReceived = RS485Serial.read(); // Read received byte
ph_hexa = String(byteReceived, HEX);
// index 3 = high byte
if(i == 3)
{
ph_hexa_hight_byte = ph_hexa;
}
// index 4 = low byte
if(i == 4)
{
ph_hexa_low_byte = ph_hexa;
ph_hexa_value = ph_hexa_hight_byte + ph_hexa_low_byte;
Serial.print(ph_hexa_value);// Показать на последовательном мониторе
}
Serial.print(" ");
}
/*
Serial.println(ph_hexa);
ph_hexa = "";
*/
Serial.println();
}
else
{
Serial.println();
Serial.print("Request: ");
digitalWrite(SSerialTxControl, RS485Transmit); // Init Transceiver
for (int i = 0; i < 8; i++) {
Serial.print(request[i], HEX);
RS485Serial.write((byte)request[i]);
}
Serial.println();
digitalWrite(SSerialTxControl, RS485Receive); // Init Transmit
}
delay(1000);
}
но ответа нет.
23:17:17.663 -> YourDuino.com SoftwareSerial remote loop example
23:17:17.709 -> Use Serial Monitor, type in upper window, ENTER
23:17:17.756 ->
23:17:17.756 -> Request: 131770016580
23:17:18.691 ->
23:17:18.691 -> Request: 131770016580
23:17:19.719 ->
23:17:19.719 -> Request: 131770016580
@mehmet, 👍1
Обсуждение0
Смотрите также:
- Какое максимальное энергопотребление Arduino Nano 3.0?
- Питание светодиодной ленты - Сколько ампер?
- Как я могу запитать Arduino Nano от батареи LiPo, желательно 3,7 В
- Самая низкая мощность, возможная в Arduino
- Альтернатива мосфету IRF520 в схеме выключения Arduino
- Что произойдет, если мы соединим GND и +5v?
- Как перевести Arduino Nano в спящий режим с низким энергопотреблением (<0,05 мА)
- Подключение нескольких RS485 вместе
Можете ли вы дать нам ссылку на документацию на английском языке? Что вы пробовали и в чем ваша реальная проблема?, @Sim Son
Страница @SimSon на английском языке находится здесь https://www.entes.eu/mpr-47s-d/ ссылки обновляются . также я добавил код. но я не получил никакого ответа, как сказал пользователь., @mehmet
Какой микросхемы вы используете для подключения измерителя мощности?, @Sim Son
Если вы еще этого не сделали, поменяйте местами сигналы A и B с одной стороны и посмотрите, будет ли что-нибудь по-другому. Маркировка этих сигналов часто отличается от того, что вы ожидали., @timemage
@SimSon arduino nano, @mehmet
Для реального подключения RS485 вам нужен специальный чип, такой как ST485/MAX485, между nano и измерителем мощности. По крайней мере, ваш код должен работать с таким чипом, но я полагаю, что есть способы связи по RS485 без чипа., @Sim Son
...но для этого потребуется другая библиотека или изменения в библиотеке, @Sim Son
Как сказал @SimSon, просто используйте микросхему RS485 между вашим Nano-анализатором и анализатором мощности. Для начала проверьте [это tutorial](https://create.arduino.cc/projecthub/maurizfa-13216008-arthur-jogy-13216037-agha-maretha-13216095/modbus-rs-485-using-arduino-c055b5)., @Fahad
Извините, я думаю, что это было неправильно понято. Я также использую модуль MAX485. вот так https://hackster.imgix.net/uploads/attachments/1122513/pasted_image_0.png?auto=compress%2Cformat&w=680&h=510&fit=max, @mehmet