А вы файл batt.c в папку со скетчем положили? в нем рисунки батарейки.
Да, есть он там. Я пробовал в том числе и просто снова разворачивать архив, скачаный у вас с заменой файлов.
Как я понимаю, папка должна принимать первозданный вид. Пробовал на обеих, с бузером и без.
А ведь я уже заливал этот ино. Кстати, ардуино часто говорит, что файл со скетчем должен быть перемещен в такую то папку. И удаляет его из основной. Возможно ошибка связана с этим как то. А я по новой пихаю. Но старый скетч искать где? Если его нет в списке недавних?
Да, есть он там. Я пробовал в том числе и просто снова разворачивать архив, скачаный у вас с заменой файлов.
Как я понимаю, папка должна принимать первозданный вид. Пробовал на обеих, с бузером и без.
А ведь я уже заливал этот ино. Кстати, ардуино часто говорит, что файл со скетчем должен быть перемещен в такую то папку. И удаляет его из основной. Возможно ошибка связана с этим как то. А я по новой пихаю. Но старый скетч искать где? Если его нет в списке недавних?
---Папка в которой лежит скетч должна иметь точно такое же название как и скетч без расширегия .ino если хоть один символ не тот она пересоздаст в новую папку.
---сомое простое откройте ардуино ИДЕ нажмите "сохранить как" оно откроет папку по умолчанию для скетчей, вы посмотрите где это на вашем компе и туда ставьте папки соскетчами.
Спасибо, пошла загрузка. Дело оказалось в несовпадении имени папки (когда качаешь один архив несколько раз, ему присваевается дополнительный номер).
Вот так и получается. Для вас это само-собой, а для новичка - скачка по граблям. Должен сказать, что ваши объяснения в том числе в видео, часто помогают разъяснять такие вещи. А очень многие, в отличие от вас, говорят много лишнего и не говорят таких нюансов.
Счас гляну, уже выгрузил "скетч из головы" с ходу не вспомню)))
У меня хорошо развито воображение. Профессионального конструктора. Представил как вы вгружаете скетч. Супруга прибежала из соседней комнаты посмотреть, чего это я тут ржу.
У меня хорошо развито воображение. Профессионального конструктора. Представил как вы вгружаете скетч. Супруга прибежала из соседней комнаты посмотреть, чего это я тут ржу.
Где-то уже писал , что пока занимаюсь прибором держу весь код в голове и даже в поезеде могу кое что придумать, но когда отложи - могу забыть даже то что сам писал и самому тяжело разобрать.)))
Сегодня переделал буззер. В скетче перенес его с 10 ноги, где параллельно ему сидел подтягивающий резистор и глушил его на 2 ногу. Звук стал значительно громче.
Понравилось. Полезная функция.
И сам прибор пришелся весьма кстати. Скоро должны приехать 5 блочков преобразователей повышающих, буду свои приборы переводить на литий. А аккумуляторы штука такая. Мало ли, что там на нем написано. Тот, который я метил в первую очередь (написано 650), оказался 240 мач. всего. Не катит.
Сегодня переделал буззер. В скетче перенес его с 10 ноги, где параллельно ему сидел подтягивающий резистор и глушил его на 2 ногу. Звук стал значительно громче....
В том и прелесть скетчей можно под себя править, даже почти без знаний!
главное не лениться комментировать, тогда новички даже по скетчам учиться могут!
Понадобился тестор для китайских аккумуляторов с али. Забрёл сюда, понравилась схемка-собрал. Добавил платку зарядки лития (на TP4056) вместо резистора и платку DC-DC (XM1584) для питания.Полевика P типа не было, сделал на N.Чудаковато, но работает. Единственно не распознаёт окончание зарядки-платка уже отключилась а ардуинка всё пытается заряжать. Отключается платка при 4,15В. Может предел зарядки в коде 4,15 установить? Собирал ещё схемку (http://lazyelectronics.com/index.php/ru/item/8-battester-ru). Результаты подсчёта ёмкости один в один.Там ещё тест Ni-MH реализован. Было бы неплохо здесь код дописать. Ещё редложение-в меню разрядки сделать выбор тока: на схеме выделенное пунктиром продублировать и завести управление на свободный пин. Тогда получиться 3 разрядных тока.
.Там ещё тест Ni-MH реализован. Было бы неплохо здесь код дописать. Ещё редложение-в меню разрядки сделать выбор тока: на схеме выделенное пунктиром продублировать и завести управление на свободный пин. Тогда получиться 3 разрядных тока.
Да, было бы неплохо иметь пункт в меню с выбором порогового напряжения. Метал-гидрид тоже достаточно распространены.
Разный разрядный ток? Возможно. Но в принципе это можно легко реализовать просто переключением резисторов. Тумблером.
Если кто-нибудь может и хочет выполнить такую доработку программы, было бы интересно. Мне это не по зубам, увы.
Да, в вашем случае код придётся подкорректировать. Я тоже пробовал ставить контроллер заряда. Только LTC4054, но не помню уже корректировал ли код (вроде нет). В схеме управления контролером ставил биполярник. В схеме разряда - irl2505. Собирал на макетке тогда, законченное устройство так и не сделал.
По хорошему, 328 позволяет сделать 3 канала для разряда-заряда(ШИМ) или 6 каналов без ШИМ.
Так что использовать ПроМини на 33%(или 16%) мне кажетися несколько неразумным.
Для заряда лития и управления оным - поставить р-канальные полевики после ТР4056( можну одну - она до 1А даёт, так что для трёх вполне). В таком случае можно сделать 6 каналов(2 или 3 ТР4056).
Или сделать зарядный тока на ШИМ(что по мнению некоторых лучше), в этом случае 3 канала.
А для заряда никелевых - LM317 в режиме стабилизатора тока (до 1,5А) что вполне хватит для 3-6 акк.
Вопрос один - написать скетч. Я пробовал переделать скетч автора, но увы - моих знаний явно недостаточно.
Собрал тоже этот тестер, попробовал. Индикация внутреннего сопротивления - вещь полезная, но немного не точно показывает. Если аккумулятор мощный - показания по нулям. Автору написал по поводу этого. Вот к нему бы прикрутить зарядку - получился бы полезный прибор. Плюс NI-MH можно тестить!
На фото тестирую LI-ION банку GTF 8800 ma/h. Конца теста не дождался - сейчас времени нет.
Разный разрядный ток? Возможно. Но в принципе это можно легко реализовать просто переключением резисторов. Тумблером.
[/quote]
А как в коде учесть переключение тумблёра если там прописано разрядное сопротивление и через него считается ёмкость?Только ещё один полевик и сопротивление с учётом изменения нагрузки в коде.
На коте есть схемка на атмеге (http://radiokot.ru/circuit/power/charger/20/) там 3 разрядных тока перекидываются стабилизатором тока полевиком с операционником, и видимо программа учитывает это в расчетах.Вот ту реализацию сюда ба перетянуть, что бы в коде ардуинки токи подправить под себя.
Нашол Р канальный полевик, завтра попробую в схемку воткнуть, посмотрю что с зарядкой будет.
Жаль что познания в коде сводятся к замене цифр в переменных..
А как в коде учесть переключение тумблёра если там прописано разрядное сопротивление и через него считается ёмкость?Только ещё один полевик и сопротивление с учётом изменения нагрузки в коде....
Можно и без полевика просто тумблером, есть аж два варианта:
--взять сдвоенный переключатель одна половина которого переключает разистор вторая сообщает на пин какой разрядный ток учитывать
--взять простой тумблер и им переключать нагрузочные резисторы, и мониторить напряжение на одном из резисторов если есть считаем одним током если нет соответственно подключен второй резистор и считаем другим током.
Есть еще альтернативный вариант, так как резистор достаточно большого сопротивления аж 20 Ом то можно с помощью АЦП Ардуино посчитать падение напряжения на нем и высчитывать ток, даже без подключения внешнего датчика тока.
Провожу такую пробу: просто поменял в скетче величины напряжений, применимых к никель-металлгидридным. Сейчас стоит разряжает. Медлеено правда, для него сопротивление великовато, но у ардуино терпения хватит.
Физически это выглядит так. Про-мини с другим вариантом. Вынул одну-вставил другую.
А вот при зарядке скорее всего спалит транзистор. Тот всего на 400 ма расчитан, а разница напряжений больше.
..............................
В принципе работает и этот вариант. Разряжал 6 часов. До конца не довел. Еще столько же пришлось бы ждать. Насчитал 400 мач (с 1,3 до 1,25 вольта). Из 2400. Но аккум реально старый, лет пять у меня в мышке отпахал. Заряжать отказался. Сразу выключает. Видимо внутреннее сопротивление уже слишком велико. Т.е. этот вариант зарядного в принципе можно применить. Только вот пороговые значения в скетче придется подбирать. А это непростой вопрос. С литием проще.
Например. Когда я купил пару этих аккумов. Сделал для них зарядку стабильным током отключение компаратором по напруге. Сколько выставлять? Встречал совет. Разрядить до 1 вольта и заряжать стаб током 12-14 часов до появления некоторого нагрева. Измерить напряжение на зарядном и его считать пороговым. Ага.. у меня оно полезло уже к 1,6 вольтам (было давно, могу немного путать цифры). Не выдержали нервы и поставил 1,52 вольта. Много позже начитался форумов, что напруга не должна превышать 1,36 вольта на элемент на свежезаряженном и несколько снизил. Поставил 1,45 на компараторе. И после этого они у меня быстренько стали сдуваться. А может просто срок пришел. Но если по первости зватало на 4-6 месяцев одного, то теперь 3-4 недели. Так я и не знаю, что выставлять на зарядном. Форумов много, мнений хватает, однозначного ответа нет.
Вы все правильно делали с никелем так и нужно, они у вас видать еще живые но эффект памяти у них сильный, несколько раз правильно разрядить и зарядить и будут для приборов самое то.
Выставьте стабильный ток по даташиту, если нет его то 1/10 емкости и им заряжайте 14 часов или до появления нагрева ощутимого рукой, на напряжение вообще не смотрите оно будет большим чтоб ток обеспечивать, но после отключения стабилизируется на нужном уровне.
У никеля КПД низкий и 40% уходит в нагрев и они теплые во время зарядки а когда зарядились то они вообще 100% в тепло вот тогда и разогрев идет сильный!
Было время без лития жили все, так у меня с тех времен еще не один аккум не сдох, или потерялись или подарены/проданы вместе с техникой.
Спасибо. Тренировать я пробовал. Эффекта не увидел. Теперь попробую разрядить и как вы советовали - до упора. И после этого выставлю напругу. Или просто подниму ее снова до 1,52. И фиг с ними.
А вообще в мечтах, вижу универсальную зарядку. Но не аймакс би шесть. Ток - произвольно, вплоть до ампера, напругу отключения - произвольно, вплоть до 10 -14 вольт. Подсчет емкости - было бы неплохо. И алгоритм, типа вашего - зарядил - разрядил - зарядил и капельный. Т.е. и пальчики и литий и кроны и от апсов, все в кучу.
Ай макс неплохо, но там фиксированные режимы. И вовсе не факт, что оптимальные, судя по моим аккумам.
А бипер это хорошо. Сейчас прервался, сходил и выключил ваш приборчик. Заряжал литий им. Он на кухне, я возле компа. Удобно.
Все просто. У меня к заряднику прикреплен отдельный модуль разрядки. С сопротивлением и диодом шотки. Он разряжает аккум до примерно 0,95-0,97 вольта.
Вставляю в разрядник на сутки. Потом отлеживаться сколько удобно. При необходимости, если напруга без нагрузки сильно восстановилась, снова в разрядник. Отлежка, контроль напруги и на зарядку. Сейчас компаратор настроен на отключение 1,45 вольта (там встроеный вольтметр). Настраивал так, чтобы при отключении зарядного тока, напруга на аккумуляторе была 1,36 вольта. Сейчас они у меня заряжаются часа 4 всего. Ток 1/10 исходной емкости. Т.е. либо они потеряли емкость, либо я их недозаряжаю. Я могу отключить автомат и заряжать по времени. А напруга сколько получится.
Если вы имеете в виду, что никель металл-гидрид тренировке не поддаются и пытаетесь меня поддеть, то я в курсе. И в курсе, что тренировки практикуют с никель-кадмием. Но почему бы и не попробовать?
Оба я прогнал по 3 раза через цикл разряд-заряд. Ничего не изменилось. По крайней мере заметно.
И сейчас поддгадаю период так, чтобы после 8-10 часов заряда они были под наблюдением. В смысле чтобы я был дома. И попробую что получится. Один естественно. У меня одноместный зарядник.
Если вы имеете в виду, что никель металл-гидрид тренировке не поддаются и пытаетесь меня поддеть, то я в курсе. И в курсе, что тренировки практикуют с никель-кадмием. Но почему бы и не попробовать?
Оба я прогнал по 3 раза через цикл разряд-заряд. Ничего не изменилось. По крайней мере заметно.
И сейчас поддгадаю период так, чтобы после 8-10 часов заряда они были под наблюдением. В смысле чтобы я был дома. И попробую что получится. Один естественно. У меня одноместный зарядник.
Привет! поддеть не пытаюсь и тем более без смайла.
Я не знаю что можно назвать тренировкой, но у любого никелевого элемента (кадмий или метал гидрид) есть ярко выраженный эффект памяти. И каждый раз когда вы его будете не до конца разряжать или не до полной заряжать он будет на химическом уровне уменьшаться в емкости.
Есть методы и борьбы с этими неприятными явлениями с помощью импульсов, но они в паблик не лежат. Но не беда есть простые действенные методы.
--полный разряд вот здесь Ni-MG и Ni-Cd отличаются, металгидрид нельзя в ноль разряжать а не ниже 0,8В.
--дальше полный заряд как я писал выше и не важно что напряжение на банке подскочило до 1,68 главное фиксированный ток и постоянный контроль температуры.
-- и да если кипят слишком рано не через 10-14часов, а уже через 4 часа значит ваш элемент действительно на химическом уровне износился и нужно взять меньше ток заряда. Но даже изношенный в полном заряде он будет все равно отдавать больше емкости чем вам не дозаряженный.
Например АКБ написано 2100мА/ч заряжаем его током 210мА если через 5 часов он резко нагревается значит ждем пару часов разряжаем и снова на заряд но уже током меньше например 150мА. И так пока он не станет за 10-14ч заряжаться.
Можно контролировать окончание заряда по дельта-пик, мне этот метод нравится больше чем по времени.
Вряд ли я буду за эти два аккума так уж бороться. Правда, что интересно. Недавно покупал еще 2, по одному. Оба уже в мусор ушли.
Вибиру время и попробую дать полную выдержку с выключеной автоматикой (там просто тумблером щелкнуть) а вот ток там сложнее. Снова подбирать задающие резюки в стабилизаторе тока. Хотя... Я его на два диапазона лепил 100 и 250 ма. В принципе можно малым током тогда позаряжать.
Спасибо за идею. Попытаюсь вытащить этих двух товарищей. Особенно помня о новых двух в мусоре.
А метод дельта, мне нравится тоже. Я даже в свое время проверял. Записывал показания до сотых через определенные интервалы. Но дельта там была совсем невелика. В то время аппаратно и не слишком сложно я его реализовать не мог. Остановился на контроле напряжения. Хотя, если долговременная эксплуатация, целесообразнее видимо по времени заряжать. Но переделывать давно созданное законченное устройство уже в лом...
Ток заряда я обычно делаю 0,1С. Есть разные мнения на этот счет, но я придерживаюсь такого.
Ток разряда не помню. Просто резистор с диодом последовательно. Диод не дает разрядить в "0". Вряд ли больше 50 ма. Греется резюк и диод совсем слабо. Назначение то ДОразрядить.
Не измерял. Хотя не проблема, конечно. Думаю, достаточно велико. Что будет, то и будет. Не смертельно. Но подбирать новые, да чтоб тоже послужили годы в лом, не говоря уж о деньгах. Попробую вначале как советовал Бодрый 2014.
У меня долго не использовались несколько штук Ni-Mh аккумуляторы. После тренировки (не помню сколько циклов делал) их ёмкость почти полностью восстановилась. R вн у некоторых дошло до 0,1 ом (ёмкость 2500-3000 ма\ч). Если внутренее сопротивление не понижается после тренировки, то кирдык такому источнику
Жаль тема заглохла. Сюда бы 2й канал, металлгидрид(свинец возможно), зарядку нормальную, разряд-тестор на пару ампер со стабилизатором тока(можно любой ток поставить), но увы. Хотелок то не так много, а знаний в коде 0. Думаю универсальная зарядка на 2 канала + разрядник-тестор ёмкости многим бы пригодился. Как вариант надыбал разрядку-тестор, интересная штука...литий, свинец, металлгидрид, чё душе угодно до 20В. https://www.youtube.com/watch?v=qQwxXiKavYQ&list=PLQNYBHdgx3ndHuSNcgwGqIHlYlTvjUbgw&index=7 Есть ссылка на скетч и пояснения в нём разжованы.
IMAX B6 is the new intelligent multifunction charger which can charge and discharge for Lion, LiPo, LiFe (A123), Pb, NiCd and NiMH batteries. It's all-powerful in a way.
Мод авторской версии, основан на скетче, изменённом arthemy под дисплей 1602.
Изменено:
-обычный индикатор 1602 вместо индикатора с i2c модулем и авторского 5110,
-изменена схема - использованы транзисторы КТ814 и КТ315, добавлены входы АЦП для повышения точности (в авторском скетче не учитывается падение напряжения на открытом транзисторе),
-изменена нумерация входов-выходов (см. схему),
-реализовано грубое тестирование внутреннего сопротивления,
-добавлена индикация тока заряда,
-убраны дублирующие переменные (в авторском скетче была заморочка с преобразованием float > int),
-добавлен ИОН на TL431 для коррекции измерений при нестабильном напряжении питания,
-выведены значения нагрузочно-ограничительных резистрорв в константы в setup, для удобства корректировки (изменяем R5, R10 и R15 в начале кода),
-сделан выбор типа тестируемого аккумулятора (Li-Ion, Li-Pol, LiFePO4). По умолчанию стоит Li-Ion,
-сделан выбор тока разряда (малый, средний, большой), чтобы тестировать мощные аккумуляторы быстрее,
-добавлен бузер, сигнализирующий переключение между режимами и окончании цикла измерений,
-зарядка по окончании теста достигает напряжения заряда, после чего поддерживается на уровне Vc-0,2,
-добавлено меню с настройками, чтобы менять параметры не перезагружая устройство.
В планах:
-сделать гистерезис отключения заряда в режиме окончания теста (возможно не будет реализовано за ненадобностью),
-сделать ещё один пункт "manual akk" в меню, где можно будет задать свои напряжения окончания разряда и заряда (с сохранением в EEPROM),
-оптимизировать алгоритм подсчёта времени разряда (на данный момент часы слегка отстают из-за фиксированого приращения по 5 секунд),
-сделать чтение с АЦП с оверсемплингом.
/*
Оригинальное описание и схема здесь. http://srukami.inf.ua/testbat3.htm
А также фото и видео работы.https://youtu.be/BODFInBvmFw
Автор оригинального скетча srukami
МОД создан на модифицированом скетче под I2C LCD 1602 от arthemy https://www.youtube.com/user/arthemyhttps://mega.nz/#F!NApFHaaA!g-swQBanZrVbW4QhXdZBXQ
MOD by tekagi ( t.e.k.a.g.i@yandex.ru )
Схема собиралась из закромов, поэтому выглядит столь монструозно.
Изменено:
-обычный индикатор 1602 вместо индикатора с i2c модулем и авторского 5110,
-изменена схема - использованы транзисторы КТ814 и КТ315, добавлены входы АЦП для повышения точности (в авторском скетче не учитывается падение напряжения на открытом транзисторе),
-изменена нумерация входов-выходов (см. схему ),
-реализовано грубое тестирование внутреннего сопротивления,
-добавлена индикация тока заряда,
-убраны дублирующие переменные (в авторском скетче была заморочка с преобразованием float > int),
-добавлен ИОН на TL431 для коррекции измерений при нестабильном напряжении питания,
-выведены значения нагрузочно-ограничительных резистрорв в константы в setup, для удобства корректировки (изменяем R5, R10 и R15 в начале кода),
-сделан выбор типа тестируемого аккумулятора (Li-Ion, Li-Pol, LiFePO4). По умолчанию стоит Li-Ion,
-сделан выбор тока разряда (малый, средний, большой), чтобы тестировать мощные аккумуляторы быстрее,
-добавлен бузер, сигнализирующий переключение между режимами и окончании цикла измерений,
-зарядка по окончании теста достигает напряжения заряда, после чего поддерживается на уровне Vc-0,2,
-добавлено меню с настройками, чтобы менять параметры не перезагружая устройство.
В планах:
-сделать гистерезис отключения заряда в режиме окончания теста (возможно не будет реализовано за ненадобностью),
-сделать ещё один пункт "manual akk" в меню, где можно будет задать свои напряжения окончания разряда и заряда (с сохранением в EEPROM),
-оптимизировать алгоритм подсчёта времени разряда (на данный момент часы слегка отстают из-за фиксированого приращения по 5 секунд),
-сделать чтение с АЦП с оверсемплингом.
*/
#include <util/delay.h>
#include <LiquidCrystal.h>
const float R5 = 5.5; //задаём сопротивление зарядного резистора R5
const float R10 = 22.3; //задаём сопротивление разрядного резистора R10
const float R15 = 10.2; //задаём сопротивление разрядного резистора R15
const int analogV = A0; //назначаем аналоговый вход аккума
const int analogVC = A1; //назначаем аналоговый вход заряда
const int analogVD = A2; //назначаем аналоговый вход разряда
const int analogVD2 = A3; //назначаем аналоговый вход разряда 2
const int analogV_TL431 = A4; //назначаем аналоговый вход коррекции напряжения
float coeff = 0.0; //поправка на нестабильность напряжения
float volt = 0.0; //задаем переменные
float R = 0.0; //внутреннее сопротивление аккумулятора
float voltC = 0.0; //Напряжение при заряде
float voltD = 0.0; //Напряжение при разряде
float voltD2 = 0.0; //Напряжение при разряде
float Vc = 0.0; //Конечное напряжение заряда
float Vd = 0.0; //Конечное напряжение разряда
float am = 0; //милиамперы
float amR = 0; //милиамперы, ток определения внутреннего сопротивления
float amR2 = 0; //милиамперы, ток определения внутреннего сопротивления
float amC = 0; //милиамперы заряд
float capvrem= 0; //временная емкость
float cap= 0; //емкость
float voltTEMP= 0; //временная переменная для рассчёта внутреннего сопротивления
byte counteR = 0; //счётчик циклов замера внутреннего сопротивления
byte knop = 0; //переменная для хранения состояния кнопки
byte knop_menu = 1; //переменная для хранения состояния кнопки
byte SEK = 0; //секунды
byte MIN = 0; //минуты
byte HOUR = 0; //часы
byte akk_type = 0; //переменная типа аккумулятора
byte discharge_type = 0; //переменная типа разряда
byte recharge_control = 0; //переменная для однократного подзаряда в конце
unsigned long prMillis = 0;
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 19, 10); // 19 - pinA5
void setup()
{
pinMode(analogV , INPUT); //определяем тип порта (вход), АЦП
pinMode(analogVC , INPUT); //определяем тип порта (вход), АЦП
pinMode(analogVD , INPUT); //определяем тип порта (вход), АЦП
pinMode(analogVD2 , INPUT); //определяем тип порта (вход), АЦП
pinMode(analogV_TL431 , INPUT); //определяем тип порта (вход), АЦП
pinMode(2, INPUT); //определяем тип порта (вход), кнопка
pinMode(3, INPUT); //определяем тип порта (вход), кнопка
pinMode(13, OUTPUT); // бузер
pinMode(9, OUTPUT); // разряд
pinMode(8, OUTPUT); // заряд
pinMode(7, OUTPUT); //LED
pinMode(6, OUTPUT); //разряд2
lcd.begin(16, 2); // размер дисплея
lcd.clear(); // Чистим экран
hello_screen(); //вывод заставки (можно отключить, закомментировав данную строку)
menu(); //вызов меню для начальной конфигурации
}
void loop()
{
if (digitalRead(3)==HIGH) //нажатие кнопки "меню"
{
knop_menu=1;
digitalWrite(8,LOW); //выключаем ключ зарядки аккумулятора
digitalWrite(9,LOW); //выключаем ключ нагрузки
digitalWrite(6,LOW); //выключаем ключ нагрузки 2
digitalWrite(7,LOW); //выключаем светодиод заряда
_delay_ms(100);
menu();
}
coeff = 512/(float (analogRead(analogV_TL431))); // считаем коэффициент погрешности опорного напряжения
volt = float (analogRead(analogV))*coeff*5/1024; // 5В - опорное напряжение
voltC = float (analogRead(analogVC))*coeff*5/1024; // Напряжение заряда
voltD = float (analogRead(analogVD))*coeff*5/1024; // Напряжение разряда
voltD2 = float (analogRead(analogVD2))*coeff*5/1024; // Напряжение разряда 2
if (digitalRead(2)==HIGH) //нажатие кнопки
{
tone(13, 1000, 70);
knop++;
lcd.clear(); //чистим экран
if (knop>4){knop=1; } // обнуляем четвёртое нажатие.
_delay_ms(250);
}
if (knop==0){ //сценарий устройство включено но незапущен тест
lcd.setCursor(0, 0);
lcd.print("Press 1Ch 2Rint ");
lcd.setCursor(0, 1);
lcd.print("3Dis 4FinCh ");
lcd.print(volt, 1);
lcd.print("V ");
_delay_ms(250);
}
//-------------------------------------------------
if (knop==1){ //отработка сценария зарядки после подключения
lcd.clear(); //чистим экран
cap= 0; //обнуляем переменные
am = 0;
amR = 0;
amR2 = 0;
amC = 0;
R = 0;
SEK = 0;
MIN = 0;
HOUR = 0;
counteR = 0;
voltTEMP = 0;
recharge_control = 0;
digitalWrite(7,LOW); //светодиод разряжено
if (volt<Vc)
{
digitalWrite(8,HIGH); //включаем ключ зарядки аккумулятора
digitalWrite(9,LOW); //отключаем ключ нагрузки
amC=((voltC-volt)/R5)*1000; //считаем ток в mA =Uтекущее/Rнагрузки, *1000 получаем mA
lcd.setCursor(0, 0);
lcd.print("CHARGE: ");
lcd.print(volt); //выводим напряжение на аккумуляторе
lcd.print("V ");
lcd.setCursor(8, 1);
lcd.print("I=");
lcd.print(amC);
}
if(volt>=Vc) {knop = 2; tone(13, 1000, 150);} // фиксируем зарядку АКБ, переходим в проверку внутреннего сопротивления
_delay_ms(350);
}
//----------------------------------------------------------------------------------------------------
if (knop==2) //замер внутреннего сопротивления
{
if (counteR<=252)
{
if (counteR<=230) //первый цикл проверки
{
if (counteR==0) { lcd.clear(); } // Чистим экран
digitalWrite(8,LOW); //отключаем ключ зарядки аккумулятора
digitalWrite(6,LOW); //отключаем ключ нагрузки 2
digitalWrite(9,HIGH); //включаем ключ нагрузки
amR=(voltD/R10); //считаем ток
lcd.setCursor(0, 0);
lcd.print("Testing Rint ");
lcd.setCursor(13, 0); //ставим курсор в 14й столбец, первую строку (вспомогательные данные, можно закомментить строку)
lcd.print("R10"); //используемый резистор (вспомогательные данные, можно закомментить строку)
lcd.setCursor(0, 1); //ставим курсор в первый столбец, вторую строку
lcd.print(amR*1000,0); //выводим значение тока разряда в мА
lcd.print("mA "); //
lcd.print(volt,2); //выводим напряжение на аккумляторе под нагрузкой
lcd.print("V "); //
_delay_ms(500); //задержка
lcd.setCursor(0, 1); //ставим курсор в первый столбец, вторую строку
lcd.print(" "); //чистим строку
counteR++; //инкрементируем счётчик
if (counteR<=231) //окончание первого цикла проверки
{
voltTEMP = volt; //переносим значение напряжения под нагрузкой во временную переменную
}
}
if (counteR>230 and counteR<=250) //второй цикл проверки
{
if (counteR==231) { lcd.clear(); } // Чистим экран
digitalWrite(8,LOW); //отключаем ключ зарядки аккумулятора
digitalWrite(9,LOW); //отключаем ключ нагрузки
digitalWrite(6,HIGH); //включаем ключ нагрузки 2
amR2=(voltD2/R15); //считаем ток
lcd.setCursor(0, 0);
lcd.print("Testing Rint");
lcd.setCursor(13, 0); //ставим курсор в 14й столбец, первую строку
lcd.print("R15"); //используемый резистор (вспомогательные данные, можно закомментить строку)
lcd.setCursor(0, 1); //ставим курсор в первый столбец, вторую строку
lcd.print(amR2*1000,0); //выводим значение тока разряда в мА
lcd.print("mA "); //
lcd.print(volt,2); //выводим напряжение на аккумляторе под нагрузкой
lcd.print("V "); //
counteR++; //инкрементируем счётчик
_delay_ms(500); //задержка
lcd.setCursor(0, 1); //ставим курсор в первый столбец, вторую строку
lcd.print(" "); //чистим строку
}
if (counteR==251) //заканчиваем проверку сопротивления
{
R = ((voltTEMP-volt)/(amR2-amR)); //считаем внутреннее сопротивление аккумулятора
digitalWrite(9,LOW); //выключаем ключ нагрузки
digitalWrite(6,LOW); //выключаем ключ нагрузки 2
digitalWrite(8,LOW); //выключаем ключ зарядки аккумулятора
counteR++; //инкрементируем счётчик
lcd.clear(); // Чистим экран
lcd.setCursor(0, 1); //ставим курсор в первый столбец, вторую строку
lcd.print("Rin="); //
lcd.print(R,3); //выводим значение внутреннего сопротивления
}
if (counteR>=252) //восстанавливаем заряд аккумулятора перед тестом ёмкости, переходим в разряд
{
digitalWrite(9,LOW); //выключаем ключ нагрузки
digitalWrite(6,LOW); //выключаем ключ нагрузки 2
digitalWrite(8,HIGH); //включаем ключ зарядки аккумулятор
lcd.setCursor(0, 0); //ставим курсор в первый столбец, первую строку
lcd.print("re-charging"); //дозарядка до полного
lcd.setCursor(11, 1); //ставим курсор в 12й столбец, вторую строку
lcd.print(volt); //вывод текущего напряжения на аккумуляторе
lcd.print("V"); //
_delay_ms(350);
lcd.setCursor(15, 0); //ставим курсор в 16й столбец, первую строку
lcd.print("*"); //мигающий значок заряда
_delay_ms(350);
lcd.setCursor(15, 0); //ставим курсор в 16й столбец, первую строку
lcd.print(" "); //мигающий значок заряда
lcd.setCursor(11, 1); //ставим курсор в 12й столбец, вторую строку
lcd.print(" "); //
if (volt>=Vc) //если зарядился - переходим в разряд
{
digitalWrite(8,LOW); //выключаем ключ зарядки аккумулятора
knop = 3; //фиксация окончания замера внутреннего сопротивления, переход к замеру ёмкости
tone(13, 1000, 150); //тональный сигнал смены цикла
}
}
}
}
//----------------------------------------------------------------------------------------------------------------
if (knop==3){ //проверка сценария для разрядки
lcd.clear(); // Чистим экран
if (volt>Vd)
{
digitalWrite(8,LOW); //отключаем ключ зарядки аккумулятора
if (discharge_type==1)
{
digitalWrite(9,HIGH); //включаем ключ нагрузки
}
if (discharge_type==2)
{
digitalWrite(6,HIGH); //включаем ключ нагрузки
}
if (discharge_type==3)
{
digitalWrite(6,HIGH); //включаем ключ нагрузки
digitalWrite(9,HIGH); //включаем ключ нагрузки
}
//#########цикл отсчета
if (millis()-prMillis>=5000){
prMillis=millis();
SEK=SEK+5;
if (discharge_type==1)
{
am=(voltD/R10)*1000; //считаем ток в mA =Uтекущее/Rнагрузки, *1000 получаем mA
}
if (discharge_type==2)
{
am=(voltD2/R15)*1000; //считаем ток в mA =Uтекущее/Rнагрузки, *1000 получаем mA
}
if (discharge_type==3)
{
am=((voltD/R10)*1000)+((voltD2/R15)*1000); //считаем ток в mA =Uтекущее/Rнагрузки, *1000 получаем mA
}
capvrem=am/720; cap=cap+capvrem; //считаем емкость в mAh, при замере раз в 5 сек (в часе 3600сек / 5 = 720)
if (SEK>59){SEK=0;MIN++;}
if (MIN>59){MIN=0;HOUR++;}
if (HOUR>23) HOUR=0;
}
//########################
lcd.setCursor(0, 0);
lcd.print("DisCh ");
lcd.print("I="); //вывод на экран
lcd.print(am, 0); //вывод на экран
lcd.print("mA "); //вывод на экран
lcd.setCursor(0, 1);
lcd.print(volt);
lcd.print("V Q="); //вывод на экран
lcd.print(cap, 0); //вывод на экран
lcd.print("mAh "); //вывод на экран
lcd.setCursor(12, 1);
}
_delay_ms(500);
if (volt<=Vd){knop=4; tone(13, 1000, 150);} //фиксация окончания разрядки и замера емкости
}
//-------------------------------------------------
if (knop==4){ //сценарий окончания подсчета емкости, вывод на экран и зарядка.
lcd.setCursor(10, 1);
lcd.print(volt, 1); //вывод на экран текущего напряжения аккумулятора
lcd.print("V");
switch (recharge_control)
{
case 0: //тест окончен, но аккумулятор полностью разряжен, выводим результаты на экран
digitalWrite(8,LOW); //выключаем ключ зарядки аккумулятора
digitalWrite(9,LOW); //выключаем ключ нагрузки
digitalWrite(6,LOW); //выключаем ключ нагрузки 2
digitalWrite(7,LOW); //выключаем светодиод заряда
lcd.setCursor(0, 0); //выводим значение внутреннего сопротивления
lcd.print("R=");
lcd.print(R,3);
lcd.print(" ");
lcd.setCursor(8, 0);
if (HOUR<1){ lcd.print("00");} //вывод времени разряда на экран
else {lcd.print(HOUR);}
lcd.print(":");
if (MIN<1){ lcd.print("00");} //вывод на экран
else {lcd.print(MIN);}
lcd.print(":");
lcd.print(SEK);
lcd.setCursor(0, 1);
// lcd.print("Q="); //вывод на экран
lcd.print(cap, 1); //вывод на экран
lcd.print("mAh "); //вывод на экран
recharge_control=1; //инкремент счётчика
_delay_ms(5);
break; //выход из case
case 1: //тест окончен, результаты отображены, заряжаем
if (volt<Vc) //после того как посчитали емкость заряжаем
{
digitalWrite(8,HIGH); //включаем ключ зарядки аккумулятора
lcd.setCursor(15, 1); //столбец 16, строка 2
lcd.print(" "); //мигаем звёздочкой индикатора заряда
_delay_ms(250);
lcd.setCursor(15, 1); //столбец 16, строка 2
lcd.print("*"); //мигаем звёздочкой индикатора заряда
_delay_ms(250);
}
if (volt>=Vc) //после того как зарядили переходим к поддержанию заданного напряжения
{
digitalWrite(8,LOW); //отключаем ключ зарядки аккумулятора
digitalWrite(7,HIGH); //включаем светодиод заряда
recharge_control=2; //инкрементируем счётчик
tone(13, 500, 300);
_delay_ms(301);
tone(13, 700, 300);
_delay_ms(301);
tone(13, 900, 300);
_delay_ms(301);
}
break;
case 2:
if (volt<(Vc-0.2)) //после заряда поддерживаем напряжение на 0.2 вольта ниже
{
digitalWrite(8,HIGH); //включаем ключ зарядки аккумулятора
_delay_ms(150);
}
if (volt>=(Vc-0.2)) //после заряда поддерживаем напряжение на 0.2 вольта ниже
{
digitalWrite(8,LOW); //отключаем ключ зарядки аккумулятора
_delay_ms(500);
}
break;
}
}
}
void hello_screen()
{
//вывод заставки ========================
lcd.setCursor(0, 0); //
lcd.print("TestBAT ver0.55a"); //
_delay_ms(1100); //
lcd.setCursor(0, 0); //
lcd.print(" Scatch srukami "); //
lcd.setCursor(0, 1); //
lcd.print(" (bodriy2014) "); //
_delay_ms(900); //
lcd.setCursor(0, 0); //
lcd.print(" 1602 mod by "); //
lcd.setCursor(0, 1); //
lcd.print(" arthemy "); //
_delay_ms(900); //
lcd.setCursor(0, 0); //
lcd.print(" final mod by "); //
lcd.setCursor(0, 1); //
lcd.print(" tekagi "); //
_delay_ms(900); //
//
//вывод заставки ........................
}
void menu() //меню
{
knop=0; //обнуляем используемые переменные
akk_type=1; //по умолчанию Li-Ion
discharge_type=1; //по умолчанию минимальный ток разряда
_delay_ms(150); //задержка - антидребезг
while (knop_menu!=0) //пока не произведены начальные настройки остаёмся в меню
{
if (digitalRead(2)==HIGH) //нажатие кнопки
{
lcd.clear(); //чистим экран
knop++; //инкремент кнопки
tone(13, 1000, 70); //бипер
if (knop>3){knop=1; } // обнуляем нажатие
_delay_ms(75); //задержка - антидребезг
}
if (digitalRead(3)==HIGH) //нажатие кнопки
{
knop=0;
lcd.clear(); //чистим экран
knop_menu++; //инкремент кнопки
tone(13, 1000, 70); //бипер
if (knop_menu>3){knop_menu=1; } // обнуляем нажатие
_delay_ms(75); //задержка - антидребезг
}
switch(knop_menu) //выбор типа аккумулятора и тока разряда
{
case 1: //выбор типа аккумулятора
{
lcd.setCursor(0, 0); //индикация текущего типа аккумулятора
lcd.print(" akkum. type: ");
if (knop==0)
{
lcd.setCursor(0, 0);
lcd.print("change akk type?");
if (akk_type==1)
{
lcd.setCursor(0, 1);
lcd.print("Li-Ion 2.9V-4.1V");
}
if (akk_type==2)
{
lcd.setCursor(0, 1);
lcd.print("Li-Pol 2.9V-4.2V");
}
if (akk_type==3)
{
lcd.setCursor(0, 1);
lcd.print("Li-Fe 2.8V-3.6V ");
}
}
if (knop==1) //выбор литий-ионной батареи
{
lcd.setCursor(0, 1);
lcd.print("Li-Ion 2.9V-4.1V");
akk_type=1;
}
if (knop==2) //выбор литий-полимерной батареи
{
lcd.setCursor(0, 1);
lcd.print("Li-Pol 2.9V-4.2V");
akk_type=2;
}
if (knop==3) //выбор литий-железо-фосфатной батареи
{
lcd.setCursor(0, 1);
lcd.print("Li-Fe 2.8V-3.6V ");
akk_type=3;
}
_delay_ms(250);
break;
}
case 2: //выбор тока разряда
{
lcd.setCursor(0, 0);
lcd.print("discharge type: ");
if (knop==0)
{
lcd.setCursor(0, 0); //индикация текущей уставки тока разряда
lcd.print("change I disch.?");
if (discharge_type==1) //минимальный ток
{
lcd.setCursor(0, 1);
lcd.print("minimum current ");
}
if (discharge_type==2) //средний ток
{
lcd.setCursor(0, 1);
lcd.print("middle current ");
}
if (discharge_type==3) //максимальный ток
{
lcd.setCursor(0, 1);
lcd.print("maximum current ");
}
}
if (knop==1) //выбор минимального тока разряда (R10)
{
lcd.setCursor(0, 1);
lcd.print("minimal current ");
discharge_type=1;
}
if (knop==2) //выбор среднего тока разряда (R15)
{
lcd.setCursor(0, 1);
lcd.print("middle current ");
discharge_type=2;
}
if (knop==3) //выбор максимального тока разряда (R10+R15)
{
lcd.setCursor(0, 1);
lcd.print("maximum current ");
discharge_type=3;
}
_delay_ms(250); //задержка
break;
}
case 3: //сохранение параметров и переход к тесту
{
lcd.setCursor(0, 0);
lcd.print(" save and go ");
lcd.setCursor(0, 1);
lcd.print(" to test? ");
if(knop==1)
{
knop_menu=0;
if (akk_type==1)
{
Vd=2.9;
Vc=4.1;
}
if (akk_type==2)
{
Vd=2.9;
Vc=4.2;
}
if (akk_type==3)
{
Vd=2.8;
Vc=3.6;
}
}
_delay_ms(250); //задержка
break;
}
}
}
knop=0; //обнуляем переменные
knop_menu=0; //обнуляем переменные
}
Схема:
Навикация по функциям и меню:
На данный момент альфа-версия, только вчера добавил в скетч меню, пока на стадии тестирования, так что возможны глюки.
А вы файл batt.c в папку со скетчем положили? в нем рисунки батарейки.
Да, есть он там. Я пробовал в том числе и просто снова разворачивать архив, скачаный у вас с заменой файлов.
Как я понимаю, папка должна принимать первозданный вид. Пробовал на обеих, с бузером и без.
А ведь я уже заливал этот ино. Кстати, ардуино часто говорит, что файл со скетчем должен быть перемещен в такую то папку. И удаляет его из основной. Возможно ошибка связана с этим как то. А я по новой пихаю. Но старый скетч искать где? Если его нет в списке недавних?
Да, есть он там. Я пробовал в том числе и просто снова разворачивать архив, скачаный у вас с заменой файлов.
Как я понимаю, папка должна принимать первозданный вид. Пробовал на обеих, с бузером и без.
А ведь я уже заливал этот ино. Кстати, ардуино часто говорит, что файл со скетчем должен быть перемещен в такую то папку. И удаляет его из основной. Возможно ошибка связана с этим как то. А я по новой пихаю. Но старый скетч искать где? Если его нет в списке недавних?
---Папка в которой лежит скетч должна иметь точно такое же название как и скетч без расширегия .ino если хоть один символ не тот она пересоздаст в новую папку.
---сомое простое откройте ардуино ИДЕ нажмите "сохранить как" оно откроет папку по умолчанию для скетчей, вы посмотрите где это на вашем компе и туда ставьте папки соскетчами.
Спасибо, пошла загрузка. Дело оказалось в несовпадении имени папки (когда качаешь один архив несколько раз, ему присваевается дополнительный номер).
Вот так и получается. Для вас это само-собой, а для новичка - скачка по граблям. Должен сказать, что ваши объяснения в том числе в видео, часто помогают разъяснять такие вещи. А очень многие, в отличие от вас, говорят много лишнего и не говорят таких нюансов.
Еще раз благодарю.
Ваш скетч с буззером под активный либо пассивный буззер?
Он пищщит при окончании каждого этапа?
Ваш скетч с буззером под активный либо пассивный буззер?
Он пищщит при окончании каждого этапа?
Счас гляну, уже выгрузил "скетч из головы" с ходу не вспомню)))
Посмотрел.
---под пассивный
---пищит когда разрядил и когда зарядил.
--пин бузера указывайте любой свободный.
Счас гляну, уже выгрузил "скетч из головы" с ходу не вспомню)))
У меня хорошо развито воображение. Профессионального конструктора. Представил как вы вгружаете скетч. Супруга прибежала из соседней комнаты посмотреть, чего это я тут ржу.
У меня хорошо развито воображение. Профессионального конструктора. Представил как вы вгружаете скетч. Супруга прибежала из соседней комнаты посмотреть, чего это я тут ржу.
Где-то уже писал , что пока занимаюсь прибором держу весь код в голове и даже в поезеде могу кое что придумать, но когда отложи - могу забыть даже то что сам писал и самому тяжело разобрать.)))
Сегодня переделал буззер. В скетче перенес его с 10 ноги, где параллельно ему сидел подтягивающий резистор и глушил его на 2 ногу. Звук стал значительно громче.
Понравилось. Полезная функция.
И сам прибор пришелся весьма кстати. Скоро должны приехать 5 блочков преобразователей повышающих, буду свои приборы переводить на литий. А аккумуляторы штука такая. Мало ли, что там на нем написано. Тот, который я метил в первую очередь (написано 650), оказался 240 мач. всего. Не катит.
Поэтому спасибо за прибор.
Сегодня переделал буззер. В скетче перенес его с 10 ноги, где параллельно ему сидел подтягивающий резистор и глушил его на 2 ногу. Звук стал значительно громче....
В том и прелесть скетчей можно под себя править, даже почти без знаний!
главное не лениться комментировать, тогда новички даже по скетчам учиться могут!
Понадобился тестор для китайских аккумуляторов с али. Забрёл сюда, понравилась схемка-собрал. Добавил платку зарядки лития (на TP4056) вместо резистора и платку DC-DC (XM1584) для питания.Полевика P типа не было, сделал на N.Чудаковато, но работает. Единственно не распознаёт окончание зарядки-платка уже отключилась а ардуинка всё пытается заряжать. Отключается платка при 4,15В. Может предел зарядки в коде 4,15 установить? Собирал ещё схемку (http://lazyelectronics.com/index.php/ru/item/8-battester-ru). Результаты подсчёта ёмкости один в один.Там ещё тест Ni-MH реализован. Было бы неплохо здесь код дописать. Ещё редложение-в меню разрядки сделать выбор тока: на схеме выделенное пунктиром продублировать и завести управление на свободный пин. Тогда получиться 3 разрядных тока.
Как тут картинку то поместить?
http://s013.radikal.ru/i322/1605/c2/f0562779f141.jpg
http://s018.radikal.ru/i504/1605/38/558db9cf3e80.jpg
.Там ещё тест Ni-MH реализован. Было бы неплохо здесь код дописать. Ещё редложение-в меню разрядки сделать выбор тока: на схеме выделенное пунктиром продублировать и завести управление на свободный пин. Тогда получиться 3 разрядных тока.
Да, было бы неплохо иметь пункт в меню с выбором порогового напряжения. Метал-гидрид тоже достаточно распространены.
Разный разрядный ток? Возможно. Но в принципе это можно легко реализовать просто переключением резисторов. Тумблером.
Если кто-нибудь может и хочет выполнить такую доработку программы, было бы интересно. Мне это не по зубам, увы.
Может предел зарядки в коде 4,15 установить?
Да, в вашем случае код придётся подкорректировать. Я тоже пробовал ставить контроллер заряда. Только LTC4054, но не помню уже корректировал ли код (вроде нет). В схеме управления контролером ставил биполярник. В схеме разряда - irl2505. Собирал на макетке тогда, законченное устройство так и не сделал.
По хорошему, 328 позволяет сделать 3 канала для разряда-заряда(ШИМ) или 6 каналов без ШИМ.
Так что использовать ПроМини на 33%(или 16%) мне кажетися несколько неразумным.
Для заряда лития и управления оным - поставить р-канальные полевики после ТР4056( можну одну - она до 1А даёт, так что для трёх вполне). В таком случае можно сделать 6 каналов(2 или 3 ТР4056).
Или сделать зарядный тока на ШИМ(что по мнению некоторых лучше), в этом случае 3 канала.
А для заряда никелевых - LM317 в режиме стабилизатора тока (до 1,5А) что вполне хватит для 3-6 акк.
Вопрос один - написать скетч. Я пробовал переделать скетч автора, но увы - моих знаний явно недостаточно.
Собирал ещё схемку (http://lazyelectronics.com/index.php/ru/item/8-battester-ru). Результаты подсчёта ёмкости один в один.Там ещё тест Ni-MH реализован.
Собрал тоже этот тестер, попробовал. Индикация внутреннего сопротивления - вещь полезная, но немного не точно показывает. Если аккумулятор мощный - показания по нулям. Автору написал по поводу этого. Вот к нему бы прикрутить зарядку - получился бы полезный прибор. Плюс NI-MH можно тестить!
На фото тестирую LI-ION банку GTF 8800 ma/h. Конца теста не дождался - сейчас времени нет.
Разный разрядный ток? Возможно. Но в принципе это можно легко реализовать просто переключением резисторов. Тумблером.
[/quote]
А как в коде учесть переключение тумблёра если там прописано разрядное сопротивление и через него считается ёмкость?Только ещё один полевик и сопротивление с учётом изменения нагрузки в коде.
На коте есть схемка на атмеге (http://radiokot.ru/circuit/power/charger/20/) там 3 разрядных тока перекидываются стабилизатором тока полевиком с операционником, и видимо программа учитывает это в расчетах.Вот ту реализацию сюда ба перетянуть, что бы в коде ардуинки токи подправить под себя.
Нашол Р канальный полевик, завтра попробую в схемку воткнуть, посмотрю что с зарядкой будет.
Жаль что познания в коде сводятся к замене цифр в переменных..
А как в коде учесть переключение тумблёра если там прописано разрядное сопротивление и через него считается ёмкость?Только ещё один полевик и сопротивление с учётом изменения нагрузки в коде....
Можно и без полевика просто тумблером, есть аж два варианта:
--взять сдвоенный переключатель одна половина которого переключает разистор вторая сообщает на пин какой разрядный ток учитывать
--взять простой тумблер и им переключать нагрузочные резисторы, и мониторить напряжение на одном из резисторов если есть считаем одним током если нет соответственно подключен второй резистор и считаем другим током.
Есть еще альтернативный вариант, так как резистор достаточно большого сопротивления аж 20 Ом то можно с помощью АЦП Ардуино посчитать падение напряжения на нем и высчитывать ток, даже без подключения внешнего датчика тока.
вот проект
начал его пилить на предмет добавления возможности выбора типа (никель-литий), зарядки и циклов.
*рукалицо
тока начал, уже засады - там картинки жестко привязаны и как их изменить хз...
вот проект
Это похоже он же
http://cxem.net/mc/mc100.php
угу.
странно что его я не видел ))))
хотя толку "0" - не получается у мну его переделать.
не выходит каменный цветок(с)
Провожу такую пробу: просто поменял в скетче величины напряжений, применимых к никель-металлгидридным. Сейчас стоит разряжает. Медлеено правда, для него сопротивление великовато, но у ардуино терпения хватит.
Физически это выглядит так. Про-мини с другим вариантом. Вынул одну-вставил другую.
А вот при зарядке скорее всего спалит транзистор. Тот всего на 400 ма расчитан, а разница напряжений больше.
..............................
В принципе работает и этот вариант. Разряжал 6 часов. До конца не довел. Еще столько же пришлось бы ждать. Насчитал 400 мач (с 1,3 до 1,25 вольта). Из 2400. Но аккум реально старый, лет пять у меня в мышке отпахал. Заряжать отказался. Сразу выключает. Видимо внутреннее сопротивление уже слишком велико. Т.е. этот вариант зарядного в принципе можно применить. Только вот пороговые значения в скетче придется подбирать. А это непростой вопрос. С литием проще.
Например. Когда я купил пару этих аккумов. Сделал для них зарядку стабильным током отключение компаратором по напруге. Сколько выставлять? Встречал совет. Разрядить до 1 вольта и заряжать стаб током 12-14 часов до появления некоторого нагрева. Измерить напряжение на зарядном и его считать пороговым. Ага.. у меня оно полезло уже к 1,6 вольтам (было давно, могу немного путать цифры). Не выдержали нервы и поставил 1,52 вольта. Много позже начитался форумов, что напруга не должна превышать 1,36 вольта на элемент на свежезаряженном и несколько снизил. Поставил 1,45 на компараторе. И после этого они у меня быстренько стали сдуваться. А может просто срок пришел. Но если по первости зватало на 4-6 месяцев одного, то теперь 3-4 недели. Так я и не знаю, что выставлять на зарядном. Форумов много, мнений хватает, однозначного ответа нет.
Лекс 59
Вы все правильно делали с никелем так и нужно, они у вас видать еще живые но эффект памяти у них сильный, несколько раз правильно разрядить и зарядить и будут для приборов самое то.
Выставьте стабильный ток по даташиту, если нет его то 1/10 емкости и им заряжайте 14 часов или до появления нагрева ощутимого рукой, на напряжение вообще не смотрите оно будет большим чтоб ток обеспечивать, но после отключения стабилизируется на нужном уровне.
У никеля КПД низкий и 40% уходит в нагрев и они теплые во время зарядки а когда зарядились то они вообще 100% в тепло вот тогда и разогрев идет сильный!
Было время без лития жили все, так у меня с тех времен еще не один аккум не сдох, или потерялись или подарены/проданы вместе с техникой.
_______
моя зарядка не пойдет, там нет стбильного тока.
Есть конечно и другие продвинуте режимы заряда.
Спасибо. Тренировать я пробовал. Эффекта не увидел. Теперь попробую разрядить и как вы советовали - до упора. И после этого выставлю напругу. Или просто подниму ее снова до 1,52. И фиг с ними.
А вообще в мечтах, вижу универсальную зарядку. Но не аймакс би шесть. Ток - произвольно, вплоть до ампера, напругу отключения - произвольно, вплоть до 10 -14 вольт. Подсчет емкости - было бы неплохо. И алгоритм, типа вашего - зарядил - разрядил - зарядил и капельный. Т.е. и пальчики и литий и кроны и от апсов, все в кучу.
Ай макс неплохо, но там фиксированные режимы. И вовсе не факт, что оптимальные, судя по моим аккумам.
А бипер это хорошо. Сейчас прервался, сходил и выключил ваш приборчик. Заряжал литий им. Он на кухне, я возле компа. Удобно.
Спасибо. Тренировать я пробовал. Эффекта не увидел. Т
Все просто. У меня к заряднику прикреплен отдельный модуль разрядки. С сопротивлением и диодом шотки. Он разряжает аккум до примерно 0,95-0,97 вольта.
Вставляю в разрядник на сутки. Потом отлеживаться сколько удобно. При необходимости, если напруга без нагрузки сильно восстановилась, снова в разрядник. Отлежка, контроль напруги и на зарядку. Сейчас компаратор настроен на отключение 1,45 вольта (там встроеный вольтметр). Настраивал так, чтобы при отключении зарядного тока, напруга на аккумуляторе была 1,36 вольта. Сейчас они у меня заряжаются часа 4 всего. Ток 1/10 исходной емкости. Т.е. либо они потеряли емкость, либо я их недозаряжаю. Я могу отключить автомат и заряжать по времени. А напруга сколько получится.
Если вы имеете в виду, что никель металл-гидрид тренировке не поддаются и пытаетесь меня поддеть, то я в курсе. И в курсе, что тренировки практикуют с никель-кадмием. Но почему бы и не попробовать?
Оба я прогнал по 3 раза через цикл разряд-заряд. Ничего не изменилось. По крайней мере заметно.
И сейчас поддгадаю период так, чтобы после 8-10 часов заряда они были под наблюдением. В смысле чтобы я был дома. И попробую что получится. Один естественно. У меня одноместный зарядник.
......
Если вы имеете в виду, что никель металл-гидрид тренировке не поддаются и пытаетесь меня поддеть, то я в курсе. И в курсе, что тренировки практикуют с никель-кадмием. Но почему бы и не попробовать?
Оба я прогнал по 3 раза через цикл разряд-заряд. Ничего не изменилось. По крайней мере заметно.
И сейчас поддгадаю период так, чтобы после 8-10 часов заряда они были под наблюдением. В смысле чтобы я был дома. И попробую что получится. Один естественно. У меня одноместный зарядник.
Привет! поддеть не пытаюсь и тем более без смайла.
Я не знаю что можно назвать тренировкой, но у любого никелевого элемента (кадмий или метал гидрид) есть ярко выраженный эффект памяти. И каждый раз когда вы его будете не до конца разряжать или не до полной заряжать он будет на химическом уровне уменьшаться в емкости.
Есть методы и борьбы с этими неприятными явлениями с помощью импульсов, но они в паблик не лежат. Но не беда есть простые действенные методы.
--полный разряд вот здесь Ni-MG и Ni-Cd отличаются, металгидрид нельзя в ноль разряжать а не ниже 0,8В.
--дальше полный заряд как я писал выше и не важно что напряжение на банке подскочило до 1,68 главное фиксированный ток и постоянный контроль температуры.
-- и да если кипят слишком рано не через 10-14часов, а уже через 4 часа значит ваш элемент действительно на химическом уровне износился и нужно взять меньше ток заряда. Но даже изношенный в полном заряде он будет все равно отдавать больше емкости чем вам не дозаряженный.
Например АКБ написано 2100мА/ч заряжаем его током 210мА если через 5 часов он резко нагревается значит ждем пару часов разряжаем и снова на заряд но уже током меньше например 150мА. И так пока он не станет за 10-14ч заряжаться.
Можно контролировать окончание заряда по дельта-пик, мне этот метод нравится больше чем по времени.
Яссна. А про "поддеть" это для karl2233 пост 124.
Вряд ли я буду за эти два аккума так уж бороться. Правда, что интересно. Недавно покупал еще 2, по одному. Оба уже в мусор ушли.
Вибиру время и попробую дать полную выдержку с выключеной автоматикой (там просто тумблером щелкнуть) а вот ток там сложнее. Снова подбирать задающие резюки в стабилизаторе тока. Хотя... Я его на два диапазона лепил 100 и 250 ма. В принципе можно малым током тогда позаряжать.
Спасибо за идею. Попытаюсь вытащить этих двух товарищей. Особенно помня о новых двух в мусоре.
А метод дельта, мне нравится тоже. Я даже в свое время проверял. Записывал показания до сотых через определенные интервалы. Но дельта там была совсем невелика. В то время аппаратно и не слишком сложно я его реализовать не мог. Остановился на контроле напряжения. Хотя, если долговременная эксплуатация, целесообразнее видимо по времени заряжать. Но переделывать давно созданное законченное устройство уже в лом...
да я и не пытался никого поддевать!
а спросил о подробностях - ток заряда и разряда? напряжение заряда и разряда?
я сделал простую зарядку на Атмеге8 и заметно подлечил несколько батареек за 4-5 циклов.
к меня ток заряда 40мА, разряда 100мА; напряжения - 0.8 и 1.45.
Ток заряда я обычно делаю 0,1С. Есть разные мнения на этот счет, но я придерживаюсь такого.
Ток разряда не помню. Просто резистор с диодом последовательно. Диод не дает разрядить в "0". Вряд ли больше 50 ма. Греется резюк и диод совсем слабо. Назначение то ДОразрядить.
тогда странно что нет эффекта от парочки циклов.
может батарейкам пришел карачун?
Через некоторое время узнаю.
а какое внутреннее сопротивление?
у моих до тренировки было 0,5 а после 0.2
Не измерял. Хотя не проблема, конечно. Думаю, достаточно велико. Что будет, то и будет. Не смертельно. Но подбирать новые, да чтоб тоже послужили годы в лом, не говоря уж о деньгах. Попробую вначале как советовал Бодрый 2014.
У меня долго не использовались несколько штук Ni-Mh аккумуляторы. После тренировки (не помню сколько циклов делал) их ёмкость почти полностью восстановилась. R вн у некоторых дошло до 0,1 ом (ёмкость 2500-3000 ма\ч). Если внутренее сопротивление не понижается после тренировки, то кирдык такому источнику
Заряд идет уже 9 часов. Температура на 9 градусов выше среды. Напряжение 1,58 (при включенном заряднике, естественно).
12 часов дать не смогу. Только 10. Спать иногда тоже надо. Это первый. Второй в разряднике.
......................................
Напруга после 11 часов зарядки и после новчи вне зарядки 1,45 вольта. Как я понимаю, необратимые изменения в химии. Пока работает в мышке.
Второй заряжаю током 100 ма. Емкость на этикетке - 2400. Дам 14 часов. Это меньше половины исходной емкости, но может хоть так послужит.
н-дя...
если там написано "2400", то на деле, хорошо что 200-300 осталось.
и сколько "С" составляет ток в 100мА при таком раскладе?
а напряжение 1,45В это норм.
повторюсь - сообщение 128
если там написано "2400", то на деле, хорошо что 200-300 осталось.
Вчера тестил полученные с Али аккумуляторы GTF 8800 ма\ч, литий-ионные. До напряжения 3,5 вольт показал емкость 2100.
Жаль тема заглохла. Сюда бы 2й канал, металлгидрид(свинец возможно), зарядку нормальную, разряд-тестор на пару ампер со стабилизатором тока(можно любой ток поставить), но увы. Хотелок то не так много, а знаний в коде 0. Думаю универсальная зарядка на 2 канала + разрядник-тестор ёмкости многим бы пригодился. Как вариант надыбал разрядку-тестор, интересная штука...литий, свинец, металлгидрид, чё душе угодно до 20В. https://www.youtube.com/watch?v=qQwxXiKavYQ&list=PLQNYBHdgx3ndHuSNcgwGqIHlYlTvjUbgw&index=7 Есть ссылка на скетч и пояснения в нём разжованы.
................ Как вариант надыбал разрядку-тестор, интересная штука...литий, свинец, металлгидрид, чё душе угодно до 20В...........................
1. Зарядка-тестер NI-MH, NI-CD.
2. Зарядка-тестер Li-Ion и т.д.
3. Зарядка-тестер свинцовых автоаккумуляторов
смысл 3 устройств? лучше одно на два(три) канала, АТМ328 позволяет.
а для свинцовых отлельно: всё-таки там токи и размеры другие...
смысл 3 устройств? лучше одно на два(три) канала, АТМ328 позволяет.
а для свинцовых отлельно: всё-таки там токи и размеры другие...
Из описания:
угу.
тока оно не на 2-3 канала.
а так-то да - на али за 1000р можно купить вполне себе.
как и многое другое, что делают наши коллеги - паяльные станции, часы_барометры-машинки и т.д.
Вот оно, универсальное устройство для заряда любых аккумуляторов http://www.ebay.com/itm/iMAX-B6
упоминание В6 напоминает мантру =)
шо, може и мне кинуть сцыль на него? ))
Автору в галерею собраных девайсов. Может, руки дойдут и корпус сваять, и скетч доработать...
bodriy2014, мод на обозрение в теме можно выложить? Может кто захочет поковыряться в глюках альфа-версии :)
bodriy2014, мод на обозрение в теме можно выложить? Может кто захочет поковыряться в глюках альфа-версии :)
Мод авторской версии, основан на скетче, изменённом arthemy под дисплей 1602.
Изменено:
-обычный индикатор 1602 вместо индикатора с i2c модулем и авторского 5110,
-изменена схема - использованы транзисторы КТ814 и КТ315, добавлены входы АЦП для повышения точности (в авторском скетче не учитывается падение напряжения на открытом транзисторе),
-изменена нумерация входов-выходов (см. схему),
-реализовано грубое тестирование внутреннего сопротивления,
-добавлена индикация тока заряда,
-убраны дублирующие переменные (в авторском скетче была заморочка с преобразованием float > int),
-добавлен ИОН на TL431 для коррекции измерений при нестабильном напряжении питания,
-выведены значения нагрузочно-ограничительных резистрорв в константы в setup, для удобства корректировки (изменяем R5, R10 и R15 в начале кода),
-сделан выбор типа тестируемого аккумулятора (Li-Ion, Li-Pol, LiFePO4). По умолчанию стоит Li-Ion,
-сделан выбор тока разряда (малый, средний, большой), чтобы тестировать мощные аккумуляторы быстрее,
-добавлен бузер, сигнализирующий переключение между режимами и окончании цикла измерений,
-зарядка по окончании теста достигает напряжения заряда, после чего поддерживается на уровне Vc-0,2,
-добавлено меню с настройками, чтобы менять параметры не перезагружая устройство.
В планах:
-сделать гистерезис отключения заряда в режиме окончания теста (возможно не будет реализовано за ненадобностью),
-сделать ещё один пункт "manual akk" в меню, где можно будет задать свои напряжения окончания разряда и заряда (с сохранением в EEPROM),
-оптимизировать алгоритм подсчёта времени разряда (на данный момент часы слегка отстают из-за фиксированого приращения по 5 секунд),
-сделать чтение с АЦП с оверсемплингом.
Схема:
Навикация по функциям и меню:
На данный момент альфа-версия, только вчера добавил в скетч меню, пока на стадии тестирования, так что возможны глюки.
...
Схема:
Навикация по функциям и меню:
....
Посмотрел схему и описание, это отдельный само достаточный прибор.
На голову выше того что я представил.
Он обладает более широким спектром возможностей и тонких настроек.
Заслуживает отдельной ветки и своего эксклюзивного названия (на совести автора)
Думаю в отдельную ветку выносить особого смысла нет, основной код взят из Вашей версии.