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
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); }