Advertisement
RichPyke

SLA Battery Monitor V2.0

Jul 22nd, 2013
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.83 KB | None | 0 0
  1. # Read voltage level of a single battery pack and report to software.
  2. # Adapted from LiPo monitor circuit.
  3. # Assumed monitor circuit connected to ADC0
  4. # Set variables
  5. # Default values set for 12v Lead Acid. For 6v divide by 2
  6. # Change $vundervoltage to the under voltage of your specific battery if required
  7. # Change $vcritical to your lowest voltage you wish for the battery to get before human intervention
  8. # Change $vmin to low level alert value
  9. # Change $vmax to battery full charge
  10. # Change $multiplyer if using voltage divider
  11. # Factor is 5/255 for adc value conversion to volts
  12. $vundervoltage = 10.50
  13. $vcritical = 11.31
  14. $vmin = 11.58
  15. $vmax = 12.70
  16. $multiplier = 4
  17. $factor = 0.019607843
  18.  
  19. :ReadCells
  20. # Get ADC values
  21. $vc1 = GetADC(ADC0)
  22.  
  23. # Convert values to voltage to 2 decimal places
  24. $batterylevel = $vc1 * $factor
  25. $batterylevel = $batterylevel * $multiplier
  26. $batterylevel = Round($batterylevel,2)
  27.  
  28. # Check for errors on circuit
  29. IF ($batterylevel > $vmax)
  30. Print("Battery Monitor Error")
  31. Print("Check Monitor Circuits")
  32.  
  33. # Check for errors on battery connection
  34. ELSEIF ($batterylevel <= 0)
  35. Print ("Battery Connection Error")
  36. Print ("Check Battery Connection")
  37.  
  38. # Check for under voltage
  39. ELSEIF ($batterylevel <= $vundervoltage)
  40. Print ("Battery Under Voltage")
  41. Print("Check Or Replace Battery")
  42.  
  43. # Check if at critical levels
  44. ELSEIF ($batterylevel <= $vcritical)
  45. # Do sometihing if critical
  46. Print("Battery Critical")
  47. # Shut down all power, switch to back up battery alarm?
  48.  
  49. # Check if below recommended levels
  50. ELSEIF ($batterylevel < $vmin)
  51. # Do something if voltage low
  52. Print("Battery Level Low")
  53.  
  54. ELSE
  55. # Output voltages
  56. Print($batterylevel + "V")
  57. # Output to LCD display here (if required)
  58. ENDIF
  59. # Wait 5 seconds
  60. Sleep(5000)
  61.  
  62. # Go back to the start
  63. Goto(ReadCells)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement