Измерение внутреннего сопротивления аккумуляторов 18650

leonne69

✩✩✩✩✩✩✩
19 Дек 2018
1
0
Здравствуйте участники и гости сайта.
Появилась необходимость в проверки большого количества аккумуляторов(перебераю батарею в электросамокате). Хочу собрать прибор для замера внутреннего сопротивления аккумов. Нашел на ютубе несколько видосов, о том как самодельщики это делают.
Теория такая. Замер напряжения на аккуме без нагрузки, и замер напряжения под нагрузкой. Измерения тока в этой цепи. И дальше через закон Ома, расчет искомого внутреннего сопротивления. Дальше, было видео по изготовления токовой нагрузки, достаточно простой, которая калибруется на один и тот же ток. Для чего это нужно, думаю понятно, но я поясню. Постоянная токовая тестовая нагрузка, исключит необходимость замеров тока.
Теперь перейду к собственно самой самоделке. Задумка, собрать такое устройство на ардуино.
Принцип работы. На ардуино, программируется вольтметр. К нему соответственно подключается, для замеров аккумулятор. В ардуино, сохраняется данные этого замера. Далее, силами этого же ардуино, скажем через секунду или две, посредством реле, ардуино подключает ту самую токовую нагрузку, и производит замер напряжения на аккуме, еще раз. Оперируя значениями первого и второго замера, высчитывается разница напряжений. Она и будет искомой цифрой внутреннего сопротивления. И эту раздницу, ардуино выводит на цифровые семисегментные индикаторы. Типо ТМ1637.
Сразу оговорюсь, Разница напряжений без нагрузки и под нагрузкой, будет соответствовать внутреннему сопротивлению аккумулятора лишь в случае, когда токовая нагрузка будет держать четкие 1Ампер.
FLIZhJ1wKQ4.jpgmHq9NGGbnWg.jpgё
Нужна помощь в написании скетча для ардуино, сам вряд ли осилю.
 

viktor1703

★★★✩✩✩✩
9 Дек 2021
611
145
Весь этот метод полная фигня, потому, что
Разница напряжений без нагрузки и под нагрузкой, будет соответствовать внутреннему сопротивлению аккумулятора лишь в случае, когда токовая нагрузка будет держать четкие 1Ампер.
А из-за разного внутреннего сопротивления и уровня заряда "четкие 1 Ампер" будут, разве что, никогда. Да и из-за нагрева нагрузочного резистора его сопротивление "плывет", поэтому "четкие 1Ампер" возможно удержать ещё реже, чем никогда. К расчетам нужно подходить исходя из законов физики, а не около "научных" писанин в тырнетах.
 

poty

★★★★★★✩
19 Фев 2020
3,230
940
Я так понял, используется не резистор, а источник неизменного тока (constant current source), а там от внешних условий будет зависеть только если compliance voltage будет не соблюдено.
 

viktor1703

★★★✩✩✩✩
9 Дек 2021
611
145
В принципе, для этого дела, по-моему, ардуйня и не нужна. Физики давно всё придумали. Берешь, делаешь необходимые замеры, записываешь показания и считаешь по формуле r=Е/I−R, где Е - электродвижущая сила, равна напряжению на неподключенном ни к чему аккумуляторе, I - сила тока, протекающая, через цепь, R - сопротивление нагрузочного резистора, r - искомое внутреннее сопротивление. Лень считать вручную - можно поручить эту задачу экселю, сразу наглядно видно где какие значения.
 

leonne69

