Victron MPPT data using Arduino serial: Difference between revisions
Jump to navigation
Jump to search
| Line 110: | Line 110: | ||
if (label == "V"){ | if (label == "V"){ | ||
Serial.println(label + val); | Serial.println(label + val); | ||
} | |||
} | |||
} | |||
</syntaxhighlight> | |||
= Arduino Code - Code - Reading other Parameters from MPPT = | |||
<syntaxhighlight lang="c++"> | |||
/* Connections: | |||
MPPT pin MPPT Arduino Arduino pin | |||
1 GND GND GND | |||
2 RX TX - do not use! | |||
3 TX RX 7 (UNO) | |||
4 Power+ none - do not use! | |||
*/ | |||
#include <SoftwareSerial.h> | |||
SoftwareSerial mySerial(7, 8); // RX, TX | |||
String label, val; | |||
void setup() | |||
{ | |||
Serial.begin(9600); | |||
mySerial.begin(19200); // baud rate for MPPT | |||
} | |||
void loop() | |||
{ | |||
if (mySerial.available()) | |||
{ | |||
label = mySerial.readStringUntil('\t'); | |||
val = mySerial.readStringUntil('\r\r\n'); | |||
// V = Battery voltage (mV) | |||
// VPV = Solar Panel voltage (mV) | |||
// PPV = Solar panel power (W) | |||
// I = Battery current (mA) | |||
// IL = Load Current (mA) | |||
if (label == "V"){ | |||
Serial.println(label + val); // Battery Voltage | |||
} | |||
if (label == "VPV"){ | |||
Serial.println(label + val); // Solar Panel Voltage | |||
} | |||
if (label == "PPV"){ | |||
Serial.println(label + val); // Solar Panel Power (Watts) | |||
} | } | ||
} | } | ||
Revision as of 22:32, 7 July 2023
Reading Victron MPPT Data
References
Parts Required
- Victron BlueSolar MPPT 75/15 Retail SCC010015050R - $135 (Note that this unit is not Bluetooth enabled) [1]
- JST Jumper 4 Wire Assembly - $2.75 [2]
- Arduino Uno
Voltage considerations for different Victron hardware
- Victron MPPT operates at 5V.
- Arduino Uno also operates at 5V so no digital converter required.
VE.Direct Pinout
Serial Port Configuration - VE.Direct
Fritzing Circuit Diagram
Photos of Circuit
Arduino Code - Image
Serial Monitor - Example Output
Arduino Code - Code
/* Connections:
MPPT pin MPPT Arduino Arduino pin
1 GND GND GND
2 RX TX - do not use!
3 TX RX 7 (UNO)
4 Power+ none - do not use!
*/
#include <SoftwareSerial.h>
SoftwareSerial mySerial(7, 8); // RX, TX
String label, val;
void setup()
{
Serial.begin(9600);
mySerial.begin(19200);
}
void loop()
{
if (mySerial.available())
{
label = mySerial.readStringUntil('\t');
val = mySerial.readStringUntil('\r\r\n');
Serial.println(label + val);
}
}
Arduino Code - Code - Reading Battery Voltage - V
/* Connections:
MPPT pin MPPT Arduino Arduino pin
1 GND GND GND
2 RX TX - do not use!
3 TX RX 7 (UNO)
4 Power+ none - do not use!
*/
#include <SoftwareSerial.h>
SoftwareSerial mySerial(7, 8); // RX, TX
String label, val;
void setup()
{
Serial.begin(9600);
mySerial.begin(19200); // baud rate for MPPT
}
void loop()
{
if (mySerial.available())
{
label = mySerial.readStringUntil('\t');
val = mySerial.readStringUntil('\r\r\n');
// V = Battery voltage (mV)
// VPV = Solar Panel voltage (mV)
// PPV = Solar panel power (W)
// I = Battery current (mA)
// IL = Load Current (mA)
if (label == "V"){
Serial.println(label + val);
}
}
}
Arduino Code - Code - Reading other Parameters from MPPT
/* Connections:
MPPT pin MPPT Arduino Arduino pin
1 GND GND GND
2 RX TX - do not use!
3 TX RX 7 (UNO)
4 Power+ none - do not use!
*/
#include <SoftwareSerial.h>
SoftwareSerial mySerial(7, 8); // RX, TX
String label, val;
void setup()
{
Serial.begin(9600);
mySerial.begin(19200); // baud rate for MPPT
}
void loop()
{
if (mySerial.available())
{
label = mySerial.readStringUntil('\t');
val = mySerial.readStringUntil('\r\r\n');
// V = Battery voltage (mV)
// VPV = Solar Panel voltage (mV)
// PPV = Solar panel power (W)
// I = Battery current (mA)
// IL = Load Current (mA)
if (label == "V"){
Serial.println(label + val); // Battery Voltage
}
if (label == "VPV"){
Serial.println(label + val); // Solar Panel Voltage
}
if (label == "PPV"){
Serial.println(label + val); // Solar Panel Power (Watts)
}
}
}