VOC sensor for detecting electrolyte leakage... before it's too late!

jonescg

100 MW
Joined
Aug 7, 2009
Messages
4,213
Location
Perth, Western Australia
I picked up one of these little analog VOC sensors from RS the other day and wired it into a voltage divider circuit.
It's a potentially useful way of detecting electrolyte leakage from the battery, especially during charging. Generally, if a cell leaks electrolyte during charge, things are about to go bad shortly, but if this can detect it, and cut power, you might just save your house.

I used acetone on a tissue to get it to go off, but it seems to be very sensitive - took ages to come back down to a fairly steady baseline of 1.9 V (divided from a 4 V supply). Acetone is really volatile so it goes crazy, but the solvent in Sikaflex (mainly toluene) did the same, it just took a little longer.

[youtube]aav8O6E3hNY[/youtube]

Datasheet here:
https://docs-apac.rs-online.com/webdocs/15a6/0900766b815a66c8.pdf
 
That's an awesome idea!

I imagine that this should not only shut off, but start a really loud and distinct beep as well.
The 'get this thing the frock out of your house right now' warning.
Because once a battery reaction starts, does it really stop?

What about a continuous monitor like this?

1) threshold is set so that putting the battery next to an open paint can or car tailpipe in a garage doesn't set it off..
2) depending on the current the draw of the sensor, you might want to sample the air for a few milliseconds per second or something..
3) must run off the pack voltage so that it isn't limited to piggybacking off the ~5v of a BMS..
4) super loud beep with an ignore switch that turns the sensor off for 1 minute.
 
fechter said:
Cool idea. You need to test it with actual battery electrolyte.

Just tested it with a dead LiPo cell I opened up - yep, ethylene carbonate sets it off nicely. In fact it's reading really low levels of VOCs right now (0.72 V in ambient air) so it must have been picking up the acetone beaker on the other side of the room!

Nep - I think it would be ideally suited to sealed battery enclosures. An electrolyte leakage won't get far before it becomes the dominate VOC in a confined space. First thing it needs to do is disconnect the charger and/or main discharge circuit. And yes, sound the alarm so you can push it out of the garage!
 
These guys use it to good effect:
https://www.youtube.com/watch?v=Cx03a8GvrXA
 
Inside a sealed battery compartment it should easily detect the slightest amount of VOC. In the video it shows a sudden spike in VOC which I assume is from a cell venting. I guess the question is how reliably can this prevent actual fires. Even if not 100%, it seems like a worthwhile safety feature as there isn't much downside to it.

It would really only need to be on during charging so there would need to be a way to turn it off to prevent draining the pack when not charging.

Here is a similar sensor on a breakout board from Adafruit. $20usd
https://www.adafruit.com/product/3566
 
Yeah some BMS circuits are only activated when a separate 12 V supply is switched on - that can be initiated by the key during use, or by the charge port during charging. Sitting there in the car park is probably quite safe. If you can add it as an analog input to a thermal management system or the like it shouldn't add too much clutter.

I reckon this should be a worthwhile inclusion for any DIY EV car or motorbike. Might be a big tougher to justify on an e-bike, but as you say; no real downside other than the 56 mW quiescent load.
 
Just thought I would put some code up for anyone who is keen to try this.

I set the Figaro VOC sensor up with an Arduino and logged the VOC output as a 0-1023 value

It was awfully flakey so I found a bit of code to help with averaging sensor values (hey, it's a big deal for a noob like me!)

Code:
int VOC1 = A0;    // declare A0 as VOC sensor input
int VOC1Value = 0;  // Define values of VOC sensor inputs
int average = 0;    // Define the average
int vent = 630;     //Define the VOC limit where alarm is raised, and say turn off charger

void setup() {
  Serial.begin(9600); // initialize serial communications 
}
 
void loop() {
  VOC1 = analogRead(VOC1); // read the value from the sensor
   for (int i=0; i < 10; i++) {
 average = average + analogRead(A0);
 }
 average = average/10;
  Serial.print(millis()); // print the time in milliseconds since the program started
  Serial.print(',');
  Serial.println(average); // print to serial

  pinMode(13, OUTPUT);      // declare pin 13 as an output 
  
  delay(150);
  
  VOC1Value = analogRead(average);     
    
  if (VOC1Value > vent)
    digitalWrite(13, HIGH);      // if the reading exceeds 630, turn 13 on
  else
    digitalWrite(13, LOW);       // otherwise leave it off
      
}
Open the serial log and watch the values tick over.
I plotted the results after hovering a permanent pen over the top of the sensor.
Pretty cool hey?
 
That is awesome even if amateur code. So was the voc sensor just noisy?
 
neptronix said:
That is awesome even if amateur code. So was the voc sensor just noisy?

I think its the ADC not being all that great. The average of 10 readings makes a huge difference.
 
So the VOC sensor gives you 4.5 minutes advance warning of things about to go bad. Assuming the cell was heating due to some kind of internal failure - in this instance I was just heating it with Nichrome wire at 3 amps (about 10 W). The PTC miraculously worked in this instance, effectively disconnecting the cell from any circuit it was participating in. The VOC detected the electrolyte leakage a good 4.5 minutes before the cell went into thermal runaway.

Science is cool 8)

 
Yeah PTC was just shy of 100'C, VOC detected leaking electrolyte at 120'C.
 
jonescg said:
Yeah PTC was just shy of 100'C, VOC detected leaking electrolyte at 120'C.

Correction -
112 degrees C when the PTC popped.
129 degrees C when the cell leaked electrolyte.
160 degrees C at the surface when the cell went into thermal runaway.
 
Back
Top