![]() |
Shorter aft rails were installed so that they would be contained within a future dodger. |
Click on the "Links" to go to Project and About Pages Click for Projects Links About the Vess...
This is a talk I gave to the Tallahassee Amateur Radio Society on building an off-grid electrical system for remote RV/Marine operations. Here is a Print Friendly version of the presentation.
Other Uses for Solar Activity
6AH LiFePO4 DIY Battery System for Testing and Developing
Here is an idea inspired from Andy at the Off-Grid Garage. Andy has a wonderful YouTube channel covering all things solar with emphasis on testing and the the understanding concepts. Check him out at https://off-grid-garage.com.
I recommend that anyone interested in building a reasonably sized DIY LiFePO4 battery (100AH or more) that they build a simple test/development battery using 4 small 6AH LiFePO4 cells and a decent BMS. Ideally, one would want to use the BMS intend for use in the big DIY battery build. This a great way to test and understand the BMS operations and limitations. These small cells cost only a few dollars. Simply connect the 4 cells in a 4S series configuration. Connect the 5 BMS balance wires and the BMS negative input to the battery's overall negative terminal. Plug the BMS balance connector into the BMS and the battery system is operational.
![]() |
The JBD SP04S020 120A 12V LiFePO4 BMS with Bluetooth UART and RS485 com boards |
![]() |
XiaoxiangiBMS iPhone App |
ARDUINO CODE
/* * Smart SI-ACR controller * * This code follows the Makerguide.com example for the DS18B20 1-Wire digital temperature sensor * with 16x2 I2C LCD and Arduino example code. More info: https://www.makerguides.com/ds18b20-arduino-tutorial/ * */ // Include the required Arduino libraries #include <onewire.h> #include <dallastemperature.h> #include <liquidcrystal_i2c.h> // Define input/output pins #define ONE_WIRE_BUS 2 // readout pin for temp probes #define RELAY 7 // output pin for the relay control // Create a new instance of the oneWire class to communicate with any OneWire device: OneWire oneWire(ONE_WIRE_BUS); // Pass the oneWire reference to DallasTemperature library: DallasTemperature sensors(&oneWire); LiquidCrystal_I2C lcd(0x27, 16, 2); // Degree symbol: byte Degree[] = { B00111, B00101, B00111, B00000, B00000, B00000, B00000, B00000 }; bool isOn = true; void setup() { // Start up the library: sensors.begin(); // Start the LCD and turn on the backlight: lcd.init(); lcd.backlight(); // Create a custom character: lcd.createChar(0, Degree); digitalWrite(RELAY, LOW); pinMode(RELAY, OUTPUT); lcd.setCursor(0,0); lcd.print("ALT BAT CHARGING"); lcd.setCursor(3,1); lcd.print("Delay Start"); delay(30000); // initial delay of 30 seconds } void loop() { // Send the command for all devices on the bus to perform a temperature conversion: sensors.requestTemperatures(); // Fetch the temperature in degrees Fahrenheit for two devices int i = 0; float AlternatorTemp = sensors.getTempFByIndex(i++); // the index 0 refers to the first device float BatteryTemp = sensors.getTempFByIndex(i++); // Print the temperature on the LCD; lcd.setCursor(0,0); lcd.print("ALT LiFe CHG:"); lcd.setCursor(13,0); if(isOn) lcd.print(" ON"); else lcd.print("OFF"); lcd.setCursor(0,1); lcd.print(" "); // clear the line lcd.setCursor(0,1); lcd.print("A:"); lcd.print((int) AlternatorTemp); lcd.write(0); // print the custom character lcd.print("F "); lcd.setCursor(8,1); lcd.print(" "); lcd.setCursor(8,1); lcd.print("B:"); lcd.print((int)BatteryTemp); lcd.write(0); lcd.print("F"); if(BatteryTemp < 32 || AlternatorTemp > 200 ) { isOn=false; digitalWrite(RELAY,LOW); } else { isOn = true; digitalWrite(RELAY,HIGH); } // Wait 1 second between updates delay(1000); }