There must have been a real "Oh, shit!" moment between those two posts.
Still, credit where credit is due: He did manage to put a compliance "team" together in less than 24 hours. On a weekend.
Did they start manufacturing? If they look into this problem now, it is possible that they could trash everything already produced and major design changes might be needed. Then the planned delivery in November this year is ambitious.
BTW: for those playing along at home, I did a discharge test myself. I had an Arduino at hand, below is a sketch for a simple voltmeter. I didn't use the "delay" function, because this would be not accurate, because I don't know how long the serial output and ADC measure needs. The best way is to use a timer, with auto reload on compare, because then my interrupt function is called exactly once per second. Don't use the timer overload mode and reload in interrupt, because then again there are some cycles for the interrupt latency are added (parts of the code found somewhere on the internet). If you wonder about the magic value 209.0f: I just feed 3V to it, used Serial.println(val), then calculated the factor with val/3. Because of the 10 bit ADC it is not very accurate for low voltages, but still better than 10% down to 0.3V.
Then I used my RK8511 DC electronic load (you can use "EEVblog #102 - DIY Constant Current Dummy Load for Power Supply and Battery Testing" instead) and set it to 100 mA constant current. This is the result for a not fresh Rayovac AAA battery (diagram based on every 100th value, because Open Office gets terrible slow on my PC with too many values in diagrams) :
The full data and calculations are in this Open Office document:
http://www.frank-buss.de/battery/discharge.odsThe battery was not fresh, so the 0.76 Wh capacity looks reasonable. The
datasheet says "963 mAh capacity to 0.9V" for 120 mA.
int ledPin = 13;
int analogPin = 5;
void setup()
{
Serial.begin(115200);
pinMode(ledPin, OUTPUT);
// initialize timer1
noInterrupts(); // disable all interrupts
TCCR1A = 0;
TCCR1B = 0;
TCNT1 = 0;
OCR1A = 15625; // compare match register for 1s delay
TCCR1B |= (1 << WGM12); // CTC mode
TCCR1B |= (1 << CS12) | (1 << CS10); // 1024 prescaler
TIMSK1 |= (1 << OCIE1A); // enable timer compare interrupt
interrupts(); // enable all interrupts
}
ISR(TIMER1_COMPA_vect)
{
char buf[16];
digitalWrite(ledPin, digitalRead(ledPin) ^ 1);
float val = analogRead(analogPin) / 209.0f;
dtostrf(val, 6, 3, buf);
Serial.println(buf);
}
void loop()
{
}