Делаю платку-балансировщик.
Нужно мерять ячейки и мерять точно!
Применяю фронтенд BQ77PL900.
у неё внутри комутатор, кондер, операционник -повторитель и операционник-диференциальный.
Мега168 на внутренней опоре 1.1 вольт.
требуется как-то просчитать калибровки.
По даташиту не получается - нужно мерять 1.6 вольта. а у меня потолок 1.1 и это хорошо ибо напруга на выходе меняется от 0.975 до нуля. разрешение 10 бит
Для батареи 4.050 вольт получаются следующие значения на выходе BQ:
CAL0 = 0.364 вольт
CAL1 = 0.975 вольт
CAL2 = 0.829 вольт
CAL3 = 1.167 вольт
CAL4 = 0.600 вольт
CAL5 = 0.827 вольт
CAL6 = 0.599 вольт
CAL7 = 0.745 вольт
Напряжение ячейки считается как 0,975 - (Vbatt * 0.15)
НО в этой формуле есть неизвестные:
есть потеря примерно 1 милливольта на переносе с кондера на выход(семпл холд)
есть ошибка геина 0.15.. тоесть 4.05 меряется через семпл холд и теряет чтото, потом умножается на 0.15 +-1% . Потом полученное напряжение вычитается из опоры 0.975 которая тоже имеет +-1%
Вот и вопрос - как имея результаты измерения всех этих калибровок рассчитать реальное напряжение на батарее?
Сейчас я беру 0,975 делю на Сал1 - получаю коэффициент соответствия моего АЦП. ведь в меге опора вообще никакая (коэфф1)
потом читаю калибровку 4 и 6 через поправочный кожффициент коэфф1 чтоб получить потерю на семпл холд части.
дальше Кал1 минус кал4 - получаю 2.5 вольта которые умножили на какой-то коффициент(на него потом и напряжение батареи умножать будут) - получаю коэфф2.
ну и потом уже читаю Кал0 * на коэфф1 , прибавляю потерю на семпл холд схеме. Беру Сал1 умноженный на коэфф 1, отнимаю пролученное в начале и потом все это делю на коэфф2.
получается довольно точно но на замкнутых накоротко выводах получается 6 милливольт.
вот пример 5 банок
Реальные напряжения: 4,050 4,115 4,042 4,065
Спойлер
Cells voltage: 4.062600 4.119300 4.039400 4.060200 0.003700 0.003300 0.003200 0.003300 0.003800 5.434200Cells voltage: 4.062800 4.120000 4.040300 4.061700 0.004300 0.004000 0.003200 0.003600 0.003800 5.438600
Cells voltage: 4.063000 4.119700 4.040000 4.061100 0.003900 0.003800 0.003900 0.004600 0.003200 5.434000
Cells voltage: 4.061600 4.119600 4.040500 4.061300 0.004300 0.004500 0.003400 0.003900 0.004100 5.437500
Cells voltage: 4.062500 4.119000 4.040400 4.061000 0.002500 0.003000 0.003200 0.004000 0.002500 5.434000
Cells voltage: 4.061700 4.118900 4.040500 4.060900 0.003900 0.003600 0.003500 0.003300 0.003600 5.438800
Cells voltage: 4.062400 4.119400 4.040600 4.061200 0.003000 0.004700 0.004600 0.004300 0.003300 5.433800
Cells voltage: 4.062200 4.119500 4.040100 4.060700 0.003700 0.002900 0.004100 0.003400 0.004100 5.439500
Cells voltage: 4.062000 4.118700 4.040200 4.060700 0.004600 0.003900 0.003200 0.003800 0.004100 5.435700
Cells voltage: 4.062200 4.119300 4.040700 4.061400 0.004100 0.003900 0.003200 0.003400 0.004200 5.438600
Cells voltage: 4.062000 4.119000 4.040500 4.061500 0.004000 0.004200 0.003700 0.003400 0.003600 5.433500
Cells voltage: 4.061500 4.118800 4.040700 4.061000 0.002400 0.003400 0.003700 0.003100 0.003700 5.437600
Cells voltage: 4.062000 4.120000 4.041100 4.061200 0.003000 0.003200 0.003200 0.004400 0.004300 5.434600
Cells voltage: 4.062200 4.119400 4.040500 4.061400 0.004500 0.003400 0.003900 0.003200 0.004100 5.439300
Cells voltage: 4.062500 4.119400 4.040400 4.059800 0.004100 0.003600 0.004300 0.003800 0.003900 5.434800
Cells voltage: 4.063100 4.119900 4.040800 4.060800 0.003800 0.004700 0.004900 0.003900 0.003700 5.438500
Cells voltage: 4.061500 4.119100 4.040400 4.061400 0.002900 0.003900 0.002700 0.004300 0.002500 5.435600
Cells voltage: 4.062200 4.118900 4.040300 4.060800 0.003900 0.004300 0.004200 0.004400 0.003000 5.437500
Cells voltage: 4.062500 4.119800 4.039900 4.060400 0.003900 0.004700 0.004000 0.003400 0.003400 5.433700
Cells voltage: 4.062500 4.120000 4.040500 4.061300 0.004700 0.004300 0.004300 0.004100 0.004200 5.435200
Cells voltage: 4.062300 4.119800 4.041500 4.061200 0.004200 0.004100 0.004100 0.004600 0.005000 5.434900
Cells voltage: 4.062400 4.120000 4.040500 4.061000 0.005000 0.004300 0.003800 0.003500 0.003700 5.438400
Cells voltage: 4.062400 4.118800 4.040400 4.060500 0.003000 0.003900 0.004200 0.003400 0.003400 5.433800
Cells voltage: 4.062500 4.120400 4.040800 4.061000 0.003600 0.003700 0.004100 0.004100 0.004300 5.438100
Cells voltage: 4.061900 4.119400 4.041500 4.061400 0.003800 0.002700 0.004100 0.004100 0.003200 5.434900
Cells voltage: 4.061600 4.118900 4.040300 4.061400 0.002900 0.003700 0.004500 0.002300 0.003100 5.437300
Cells voltage: 4.061700 4.118900 4.040300 4.061400 0.003200 0.004100 0.003800 0.003600 0.003900 5.433100
Cells voltage: 4.062500 4.119400 4.040200 4.061100 0.003600 0.003500 0.004100 0.003900 0.004000 5.437000
Cells voltage: 4.062000 4.119300 4.040500 4.061700 0.004500 0.003500 0.004300 0.004000 0.003400 5.434400
Cells voltage: 4.061800 4.119000 4.040300 4.061400 0.004100 0.004900 0.003400 0.004300 0.004000 5.437900
Cells voltage: 4.062200 4.119400 4.040500 4.061200 0.004300 0.004800 0.004800 0.004800 0.003900 5.434100
Код: Выделить всё
// читаем все калиброви
bqWriteReg(0x05, 0b00010000);
CurrDelay();
Cal1 = ADCRead(ADCVPort);
...
// прочитали - считаем
Kscale1 = 0.975 / Cal1;
Kscale2 = (Cal1 - Cal4) / (2.5/Kscale1);
SHDelta = Cal4 - Cal6;
Vout = ADCRead(ADCVPort); // читаем Сал0 - напругу батареи через внутренности пропущенную
CellResult = Cal1*Kscale1 - (Vout*Kscale1 + SHDelta);
CellResult = CellResult / Kscale2;
Не доверяйте русским лужам - это может быть вход в метро.