✩✩✩✩✩✩✩
19 Дек 2018
1
0
Весь этот метод полная фигня, потому, что
А из-за разного внутреннего сопротивления и уровня заряда "четкие 1 Ампер" будут, разве что, никогда.
Да мы как бы и собираемся мерить внутреннее сопротивление.
Да и из-за нагрева нагрузочного резистора его сопротивление "плывет", поэтому "четкие 1Ампер" возможно удержать ещё реже, чем никогда.
для создания тока в 1 ампер, используется совсем не ваш нагрузочный резистор. В качестве нагрузки, используется токовая нагрузка. Это небольшая схема с сердцем из LM317, включенная по схеме стабилизатора тока. и в любой цепи, в которую её включить, она будет держать ток, независимо от приложенного напряжения, в 1А. Нагревом его элементов, я планирую пренебречь, поскольку устройство во первых, используется кратковременно и стоит на отдельном радиаторе. На втором фото, именно эта токовая нагрузка. и поверьте, ток она держит, независимо от напряжения(в пределах разумного)
В принципе, для этого дела, по-моему, ардуйня и не нужна.
Это лично вам не нужна. С техникой "померял записал и на калькуляторе посчитал", я знаком. Вот только не собираюсь я этим заниматься. И это именно тот труд, который можно поручить Ардуино. Цель, создать прототип, который будет мерять это сопротивление. Сам. Без калькулятора.
Предвидя ваш вопрос, о том насколько это точно будет, Я заранее отвечу. Точность, будет приличная. Но даже имея погрешности, предположим в 20%( цифра с потолка) оно будет монотонно, мерять партию деталей, и выдавать разницу между элементами. При сборке батареи, важна схожесть параметров, а не точность измерений.
Я так понял, используется не резистор, а источник неизменного тока (constant current source)
Совершенно верно
от внешних условий будет зависеть только если compliance voltage будет не соблюдено.
А вот тут не совсем понял о каком напряжении речь
 
Изменено:

leonne69

✩✩✩✩✩✩✩
19 Дек 2018
1
0
Как читающие должны были это понять по приведенной схеме?
Я все описал. И указал что нагружать буду "токовой нагрузкой". А схема, которую вы цитируете. это общая схема устройства. К токовой нагрузке она не имеет отношения.
Но вопрос не в этом. имея стабильный ток в цепи, и стабильное внутреннее сопротивление каждого замеряемого источника напряжения, можно замерять изменение напряжения на источнике, и пересчитав узнать внутренне сопротивление?
 

poty

★★★★★★✩
19 Фев 2020
3,230
940
Compliance voltage - это минимальное напряжение, при котором источник тока выполняет свою функцию. Например, LM317 в линейном режиме требует около 1В между in и out, плюс токозадающий резистор должен работать на разности потенциалов 1,25В, итого, в теории, compliance voltage для этого CCS - 2,25В. При меньшем значении будет врать сильно.
И - да, @viktor1703 прав, что на токозадающем резисторе будет выделяться 1,25Вт при 1А, так что...
 

leonne69

✩✩✩✩✩✩✩
19 Дек 2018
1
0
@poty, Токовая нагрузка уже собрана. И уже функционирует. Нагрев на ней минимальный. "Работать" долго, она не будет. секунда, ну две на замер. дальше отключение. С этим проблем нет. Замеры внутреннего сопротивления аккумулятора, я уже ей проводил. Теперь вот хочу сделать этот процесс автоматическим.
 

poty

★★★★★★✩
19 Фев 2020
3,230
940
Ну, мне лично этот проект неинтересен, тут сорри. Скетч здесь выеденного яйца не стоит, если честно. Минут на 20 работы, если будет конечная принципиальная схема. Может кто и возьмётся.
 

te238s

★★✩✩✩✩✩
14 Ноя 2021
374
97
Так а зачем строго 1а тока?
Просто мощный резистор и MOSFET. Измеряем напряжение и ток. Вычисляем.
 
  • Лойс +1
Реакции: ТехнарьКто

ТехнарьКто

★★★★★✩✩
13 Янв 2020
270
437
@VictorArx,
YR1030+ измеряет методом AC. Топикстартеру для аккумуляторов лучше метод измерения DC. Самое печальное, что методы дают разный результат. И любой современный метод измерения внутреннего сопротивления химического источника тока не идеален.
1.измерения импеданса химических источников

2.измерения импеданса химических источников
 

ТехнарьКто

★★★★★✩✩
13 Янв 2020
270
437
@leonne69,

Порассуждаем.

Теория.
Аккумулятор представим в виде ЭДС и внутреннего сопротивления.
Применяем закон Ома для цепи постоянного тока I=U/R или U=I*R и R=U/I

Для цепи постоянного тока рис.1 ЭДС=Uнагр+Uвн =Iнагр*Rнагр+Iнагр*Rвн

1.Iнагр.gif
рис.1



отсюда

ЭДС=Uнагр+Iнагр*Rвн

при Iнагр=0V ЭДС=Uнагр (напряжение разомкнутой цепи равно ЭДС или ЭДС приблизительно равно измеренному напряжению аккумулятора) рис.2

2.Uбат.gif

рис.2


Измеряя напряжение аккумулятора или батарейки высокоомным вольтметром (мультиметром) ЭДС будет приблизительно равна измеренному напряжению.
При Rнагр отличающееся от нуля ЭДС=Iнагр*Rнагр+Iнагр*Rвн и подставив в формулу напряжение U примерно равное ЭДС
Получаем
(1) U=Iнагр*Rнагр+Iнагр*Rвн
В этой формуле известно:
U - измерили высокоомным вольтметром напряжение, которое примерно равно ЭДС (рис.2)
Rнагр - либо устанавливаем заранее известное высокоточное либо измеряем высокоточным прибором
Uнагр - замкнув аккумулятор сопротивлением Rнагр измеряем на этом сопротивлении Uнагр
Зная Uнагр и Rнагр можно вычислить Iнагр
Iнагр=Uнагр/Rнагр и подставляем это в (1) U=Iнагр*Rнагр+Iнагр*Rвн
получаем
U=(Uнагр/Rнагр)*Rнагр+(Uнагр/Rнагр)*Rвн
Теперь в этой формуле осталось одно не известное, Rвн
Вычисляем Rвн по известным U, Uнагр, Rнагр
U=(Uнагр/Rнагр)*Rнагр+(Uнагр/Rнагр)*Rвн
U=(Uнагр/Rнагр)*Rнагр+(Uнагр/Rнагр)*Rвн
(Uнагр/Rнагр)*Rнагр+(Uнагр/Rнагр)*Rвн=U
Rнагр(Uнагр/Rнагр)+Rвн(Uнагр/Rнагр)=U
Uнагр+Rвн*(Uнагр/Rнагр)=U
Rвн*(Uнагр/Rнагр)=U-Uнагр
(Rвн*Uнагр)/Rнагр=(U-Uнагр)
(Rвн*Uнагр)=(U-Uнагр)*Rнагр
Rвн*Uнагр=(U-Uнагр)*Rнагр
Rвн*Uнагр/Uнагр=((U-Uнагр)*Rнагр)/Uнагр
Rвн=((U-Uнагр)*Rнагр)/Uнагр
Rвн=(U/Uнагр-Uнагр/Uнагр)*Rнагр
Rвн=(U/Uнагр-1)*Rнагр

Rвн=(U/Uнагр-1)*Rнагр

Собираем имитатор ЭДС и измеряем его напряжение. ЭДС=4,1998V
Вводим в имитатор эквивалент внутреннего сопротивления. Rвн=111,77 Ом
Измеряем напряжение имитатора АКБ получаем U=4,1998V
Измеряем R нагрузки получаем Rнагр=122,39кОм или 122 390 Ом
Измеряем U на нагрузке и получаем Uнагр=4,1962V
Рассчитываем R внутреннее Rвн=(U/Uнагр-1)*Rнагр= (4,1998/4,1962-1)*122390=105

Пробуем с другим сопротивлением.
Rнагр=2,7К=2707 Ом
Измеряем U на нагрузке и получаем Uнагр=4,0333V
Рассчитываем R внутреннее Rвн=(U/Uнагр-1)*Rнагр= (4,1998/4,0333-1)*2707=111,7 Om

