19.06.2023

Цифровой измеритель ёмкости и внутреннего сопротивления аккумуляторов. Зарядное устройство-тестер аккумуляторов на Atmega8 Измеритель емкости свинцовых аккумуляторов на atmega8


В последнее время я начал замечать, что мой смартфон стал разряжаться быстрее. Поиски программного «пожирателя» энергии плодов не принесли, поэтому стал задумываться, не пришло ли время заменить АКБ. Но абсолютной уверенности в том, что причина в батарее не было. Поэтому прежде чем заказывать новый аккумулятор решил попробовать измерить реальную емкость старого. Для этого было решено собрать простой измеритель емкости АКБ, тем более что идея эта вынашивалась уже давно – уж очень много батареек и аккумуляторов окружает нас в повседневной жизни, и было бы неплохо иметь возможность время от времени тестировать их.

Сама идея, лежащая в основе работы устройства, крайне проста: есть заряженный аккумулятор и нагрузка в виде резистора, нужно лишь измерять ток, напряжение и время в ходе разряда АКБ, и по полученным данным рассчитать его емкость. В принципе, можно обойтись вольтметром и амперметром, но сидеть за приборами несколько часов удовольствие сомнительное, поэтому намного проще и точнее можно сделать это используя регистратор данных. Я в качестве такого регистратора использовал платформу Arduino Uno.

1. Схема

С измерением напряжения и времени в Arduino проблем нет – есть АЦП, но чтобы измерить ток нужен шунт. У меня появилась идея использовать сам нагрузочный резистор в качестве шунта. То есть, зная на нем напряжение и предварительно измерив сопротивление, мы всегда можем рассчитать ток. Поэтому простейший вариант схемы будет состоять лишь из нагрузки и АКБ, с подключением к аналоговому входу Arduino. Но было бы неплохо предусмотреть отключение нагрузки по достижению порогового напряжение на батарее (для Li-Ion это обычно 2,5-3В). Поэтому я предусмотрел в схеме реле, управляемое цифровым пином 7 через транзистор. Конечный вариант схемы на рисунке ниже.

Все элементы схемы я разместил на кусочке макетной платы, которая устанавливается прямо на Uno. В качестве нагрузки использовал спираль из нихромовой проволоки толщиной 0,5мм, имеющей сопротивление около 3 Ом. Это дает расчетное значение тока разряда 0,9-1,2А.

2. Измерение тока

Как было сказано выше ток рассчитывается исходя из напряжения на спирали и её сопротивления. Но стоит учесть, что спираль нагревается, а сопротивление нихрома довольно сильно зависит от температуры. Чтобы компенсировать ошибку я просто снял вольт-амперную характеристику спирали, используя лабораторный блок питания и давая ей прогреться перед каждым измерением. Далее вывел в Excel уравнение линии тренда (график ниже), которое дает довольно точную зависимость i(u) с учетом нагрева. Видно, что линия не прямая.

3. Измерение напряжения

Поскольку точность данного тестера напрямую зависит от точности измерения напряжения, я решил уделить этому особое внимание. В других статьях уже неоднократно упоминали метод, позволяющих наиболее точно измерять напряжение контроллерами Atmega. Повторю лишь вкратце – суть состоит в определении внутреннего опорного напряжения средствами самого контроллера. Я пользовался материалами данной статьи.

4. Программа

Код не представляет из себя ничего сложного:

Текст программы

#define A_PIN 1 #define NUM_READS 100 #define pinRelay 7 const float typVbg = 1.095; // 1.0 -- 1.2 float Voff = 2.5; // напряжение выключения float I; float cap = 0; float V; float Vcc; float Wh = 0; unsigned long prevMillis; unsigned long testStart; void setup() { Serial.begin(9600); pinMode(pinRelay, OUTPUT); Serial.println("Press any key to start the test..."); while (Serial.available() == 0) { } Serial.println("Test is launched..."); Serial.print("s"); Serial.print(" "); Serial.print("V"); Serial.print(" "); Serial.print("mA"); Serial.print(" "); Serial.print("mAh"); Serial.print(" "); Serial.print("Wh"); Serial.print(" "); Serial.println("Vcc"); digitalWrite(pinRelay, HIGH); testStart = millis(); prevMillis = millis(); } void loop() { Vcc = readVcc(); //считывание опорного напряжения V = (readAnalog(A_PIN) * Vcc) / 1023.000; //считывание напряжения АКБ if (V > 0.01) I = -13.1 * V * V + 344.3 * V + 23.2; //расчет тока по ВАХ спирали else I=0; cap += (I * (millis() - prevMillis) / 3600000); //расчет емкости АКБ в мАч Wh += I * V * (millis() - prevMillis) / 3600000000; //расчет емкости АКБ в ВтЧ prevMillis = millis(); sendData(); // отправка данных в последовательный порт if (V < Voff) { //выключение нагрузки при достижении порогового напряжения digitalWrite(pinRelay, LOW); Serial.println("Test is done"); while (2 > 1) { } } } void sendData() { Serial.print((millis() - testStart) / 1000); Serial.print(" "); Serial.print(V, 3); Serial.print(" "); Serial.print(I, 1); Serial.print(" "); Serial.print(cap, 0); Serial.print(" "); Serial.print(Wh, 2); Serial.print(" "); Serial.println(Vcc, 3); } float readAnalog(int pin) { // read multiple values and sort them to take the mode int sortedValues; for (int i = 0; i < NUM_READS; i++) { delay(25); int value = analogRead(pin); int j; if (value < sortedValues || i == 0) { j = 0; //insert at first position } else { for (j = 1; j < i; j++) { if (sortedValues <= value && sortedValues[j] >= value) { // j is insert position break; } } } for (int k = i; k > < (NUM_READS / 2 + 5); i++) { returnval += sortedValues[i]; } return returnval / 10; } float readVcc() { // read multiple values and sort them to take the mode float sortedValues; for (int i = 0; i < NUM_READS; i++) { float tmp = 0.0; ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1); ADCSRA |= _BV(ADSC); // Start conversion delay(25); while (bit_is_set(ADCSRA, ADSC)); // measuring uint8_t low = ADCL; // must read ADCL first - it then locks ADCH uint8_t high = ADCH; // unlocks both tmp = (high << 8) | low; float value = (typVbg * 1023.0) / tmp; int j; if (value < sortedValues || i == 0) { j = 0; //insert at first position } else { for (j = 1; j < i; j++) { if (sortedValues <= value && sortedValues[j] >= value) { // j is insert position break; } } } for (int k = i; k > j; k--) { // move all values higher than current reading up one position sortedValues[k] = sortedValues; } sortedValues[j] = value; //insert current reading } //return scaled mode of 10 values float returnval = 0; for (int i = NUM_READS / 2 - 5; i < (NUM_READS / 2 + 5); i++) { returnval += sortedValues[i]; } return returnval / 10; }

Каждые 5 секунд данные о времени, напряжении батареи, токе разряда, текущей емкости в мАч и ВтЧ, а также напряжении питания передаются в последовательный порт. Ток рассчитывается по полученной в п. 2 функции. По достижении порогового напряжения Voff тест прекращается.
Единственным, на мой взгляд, интересным моментом в коде я бы выделил использование цифрового фильтра. Дело в том, что при считывании напряжения значения неизбежно «пляшут» вверх-вниз. Сначала я пытался уменьшить этот эффект просто сделав 100 измерений за 5 секунд и взяв среднее. Но результат по-прежнему меня не удовлетворил. В ходе поисков я наткнулся на такой программный фильтр. Работает он похожим образом, но вместо усреднения он сортирует все 100 значений измерений по возрастанию, выбирает центральные 10 и высчитывает среднее из них. Результат меня впечатлил – флуктуации измерений полностью прекратились. Я решил использовать его и для измерения внутреннего опорного напряжения (функция readVcc в коде).

5. Результаты

Данные из монитора последовательного порта в несколько кликов импортируются в Excel и выглядят следующим образом:

В случае с моим Nexus 5 заявленная ёмкость аккумулятора BL-T9 – 2300 мАч. Измеренная мной – 2040 мАч при разряде до 2,5 В. В реальности контроллер вряд ли позволяет сесть батарее до такого низкого напряжения, скорее всего пороговое значение 3В. Ёмкость в этом случае 1960 мАч. Полтора года службы телефона привели к просадке емкости примерно на 15%. С покупкой новой АКБ было решено повременить.
С помощью данного тестера было разряжено уже несколько других Li-Ion аккумуляторов. Результаты выглядят очень реалистично. Измеренная емкость новых АКБ совпадает с заявленной с отклонением менее 2%.
Данный тестер подойдет и для металл-гидридных пальчиковых аккумуляторов. Ток разряда в этом случае составит около 400 мА.

Это устройство предназначено для измерения ёмкости аккумуляторов Li-ion и Ni-Mh , а также для заряда Li-ion аккумуляторов с выбором начального тока заряда.

Управление

Подключаем устройство к стабилизированному блоку питания 5в и током 1А (например от сотового телефона). На индикаторе в течении 2 сек отображается результат предыдущего измерения емкости "ххххmA/c" а на второй строке значение регистра OCR1A "S.xxx". Вставляем аккумулятор. Если нужно зарядить аккумулятор то кратко жмём кнопку ЗАРЯД, если нужно измерить ёмкость то кратко жмём кнопку ТЕСТ. Если нужно изменить ток заряда (значение регистра OCR1A) то долго(2 сек) жмем кнопку ЗАРЯД. Заходим в окно регулировки регистра. Отпускаем кнопку. Кратко нажимая на кнопку ЗАРЯД меняем по кругу значения (50-75-100-125-150-175-200-225) регистра, в первой строке показывается ток заряда пустого аккумулятора при выбранном значении (при условии что у вас в схеме стоит резистор 0,22 Ом). Кратко жмём кнопку ТЕСТ значение регистра OCR1A запоминаются в энергонезависимой памяти.
Если вы проделывали разные манипуляции с устройством и вам надо сбросить показания часов, измеренной ёмкости то долго жмём кнопку ТЕСТ (значение регистра OCR1A не сбрасываются). Как только заряд окончен подсветка дисплея отключается, для включения подсветки кратко нажмите кнопку ТЕСТ или ЗАРЯД.

Логика работы устройства следующая:

При подаче питания, на индикаторе отображается результат предыдущего измерения ёмкости аккумулятора и значение регистра OCR1A, хранящееся в энергонезависимой памяти. Через 2 секунды устройство переходит в режим определения типа аккумулятора по величине напряжения на клемах.

Если напряжение более 2В то это Li-ion аккумулятор и напряжение полного разряда составит 2,9В, иначе это Ni-MH аккумулятор и напряжение полного разряда составит 1В. Только после подключения аккумулятора доступны кнопки управления. Далее устройство ожидает нажатия кнопок Тест или Заряд. На дисплее отображается "_STOP". При нажатии кратко кнопки Тест подключается нагрузка через MOSFET.

Величина тока разряда определяется по напряжению на резисторе 5,1Ом и, каждую минуту суммируется с предыдущим значением. В устройстве используется кварц 32768Гц для работы часов.

На дисплее отображается текущая величина емкости аккумулятора "ххххmA/c" и тора разряда "А.ххх", а также время "хх:хх:хх"с момента нажатия кнопки. Показывается также анимированный значок разряда аккумулятора. По окончании теста для Ni-MH аккумулятора появляется надпись "_STOP", результат измерения отображается на дисплее "ххххmA/c" и запоминается.

Если аккумулятор Li-ion, то также результат измерения отображается на дисплее "ххххmA/c" и запоминается, но сразу включается режим заряда. На дисплее отображается содержимое регистра OCR1A "S.xxx". Показывается также анимированный значок заряда аккумулятора.

Регулировка тока заряда осуществляется с помощью ШИМ и ограничивается резистором 0,22Ом. Апаратно ток заряда можно уменьшить увеличив сопротивление 0,22Ом до 0,5-1Ом. В начале заряда ток плавно нарастает до значения регистра OCR1A или до достижения напряжения на клемах аккумулятора 4,22В (если аккумулятор был заряжен).

Величина тока заряда зависит от значения регистра OCR1A - больше значение - больше ток заряда. При превышении напряжения на клемах аккумулятора 4,22В значение регистра OCR1A уменьшается. Процесс дозаряда продолжается до величины регистра OCR1A равного 33, что соответствует току около 40 mA. На этом заряд заканчивается. Подсветка дисплея отключается.

Настройка

1. Подключаем питание.
2. Подключаем аккумулятор.
3. Подключаем вольтметр к аккумулятору.
4. Временными кнопками + и - (PB4 и PB5)добиваемся совпадения показания вольтметра на дисплее и на эталонном вольтметре.
5. Длительно нажимаем на кнопку ТЕСТ (2 сек), происходит запоминание.
6. Извлекаем аккумулятор.
7. Подключаем вольтметр к резистору 5,1Ом (по схеме около транзистора 09N03LA).
8. Подключаем регулируемый БП к клемам аккумулятора, выставляем на БП 4В.
9. Нажимаем кратко кнопку ТЕСТ.
10. Измеряем напряжение на резисторе 5,1Ом - U.
11. Высчитываем ток разряда I=U/5,1
12. Временными кнопками + и - (PB4 и PB5) устанавливаем на индикаторе"А.ххх" рассчитанный ток разряда I.
13. Длительно нажимаем на кнопку ТЕСТ (2 сек), происходит запоминание.

Устройство питается от стабилизированного источника напряжением 5 Вольт и током 1А. Кварц на 32768Гц предназначен для точного отсчета времени. Контроллер ATmega8 тактируется от внутреннего генератора частотой 8 МГц, также необходимо установить защиту от стирания EEPROM соответствующими битами конфигурации. При написании управляющей программы были использованы обучающие статьи с данного сайта.

Текущие значения коэффициентов напряжения и тока (Ukof . Ikof) можно увидеть если подключить дисплей 16х4 (16х4 предпочтительно для отладки) на третьей строке. Или в Ponyprog если открыть файл прошивки EEPROM (считать с контроллера EEPROM).
1 байт - OCR1A , 2 байт - I_kof, 3 байт - U_kof, 4 и 5 байт результат предыдущего измерения емкости.

Видео работы прибора:

Который показал очень достойную работу, решил сделать не менее достойный и качественный цифровой вольтамперметр на микроконтроллере, по совместительству оснащённый омметром нагрузки и ёмкостеметром заряжаемых аккумуляторов. Имеется два варианта схемы вольтамперметра:

Для микроконтроллера ATmega8 в корпусе TQFP32


Для микроконтроллера ATmega8 в корпусе PDIP

Несколько вариантов печатных плат можно .

Характеристики измерителя А/В

  • измеряемое напряжение: 0 В – 30 В, шаг 10 мВ;

  • измеряемый ток: 0 А – 99 А, шаг 10 мА;
  • возможно отображение измеряемых величин на LCD дисплее (однострочном или двухстрочном).

  • Схема подключения этого универсального измерителя производится согласно рисунка:


    Измерение тока проводится с использованием шунта, который подключен последовательно с нагрузкой в цепи отрицательной (общей) клеммы блока питания. Устройство запитывается от основного БП. Дополнительной функцией, которую выполняет микроконтроллер, является управление вентилятором охлаждения радиатора выходного транзистора блока питания.




    При использовании двухстрочного дисплея имеется возможность отображения значения сопротивления подключенной нагрузки. А при использовании блока питания для зарядки литий-ионных аккумуляторов имеется функция отображения емкости АКБ, что дает возможность оценить их уровень разряда.

    Внутреннее разрешение вольтамперметра по диапазону измерения тока рассчитывается согласно выражения:

    Разрешение [мА] = 1/(R[Ом]х3.2)


    Падение напряжения на шунте не должно превышать 2.4 В, поэтому значение сопротивления шунта должно быть меньше 2.4/Imax[A].



    Фуз-биты

    При программировании и установке Fuse-битов необходимо учитывать, что микроконтроллер должен быть настроен на работу от внутреннего RC генератора 1 МГц, а также необходимо установить бит BODEN . Прошивки для .

    Настройка цифрового вольтамперметра



    Кнопка S1 – сброс/установка параметров. Для входа в режим установки измерителя надо удерживая кнопку нажатой, подать питание на схему. Первый параметр для настройки – опорное напряжение для АЦП МК. Оно является основным фактором погрешности измерений. Необходимо измерить опорное напряжение на выводе 20 микроконтроллера (для микроконтроллера в корпусе PDIP – вывод 21). Измеренное значение надо прописать в этом «сервисном меню» при помощи этой же кнопки S1 , иначе, по умолчанию, принимается значение опорного напряжения Vref = 2.56 В (соответственно техническому описанию на микроконтроллер).

    Установка значения сопротивления резистора-шунта. Если номинал шунта известен, то нажатиями на кнопку S1 необходимо добиться отображения на дисплее соответствующего значения и затем не нажимать кнопку в течении 5 с для сохранения значения. Если значение сопротивления шунта неизвестно, то необходимо на выход блока питания подключить амперметр, выставить некоторый ток при помощи регулятора ограничения тока БП и нажать кнопку S1 . Кнопку необходимо нажимать, пока показания амперметра и нашего устройства (с правой стороны на дисплее, с левой стороны отображается значение шунта) не станут равными. Для сохранения параметров кнопку не нажимать в течении 5 секунд. Также S1 используется для сброса значения электрической емкости при зарядке Li аккумуляторов.

    Сопротивление R9 – точная настройка поддиапазона делителя напряжения. Для устранения ошибки преобразования АЦП диапазон измерений разбит на два поддиапазона 0 В – 10 В и 10 В – 30 В. Для настройки необходимо на выход блока питания подключить вольтметр и установить выходное напряжение на уровне около 9 В, и регулируя R9 добиться одинаковых показаний вольтметра и нашего устройства.

    Сопротивление R10 – грубая настройка поддиапазона делителя напряжения. Процедура аналогичная точной настройке, но необходимо установить выходное напряжение блока питания около 19 В, и регулируя резистор R10 добиться совпадения показаний.

    Сопротивление R1 – регулировка контрастности LCD. Если после сборки устройства на дисплее ничего не отображается, то сперва необходимо отрегулировать контрастность дисплея.

    Разъём J1 – подключение вентилятора. Коннектор J2 – питание модуля вольтамперметра (+12 В). Если ваш блок питания имеет выход стабилизированного напряжения +12 В, то его можно подключить к этому коннектору, и в таком случае можно не использовать в схеме регулятор напряжения U2. Такое решение имеет свои плюсы т.к. возможно подключить более мощный вентилятор охлаждения. Если выхода +12 В у вашего блока питания нет, то этот коннектор необходимо оставить не подключенным.

    Разъём J3 – питание модуля вольтамперметра. Напряжение питания +35 В подается с диодного моста блока питания. Перед подключением необходимо уточнить параметры используемого регулятора напряжения U2 и уровень напряжения с диодного моста, чтобы не повредить регулятор U2. Но с другой стороны, минимальное напряжение, подаваемое на этот коннектор, не должно быть ниже 9 В или 6.5 В, если используются регуляторы с низким падением напряжения (LDO). Данный коннектор должен быть подключен независимо от того, подключен ли коннектор J2 к питанию +12 В.

    Разъём J4 – подключение линий измерения напряжения и тока.


    Предлагаемое устройство предназначено для измерения ёмкости и внутреннего сопротивления Ni-Cd и Ni-MH аккумуляторов. Предусмотрена звуковая индикация чрезмерно низкого напряжения аккумулятора, а также момента окончания его разряда.

    Измерение ёмкости аккумулятора основано на его разрядке стабильным током, измерением времени разрядки и перемножением этих значений. При измерении внутреннего сопротивления прибор измеряет напряжение аккумулятора без нагрузки, затем под нагрузкой током 1 А и на основе этих данных вычисляет внутреннее сопротивление аккумулятора.

    Схема прибора показана на рис. 1. Его основа - микроконтроллер АТмедав (DD1). Клавиатура с однопроводным интерфейсом состоит из шести кнопок SB1-SB6. Информация об измеренных параметрах аккумулятора выводится на девятиразрядный светодиодный индикатор HG1. Для разрядки подключаемого аккумулятора использован источник тока, управляемый напряжением (ИТУН) на ОУ DA2, транзисторе VT1, резисторах R9, R10, R19-R21, R23 и конденсаторах С7, С9.

    Если напряжение подключённого аккумулятора ниже 1 В, клавиатура прибора заблокирована, а капсюль BF1 излучает три прерывистых звуковых импульса на частоте 600 Гц. Если напряжение аккумулятора выше 1 В, капсюль BF1 излучает два прерывистых звуковых импульса на частоте 3000 Гц при подключении аккумулятора, а также по окончании его разрядки до установленного напряжения

    После подключения аккумулятора устанавливают напряжение, до которого его нужно разрядить нажатием на кнопки SB3 и SB4. Шаг установки при кратковременном нажатии - 0,1 В. При удержании кнопки первые десять значений шага - 0,1 В, затем - 1 В. Далее нажатием на кнопки SB1 и SB2 устанавливают ток разрядки. Если эти кнопки удерживать менее пяти секунд, значение тока не изменяется и отображается его текущее значение, как показано на фото рис. 2 (символ і в нижней позиции). Если же кнопки SB1 и SB2 удерживать более пяти секунд, значение тока будет изменяться с переменным шагом: вначале 50 мА, затем 150 мА. При этом символ і будет отображаться в верхней позиции, как показано на фото рис. 3.

    Максимальное значение разрядного тока - 2,55 А Как только ток разряда примет значение больше нуля (при напряжении аккумулятора больше установленного порога или равном ему), звуковой сигнал исчезнет а светодиод HL1 начнёт мигать с частотой 0,25 Гц. При нажатии на кнопку SB5 измеряется и запоминается напряжение без нагрузки, затем под нагрузкой, вычисляется внутреннее сопротивление в омах, которое выводится в младшие разряды индикатора с символом г, как показано на фото рис. 4.

    При нажатии на кнопку SB6 в старших разрядах индикатора HG1 отображается текущее напряжение аккумулятора. Когда ни одна кнопка не нажата, в старших разрядах индикатора HG1 показано напряжение, до которого необходимо разрядить аккумулятор, а в младших - ёмкость в формате XX,XX ампер-часов. Незначащие нули десятков вольт и ампер-часов погашены программно.

    Большая часть деталей смонтирована на печатной плате из односторонне фольгированного стеклотекстолита, чертёж которой показан на рис. 5 Тонкими прямоугольниками показаны компоненты поверхностного монтажа R7, R8 и С5, установленные со стороны печатных проводников.

    Для обеспечения линейности тока ИТУН во всём интервале необходимо применять ОУ DA2 с возможно меньшим напряжением смещения нуля и транзистор VT1 с небольшим пороговым напряжением. В экземпляре автора напряжение смещения нуля ОУ DA2 около 4 мВ и транзистор VT1 с напряжением порога 1,85 В при токе стока 1 А, нелинейность тока ИТУН не превышала 10 %. Минимальное значение тока ИТУН - не более 2 мА. Транзистор VT1 установлен без теплоотвода. Для его охлаждения применён вентилятор от компьютерного процессора. Вентилятор и прибор получают питание от нестабили-зированного сетевого адаптера с выходным напряжением 9.. 12 В и током нагрузки не менее 0,5 А.

    Налаживание заключается в подборе резисторов R6 и R9. Подбором резистора R6 устанавливают по образцовому вольтметру показания старших разрядов индикатора HG1. Далее нажатием на кнопки SB1 и SB2 выводят на индикаторе HG1 требуемое значение тока разрядки, измеряют ток ИТУН образцовым амперметром и подбором резистора R9 устанавливают измеренный ток равным показаниям индикатора HG1.

    P.S. В случае отсутствия самовозбуждения тактового генератора микроконтроллера его выводы 9 и 10 следует соединить с общим проводом через конденсаторы одинаковой ёмкости 12...22 пФ.

    Программы микроконтроллера можно скачать .


    Дата публикации: 07.06.2012


    Мнения читателей
    • [email protected] / 18.07.2019 - 21:40
      Уважаемый Озолин М.А. Построил макет вашей схемы Радио №7, 2015 на ATtiny26 В схеме я так понял ошибка с кварцем. На схеме указан часовой резонатор 32768Hz. А фьюзы (H-17, L-EE) У меня начал работать с кварцем 4 MHz. Может фьюзы неверно указаны? Подскажите пож.. Где опечатка? Чтобы светодиод мигал с частотой 0,5Hz как в описании. Может кварц нужно меньше? Типа 3,2MHz/3,579575/3,68640/ Резонатор пьезокерамический ZTA 3.58 MHz? Схемка простая и класная. Лишнего нет ничево. Работает пока на 4MHz. Вам благодарность. Если подскажите с кварцем то будет вообще супер. С уважением Роман.
    • Озолин М. А / 11.05.2015 - 10:26
      Сопротивление R8 должно быть 1, а не 10 кОм! ОШИБКА РЕДАКТОРОВ ЖУРНАЛА РАДИО И ТОГО, КТО НЕ ГЛЯДЯ ВЫЛОЖИЛ СТАТЬЮ СЮДА. Я им на эту ошибку указывал, сразу после выхода статьи и исправление было опубликовано в разделе "наша консультация". Ссылка на рабочую схему http://maxoz.ru/newAk/newAk.gif
    • Озолин М. А / 11.05.2015 - 10:13
      Господа Борис и Александр К.Г, проверяйте исправность деталей, либо ищите ошибки в монтаже! Прошивка рабочая и многократно проверена!
    • Александр Г.К. / 23.04.2015 - 10:02
      Согласен с Борисом - схема НЕ работает! После "танцев с бубном", так и не запустилась. Единственно,что определяется - это напряжение выше-ниже 1 в. (три или два "бипа").Господин М. Озолин не отзывайтесь(!) - *.HEX просить не буду. Плохой бизнес....
    • Сергей / 18.09.2013 - 07:36
      Как выставить фьюзы для прошивки контроллера?
    • Борис / 28.05.2013 - 06:59
      Схема не работает, при нажатии все кнопки отображает одни и те же цифры в двух младших разрядах. Господин М. Озолин отзовитесь?
    • Виталий / 16.11.2012 - 03:55
      В (ИТУН)- для получения хорошей линейности, ОУ LM357N лучше заменить на MCP601.
    • Александр / 22.10.2012 - 17:10
      А аккумуляторы Li-ion и Li-pol этим измерителем можно проверять?

    Устройство, с помощью которого можно проверить емкость литий-ионных пальчиковых аккумуляторов. Довольно часто батареи от ноутбуков приходят в негодность из-за того, что один или несколько аккумуляторов теряют свою емкость. В итоге приходится покупать новую батарею, когда можно обойтись малой кровью и заменить эти негодные аккумуляторы.

    Что понадобится для устройства:
    Arduino Uno или любой другой совместимый.
    16Х2 ЖК-дисплей, в котором используется драйвер Hitachi HD44780
    Твердотельное реле OPTO 22
    Резистор 10 МОм на 0.25 Вт
    Держатель для аккумуляторов 18650
    Резистор 4 Ом 6Вт
    Одна кнопка и блок питания от 6 до 10В на 600 мА


    Теория и эксплуатация

    Напряжение,на полностью заряженной, Li-Ion батарее при отсутствии нагрузки равно 4.2В. При подключении нагрузки, напряжение быстро снижается до 3.9В, и далее медленно снижается по мере работы батареи. Ячейка считается разряженной при падении напряжения на ней ниже 3В.

    В данном устройстве аккумулятор подсоединяется к одному из аналоговых выводов Arduino. Измеряется напряжение на аккумуляторе без нагрузки и контроллер ожидает нажатие кнопки “Пуск”. Если напряжение на аккумуляторе выше 3В. , при нажатии кнопки начнется тест. Для этого через твердотельное реле к аккумулятору, подключается резистор 4Ом, который будет исполнять роль нагрузки. Напряжение считывается контроллером каждые пол секунды. Используя закон Ома можно узнать ток, отдаваемый в нагрузку. I=U/R, U-считывается аналоговым входом контроллера, R=4 Ом. Так как измерения проводятся каждые пол секунды, в каждом часе получается 7200 измерений. Автор просто умножает 1/7200 часа на значение тока, и складывает получившиеся числа, пока аккумулятор не разрядится ниже 3В. В этот момент реле переключается и на дисплей выводится результат измерений в мА\ч

    Распиновка ЖК-дисплея

    ПИН Назначение
    1 GND
    2 +5V
    3 GND
    4 Digital PIN 2
    5 Digital PIN 3
    6,7,8,9,10 No connected
    11 Digital PIN 5
    12 Digital PIN 6
    13 Digital PIN 7
    14 Digital PIN 8
    15 +5V
    16 GND



    Автор не использовал потенциометр для регулировки яркости дисплея, вместо этого он подсоединил вывод 3 к земле. Держатель аккумулятора подсоединяется минусом на землю, а плюсом к аналоговому входу 0. Между плюсом держателя и аналоговым входом включен резистор 10 МОм, выполняющий функцию подтягивающего. Твердотельное реле включается минусом к земле, а плюсом к цифровому выходу 1. Один из контактных выводов реле соединяется с плюсом держателя, между вторым выводом и землей ставится резистор 4 Ом, выполняющий роль нагрузки при разряде аккумулятора. Имейте в виду, что он будет довольно сильно греться. Кнопка и включатель подключаются согласно схеме на фото.

    Так как в схеме задействуются PIN 0 и PIN 1, надо отключить их перед загрузкой программы в контроллер.
    После того, как вы все соедините, зальете прошивку, прикрепленную ниже, можно попробовать протестировать аккумулятор.



    На фото видно значение напряжения, которое считал контроллер.
    Напряжение на нем должно быть обязательно выше 3В

    © 2024
    bmwday.ru - Ваз, Lada - Автомобильный портал