avatar_Ghozt

BattMeter. Очередная попытка создать убийцу Cycle Analyst (уже в продаже)

Автор Ghozt, 14 Май 2017 в 21:38

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Ghozt

Очередное баловство с возможностями ваттметра. Поскольку есть большое количество входов-выходов, есть возможность реализовать разные интересные фичи. Например, добавил третью кнопку, сделал цикличную переключалку скоростей финика 1-2-3-1-2-3 по короткому нажатию, а по длинному - включение заднего хода. Сразу скажу, что в серию это не пойдёт - лишняя возня с доп.проводами и тестированием, а нужно это будет 1-2 людям. Функционал этот я сделал на один из проектов, но оказалось без надобности, а жаль


Ghozt

Итак, работа над очередной партией. Чем больше я работаю над своей разработкой, тем больше работы она подкидывает. Ведь просто сделать ваттметр на коленке это одно, а сделать законченное, продуманное, технологичное и готовое к хотя бы мелкосерийному производству устройство - совсем другое. 19 ноября 2016 года я считаю, так сказать, днём рождения сего проекта, поскольку на эту дату появились самые первые наработки. Примечательно, что на данный момент ничего из первых наработок не используется - всё переделано, а кое-что даже не один раз. В 21 году проекту исполнилось уже 5 лет. Юбилей, можно сказать. Но до сих пор находится то, что можно переделать, и порой переделывать приходится не по своей воле.

Начнём, как водится, с хардварной части. Да, очередная перетрассировка. Как уже отметил выше, микросхемы подорожали, и не только микроконтроллеры. Например микросхемы часов стали стоить ну просто невменяемых денег, и сроки поставки теперь от полугода. Пришлось искать им замену. А некоторые позиции стало вообще невозможно купить ни за какие деньги - например ионисторы, их просто сняли с производства. На беду с ионисторами наложился переставший адекватно работать механизм сохранения данных, а значит, всё это нужно переделать под доступные элементы. Что, собственно, и было сделано - подобрана новая элементная база, полностью переделана разводка питания. Новая токосъемная схема зарекомендовала себя с лучшей стороны, не было ни одного отказа после переделки. В целом, думаю, перетрассировок или не будет, или же они теперь будут значительно реже. Причина банальна: достигнут физический лимит на количество элементов на плате, и что-либо добавлять и переделывать просто невозможно. Перетрассировкой обусловлена невозможность апгрейда старых версий ваттметров до новых, слишком много различий между тем, что было и тем, что есть.

Далее к прошивке. Как было сказано выше, стало плохо работать сохранение, а потому, помимо переработки железа, был полностью перелопачен механизм сохранения. Определенной сложностью сохранения является то, что ваттметр никогда не "знает", когда будет отключено питание. В связках ваттметр+дисплей по типу адапто, ядрёного с этим проще - когда нажимается кнопка выключения, связанная как с дисплеем, так и с контроллером, тогда и нужно сохранять. Я практически уверен, что в них это так и реализовано. Здесь же ваттметр полностью отвязан в плане сигналов от контроллера, и о том, что пора сохранять, можно судить только по пропавшему на входе напряжению. Собственно, так и было реализовано, а жирный ионистор позволял сохранить всё, что можно.

Теперь же питание полностью переделано, и используются обычные конденсаторы, ёмкость которых ощутимо ниже. Здесь всплывает первый нюанс - сохранение должно быть максимально быстрым в плане обработки кода, поскольку время работы ваттметра от конденсаторов после съема питания очень ограничено.

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

Третий нюанс: сохранение должно быть достаточно частым, чтобы сохранять актуальные данные , но не слишком частым, чтобы не получить высокий износ EEPROM. В связках контр+дисплей всё шоколадно, потому что сохранять можно один раз за включение, ну обновлять пиковые ещё как-нибудь на всякий случай. В моём же случае можно сохранять через определенный промежуток времени, можно сохранять каждую остановку, можно сохранять при выключении. Можно использовать комбинацию перечисленных способов. Я положил на эксперименты весь предыдущий месяц, чтобы добиться безупречной работы сохранения при любых вводных данных, и иметь небольшой запас прочности на случай непредвиденных отключений.

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

Вычисляемые параметры (например расход на км пути) не сохраняются - они пересчитываются постоянно. А раньше сохранялись, и тому есть объяснение: раньше проблемы решались "в лоб" (как, например, решение с хардварным делителем для директ-драйвов), доступными на тот момент знаниями. Теперь же знаний больше, и волей случая предоставилась возможность сделать этот функционал по-нормальному.

Пробегусь кратко и по другим переработанным вещам
Исправления:
- Переделана работа часов
- убраны остатки кода работы со старой токосъемной схемой
- Экран рекуперации переименован в Regen stats
- исправлен глюк с несбросом максимальной мощности регена в статистике рекуперации
- исправлен глюк с регистрацией большого отрицательного тока при сохранении
- исправлена неправильная работа таймера входа в режим зарядки и работа с флагами режима зарядки
- множественные мелкие правки экранов статистики. Введены ограничения на отображение некоторых величин (средняя, максимальная скорость, среднее потребление, восстановленные Ач теперь могут иметь максимальное значение 999.9)
- Мелкие правки отображения пунктов Chemistry и Enrg.units
- мелкие правки алгоритма определения емкости в %

И вишенкой на торте то, что появится в новой партии:
- Заменен пункт SpSens на Debounce, прямая настройка времени дребезга контактов для датчика скорости. Пороги 1-100мс. Поможет бороться с сильно дребезжащими датчиками на основе геркона

- Добавлен теплый белый цвет в варианты подсветки RGB дисплея

- Функция первого старта. Конечному пользователю это неважно, но при производстве критично. Калибровка и проверка всех входов теперь занимают от силы секунд 15

- Добавлено отображение температуры во время выбора типа термодатчика. Теперь можно определить тип датчика простым перебором, если он неизвестен

- Добавлены минимальные температуры всех остальных компонентов, кроме батареи. Не то чтобы сильно нужный функционал, но он может пригодиться при дальнейшей разработке

- Добавлены настройки смещения для всех датчиков температуры. Настройка поможет подогнать значение температуры для каждого индивидуального экземпляра датчика. Зашитая кривая просто смещается вверх-вниз согласно заданному смещению. Смещение может быть +-20градусов. Такой большой диапазон обусловлен тем, что примерно 1°C = 2°F, нужна поддержка обеих шкал. Функция добавлена после прочтения мучений [user]Instal[/user] с подбором датчика. Неточностью больше всего грешат датчики с низким сопротивлением - KTY83, 84, NTC1K. Первых два часто встречаются в моторах, потому, думаю, функция будет востребованной.

- Добавлено отображение ёмкости батареи в Втч/кВтч при вводе Battery S, Battery Ah и Chemistry

- Добавлена функция оценки остаточного пробега. Оценка ведётся по расходу за последний километр. Фича экспериментальная и отключаемая, поскольку даже в серийных электроавтомобилях работает не совсем хорошо. Но решил попробовать-посмотреть, как оно будет работать. Определенным неудобством этой фичи является то, что подсчёт основан на истинной ёмкости батареи, которая задаётся в меню. Но ёмкость падает по мере износа батареи, и скорость этого падения невозможно спрогнозировать. Только замерять на стенде раз в сезон и корректировать значение вручную.

Список правок и дополнений возможно ещё изменится, в данный момент работы над прошивкой приостановлены. Будут изменения - будет пост, им посвященный.

С софтварной частью закончили, теперь про корпус. [user]acyd[/user] предложил вариант корпуса с вклеиваемым снаружи стеклом:




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

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

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





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

Помимо кнопок я решил попробовать добавить ещё один элемент, отвечающий за герметичность - прокладку между половинками корпуса. Форму прокладки получить очень просто, и печатается она элементарно:



Но при попытке стянуть половинки корпуса я просто оборвал два колодца под шурупы. Слишком жёсткий флекс-филамент, нужен более мягкий. Если подберу что-нибудь подходящее - скорее всего пойдёт в серию. По итогу негерметичным останется только ввод кабеля, но я и не хочу его герметить, т.к. ваттметр должен дышать, иначе есть риск возникновения конденсата. Да и сам ввод находится в достаточно хитром месте, залить воду туда надо исхитриться.