Как итог. Вроде работает.

Собираем имитатор ЭДС и измеряем его напряжение. ЭДС=4,1998V
ЭДС.jpg

Вводим в имитатор эквивалент внутреннего сопротивления. Rвн=111,77 Ом
Rвн.jpg

Измеряем напряжение имитатора АКБ получаем U=4,1998V
U(эдс).jpg

Измеряем R нагрузки получаем Rнагр=122,39K или 122 390 Ом
R1.jpg

Измеряем U на нагрузке и получаем Uнагр=4,1962V
U1.jpg

Рассчитываем R внутреннее Rвн=(U/Uнагр-1)*Rнагр= (4,1998/4,1962-1)*122390=105 Ом

Пробуем с другим сопротивлением.

Rнагр=2,7К=2707 Ом
R2.jpg

Измеряем U на нагрузке и получаем Uнагр=4,0333V
U2.jpg

Рассчитываем R внутреннее Rвн=(U/Uнагр-1)*Rнагр= (4,1998/4,0333-1)*2707=111,7 Om

Вариант№2 по фэншую ГОСТу. (ГОСТ Р МЭК 61960-2007 "Аккумуляторы и аккумуляторные батареи литиевые для портативного применения." Пункт 7.6.2 Измерение внутреннего сопротивления методом d.c.).

Rвн2.jpg
рис.3

Аккумялятор должен быть полностью заряжен.
Подключаем сопротивление R1 и измеряем напряжение U1 на R1 и ток в цепи будет I1. (замер на 10 секунде)
Затем подключаем сопротивление R2 и измеряем напряжение U2 на R2 и ток в цепи будет I2. (замер сразу после предыдущего)
Значения токов по ГОСТу I1=0.2*Iном, I2=1*Iном. Для вывода формулы, рекомендуемые номиналы токов и время, лишняя информация.

Получаем E=U1+Rвн*I1, E=U2+Rвн*I2.

Поскольку ЭДС (E) одна и та же, получаем
U1+Rвн*I1=U2+Rвн*I2
U2+Rвн*I2=U1+Rвн*I1
Rвн*I2-Rвн*I1=U1-U2
Rвн*(I2-I1)=(U1-U2)
Rвн=(U1-U2)/(I2-I1) (формула по фэншую из стандарта)
Поскольку I=U/R и нам извесны сопротивления и напряжения, то I1=U1/R1, I2=U2/R2 подставляем вместо токов
Rвн=(U1-U2)/(U2/R2-U1/R1) и необходимость в знании настоящего ЭДС в расчетах испарилась только знание сопротивлений нагрузки и замер напряжений.

Rвн=(U1-U2)/(U2/R2-U1/R1)

Для проверки используем имеющиеся значения.
Имитатор используется но значение ЭДС=4,1998V уже не интересно.
Эквивалент внутреннего сопротивления. Rвн=111,77 Ом - сравним с расчетным
R1 нагрузки Rнагр=122,39кОм или 122 390 Ом
U1 на нагрузке Uнагр=4,1962V
R2=Rнагр=2,7К=2707 Ом
U2 на нагрузке Uнагр=4,0333V

Рассчитываем R внутреннее Rвн=(U1-U2)/(U2/R2-U1/R1)=(4,1962-4,0333)/(4,0333/2707-4,1962/122390)=111,9 Ом

Итого для имитатора ЭДС Rвн=111,77 Ом получаем:
Для метода 1 при Rнагр= 122K расчетное внутреннее R=105 Ом
Для метода 1 при Rнагр= 2,7K расчетное внутреннее R=111,7 Ом
Для метода по стандарту, расчетное внутреннее R=111,9 Ом

Вывод: метод1 и метод2 расчета внутреннего сопротивления для DC (d.c.) работают.

Надо выбирать.
 
Изменено:
  • Лойс +1
Реакции: te238s

GoFrenDiy

✩✩✩✩✩✩✩
12 Фев 2023
0
0
Т.к. это у меня, по сути, первый проект на ардуино, не считая того, что ну светодиодиками поморгал, транзистор тестер прошил через ардуинку, ну может ещё чего простенького намутил, но вот более-менее автоматизированный процесс я нацарапал за пару дней. Стоит, правда, сказать, что немножко в 90е бейсиком баловался на синклере, да в универе немного Си показывали, поэтому... ну примерно чего-то там в общих чертах представляю, но не более. Всё что надо, брал на ютубе, в основном, в Заметках Ардуинщика .

Итак, сюда я забрёл в поисках методик измерений в АС, но хочу отдельно сказать, что и без измерений в DC уже достаточно понимания состояния батарейки даёт процесс, т.к. вот прям наглядно видно, насколько под 1 Ампером проседает напряжение и просто даже в полях, когда есть ведро акумов, очень быстро отсеиваются нужные. Свои первые 70 штук 18650 я перемерял руками, просто нагружая на 4 Ом резистор и в екселе высчитывая по формулам - выше они есть - это самое сопротивление. Нагружал аккум на 5 секунд и фиксировал глазуально просадку. Это мне уже надоело делать на 30...40й батарейке, поэтому начал думать, как это автоматизировать.

В качестве нагрузки я таки оставил банальное сопротивление, но про LM318 я знаю. Для измерения тока я использую банальные 0,22 Ом. Для коммутации я из материнки сковырнул какой-то полевик и через 130 Ом просто ардуинкой его открываю. Вот и получается, что у меня 4 Ом и 0,22 Ом включенные последовательно через этот полевик на землю, к которой и АКБ своим минусом зацеплен. Измеряю я напряжение непосредственно на АКБ и за резистором 0,22 Ом, после которого уже 4 Ом и полевик идут. Сорян, что схемы нет - мож позже нацарапаю, т.к... ну просто всё это вот на коленках было спаяно, ибо все эти платки макетные белые, проводочки к ним - это всё очень нестабильно.

Замер напряжений делал относительно внутреннего источника 1,1В, ну типа он стабильнее 5В юсб, но что-то мне подсказывает, что можно было бы в схему и какой-то более крутой опорный источник вкинуть. Делители посчитал так, чтобы при 4.3В на АКБ, на входе ардуинки было 1,1В. Сам замер я делаю... 10 раз через задержку в 10, ну и среднее значение считаю, цепляю нагрузку на 5 секунд, замер напруги 10 через 10, отключаю нагрузку и считаю через ток и через сопротивление ну и просто в ком-порт выбрасываю значения. Да, есть у меня сейчас желание прикрутить дисплей, но то уже потом, т.к. портмонитор устраивает на данном этапе и чёткая повторяемость результатов... ну при условии, что между замерами 15...20 секунд проходит и температура батарей всегда одинаковая - последнее прям вот очень сильно влияет на результат! Ну и сам дисплей я придумал присобачить АЛ318 через 2 дешифратора ))) Ну просто для прокачки скилла программирования.

Собственно, это работает, но вот в качестве дальнейшего развития, хотел сюда ещё прикрутить измерение импеданса переменкой и прежде чем начинать задавать вопросы, пойду сначала почитаю по ссылкам "1.измерения импеданса химических источников " - может там найду какую-то методику или, хотя бы, намёки где её взять. Так то я попробовал, естественно, меандром 1 кГц подключать ту же самую нагрузку, но получается какая-то шляпа. Пробовал смотреть чего происходит на меандре под нагрузкой с АКБ - напряжение даже стабильнее, но... Например в DC у меня получается 100 мОм, а если в АС измерять, то 20...25 мОм по тем же формулам, ну усредняя значения напряжений. Не совсем я понял зачем это АС, поэтому и полез искать умные мысли. А YR1030+ - это слишком дорого, даже при отсеве 100 батареек.

Вот, по-беглому нарисовал и сфоткал девайс:
20230309_204749.jpg
20230309_205735.jpg

Ну и если кому интересен код ламера, то вот:
// Напряжение батарейки
#define U1 A2
#define U2 A0

int Base = 0;

void setup() {
Serial.begin(9600);
analogReference(INTERNAL);
pinMode(13, OUTPUT);

}
void loop() {

float Rs = 0.22; //Шунт
float Rn = 4.28; //Нагрузка - 4,26 Ом
float Vin = 0; // Напряжение с АКБ
float Vs = 0; // Напряжение после 4.28 Ом

// ЗАМЕР НАПРЯЖЕНИЙ

for (int i = 0; i < 50; i++) {
Vin = Vin + (analogRead(U1) / 234.095); // Напряжение с АКБ после делителя
Vs = Vs + (analogRead(U2) / 224.75); // Напряжение после 4.28 Ом после делителя
delay(10);
}

Vin = Vin / 50;
Vs = Vs / 50;
float Is = (Vin - Vs) / Rs;

// Serial.println(analogRead(U1));
// Serial.print("U1=");Serial.println(analogRead(U1));
Serial.print("Напряжение на батарее = ");Serial.print(Vin, 3);Serial.println(" Вольт");
// Serial.print("U2=");Serial.println(analogRead(U2));
// Serial.print("Напряжение на шунте =");Serial.println(Vs, 3);
// Serial.print("Ток в нагрузку =");Serial.println(Is, 3);
// Serial.print("Base=");Serial.println(Base);Serial.println();
delay (1000);

Serial.println("Подключаем нагрузку на 5 сек.");
digitalWrite(13, 1);
delay (5000);

// Serial.println ("Состояние батареи:");

float Vin_n = 0; // Напряжение с АКБ под нагрузкой
float Vs_n = 0; // Напряжение после 4.35 Ом под нагрузкой

// ЗАМЕР НАПРЯЖЕНИЙ
for (int i = 0; i < 50; i++) {
Vin_n = Vin_n + (analogRead(U1) / 234.095);
Vs_n = Vs_n + (analogRead(U2) / 224.750);
// Serial.println(analogRead(U1) / 234.095, 3);
delay(10);
}

Serial.println("Отключаем нагрузку");Serial.println();
digitalWrite(13, 0);


Vin_n = Vin_n / 50;
Vs_n = Vs_n / 50;

float Is_n = (Vin_n - Vs_n) / Rs;

float Rvn_1 = ((Vin - Vin_n) / Is_n) * 1000.0;
float Rvn_2 = (Rn * ((Vin / Vin_n) - 1)) * 1000.0;


Serial.print("Напряжение на батарее под нагрузкой = ");Serial.print(Vin_n, 3);Serial.println(" Вольт");
//Serial.print("Напряжение на шунте под нагрузкой =");Serial.println(Vs_n, 3);
Serial.print("Ток в нагрузку под нагрузкой = ");Serial.println(Is_n, 3);
Serial.println();
Serial.print("Внутреннее сопротивление по току = ");Serial.print(Rvn_1, 1);Serial.println(" мОм");
Serial.print("Внутреннее сопротивление по Rн = ");Serial.print(Rvn_2, 1);Serial.println(" мОм");

Serial.println ("Пауза 10 сек.");
Serial.println ("_______________________________________________________________________________________");Serial.println();
delay (10000);

}

Индикатор АЛ318А если и подцеплю, то это будет через К176ИД2 и КМ155ИД4. Первая рисует цифру - сделано, вторая будет перебирать символы - динамическая индикация. Здесь выбор просто из того, что нашёл в гараже у деда и просто захотелось это поковырять. Конечно, можно и без доп микросхем, т.к. не так уж и много выходов задействовано у ардуинки и вполне можно весь индикатор зацепить напрямую - даж больше символов будет, т.к. набор в К176ИД2 ограничен только цифрами. В коде к приблуде пока нет ничего с индикатором.

20230309_212207.jpg
 
Изменено: