Перейти к содержанию

Прибор, измеряющий емкость аккумуляторов на ARDUINO


Рекомендуемые сообщения

Доброго времени суток, моя проблема заключается в том, что я не знаю как максимально правильно сделать схему для данного прибора. И подобрать с правильными характеристиками SMD компоненты. В качестве платы была выбрана Nano. Помогите пожалуйста, ибо в силу своего малого опыта в этой обширной специальности наделаю ошибок

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

Нужно формализовать проблему и разбить её на части.
Например - как измерить ёмкость батареи? Надо разряжать её определенным током до некоторого конечного напряжения и измерить время, потребное для этого. Посмотреть типовые разрядные характеристики на конкретные батареи, которые приводят производители, чтобы было от чего оттолкнуться.

Далее рассматриваем построение отдельных аппаратных и программных узлов: как измерить напряжение батареи, чем разряжать - стабильным, заранее известным током или неким средним значением, с постоянным измерением, как измерить ток разряда, как измерить время разряда. Можно по(д)смотреть схемную реализацию в уже известных конструкциях - в этом нет ничего зазорного.

А уж подбор компонентов, смд/не смд - дело десятое, когда будет придумана конкретная схема.

"Я не знаю какой там коэффициент, я просто паять умею. "

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Очень хорошо @Dr. West изложил алгоритм: подход к решению проблемы. Хотел бы только сказать, об одном на мой взгляд тупиковом направлении.  Пару лет назад в наш офис приезжали ходоки из московской фирмы. Показывали коробочку - измеритель ёмкости АКБ. Подключаешь АКБ, нажимаешь кнопочку и через 10 секунд результат. Думаю не надо объяснять, что коробочка работала очень плохо. Полагаю на такие схемы не стоит обращать внимание.

Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Скорей всего, это пробники, измеряющие внутреннее сопротивление батареи (по типу ESR метра или экстратоками) и позволяющие приблизительно оценить её общее состояние. Аналогично нагрузочным вилкам, которые раньше использовали аккумуляторщики. Как можно измерить реальную ёмкость батареи таким методом, я не представляю.

"Я не знаю какой там коэффициент, я просто паять умею. "

Ссылка на комментарий
Поделиться на другие сайты

8 часов назад, Студент19 сказал:

 я не знаю как максимально правильно сделать схему для данного прибора.

Ну именно так как сказал Dr.West. Заряжаете батарею до максимума и разряжаете стабильным током до минимального напряжения параллельно контролируя ток и время разряда. Тоесть ваш девайс должен одновременно контролировать ток напряжение и время и потом все посчитать.

Ссылка на комментарий
Поделиться на другие сайты

5 часов назад, Dr. West сказал:

Нужно формализовать проблему и разбить её на части.
Например - как измерить ёмкость батареи? Надо разряжать её определенным током до некоторого конечного напряжения и измерить время, потребное для этого. Посмотреть типовые разрядные характеристики на конкретные батареи, которые приводят производители, чтобы было от чего оттолкнуться.

Далее рассматриваем построение отдельных аппаратных и программных узлов: как измерить напряжение батареи, чем разряжать - стабильным, заранее известным током или неким средним значением, с постоянным измерением, как измерить ток разряда, как измерить время разряда. Можно по(д)смотреть схемную реализацию в уже известных конструкциях - в этом нет ничего зазорного.

А уж подбор компонентов, смд/не смд - дело десятое, когда будет придумана конкретная схема.

У меня есть примеры 2-х схем данного прибора. Поможете выбрать более рациональную? image.png.5338135dd83bc8e7aed94899ed89b9d8.pngimage.thumb.png.2c56e6e2868bb31369d5ae79e9cc06a1.png

Ссылка на комментарий
Поделиться на другие сайты

Принципиально эти схемы ничем не отличаются, кроме того, что во второй напряжения, снимаемые с батареи делятся на 2. Скорее всего, потому что ИОН заточен на 2.5В, а без делителя на свежезаряженой батарее напряжение достигает 4.2В. А вот разряжать лучше стабильным током, поставив простейший стабилизатор тока. Все зависит от необходимой точности, можно, конечно, в первом приближении брать среднее значение тока, исходя из максимального и минимального напряжения АКБ

К примеру, если загуглить "radiokot измеритель емкости", там были такие реализации - https://radiokot.ru/circuit/digital/measure/89/ и https://www.radiokot.ru/circuit/digital/measure/37/. Вам естессно, нужно смотреть, как снимаются параметры с батарей, а дальше уже это в Ардуину.

Настоящему коту и в декабре март!

Ссылка на комментарий
Поделиться на другие сайты

1 час назад, Студент19 сказал:

Поможете выбрать более рациональную?

Ну первая сразу ниочем. Вторая более менее но тоже абсолютно без конкретики. И совершенно непонятно как вы собираетесь контролировать ток. И еще мы совершенно не знаем что у вас за батарея и в каких режимах она у вас должна работать. Разряжать действительно желательно стабильным током но можно и через резистор контролируя постоянно ток. Вычисления в этом случае значительно усложнятся.

Ссылка на комментарий
Поделиться на другие сайты

Собссно, в обоих схемах верний "вывод" измеряет напряжение на батарее, а "нижний" (в паре с верхним) - падение напряжения на шунте (читай - ток). 

Настоящему коту и в декабре март!

Ссылка на комментарий
Поделиться на другие сайты

А может разряжать не стабильным током,  а стабильной мощностью , тогда остается поставить счетчик времени до падения на минимальное напряжение . Но при наличии МК все гораздо проще .

Ток разряда можно , наверное и ШИМ-ом резистора установить - главное правильно посчитать . Рюмик написал книгу "МК и переферия" . Читайте Студент19  - может там есть .

Изменено пользователем colorad
Ссылка на комментарий
Поделиться на другие сайты

Если прибор ориентирован на какой-то один тип батарей примерно одинаковой ёмкости, узел измерения можно упростить. Примерно так:

5bc236ebaaba1_.GIF.aec22c57b11fa6430015aa7ac4ae56a6.GIF

При разряде батареи от 4,2 до 3 Вольт ток будет меняться от 1,05 Ампера до 0,75. Соответственно, уровни напряжений на входе Ардуины также будут меняться от 2.1 до 1,5 Вольта, чего вполне достаточно для АЦП. Надо лишь проследить, чтобы Rизм был достаточно термостабилен и не сильно "плыл" от нагрева током.

 

"Я не знаю какой там коэффициент, я просто паять умею. "

Ссылка на комментарий
Поделиться на другие сайты

2 часа назад, KomSoft сказал:

 а "нижний" (в паре с верхним) - падение напряжения на шунте (читай - ток). 

Ну это все домыслы. И где вы видели шунт? 10 Ом это не шунт а нагрузка и на нём будет напряжение батареи. Второй делитель фактически при открытом транзисторе будет сидеть на нуле Сопротивление канала милиомы.

Ссылка на комментарий
Поделиться на другие сайты

В принципе, да. Наверное где-то видел схему с биполярником, там разница будет. А с полевиком действительно в "нижнем" измерении нет смысла. Разве отслеживать открылся транзистор или нет. :D А шунтом обозвал по привычке, раз нужно измерять ток.

Настоящему коту и в декабре март!

Ссылка на комментарий
Поделиться на другие сайты

11 час назад, KomSoft сказал:

В принципе, да.

Похоже автор очередной студент. Уж больно подход типичный. Задачка не из простых но с такими знаниями....?

Ссылка на комментарий
Поделиться на другие сайты

Студент, студент. И или нас проверяет, или плохо пользуется гуглом. Вот пара результатов (по " измерение емкости аккумулятора")   один из которых почти идеально подходит, даже исходник есть :D

http://zpostbox.ru/izmereniye_yomkosti_akkumulyatora_prostoy_i_tochnyy_sposob.html

https://m.habr.com/post/389105/

Настоящему коту и в декабре март!

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы публикуете как гость. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
  • Сообщения

    • Возможно, во входных блоках пропал контакт с общим проводом. Если гудения нет при нулевой громкости, то проблема до регулятора громкости.
    • я бы по первости, - присоединил (поменял ) блоки питания у разных аппаратов... проверил БП 2 - далее присоединил бы (поменял) усилители у разных аппаратов...проверил усилители - Ремонтировать аппарат не видя его,- то ещё удовольствие...
    • Может подключить что-нибудь надо. Может написать свою функцию преобразования шестнадцатеричной строки в инт.
    • Да ну нафиг! Это как "раз поехали на рыбалку, а водку забыли...."
    • Похоже вас угораздило на латералы попасть. Они сами себя стабилизируют и никакой дополнительной стабилизации им не нужно. У меня двухкиловаттные Крафты так на металлических Эксиконах работают даже без "эмиттерных" резисторов. Тупо впараллель.
    • @korsaj Попробовал записать код в разных вариантах предложенных тобой. Первый вариант вообще отказался работать. Заработал второй вариант на приём. Теперь уже хотя бы есть полноценный приём. char i = 0; if (rx_buf[i] == 'M'){ i++; if (rx_buf[i] == '1') { //unsigned int n = getDecFromHexStr(rx_buf, i+2); //Выводим на экран номер текущего трека LED_1_ON(); LED_2_OFF(); send_UART('M'); send_UART('1'); send_UART(0x0D); send_UART(0x0A); _delay_ms(10); flags = 0; } else if (rx_buf[i] == '2') { //unsigned int n = getDecFromHexStr(rx_buf, i+2); //Выводим на экран количество треков LED_1_OFF(); LED_2_ON(); send_UART('M'); send_UART('2'); send_UART(0x0D); send_UART(0x0A); _delay_ms(10); flags = 0; } else if (rx_buf[i] == 'T') { //unsigned int n = getDecFromHexStr(rx_buf, i+2); //Выводим на экран общее время трека LED_1_ON(); LED_2_ON(); send_UART('M'); send_UART('T'); send_UART(0x0D); send_UART(0x0A); _delay_ms(10); flags = 0; } else if (rx_buf[i] == 'K') { //unsigned int n = getDecFromHexStr(rx_buf, i+2); //Выводим на экран текущее время трека LED_1_OFF(); LED_2_OFF(); send_UART('M'); send_UART('K'); send_UART(0x0D); send_UART(0x0A); _delay_ms(10); flags = 0; } } Но однако есть ещё некоторые вещи которые нужно подкорректировать. Пока я просто разбираю UART поэтому на терминал вывожу так сказать ответ ну и просто видеть потому как индикатора к микре не подключено пока что. Однако такой вариант с ответкой нужен будет мне и для другого проекта где UART лучше всего подойдёт. Это я уже смотрю на будущее. Но тут тоже когда приходит комманда по  UART микроконтроллер отправляет ответ, но он начинает постоянно спамится. Нужно как то сделать чтоб этого не происходило. Я же в свою очередь пробовать сбросить flags = 0;, но это никак не помогло. Может чего подскажешь тут понятно что нужно как то будет обнулить данные чтобы выйти из этого условия программы. Есть вот такая проблемка. И ещё есть одна проблема с строкой  unsigned int n = getDecFromHexStr(rx_buf, i+2); Не спроста я её отключил в коде с помощью комментария. А тут проблема в том что студия не может опзнать этот код. Возможно нужно что подключить из встроенных библиотек самой студии.
    • Зачем закладываться на максимальный ток стабилитрона? Поставьте по два двухкилоомных последовательно или возможно 3-5 килоома что то есть.
×
×
  • Создать...