Простой разрядник-измеритель емкости аккумуляторов 18650 с автоматическим отключением
- Войдите на сайт для отправки комментариев
За основу проекта взята статья:
https://www.electronicsblog.net/very-simple-arduino-lithium-ion-battery-capacity-testerdischarge-monitor/
В схему был дабавлен недорогой зарядник разрядник с защитой от перезаряда и переразряда. Нижний порог срабатывания равен 2,5 вольта. Цена чуть больше бакса.
Батарея подключается к B. + к плюсу, - к минусу. Нагрузка к OUT. В качестве нагрузки брал 2 резистора (больших совецких по 5 см каждый :) ) по 10 ОМ в паралель (итого 5 ОМ). Таким образом ток разряда заряженной батареи равен 0,8А что соответствует среднестатистической нагрузке для 18650 (ноуты, мощные фанари, моторы и т.д). Рассчетное врямя разряда исправной батареи емкостью 2aH около 3-х часов. Для удобства в разрыв нагрузки поставил выключатель. Ardulino подключена к нагрузке, а не к батарее, чтобы иметь возможность определять начало и конец разряда.
В скетч добавлено условие: начинать измерение только если на входе Ардулино есть напряжение.
ну и собственно сам код:
#define LED 13 //мигаем диодом если процесс идет #define resistor 5 //номинал сопративления нагрузки float capacity=0, value,voltage,current, time=0, minut; void measure (void) { value= analogRead(0); if (value > 10) { //если есть напряжение на входе voltage=value/1024*5.0; current = voltage / resistor; //сила тока capacity = capacity + current / 3600; //емкость time++; minut = round(time/60); Serial.print("Voltage= "); Serial.print(voltage); Serial.print("V Current= "); Serial.print(current); Serial.print("A Capacity= "); Serial.print(capacity); Serial.print("Ah "); Serial.print("Discharging time= "); Serial.print(minut); Serial.print(" min "); Serial.print("\n"); } else Serial.print("No voltage \n"); } boolean x=false; ISR(TIMER1_OVF_vect) { TCNT1=0x0BDC; x=!x; measure(); } void setup() { pinMode(LED, OUTPUT); TIMSK1=0x01; // enabled global and timer overflow interrupt; TCCR1A = 0x00; // normal operation page 148 (mode0); TCNT1=0x0BDC; // set initial value to remove time error (16bit counter register) TCCR1B = 0x04; // start timer/ set clock Serial.begin(9600); }; void loop () { digitalWrite(LED, x); //мигаем диодом если процесс идет };
Попробовал повторить ваш проект. Если не подключать аккумулятор - все работает, но когда подключаю аккумулятор, то ничего не идет.. В чем может быть проблема?
BestMC, дайте схему подключения.
wgaint, по-моему, в 27-й строке не хватает словa volatile.
1 Плата ардуино подключенa по usb?
2 Этот контролер заряда подключён к usb?
3 Попробуйте нагрузку менее мощную.
4 Что будет если соединить только gnd ?
1 Да.
2 Нет, там USB для зарядки используется.
3 Пробовал, ничего не меняется.
4 Не совсем понял вопрос, как это сделать?
BestMC, сфотографируйте что вы там наподключали, да и делов-то. наверняка ошибка в подключении.
Камера в телефоне без автофокуса, так что фото нормального все равно не получится. Попробовал в Paint нарисовать схему, надеюсь, все понятно получилось..
У меня работает.
Проверьте на ощупь резистор должен быть теплый-горячий. Что за резистор брали, может слабый?
А лучше замерьте напряжение на OUT тестером.
Судя по тому что надпись "no voltage" исчезает, напряжение появляется, но в этом случае должно быть сообщение с показаниями.
А у меня не работает(
Резистор греется, пробовал разные, от 15 до 4 Ом
На 4 Ом иногда срабатывала защита на плате зарядки лития, пробовал и без этой платы.. Не работает..
У вас если отключена батарея и нагрузка от ардуино продолжает писать "No voltage"?
Может дело в ардуино? Я использовал Nano v3.0..
У меня на леонардо. Выложил скетч еще раз. Там, кстати, передача сообщений идет 1 раз в 30 сек. Удобней в ексель вставлять - графики строить, не так много данных.
Привет. С картинкой будет проще разобраться. Правильно нарисовал?
А можно так разряжать?
R1 = 0.05 Ом,
R2 ~= 5 Ом.
Фишка в том, что R1 взят из USB-дохтора или может быть заменен любым другим с хорошими параметрами,
а вместо R2 используется любая нагрузка - старые Б/У резисторы, подобранные как попало
Чему равно напряжение аккумулятора?
Допустим, R2 = 5.5 Ом,
R - 5.55 Oм...?