Renogy 30A Wanderer Charge Controller with the Renogy Battery Monitor and we recently upgraded to all Renogy components for our solar powered system.Ĭompatible with any type of battery, this unit connects to a shunt linked between the battery, charge controller, and an inverter. We lived with this for about 6 years before installing the Our battery, from which we extrapolated its status. This information can be helpful in learning what your system can do.Ģ019, we had a very simple battery monitor which only displayed the voltage of But once you begin collecting, storing, and using solar to power your life, you’ll want to keep tabs on how your new system is working. Sure is going to be nice having access to the data from these charge controllers without having to use a Raspberry Pi! Life is too short for long bootup times, corruptible SD cards and excessive power overhead, especially in a solar environment.With all the decisions necessary in installing a solar powered system, the last thing that may come to mind is a monitoring device. On my controller with no solar panel connected that outputs: Successfully read the data registers! Serial.print("Failed to read the info registers. Info_registers = node.getResponseBuffer(j) Serial.println("Successfully read the info registers!") Result = node.readHoldingRegisters(0x00A, num_info_registers) Serial.println(result, HEX) // E2 is timeout Serial.print("Failed to read the data registers. Serial.println("Successfully read the data registers!") ĭata_registers = node.getResponseBuffer(j) Result = node.readHoldingRegisters(0x100, num_data_registers) Int modbus_address = 255 // my Renogy Wanderer has an (slave) address of 255! Not in docs? data registers (not all of which are used) and 17 info registers. Not sure if this is possible on an Arduino. Pins used by ESP32 for the 2nd serial port. I haven't processed or formatted the data yet, but there's lots of processing and explanation in that nodejs project above. Here's my current code, this gets all 30 data registers (not all are used on my cheapie controller) and 17 info registers. So maybe I'm just not connecting to the controller correctly. The above script just outputs "E2" every iteration (for "Serial.println(result)"), which is a timeout. In theory that should read 6 holding registers starting with 0x101 (battery voltage), but so far no joy. Note that I'm trying to use modbus on a second serial port so I can still print output to the console. do something with data if read is successful E2 is timeout, which is what I always get Serial.println(result, HEX) // 0 is node.ku8MBSuccess. Result = node.readHoldingRegisters(0x101, 6) result = node.readHoldingRegisters(2, 6) slave: read (6) 16-bit registers starting at register 2 to RX buffer result = node.writeMultipleRegisters(0, 2) slave: write TX buffer to (2) 16-bit registers starting at register 0 set word 1 of TX buffer to most-significant word of counter (bits 31.16) set word 0 of TX buffer to least-significant word of counter (bits 15.0) With anything else I get E0 for all reads (node.ku8MBInvalidSlaveID) Node.begin(0, Serial2) // I think the addy is 255. create a second serial interface for modbus Here's a starting point I'm working on based on example code here (using " Modbus Master" Library from Doc Walker): #include Parsing: (the highest byte OOH is not used) the battery capacity SOC is 64H% (decimal 100%) |0x114|Discharge Watt/Hrs Today|Watt Hours|Īny guidance on how I would check one of those registers? I think it uses modbus to do so.įor example page 17 chapter 3.5 read the SoC as you have a good example.ģ.5 To read battery capacity SOC, and the PDU address is known to be 0100H |0x112|Discharge Amp/Hrs Today|Amp Hours| The below is a list of supported registers for state data: |0x018 - 0x019|Controller serial number|| |0x016 - 0x017|Controller hardware version|| |0x014 - 0x015|Controller software version|| |0x00B|Controller discharge current rating|Amps| The below is a list of supported registers for device information: Here are the registers are described at that NodeJS project: No data reaches the console other than boot data, but I think that's because I'm not checking the charge controller's registers. incoming = Serial2.readStringUntil('\n') I'm currently using this sketch: #define RXD2 16 On the TTL side I have ground connected to an ESP32 ground, VCC to ESP32 3.3v, the adaptor's RXD to ESP32 pin TX2, the adaptor's TXD to ESP32 pin RX2. I'm using this RS232 to TTL Serial converter. That's the same pinout as this project, which also interfaces the Renology to a Pi but doesn't give much documentation:
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |