Сразу хочу отметить, что я не специалист и это все работает возможно вопреки.
Мне нужно было чем то разряжать/смотреть АКБ от электротранспорта, в результате проект превратился из нечто собранного на коленках в это .
Теперь собственно , что это .
Это электронная нагрузка способная переварить 500Вт и 80В. ( она скорее всего способна и на большее, сейчас проходят полевые испытания , и решается вопрос нужно ли ставить дополнительные 4 вентилятора от БП 120*120м)
Что использовалось
1 За основу были взяты 2 платы нагрузки с Али 2*10$
2 шунт 50А
3 АЦП MCP4725 и ADS1115
4 Arduino nano + LCD 2204+энкодер
5 реле 30 А
Ввод данных производится энкодером, клик энкодера сменяет порядок ввода (Х0,00 0Х,00 ,,,)
Первая кнопка (красн) вызывает ввод для напряжения ( удержание - запускает работы программы)
Вторая кнопка (черн) вызывает ввод для тока ( удержание - запускает ручной режим работы нагрузки , где ток задается энкодером с шагом 0,1А)
Стабилизация по току , в независимости от входного напряжения
4 режима работа
1 - Режим разряда с заданным током то установленного напряжения с подсчетом емкости АКБ и времени
2 - Режим Десульфации , когда происходит разряд/заряд батареи с заданным интервалом
3 - Режим измерения внутреннего сопротивления акб
4 - Ручной режим
Постарался реализовать защиту от дурака и если что то пойдет не так ( отключается через меню)
1 Если температура превысит заданную
2 Не даст ввести ток больше чем способен рассеять радиатор
3 На случай пробоя транзистора (реальный ток будет не в предела 0,85-1,15 от заданного)
Из наблюдений
1 Есть небольшая разбежка по току от заданной и в реалии ( +-0,05 А) (тут дело в полигоне скорее всего)
2 Иногда (вкл/выкл помогает) , реальный ток меньше заданного на 0,1А
Кто захочет оптимизировать код, или внести свои изменения - буду только рад.
Места для кода в том виде, который есть - осталось совсем мало.