Instal

За возможность регулировки температуры респект! У меня появилась не системная проблема сброса статистики, ранее не было. Видимо такая как Вы описываете, наверное окружающая температура тоже влияет, я катаю зимой, по теплу вроде не было.
Будет ли возможность перешить Ваттметр на новую версию?
Зачем так сильно заморачиваетесь с корпусом мне не понятно, думаю еще не раз все поменяете, придется тогда и матрицы менять. Или будите пытаться постоянно втиснуться в существующий корпус готовой матрицы.  Меня напечатанный корпус не парит, у самого 3д принтер. Самый мягкий флекс у Фд-Пласт, скорость поменьше и все хорошо печатается, даже на боудене.
Спасибо за продукт, успехов в работе!

Ghozt

[user]Instal[/user], корпуса проблемно печатать в количествах от 10шт. Каждый корпус целиком - это 10-11 часов печати. Брака много, причём он порой виден только после печати. Внутренняя часть корпуса более всего зависима от высоких элементов (конденсаторы, пищалка, разъем батареи, индуктивности) - а все эти элементы уже не меняют своё место практически с выпуска первых версий. Корпус тоже прошел немало итераций, и текущая меня уже полностью устраивает по своей технологичности и удобству сборки. Кое-что на вырост тоже заложено. В общем, пора уже закрепить результат пятилетней работы и снять с себя головную боль с серийной печатью


Ghozt

Решил продолжить работу над прошивкой. В этот раз дело коснулось кода, который был написан почти 4 года назад. Поразрядный ввод чисел в настройках... когда я его писал в первый раз, он выпил немало крови, код получился громоздкий. Но стабильно работающий, что было важно на тот момент. На данный момент оптимизация не коснулась только его, а поскольку опыта и знаний стало больше, было решено переписать. Основной принцип остался тот же, но сам код с некоторыми изменениями был завернут в параметрические функции, удобные в применении. Не буду расписывать подробно, но итоги оптимизации таковы: -7кб занимаемого места и почти -2000 строк кода. Не то чтобы страдал от недостатка места, но лишним точно не будет. К слову, решил взвесить модуль вывода на дисплей, поскольку вспомнил, что когда-то давно уже взвешивал, и на тот момент эта часть кода весила около 30кб. Сейчас же она занимает вдвое меньше, по итогам неоднократных оптимизаций. Дальнейшее уменьшение размера кода возможно только срезанием на всяких мелочах, а потому вряд ли я буду заниматься оптимизацией в ближайшее время.

Также решил добавить принудительное сохранение каждую остановку. В случае установки параметра save volts ниже 20в ваттметр будет сохранять все данные каждую остановку. Таким образом проблемы с сохранением точно будут закрыты в случае их появления.

И у меня есть вопрос к аудитории. При последней трассировке удалось освободить один ШИМ-канал, на котором висело управление газом с заделом на будущее. Канал на выходе имеет преобразователь из ШИМ в аналоговый сигнал 0-5В. И поскольку появилось свободное место в проце, есть мысли добавить эксклюзивный какой-нибудь функционал, связанный со всем этим. [user]acyd[/user] предлагал сделать управление чупасосом с порогами по температуре и ШИМ, но тогда свободных ШИМ-пинов не было. Теперь нет никаких проблем реализовать это. Может быть, у кого-нибудь есть ещё какие-либо идеи на этот счёт?

илс

Цитата: Ghozt от 17 Фев. 2022 в 22:16
Может быть, у кого-нибудь есть ещё какие-либо идеи на этот счёт?
На этот счет идей нет, есть пожелание сделать более удобной функцию сброса.
Той, которой пользуешься чаще всего в реальной эксплуатации.

Цикланалист при удержании соотв. кнопки пишет [b-b]Reset[/b-b] через 2-3 сек, что удобно, понимаешь, когда отпускать.

А в сабже надо (заметно) дольше держать, чтобы наверняка,  иначе нет уверенности, что суточный пробег...обнулится  :-)

Ghozt

[user]илс[/user], я в некотором роде ждал, что когда-нибудь мне укажут на алгоритм кнопок. В целом нет особой проблемы их переделать, и даже задача такая в todo-листе уже висит. Подумаю над реализацией

морячок

А мне за часики обидно, стоит включить термоконтроль и увидишь их только остановившись. Может можно сделать чтоб и на ходу они были, на соседнем экране например?
Рассмотрю к приобретению вилку ZOOM 1100 DH.
Продам батареи LiFePo4. 52В. 16s1p. и 36В. 12s2p.
ВелИк, могучим русский языка. ©

Ghozt

[user]морячок[/user], уже поступало такое предложение. Из наиболее логичных вариантов видится перемещение всех температур наверх, но тогда не остаётся свободной строки между часами и скоростью.



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



Соответственно при стоянке все 4 датчика будут выглядеть так:



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

yurgen

сделайте главный экран настраеваемым.
пользователь будет выводить на него  то , что посчитает нужным .
Кому то нужны ВтЧ , другому АЧ ,   итд

Самовар , Кваньшунь 3 кВт , келли 200А,  LG E48 3кВтЧ.
80км/ч     
> 70 000 км

морячок

Цитата: Ghozt от 20 Фев. 2022 в 19:58
[user]морячок[/user], уже поступало такое предложение. Из наиболее логичных вариантов видится перемещение всех температур наверх, но тогда не остаётся свободной строки между часами и скоростью.



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



Соответственно при стоянке все 4 датчика будут выглядеть так:



Надо крепко подумать, возможно ввести варианты главного экрана - с термодатчиками, без них (термодатчики есть на отдельной странице), чисто с электрическими параметрами и тд.
Нормально выглядит. Вот у меня включены датчики температуры на контроллер и батарею (показывает температуру воздуха), но на ходу не показывает ничего, ни часов, ни указанные температуры. Две пустые строки под скоростью получаются. Я — за заполненные строки.
Рассмотрю к приобретению вилку ZOOM 1100 DH.
Продам батареи LiFePo4. 52В. 16s1p. и 36В. 12s2p.
ВелИк, могучим русский языка. ©

Ghozt

[user]yurgen[/user], касательно единиц энергии это уже реализовано.


[user]морячок[/user], неожиданный набор термодатчиков. Скорее всего поменяю строки, как описано выше, чтобы часы всегда жили в правом нижнем углу.

Instal

Тут либо нужна возможность выбор, кому что важнее часы или температуры. Либо пусть остается как есть, имхо температуры важнее.

iKroliX

Здравствуйте. Как можно будет у Вас обновить корпус и ПО соответственно?
Покупал ваше изобретение ещё в том году, очень ждал обновки к грядущему лету и конечно же эксклюзив функцию управления газом! Это то о чем я мечтаю именно в вашем устройстве, управление мощностью и т д. как в цикл анналисте. Так же меня заинтересовало подключение заднего хода и переключение скорости. Ещё бы реализовать электронную блокировку двигателя не помешало.

Ghozt

[user]iKroliX[/user], управления газом ещё не появилось. Функционал переключателя скоростей и реверса в серию не пошёл, об этом я написал. К тому же обновить старые ваттметры увы, но невозможно в связи с сильно изменившейся аппаратной частью

Instal

Допилите хотя бы температуру на старых, и давайте новую версию делать! :kidding:
А еще же пробег иногда сбрасывает при отключении питания.

Ghozt

[user]Instal[/user], Проблемы с сохранением статистики решены ценой аппаратной переделки, об этом выше написано. И старые ваттметры потому не обновить до функционала новых. Развитие проекта - это выбор между "остаться на старом железе и невозможности сделать его лучше" или "перейти на новое железо и иметь возможность развиваться". Увы, но старая версия железа исчерпала свои возможности, и я не могу её развивать дальше, а потому делаю выбор в пользу второго варианта.

Instal

Ок, наличие и цена на новую версию? В профильноей теме не указано.
Во что бы мне хотелось, так это БМС с паказометром. что бы видеть какая из ячеек проседает больше других.
Или может привязаться как то к Смарт БМС, у них же есть протокол какой то.