Всё о мобильной энергии, солнечных батарея, ветряках и другой электроники Обсуждение солнечных батарей, вертяков, генераторов и другой электроники
 
  Регистрация | Войти На главную Добавить статью Форум Поиск  RSS Наш твиттер Контакты 29 марта 2024, Пятница  
MobiPower.ru
 О сайте
 Новости
 солнце
 термоэлектричество
 механика
 аккумуляторы
 освещение
 электроника
 прочее (экзотика)
 новинки рынка
 Сделай сам
 Обзоры и тесты
 Библиотека
 Форум
 Ссылки
 Контакты

Новости на e-mail
Подписаться на e-mail рассылку новых статей сайта Mobipower.ru



Вампирчики...
...размножаются здесь:
Мобильный блок питания "Вампирчик-Цифра" v.7
Мобильный блок питания "Вампирчик-Цифра" v.7

3 200 руб.
Солнечная батарея Suaoki на полугибких элементах SunPower
Солнечная батарея Suaoki на "полугибких" элементах SunPower

3 500 руб.

Информация



Новое на форуме

Ругаться сюда, однако ;))))
Автор: Гость
06.11.2023 в 22:29

проблемы при зарядке "пустого" вампирчика
Автор: nik34
03.08.2023 в 19:58

сгорел контроллер солнечной батареи
Автор: Гость
30.05.2023 в 23:15

Подскажите сварку.
Автор: Гость
28.05.2023 в 12:06

Бобик сдох...
Автор: nik34
16.05.2023 в 19:48

Разносол: конструкции от LeonidS
Автор: nik34
16.05.2023 в 19:27

Альтернативная прошивка "вампирчика"
Автор: Sergey345
21.04.2023 в 11:58

Переразряд li-ion
Автор: Aleksandr123
04.04.2023 в 11:53

Оживить вампирчик
Автор: nik34
30.12.2022 в 12:13

ВЦ8 - пока поговорить.
Автор: nik34
06.12.2022 в 16:58

Перейти на форум

Сейчас на сайте
0 человек

в т.ч. гостей:
пользователей:

Всего: 1251

Это может быть полезно


Поделиться этой страницей в:

   FAQFAQ   Поиск на форумеПоиск на форуме    ПользователиПользователи    ГруппыГруппы   ПрофильПрофиль   Личные сообщенияЛичные сообщения   ВходВход 

Инструкция к Новой прошивке для ВЦ6. История Разработки.
На страницу 1, 2  След.
 
Начать новую тему   Ответить на тему    Список форумов -> Электроника
Автор Сообщение
LaleksUi




Зарегистрирован:
Nov 25, 2016
Сообщения: 32
Откуда: Кишинёв, Молдова

СообщениеДобавлено: Чт 19 Янв, 2017 3:52    Заголовок сообщения: Инструкция к Новой прошивке для ВЦ6. История Разработки.
 Ответить с цитатой

Эта тема для публикации "Инструкции для Пользователя" прошивки 006 для ВЦ6 и её дополнений.

Посты с решёнными вопросами или уже добавленные в "Инструкцию", будут удаляться.
Просьба писать здесь по принципу:
[один вопрос] = [один пост].

Тема по разработке самой прошивки.


Последний раз редактировалось: popov (Пт 27 Янв, 2017 13:56), всего редактировалось 5 раз(а)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
LaleksUi




Зарегистрирован:
Nov 25, 2016
Сообщения: 32
Откуда: Кишинёв, Молдова

СообщениеДобавлено: Чт 19 Янв, 2017 3:52    Заголовок сообщения:
 Ответить с цитатой

сборка с 1,2,3,4,5,6,7,8- страницы.
правки L1,L2,N,L3.

Инструкция Пользователю. знакомство с инструкцией на ВЦ6 очень желательно.
условные обозначения:показать

[...] - элементы управления на ВЦ, экран, кнопки, крутилки, рычажки, джамперы, разъемы.
{Николай, nik34} - Автор аппаратной части, собственно электроники ВЦ6, радиомастер.
{Александр, alsegor} - Автор первоначальной прошивки ещё для ВЦ5, программист.
{Алексей, Lex} - Автор новой прошивки для ВЦ6, программист.
{Роман, RomaST} - Роман, первый тестер.
**,****,****** - вложенность диалогов в сложной беседе.
выделения цветом:
темно-красный: требуется комментарий/разъяснение разработчика. призыв к пользователю задуматься.
темно-синий: желательно обратить внимание.
ярко-синий: требуется обратить внимание.
светло-серый: неважное или второстепенное замечание или отсылка. (для удобства чтения можно выделить текст мышкой)
серый: чуть более важное, чем неважное; и всегда второстепенное замечание.
начало:показать

при включении МК, на 1/4 секунды мелькает номер версии [u 6], затем остаток емкости в [ %], через пол-секунды [U ], и значение напряжения.
при переключении пунктов меню сначала видим название, и через 1/2 секунды значение.

последовательность пунктов меню пользователя:
[вверх] -- [U, Uac, P, Uin, Ich, 3AP, Pou, I, U]
[вниз] -- [U, I, Pou, 3AP, Ich, Uin, P, Uac, U]
удержание кнопки - быстрая прокрутка.

переименования:
раньше [Uin] назывался [USL], [Ich] назывался [Uin].

новые функции:
000 (201611-18).
0. динамическое разрешение с плавающей точкой. (точка перед первым разрядом подразумевается, читаем как mA, mV, mW...). Не значащие нули слева не отображаются.
[ 0]-[999]
[1.00]-[9.99]
[10.0]-[99.9]
[100.]-[999.]
001 (201611-22).
3. выходная мощность Pou.
6. "ночной" режим дисплея. Включается/выключается удерживая кн. [вверх] нажатием кн. [вниз].
002 (201611-23).
1. добавлена возможность анализировать долгие нажатия, (пока не используется).
003 (201611-25).
1. уменьшено время выключенного входа при измерении напряжения на заряжаемом аккумуляторе со 130 до 29 циклов измерения АЦП. При этом первые 13 циклов напряжение не измеряется.
2. изменён нижний порог установки напряжения заряда внешних аккумуляторов с 4000 до 1000 мВ.
004 (201612-05).
2. Шаг изменения напряжения в режиме [ЗАР] теперь 0.05В; (50мВ).
3. Поправлена базовая константа программы, определяющая напряжение окончания заряда внешних акк. в каждом из режимов [ЗАР]: Для никеля стало: 1.40В, для свинца 2.33В. (вместо 1.39В, и 2.32В соответственно). продробности см. в разделе "разработка", п.п. "Ошибки индикации напряжений конца заряда в р. 3AP".
4. Алгоритм округления при отображении значений стал математически правильным. (классическое rounding).
005 (201612-08).
1. Работает ускоренная установка. (удержание кнопки приводит к быстрому перелистыванию).
2. Добавлен ВКЛючаемый таймер в режим [ЗАР]. полезно для зарядки NiMH в походных условиях.
Откалиброван по экземпляру {Алексея, Lex}. После выбора напряжения зарядки, после буквы [t ] устанавливаем количество минут; если оставить 0, таймер будет отключен и начнется зарядка (замигают три точки).
3. Добавлены программные калибровки всех каналов измерения. Отличия от среднего более 10% игнорируются.
Для записи калибровок использовать сервисную прошивку: 005с (201612-09).
(в 6 версии сервисная прошивка уже не нужна, и (за малым исключением) не нужна правка EEPROM).
Добавлен пример EEPROM файла для его изменения вручную: 005.eep (201612-12).
описание см. в разделе "программатор, самостоятельная прошивка, калибровка".
более подробно см. выборочно в разделе "разработка".

006 (201612-14).
1. Добавлено МЕНЮ настроек и калибровок. Для входа зажимаем [вверх] и включаем МК.
2. Сброс ВСЕХ настроек и калибровок -- зажимаем [вверх] и [вниз] одновременно и включаем МК.
3. Загрублено разрешение в каналах измерения ТОКА [Ich], [I ] до 20 мА. Это по умолчанию.
(тут применяется не округление, а усечение: 19=>0, 39=>20) В остальных каналах загрубление равно точности алгоритма: 1 мА.
(что всё равно излишне в сравнении с аппаратной точностью измерителей ВЦ6). Загрубление можно убрать: см. раздел "006. режимы, настройки, особенности".
4. Увеличена задержка перед измерением напряжения в режиме [ЗАР], стало 53 цикла. (было 29)
5. Более честная индикация процентов в конце процесса зарядки
6. Выкинуты измерения АЦП в виртуальных каналах [P ], [Pou], [3AP] -- уменьшился период обновления значений
7. [Ночной режим] индикатора, (10х энергосбережение):
- в [гл. МЕНЮ] включается удерживая [вверх] нажав [вниз]. (сработает и такой трюк: одним пальцем нажать обе кнопки сразу).
- также, через 3-4 минуты после вывода [FUL] индикация становится "тусклой" до нажатия любой кнопки. (но реально ВЦ6 блокируется и нужно перезапускать МК).
8. [Пониженная яркость] индикатора (в 2 раза) теперь включается и выключается в настройках: [LGH].
9. Шаг установки напряжения для режима [ЗАР] теперь можно задавать, но только вручную в файле .eep
(сечас шаг равен 50 мВ, (но были пожелания до 10 мВ, и это для них), точность измерителя МК чуть меньше 20 мВ).
(общая конечная точность на индикаторе, с учетом всех помех, порядка 100 мВ).
10. Меню настроек, калибровок, сброса параметров можно теперь каждое по отдельности включать/выключать при сборке прошивки. (это важно, но к ВЦ6 не относится).
Сборка с безопасным сбросом (с обратным отсчетом, но без меню калибровки): 006.sec (201612-14).
Безопасный сброс и меню калибровок одновременно в прошивку не помещаются.
**
006. режимы, настройки, особенности:показать

каналы, доступные для калибровки:
[Ich, Uin, Uac, U, I] - Входим в настройки удерживая [вверх], нажав кнопку [МК].
надо заранее сравнить показания ВЦ6 и мультиметра, и вычислить для нужного вам канала его калибр. если не трогать кнопки, программа МК сначала покажет свои настройки, потом с короткими паузами пролистает все каналы: сначала название, потом значение;
если вмешаться, пауза увеличится для удобства настройки значения. подробнее:

сначала увидим:
настройки прошивки:
[SEt] - это приветствие, мы в настройках;
[rES] - полное разрешение измерителей ТОКА [Ich], [I ] (по-умолчанию загрубленных до 20мА);
[LGH] - понижение яркости экрана (в 2 раза; не очень заметно, но полная яркость может слепить);
для включения параметра, удерживать [вверх] до появления трех точек, что покажет - параметр включен и успешно [Sud] сохранен.
для выключения параметра выключаем МК, и снова входим в настройки; включенный параметр отобразится с "точками" [x.x.x.], удерживаем [вверх] до погасания точек - параметр выключен и [Sud] сохранен; можем выключить МК.
нельзя выключать МК (удерживая [вверх]) до изменения статуса точек! идет запись параметра. дождитесь надписи [Sud]-Saved-сохранено.

подробнее о калибровке каналов:
калибр каждого канала можно менять от 000 до 200. (1-ца спереди подразумевается: 1000-1200, но не отображается).
при выходе за эти рамки, значение будет сброшено на 100. (1100)
(быстрая перемотка здесь не работает, в прошивке нет места)
если калибр был изменён, отпускаем кнопоки, после паузы ждем сохранения, о чем сообщит надпись [Sud] (от Saved, [Svd] сохранено), и далее авто-смена на следующий канал. после этого можно безопасно прервать настройку, выключив [МК].
([Sud] мне напоминает Suddenly - "вдруг, внезапно, неожиданно", может заменим на [Str], Stored-сохранено?)
нельзя выключать МК во время сохранения!

как измерить и посчитать коэф. 100 на примере канала [U ]:
1. берём мультиметр (далее ММ), USB-доктора, любой измерительный прибор, которому вы доверите миссию Эталона.
2. включаем ВЦ6, подключаем нагрузку; меряем на ней ММ U.изм(еренную величину), записываем на бумажку. если неудобно мерять, у ВЦ6 есть нажимная колодка, вставляем в неё 2 проводка, меряем на ней (это только в случае U подходит).
3. включаем на ВЦ6 именно тот канал (у нас [U ]), что измеряли мультиметром, списываем показания на бумажку: U.инд(икатора).
4. настоящая формула выглядит так: U = (16*Uadc*1100) / 1024, но нам она не нужна;
исключив константы и все что мы не можем трогать, получим:
5. X = (U.изм / U.инд) * 1100, у нас получится X где-то между 1000 и 1200;
6. округляем X к ближайшему целому, отбрасываем левую 1цу, и полученные 3 цифры устанавливаем в калибре канала, отпускаем кнопки, ждём сохранения. подробнее см. в разделе "программатор..." в п.п.6 "Пример файла с калибровочными коэффициентами (для 005)"; также см. раздел "разработка" п.п. "происхождение и суть коэффициента 1100 (.100)".
7. калибровка каналов ТОКА немного сложнее практически, так как ТОК надо мерять в разрыве цепи при подключенной нагрузке. (я не считаю USB-доктора эталонным устройством, его самого надо калибровать; и больше доверяю мультиметру, особенно если в вашем ММ больше знаков после запятой, чем в ВЦ6).
8. На деле всё очень просто: измерили, записали, разделили-умножили-округлили, накрутили последние 3 цифры в калибре соответствующего канала, сохранили; (они будут от 001 до 199). Удачи!

если не трогать кнопки, программа [МК] прокрутит все 5 калибровок (каналов) и запустит [МЕНЮ пользователя], то самое, что появляется при простом включении [МК].

Сброс к заводским настройкам:
зажав [вверх] и [вниз] одновременно, включаем МК.
1. в основной прошивке настройки затираются без предупреждения и индикации, после чего появляется МЕНЮ настроек.
нельзя! выключать питание до появления МЕНЮ.
2. в безопасной версии основной прошивки есть защита от случайного сброса настроек:
начнётся обратный отсчёт [999],[888],...,[000].
Если во время отсчёта отпустить какую-либо из кнопок -- отсчёт прервётся и сброс не произойдёт.
Если продолжать держать обе кнопки, отобразится [---], потом выполнится очистка EEPROM (питание НЕ ВЫКЛЮЧАТЬ), после очистки отобразится [rSt]-reset-сброс.
Если и после этого не отпустили [вверх] -- попадём в МЕНЮ настроек, иначе -- в МЕНЮ пользователя.
3. можно воспользоваться обеими прошивками по-очереди: прошив основную, откалибруйте ВЦ полностью, потом прошейте (не стирая EEPROM) безопасную, (которая без возможности калибровок). Вы получите откалиброванный прибор с защитой от потери этих (в будущем уже давно забытых) калибров. подробнее о "не стирая EEPROM" см. раздел "разработка" п.п. "Пятая прошивка и её калибровки", "Непредвиденное стирание EEPROM". Есть и другой подход: например, прошивальщик avrdude позволяет забэкапить EEPROM. поступаем так: прошиваем основную с полным стиранием, полностью калибруем ВЦ, делаем бэкап (драгоценного) EEPROM-а на комп, прошиваем безопасную с полным стиранием, восстанавливаем из бэкапа на компе только EEPROM в МК; (храним на компе (с таким трудом!) настроенный EEPROM чтоббуло,моё! на случай форс-мажоров). (таких, например, как новая версия прошивки...)

в [гл. МЕНЮ], также доступны другие настройки:
1. "Ночной" режим индикатора: Энергосбережение. (на порядок снижается потребление)
включается: удерживая [вверх] нажать [вниз]; выключается также;
(можно 1 пальцем сразу обе кнопки нажать).

особенности:
1. [Pou] виртуальный канал измерения мощности. получается умножением уже загрубленных напряжения и тока.
(по умолчанию, U усекается до 1 мВ, I до 20 мА; но для I есть настройка усечения [rES]=>20мА, [r.E.S.]=>1мА)
2. при включенном полном разрешении каналов ТОКА, придется мириться со случайно прыгающими
значениями в каналах: [I ] до 17 мА, в [Uin] до 8 мВ, в [Ich] до 10 мА, в [Pou] до 180 мВт;
это происходит из-за помех от импульсной повышайки; цифры указаны для 11В, кнопка [>5В] (между крутилками) нажата, крутилка тока [КТК] выкручена на максимум. если отпустить кнопку [>5В], [Pou] как вычисляемая величина, станет прыгать меньше, до 87 мВт, но в остальных каналах помеха останется прежней. у меня [rES]=>20мА. но и при этом [Uin] прыгает до 5 мВ.
3. "Ночной" режим индикатора используется и по окончании [ЗАР] при надписи [FUL] (по таймауту, через 3-4 минуты) и выключается любой кнопкой, после чего снова таймаут. Энергосбережение. выходим отсюда выключив МК.
после надписи [FUL] кнопки будут заблокированы, и в ВЦ6 будут работать только фонарик, входные разъёмы (понижайка и зарядка внутр. акк) и [USB2], но только если ОН НЕ подключён параллельно [USB1] (джампером внутри корпуса). То есть, при воткнутом питании, например СолБат, на [USB2] будет напряжение от понижайки. В случае параллельного подключеня [USB] разъёмов, [USB2] будет отключён от понижайки, и НЕ будет активен.
4. может 2 раза в секунду ярче вспыхивать один из разрядов индикатора, как правило 2й или 3й, это пока неизбежность алгоритма вычислений программы МК. память МК уже заполнена, и при добавлении функциональности пострадало качество индикации. ждем новый контроллер.
5. если вам не хватает шага 50 мВ (см. раздел "начало", версию 006, п.9), и вы решили его поменять, делать это надо грамотно, ибо есть тонкости и особенности: см. в разделе "программатор..." в п.п.8 "Настройка шага... (для 006)" подробности процесса;
если коротко, то значения выключателей [rES] и [LGH] могут быть только подряд 8 едениц или 8 нулей (0xFF или 0x00), и если программатором зашить по их адресам ЛЮБОЕ другое значение, параметр станет неотключаемым (всегда будет с точками), в силу способа (инверсия битов) вращения этих выключателей (элементов ИЛИ). защита от дурака корректная реализация не поместилась в прошивку, поэтому правьте Intel Hex правильно!
**

программатор, самостоятельная прошивка, калибровка:показать

1. Что из себя представляет программатор? Какие ещё устройства требуются кроме ВЦ и компьютера?:показать

{Николай} Вампирчики сейчас (конец 2016 г.) прошиваю через программатор AvrICP MKII, но подойдет любой, который может подключаться к плате через разъем на 6 ножек.
Для прошивки нужен компьютер, программатор, ВЦ, и источник питания на 5В, чтобы подать напряжение на контроллер. По программированию ВЦ никаких особенностей не имеет.
спаять себе бесплатно программатор:показать

как самостоятельно и быстро заморочиться?
{Алексей} По рекомендациям из интернетов спаял себе программатор "пять проводков" для LPT порта (LPT порт есть не во всех современных компах), и шью из linux утилитой avrdude (есть и win версия).
Да, в ней конфиг править пришлось, чтобы заработала с данной ревизией контроллера. На пальцах и для чайника объяснить не смогу.
**{Алексей} то было в fedora13, там относительно старый софт.
Сейчас на debian jessie править не нужно, конфиг уже из коробки в курсе про наш МК, atmega48pa.

(это разъём DB25 "папа" от сом-порта старого компа, в LPT ответная "мама" стоит), думаю, на местном радиорынке, можно достать как DB25, и коннектор 6-пиновый, так и старый кабель для матричного принтера, (с мизинец толщиной), он с одной стороны как раз в LPT втыкается, режете его в удобном месте, (в нём много тонких проводков), яндекс-гугл-картинки покажут как MOSI-MISO... расставлены, вызваниваете нужные контакты (по схеме ниже), распаиваете его правильно!, или фоткаете на телефон этот DB25, заходите в ближайщий комп-сервис, и выпрашиваете себе этот кабелек, дорабатываете его правильно! (и не обязательно брать 5 вольт от USB, в том компе, куда вы втыкать будете DB25, все красные провода внутри -- +5В, наверняка найдется свободный разъём, черные - земля, но вам нужен только плюс в нашем случае), просто с USB - мобильнее.

почти "бесплатный" переходник-программатор по данной схеме.

купить программатор в китае:показать

заходим на алиэкспресс, пишем в поиск "usbasp avr win7 64",
на 2016 год 2$ за программатор, 1$ за переходник с 10 пинового разъема на 6-пиновый. от 2 недель до 3 мес.
https://ru.aliexpress.com/item/Free-Shipping-New-USBASP-USBISP-AVR-Programmer-USB-ATMEGA8-ATMEGA128-Support-Win7-64K/32705181352.html
https://www.aliexpress.com/item/FREE-SHIPPING-1LOT-New-USBASP-USBISP-AVR-Programmer-USB-ATMEGA8-ATMEGA128-Support-Win7-64K/1817915716.html
https://www.aliexpress.com/item/free-shipping-10-Pin-to-6-Pin-Adapter-Board-for-AVRISP-MKII-USBASP-STK500-High-Quality/2002007260.html
ссылки могут устареть, интернет идет вперед неустанно.
советую ссылку скопировать, а не кликать на неё, что бы не попадать в пирамиду партнерских ссылок; если не понимаете, о чем я, тем более,- не кликать!, а скопировать; или самостоятельно, поиском.
2. Есть ли возможность "брикнуть" девайс при ошибках в программе?:показать

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

{Николай} Если Вы перепрошиваете МК, который стоит в ВЦ, то просто никаких фьюзов не меняете. Прошивка программы не затрагивает фьюзы.

Иначе, из фьюзов при прошивке меняю только:
- установку перехода в спячку при снижении напряжения питания ниже 2.7В. Делать не обязательно.
- в некоторых экземплярах МК приходится устанавливать делитель тактовой частоты для деления ее на 8.
Но в некоторых МК этот коэфф. деления уже установлен. Если Вы прошили и цифры и меню меняются с обычной скоростью, то, значит, этот делитель уже установлен.

{Алексей} Меня тоже спрашивал. Говорит "У тебя в таком-то фьюзе было такое-то значение, и оно изменилось на 0xff, хочешь исправлю обратно?".
Я испужался, долго думал что делать, в итоге грохнул процесс прошивальщика. Дал нормальное питание контроллеру (5В от USB) и вроде спрашивать перестал.
Теперь спрашивает периодически, когда плохой контакт в разъёме. Получает от меня в ответ Ctrl-C, проверку контактов, и запуск по новой.
**{Николай} Фьюзы - это, грубо говоря, перемычки, джамперы, задающие работу МК. Все их помнить нет никакого смысла, их много, проще глянуть в описании МК. (наш МК: atmega48pa, ищем даташит сами!)
При прошивке те, что стоят в МК по умолчанию вполне подходящие для работы МК в ВЦ. Правда, в какой-то из посылок из Китая, встретилась партия МК, где делитель частоты внутреннего генератора был отключен и МК работал в 8 раз быстрее, что видно было по индикатору. Поэтому, пришлось самому установить фьюз этого делителя, чтобы он включился. Других случаев, где надо было обязательно что-то менять не было.
Фьюз ухода МК в спячку при напряжении ниже 2.7В я ставлю уже просто так, большой необходимости в нем нет.
Цитата: имеет ли смысл спросить об этом бывшего программиста Александра?
**{Николай} Не вижу смысла - вряд ли у него будет большое желание переписывать здесь даташит на МК, если люди сами этого сделать не желают.
4. Ваш программатор всегда качественно прошивает?:показать

{Алексей} некоторые замеченные проблемы связаны с "недопрошивкой". У меня раз такое было: Зашил новую прошивку, утащил прибор домой. Смотрю - а на индикаторе лажа вместо цифр. Потом прошил ещё раз тем же файлом -- проблемы ушли.
{Николай} Думаю, что да, всегда. Пока никаких проблем такого типа не наблюдалось.
1. всегда делаю предварительное стирание,
2. после прошивки обязательное считывание и проверку,
3. шью всегда на 5В питания, как дающее более надежную запись.
5. Порядок калибровки (для сервисной прошивки 005с):показать

если есть свой программатор и...

005с (201612-09).
1. При переключении каналов, после имени канала выводится [Cbr]-calibration-(калибровка).
2. Кнопка [вверх] включает калибровку данного канала:
(отобразится [AdJ]-adjust-(настройка), потом имя калибруемого канала, далее измеряемая величина).
Кнопка [вниз] сбрасывает калибровку данного канала в "заводское" значение [dEf]-default-поумолчанию.
3. [вверх] -- увеличить значение, [вниз] -- уменьшить.
не трогая кнопки, вернёмся из режима калибровки в п.1.
4. Если несколько секунд не трогать кнопки, увидим вопрос [St?]-set? (нужно ли сохранить?), и подсказку [Y_^].
Если ничего не нажали, через несколько секунд вернемся в настройки п.3.
5. Пока светится [Y_^] (читать как: нажать [вверх] для ответа Yes-Да) -- кнопка [вверх] сохранит значение (отобразится [SEt] -- данные сохраняются);
кнопка [вниз] отменит сделанные настройки, и ничего не сохранит! увидим [Abr]-аbort-прекратить.
6. Если в п.5 выбран любой вариант ответа (т.е. нажата какая-нибудь кнопка) -- выйдем из режима калибровки и вернемся в п.1.

**{Роман} Порядок действий с калибровальной прошивкой:
1) Ставим калибровальную прошивку
2) Калибруем каналы
3) Записываем на комп содержание eeprom
4) Ставим рабочую версию прошивки
5) Записываем сохраненный в пункте 3) eeprom на ВЦ
И получаем 5ую версию, с необходимыми калибровками.
6. Пример файла с калибровочными коэффициентами (для 005):показать

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

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

Файл в формате "intel hex", как и прошивка.
005.eep (201612-12). Для наглядности, чтобы было видно где менять, в файле все коэффициенты заполнены соответствующим индексом:
элемент №0 0x1000 [Ich] //ищем 0010
элемент №1 0x1101 [Uin] (в файле ищем 0111)
//резерв 0212
элемент №3 0x1303 [Uac] //ищем 0313
элемент №4 0x1404 [U ] //ищем 0414
элемент №5 0x1505 [I ] (в файле ищем 0515)
//резерв 0616, 0717, 0818.

Для примера рассмотрим калибровку канала [U ] (измерение напряжения на выходе, он же отвечает за напряжение заряжаемых аккумуляторов).
1) Измеряем реальное напряжение U0 при измеренном прибором U1;
2) вычисляем коэффициент как X = U0 / U1 * 1100 и округляем к ближайшему целому
3) ищем среди индексов нужный канал, в нашем примере [U ] = 4
4) Ищем в файле 4+2*4 = 12й байт (считаем начиная с 0). 12й и 13й будут содержать младшую и старшую часть нашего коэффициента соответственно.
4а) если не поняли предыдущее -- находим в файле символы 0414
5) Допустим, в п.2 у нас получилось 1189. Вооружаемся калькулятором и переводим в 16-ричную систему: 1189 = 0x04A5.
6) Записываем значение в позицию, полученную в п.4, начиная с младшего байта: A504
7) Повторяем с п.1 для остальных каналов, которые нужно откалибровать.
8) Оставшиеся значения в файле-примере желательно заменить на FF, хотя и не обязательно. Это для каналов, калибровка которых не требуется
9) шьём в EEPROM прибора получившийся файл .eep. Естественно, версия 5 (или 6) должна быть уже прошита.
10) радуемся повысившейся (или испорченной, тут уж как сделаем) точности прибора.

Цитата:
контрольную сумму в конце строки как вычислять?
**{Алексей} avrdude вычисляет (коротко):
Код:
# avrdude -p m48p -c stk200 -V -U eeprom:w:./vamp_myq1.eep:i
avrdude: ERROR: checksum mismatch at line 1 of "./vamp_myq1.eep"
avrdude: checksum=0x00, computed checksum=0x0f
avrdude: read from file './vamp_myq1.eep' failed
computed checksum=0x0f
7. Файлы прошивок из Линукс и Виндовс, нюанс:показать

Цитата:
в этом intel-hex файле строки заканчиваются только одним символом, возможно вы писали из-под линукса; до сих пор в прошивках было 2 символа, для прошивальщика это не имеет значения?
**{Алексей} Так и есть. Дамп снимал под линуксом с реальной железки, предварительно откалибровав ВЦ (специальной прошивкой), чтобы коэф-ты в EEPROM записать.
Надеюсь, что не имеет. Нужны или эксперименты, или мнение знающих людей.
8. Настройка шага изменения U в режиме ЗАР в .eep (для 006):показать

нужен программатор; cамый простой способ, можно не вычислять смещения:

1. включаем свежепрошитую (или со сброшенными настройками) 6ку.
2. в МЕНЮ настроек устанавливаем режим повышенного [r.E.S.] разрешения. Больше никаких настроек и калибровок не меняем.
3. сохраняем EEPROM (программатором) в файл (на компе).
4. в нём все байты должны быть 0xFF, кроме одного 0x00. Этот байт отвечает за флаг повышенного разрешения. Байт перед ним содержит значение шага в милливольтах. Записываем его туда в 16-ричном формате. Для 10мВ будет 0x0A.
5. исправляем контрольную сумму в конце строки, и пишем EEPROM обратно в ВЦ.

Примечание: шаг=0 и шаг>200 считается некорректным, и принимается за 50 мВ.
4а. Величина смещения искомого байта = 22 = 0x16.
(виндовый калькулятор в режиме "Программист" (меню "Вид"), позволяет ввести цифру в "Dec" (десятичную), после переставить на "Hex" и увидеть её 16-ричное значение; и наоборот.)

в отсутствии своего программатора, возможна ручная правка EEP файла, что сэкономит 1 поход к программисту.
Код EEP файла для 6 прошивки с шагом 10 мВ:показать

Код:
:20000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0AFFFFFFFFFFFFFFFFFFF5
:20002000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
:20004000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
:20006000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
:20008000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80
:2000A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60
:2000C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40
:2000E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20
:00000001FF
обсуждение ниже покажет ошибки, с которыми легко столкнуться при ручной правке EEP файла, а также сбои при прошивании, приводящие к теоретически невозможным значениям шага U.
**{Роман} Как выяснилось, залитый мной .еер файл имел шаг изменения напряжения в режиме [ЗАР] 70 мВ.
****{Алексей} Точно именно 70?
******{Роман} Да, шаг был именно 70мВ. Не сохранялись параметры из меню настроек. Меню калибровок я не пробовал.
********{Алексей} Тогда, скорее всего, в EEPROM какой-то мусор был зашит. Или я ошибся в контрольной сумме, и программатор его криво переварил.
****{Алексей} ...В этом месте содержимое EEPROM выглядит как ...FF FF 0A FF FF...
(0x0A это 10 мВ; 70 мВ будет 0x46.)
Если промахнулся с адресом на полбайта, должны быть либо F0=240 либо AF=175. Если более полубайта -- FF=255, интерпретируемое как 50.
**{Роман} ...Более того, ВЦ не мог сохранить изменения в меню настроек.
****{Алексей} Каких именно настроек, что и как меняли, что отображалось, и как проверяли?
Для параметров [LGH] и [rES] -- допускаю. Под них выделяется по одному байту. FF интерпретируется как значение по умолчанию, 00 как "изменённое" (с точками в настройках ВЦ). А вот при ином начальном значении (записанном через программатор) получится неотключаемый параметр (всегда будет с точками).
(Это лучше внести в инструкцию в список известных багов особенностей). (Это не баг; не берись! за Intel Hex, не зная что делаешь; это как ассемблер, ошибка в пол-байта - хана программе. нельзя! ошибаться. правьте Intel Hex правильно!)
Там реализация изменения настройки через инверсию всех битов в байте. Почему так? -- Такая реализация заняла минимум драгоценных байт в прошивке.
Расположение параметров в памяти выглядит так:показать

Код:
    U32 magic;
    U16 cal[9]; //массив калибровок измерителей,  = 2*9 байт
    U8 volt_step;    // шаг установки напряжения зарядки
    U8 fullres;      // 255 -- загрубить разрешение измерителей
    U8 lowlight;     // 255 -- максимальная яркость
Тут если я промахнулся, записав в отправленном файле 0x0A на полбайта раньше позиции volt_step, ничего критичного не случится, F0 уйдёт в неиспользуемый для настроек адрес EEPROM, в volt_step будет AF=175.
А вот если позже -- тогда ой. volt_step получится F0=240, AF переместится в позицию fullres, сделав её неотключаемой. На lowlight не повлияет.

**{Роман} ...После сброса всё заработало корректно, только шаг стал 50 мВ (это значение по-умолчанию), зато настройки стали сохраняться.
****{Алексей} предсказуемо. Вся EEPROM переписалась значениями 0xFF.
**{Роман} ...Возможно, невозможность сохранения была заложена при перепрошивке. Возможно файл .еер имел статус только чтение.
****{Алексей} Раз уж сбросить смогли -- стало быть, МК способен писать флешку = сохранять настройки. Скорее тут проявилась вышеописанная особенность.
9. Что это за циферки - 0xNN ?:показать

В инструкции и сообщениях часто мелькают числа в формате 0xNNNN. Что они значат?

{Алексей} приставка 0x у чисел указывает, что данное число записано в шестнадцатеричном (hexadecimal, hex) формате. Вместо традиционного десятичного. Например:
0x0 = 0;
0x9 = 9;
0xA = 0x0A = 0xa = 10;
0xA0 = 160; (будьте внимательны, глазами легко перепутать 0x0A и 0xA0).
0xF = 15;
0xFF = 255;
0x100 = 256.
Если для цифры 0x указано смещение, нужно помнить, что байты нумеруются начиная с НУЛЯ.
(виндовый калькулятор в режиме "Программист" (меню "Вид"), позволяет ввести цифру в "Dec" (десятичную), после переставить на "Hex" и увидеть её 16-ричное значение; и наоборот.)


Последний раз редактировалось: LaleksUi (Чт 16 Фев, 2017 11:24), всего редактировалось 5 раз(а)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
LaleksUi




Зарегистрирован:
Nov 25, 2016
Сообщения: 32
Откуда: Кишинёв, Молдова

СообщениеДобавлено: Чт 19 Янв, 2017 3:53    Заголовок сообщения:
 Ответить с цитатой

пожелания новых функций и вопросы по прошивке:показать

1. автоотключение МК и экрана в режиме ЗАР, после FUL?:показать

**решено.** в 6 прошивке: (но МК не отключается)
7. После вывода [FUL] через 3.5 минуты индикация переходит в "ночной режим" до нажатия любой кнопки.

{Роман} что бы режим автоотключения активировался, когда переключатель автоотключения самого ВЦ6 включен (горит светодиод автоотключения ВЦ6). или через час после [FUL].
на тот случай, когда надо поставить аккумуляторы на зарядку и уйти на "время".
**{Алексей} Удобно. Но это если только наш аппаратчик сможет подключить кнопку к контроллеру. Сейчас анализировать состояние кнопок нет никакой возможности.
**{Николай} Не понятен смысл таких сложностей.
проще, пусть после окончания зарядки, когда МК отключит аналоговую схему и напишет [FUL], он сам через время перейдет в режим PowerDown (выключения); (в котором его потребление до десятка мкА, т.е. почти ничего) он просто сам себя выключит.
2. шаг изменения напряжения ЗАР не 50мв, а 10мв:показать

**решено...** в 6 прошивке: нужен программатор, (см. описание 6 прошивки).
А что, если сделать шаг в 0.033В?:показать

{Алексей} хоть 0.001В (внутреннее представление напряжений именно в мВ). Можно 0.05 сделать, или 0.025 для кратности вольту. 0.033(3) -- бесконечная дробь, не годится. Разрешение измерителя составляет 0,0171875 В.
А что, если сделать шаг в 0.05В?:показать

{Алексей} фактическое разрешение не выше 17 мВ. А там ещё неизвестная точность резисторов в делителе, да и самого источника опорного напряжения (1.1В) в контроллере.
{Николай} какой смысл мечтать о высоком разрешении, если мы не можем обеспечить соответствующую точность измерения? Здесь и нелинейности, и температура, и шумы...
Из практики - если я обеспечиваю (подгонкой резисторов делителя) точное измерение при 5В, то при 15В практически у всех экземпляров показания оказываются завышенными, как минимум, на 0.1В.
Резисторы стоят 1% (а это не 17, а (примерно) 170мВ точности). Но дело не в их точности, а в точности подгонки, поскольку в каналах [U ] и [Uac] точность подгоняется напайкой дополнительных резисторов.
да и сейчас в новых прошивках (<=6) последняя цифра скачет в пределах +-20мВ, т.е. две последние цифры.
В режимах А сделать шаг регулировки напряжения равным 0.01В:показать

Я понимаю, что разрешение измерителя 0.017В, но например, на некоторых nimh ААА окончание заряда 1.43В. Как его поймать без шага в 0.01В?
{Алексей} даже при дискретности измерителя 20мВ (0.02В) получится диапазон 1.41..1.45В. А реальная точность будет ещё ниже. Вот уж, действительно, кЕтайские милливольты получаются.
А на экране будет отображаться...

при отображении 3-го разряда любых данных производится округление (классическое rounding) согласно правилам математики:
то есть 12.049 отобразятся как 12.0, 12.499 -- как 12.5.
отображение величин с плавающей точкой: 4.2В на экране отобразятся как 4.20. То есть ВСЕГДА отображаются все 3 цифры. А четвёртая, если она есть, уже округляется.
Исключение составляют величины менее 100мВ, когда значение не полностью заполняет экран. Повторюсь, что внутреннее представление напряжений в единицах милливольт.
При округлении ошибка не превышает половины последнего [третьего] разряда.
например:
4.200В отображаются как 4.20
4.240В отображаются как 4.24
4.244В отображаются как 4.24
4.245В отображаются как 4.25
4.994В отображаются как 4.99
4.995В отображаются как 5.00
Будем понижать разрешение, чтобы сомнительной была только 1 последняя значащая цифра.
3. реализовать алгоритм dV для зарядки NiMH:показать

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

{Алексей} А меня лично при пользовании ночью в темноте яркий индикатор слепит, и соседям в палатке мешает. Если он слишком легко включается -- можно спрятать поглубже для просвещённых. Случайно не включат -- только намеренно. Лично мне он необходим.
{Николай} Странно, больше было жалоб на обратное. Слепили обычно светодиоды на выходах/входах.
Доводите программу со всеми наворотами, которые сочтете нужными. И когда будет законченный вариант, я его погоняю и если что-то покажется неоднозначным - попрошу убрать. А здесь можно выложить любые варианты под любые пожелания. Кто захочет, сам себе поставит.
5. переименовать Ich в Iin, это не только ток зарядки ВЦ6, но и ещё ток на порте USB2:показать

{Алексей} Я данный вопрос уже задавал в сообщении;
Выбрал [Ich] во избежание путаницы, т.к. это НЕ входной ток. И он может быть намного выше никак не измеряемого тока на входе понижайки.
6. добавить режим Pin = Uin * Iin. Так легче искать макс. точку в режиме МРРТ:показать

{Алексей} см. пункт "3а)" в прошивке №001.
Цитата:
3. выходная мощность Pou
3а. Добавлено и удалено отображение мощности заряда Pch = Ich*UAc
Там измерялась мощность, текущая в аккумуляторы при отсутствии нагрузки на [USB2]. Была выкинута, т.к. начал путаться в количестве пунктов меню -- оно оказалось перегруженным.
И перечитайте первую страницу темы, там этот вопрос обсуждался.
Для настройки MPPT вполне достаточно канала [Ich], т.к. напряжение там почти не меняется.

**{Николай} Верно. Нам в итоге надо снять не максимальную мощность с сол.бат., а именно получить максимальный ток зарядки. А пик мощности на выходе преобразователя не обязательно совпадает с пиком мощности на его входе (на сол.бат.), из-за изменения КПД в разных режимах.
Впрочем, в реальности, эти два пика очень близки, и это больше теоретический интерес.

7. имеет смысл делать очистку памяти калибровок:показать

**решено.** в 6 прошивке:
2. Для сброса всех настроек и калибровок -- включать МК с нажатыми двумя кнопками.

{Николай} Имеет смысл делать очистку памяти калибровок, например, при долгом нажатии кнопки. Чтобы можно было вернуться к варианту "заводской" точности. Опять же, средний пользователь никогда этим пользоваться не будет, но будет постоянно забывать, как это делать, а вот запомнить, как сбросить (долго-долго нажимать) - это легко.
**{Алексей} Трудно предположить реальную ситуацию, когда это может понадобиться. Разве что только если "пользователь" добудет б/у устройство. А учитывая грабли с настройкой -- через дополнительную прошивку и бэкап-восстановление EEPROM -- вряд ли "предыдущий пользователь" захочет с аппаратом расстаться.
****{Николай} Я, скорее, рассматриваю вариант сбоя калибровок. Если в лесу нет возможности заново их прошить и возможно только обнулить, вернувшись к базовой точности.
******{Алексей} Сбой в лесу возможен в случае выхода из строя флешки МК. (что маловероятно), так как в рабочем режиме туда ничего не пишется, (не тратится ограниченное число циклов перезаписи) -- вряд ли это случится при сохранении работоспособности остальных частей МК... (процессора и памяти МК).
**...Итого: получаем основную массу пользователей, не знающих о возможности калибровок (с чистой EEPROM, содержимое которой 5ка игнорирует), и несколько энтузиастов, решивших заморочиться на повышении точности.
****{Николай} Скорее всего.
8. лучше сделать не минуты, а часы, т.к. ВЦ обычно работает часами:показать

{Алексей} А если понадобится поставить "на полчасика", или не кратно целому числу часов? Сейчас шаг установки кратен 5 минутам, можно сделать 10 или больше.
И максимум времени ограничен 900 минутами, это связано с разрядностью счётчика времени, к тому же число удобно помещается на индикаторе.
**{Николай} Я предполагал, что менять с шагом 0.1 часа (т.е. те же 6 минут) и на индикаторе 99.9 часов максимум. Мне кажется, это нагляднее. Соответственно полчаса - это 0.5 часа на индикаторе. На больших длительностях пересчитывать минуты в часы не слишком удобно. А когда сразу в часах и их долях, вполне логично.
****{Алексей} Пожалуй соглашусь, но есть один нюанс: при величинах менее одного часа, наша плавающая точка (данная её реализация, дек. 2016) не позволяет отобразить на индикаторе "0.5", т.к. технически точка тут отделяет разряд с тысячными, и вместо 0.5 получится 500.
(люди мыслят не 6-минутными интрервалами, а 5-минутными, поэтому лучше сделать после точки не 1/10 часа, а 1/6, т.е. будем иметь: (H>0 - счетчик часов) H.1-два.нажатия-H.2-...-H.6-одно.нажатие-меняем.счетчик.часов-на.еденицу-H.0-два.нажатия-H.1; можно после первого нажатия (и отпускания!) на 1/4 сек гасить цифру за точкой, на вторую 1/4 сек зажигать "5", и оставшиеся две четверти снова показывать прежнюю цифру, как бы намекая, что мы прибавили/отняли 5 мин.)
(вместо "0.5" можно до 1 часа писать целые минуты (0,5,10,...,55,60,1.0,1.0,1.1,...), в новом контроллере, Lex, у вас хватит места на более сложную функцию, хотя это пожалуй уже перфекционизм, который может быть лишним; но всё же стремление к красоте присуще всем людям)

****{Алексей} и 5ка и 6ка уже доросли до размеров, при которых они полностью занимают 4кБ (4096 байт) памяти нашего МК. на оптимизацию кода ради экономии нескольких байт уходит неоправданно много времени. и сейчас (в прошивке 006, для сокращения размера кода), при выводе всех числовых значений используется одна функция. Она принимает на вход целое число (мВ, мА, ...), и отображает в режиме с плавающей точкой. При данной реализации максимум чего можно ожидать -- это шаг установки, равный 500 милличасам. Будет больше путаницы -- так что минуты.
9. возможно ли самому перепаять микросхему МК:показать

Цитата:
возможно ли будет самому или с помощью местного радиосервиса перепаять микросхему МК, (здесь говорили что ноги совпадают), чтобы можно было залить новую (большую) прошивку на старое устройство, и пользоваться (хотя бы ограничено) ее новыми функциями?
насколько это технически сложно?
**{Николай} Перепаять МК не слишком сложно, мне самому иногда приходится менять бракованные МК в ВЦ.
Но для этого понадобится хотя бы паяльный фен, паяльником сильно сложнее, можно легко содрать дорожки (на плате).
(как вариант, надо пооткусывать ножки по отдельности и затем выпаивать их поштучно. Конечно, при этом корпус микросхемы будет испорчен).

Думаю, в любой мастерской по ремонту это сделают.
При замене, естественно, уйдет точность по каналам [U ] и [Uac], которые подстраиваются индивидуально напайкой дополнительных резисторов.
Соответственно, Вы может их заново подогнать, либо скорректировать программно.
10. загрубление разрешения в измерительных каналах до 20 мА:показать

**решено.** в 6 прошивке:
3. По умолчанию в каналах измерения ТОКА [Ich], [I ] разрешение загрублено до 20 мА.

{Алексей} Например при разрешении 20 мА, значения
0-19 мА будут выглядеть как [ 0],
20-39 мА как [ 20], и т.д.
Почему так? В канале [I ] (при отсутствии нагрузки) вижу постоянно пляшущие значения от 0 до 17.
**{Николай} Может быть поставить фильтр, что-то типа скользящего среднего, потому что, предполагаю, эти скачки в основном от помех от повышающего преобразователя.
****{Алексей} Да, наверное так. При включённом преобразователе показания начинают плясать. Причём заметил тенденцию:
Канал [Ich] в диапазоне 0,07-1,8А завышает средние показания на 50мА. Линейность нарушается только при токах сравнимых с величиной погрешности.
Канал [I ] вообще нелинейный, показания в разных участках диапазона то завышаются, то занижаются.
**{Николай} {разработка:} Ненулевые показания тока не убрать, т.к. это свойство микросхемы измерителя. можно убрать ненужное разрешение.
11. а нельзя ли часть кода хранить в EEPROM?:показать

Цитата: там не много, но все же, когда чуть чуть не хватает, или это я фантазирую?
**{Алексей} И да и нет. Но не сам код, скорее часть данных. Например таблицы констант, которых там достаточно.
Но это плохая идея. Тогда придётся выкладывать 2 файла прошивки, и давать чёткую инструкцию, чтобы их шили всегда обязательно оба, и не путали от разных версий прошивки.
В данный момент гарантируется работоспособность при любом содержимом EEPROM.
12. пожелания после 1-го теста 5 прошивки:показать

{Роман} 1) Отображать время в часах, а переключать его кратно 30 минутам:
30 мин на дисплее 0.5
1ч на дисплее 1
1ч 30м на дисплее 1.5
**{Алексей} сейчас (в прошивке 006), для сокращения размера кода, при выводе всех числовых значений используется одна функция. Она принимает на вход целое число (мВ, мА, ...), и отображает в режиме с плавающей точкой. Технически точка отделяет разряд тысяч(ных), если всё число не умещается в 3х разрядах. При данной реализации максимум чего можно ожидать -- это шаг установки, равный 500 милличасам. Будет больше путаницы -- так что минуты.
{Роман} ...Заряжать аккумуляторы определенное количество минут мне не приходилось, и шага в 30мин будет вполне достаточно. Более того, выставлять время зарядки будет удобнее, из-за бОльшего шага.
**{Алексей} Разве что шаг увеличить с 5 до 30. (но зачем загрублять время?)
{Роман} ...Учитывая, что время отображается в минутах, максимально можно выставить 905мин, что соответствует 15 часам. Решение некоторых задач может потребовать бОльшего времени. Рекомендую ограничить таймер 64 часами.
**{Алексей} в 6ке, максимальный период отключения может быть равен 960 минутам (16 часов). Это связано с разрядностью используемых счётчиков, и принципом измерения времени.
ИМХО, 15 часов для походных условий более чем достаточно. Это рекомендованное время зарядки для никелевых аккумуляторов в самом медленном для них режиме.
****{Николай} Достаточно. Просто из минут в часы переводить не слишком удобно. Эргономика, не более. (см. также в этом разделе п.8 "лучше сделать не минуты, а часы..." похожее обсуждение).
{Роман} ...2) Самоотключение МК после надписи [FUL] через 2 часа, при нажатой кнопке автоотключения. (это не кнопка, а движок со светодидом)
**{Алексей} в.006, п.7. Вариация на тему.
Кстати, где эта кнопка? Программную добавить -- места нет, к аппаратной МК доступа не имеет.
{Роман} ...3) Самоотключени МК вместе с ВЦ6 при нажатой кнопке автоотключения
**{Алексей} Есть проблема: Обратно как включить? Только переподачей питания? Тогда многие обзовут глюкаловом. (спорно, можно и хорошо сделать, но места нет; да и приоритеты тоже правильные нужны; см. также в этом разделе п.1 "автоотключение МК..." высказывание Николая.)
{Роман} ...4) Обратный таймер в режиме [ЗАР]
**{Алексей} Самому хотелось, но увы... (места нет). Или хотя бы при сработавшем таймере вместо [FUL] рисовать [tou].
{Роман} ...5) После апгрейда железа, необходимо будет вернуть 130 циклов измерения напряжения в режиме [ЗАР]. Для бОльшей точности.
**{Алексей} в 6ке 53.
{Роман} ...6) Объеденить калибровочную и рабочую версии в одну единую прошивку.
**{Алексей} уже сделано. (прошивка 006).
13. а не приведет ли сброс к необходимости перепрошивки ВЦ?:показать

Нет. память программы МК и память настроек EEPROM - 2 разные памяти в нашем МК.
(см. устройство памяти МК: раздел "разработка", п.п. "О контроллере ATmega48 и его прошивках")


{Роман} После сброса, можно ли будет заново калибровки прописать, или сброс уничтожает ВСЁ содержимое eeprom. И чтоб восстановить полную функциональность, необходимо будет заново перепрошить ВЦ?
**{Алексей} Нет, сброс не превращает наш ВЦ в кирпич. Стирается только содержимое "EEPROM-для-данных", сама программа не затрагивается. По сути мы получаем свежепрошитую 6ку, как после программатора с предварительным стиранием.
14. измерение внутреннего сопротивления акк нашим ВЦ:показать

Нет, точности не хватает. Не нужно это. {Николай}: измерение сопротивления можно сделать и сейчас, но погрешность будет большая настолько, что сведёт результат к бесполезному.

Цитата: если интересно, см. подробный пост.
**{Николай} Теоретически, сейчас для измерения сопротивления достаточно только изменений в программе. Мы же можем мерять напряжение на аккумуляторе при наличии тока зарядки и без него. Плюс, мы знаем величину этого тока зарядки. А дальше, по закону Ома вычисляем сопротивление. Все элементарно.
Правда, одно маленькое "НО", которое сводит полезность этой затеи если не к нулю, то к близкому значению. А именно, выходное сопротивление вампирчика, в которое входит сопротивление выходного разъема и последовательного полевика защиты. Величина этого сопротивления, думаю, превысит сопротивление аккумулятора и, главное, она нестабильна - разъем малотоковый, полевик- может стоять разных изготовителей, с разным сопротивлением канала.
В общем, точность получится процентов 100 от номинала. А кому она такая нужна?
---
Может повторюсь, не вижу смысла в развитии ВЦ как зарядника. Потому что хорошего зарядника не получится, а плохой все будут ругать.
Да и не нужен "лабораторный" зарядник "в поле", там другие задачи.
15. настройка (программная) пределов U заряда и разряда вн. акк. (и БатБлока):показать

Нет. Маловероятно. {Николай}: настрока напряжений заряда-разряда внутренних акк. если и будет, то только "железная". Она уже делалась и была выброшена ради упрощения схемы.

Цитата: если интересно, см. подробный пост.
Цитата: ...еще нужно программно дать возможность (в настройках) заряжать внутренние акк ВЦ6 до 4.1 и до 4.0 В.
**{Алексей} За весь процесс зарядки отвечает микросхема TP4056. Программно она не настраивается. Разве что только держать МК постоянно включённым, измерять напряжение акк, дёргать за ногу для термодатчика для "преждевременного" отключения зарядки, и заряжать исключительно при включённом МК.
Программно повысить порог отключения, в принципе, можно. Но опять же, франкенштейн выходит. Пока МК включён -- может по порогу напряжения дёргать кнопку отключения повышайки.
****По этому поводу уже написано: nik34 писал:
Я же пока не хочу отказываться от идеи минимального программного вмешательства в работу "железа", как более надежного варианта. Т.е. все равно настройки в железе делаются, дублировать их программными вещами - это увеличивать трудозатраты. Если уж переходить на программу, то перебираться совсем и выкидывать треть "железа".

**{Николай} Сейчас программно это никак не сделать. Да и вообще, это надо делать только "железом".
Кстати, пока делал эту 6ю версию, изготовил штук 7 вариантов ВЦ - ну никак он не шел. Так вот, были там варианты, где пользователь мог сам задавать напряжение конца заряда. (как сделано сейчас в Лайте). Но в процессе упрощения схемы 6ки эта возможность была выброшена.
Конечно, ее можно вернуть в следующих версиях, но только не программно..

Цитата: сам апгрейд может оказаться тривиальным. типа бросить проводок-другой, у МК есть 3 ноги свободных, и т.д.
**{Николай} В 6-ке элементарным проводком не обойтись, там отвечает за заряд микросхема, на которую мы повлиять никак не можем. (Хотя, может и возможно поставить последовательный диод между этой микросхемой и аккумуляторами. Не проверял.

Цитата: Николай, а чисто теоретически, согласны ли вы, что при больших емкостях 8 х 3400 = 27200 мАч, 10х = 34 Aч, нет необходимости и вредно держать акк заряженными до 4.2 В ?
именно из-за ограничения по количеству циклов, см. статью: Как продлить жизнь литиевым аккумуляторам
коротко: заряжаем до 4.2 В - 500 циклов, до 4.0 В - 5000 циклов; (мне кажется это надо учитывать для ВЦ6.1)
тут были смешаны 2 разные темы, которые программно легко объединялись; потому и были высказаны вместе: (LiIon и LiFePo4) обе требовали снижения напряжения зарядки, 1я до 4.0 В, 2я - до 3.6 В. (а при больших емкостях до 3.3 В для LiFePo4).
но хотя бы 1ю тему 4.0 В для LiIon - как вы к ней относитесь, будет джампер?
**{}Николай} Возможно и будет. Здесь вопрос в наличии места на плате. К тому же, этот джампер лучше сделать доступным снаружи, иначе, неудобно. ("джампер" может быть аппаратно-автоматическим, ведь он нужен только с подсоединенным БатБлоком). Обещать не буду, но от этой идеи не отказываюсь - будет возможность поставить без лишних трудозатрат - поставлю.
16. добавить возможность калибровки времени:показать

{Роман} Алексей, вот бы в меню калибровок добавить возможность калибровки времени. В моём экземпляре, время отсчитывается на 2 сек. в 1 минуту дольше. Это не критично, конечно. Просто имейте это ввиду, когда будете новую версию разрабатывать.
**{Алексей} Тоже хотел. Не поместилось.
**Цитата: (27дек16) время у меня спешит: при зарядке [L7.4] - при установке на 5 мин, выключалась на 4:32 по секундомеру мобильника, на 10 мин - выкл на 8:46, (но я проводил только один раз этот эксперимент).
17. пожелания после 1-го теста 6 прошивки:показать

{Роман} [rES] - не вижу смысла, т.к. бегающие цифры никак не раздражают. Считаю, что необхожимо оставить значения без загрубления во всех режимах. (спорно; зачем заменять программное округление мысленным? ВЦ без нагрузки, а его измеритель регистрирует шумы. сферическая точность измерителя в вакууме = 17 мВ, загрубление = 20 мВ)
**Цитата: у меня включён [r.E.S.]
**{Алексей} Вопрос ЗАКРЫТ. Решение Николая: "грубому датчику -- достаточная степень округления".
{Роман} [LGH] - не понял как работает. Но смысла в нем нет, т.к. яркость прекрасно меняется с кнопок. (здесь перепутана ночная [2 кнопки разом] и сниженая яркость [L.G.H.], но в комнате изменения действительно незаметны (можно фотиком проверить), а вот что будет на солнце?)
**{Алексей} [LGH] это режим пониженной яркости. Он отличается примерно раза в 1.5-2 от полной. Субъективно меня полная яркость слепит и некомфортно работать; а с пониженной терпимо.
ночной режим: Не путайте их. Включается только с кнопок. В него же переходит надпись [FUL].
****{Роман} Возможно, имеет смысл ещё уменьшить (пониженную) яркость.
******{Алексей} Мне тоже многовато этой яркости, но очччень проблематично. Если не лезть внутрь функции опроса АЦП -- получаются то, что есть: 2 режима пониженной яркости.

[Ich] - не вижу смысла подстраивать отображения данного параметра.
[Uin] - не вижу смысла подстраивать отображения данного параметра.
(эти 2 измерителя на входе такие же как ниже указанные измерители на выходе ВЦ, и важность их калибровки зависит от того, где Вам! захочется видеть "правду")
[Uac] - вообще не вижу смысла подстраивать отображения данного параметра, т.к. зарядка внутренних аккумуляторов работает чисто на железе.
[U ] - это важная калибровка, её необходимо оставить.
[I ] - эта калибровка менее важная, чем U. Но, может пригодиться.
**{Алексей} Там цикл. Настройка 2х параметров занимает столько же кода, сколько настройка всех 5, а может и больше (учитывая, что их можно ещё потом использовать выборочно). Только один (единственный) канал измерения калибровать будет чуть "дешевле".

{Роман} Если убрать режим настроек...
**{Алексей} Угу. Понаделаем параметров по умолчанию, и понабежит сразу толпа страждущих персональной сборки с каким-то эксклюзивным значением параметра. Нет уж, пусть сами настраивают.
{Роман} ...и оставить в калибровках только [U ] и [I ], то высвободившееся место можно использовать для калибровки шага изменения напряжения в режиме [ЗАР]. А лучше всего, по умолчанию, в теле прошивки, принять этот шаг равным 10 мВ. Т.к. изменения в каждом из подрежимов режима [ЗАР] небольшие. Да и ускоренная прокрутка работает отлично.
**{Алексей} Не высвободится место. А шаг 10 мВ я бы тоже дефолтным оставил, только тогда придётся прокрутку ускорять. Мне и сейчас еле хватает терпения из режима А3 докрутить до напряжения 1.4 В.
С другой стороны, этот вопрос с Николаем решался: (между 10 и 100 сошлись на 50), так что прикроюсь его авторитетом.
****{Роман} Очень жаль. 6ка получилась законченной для этого железа; я не представляю, чего ещё добавить. Может имеет смысл выпустить еще один вариант прошивки, с шагом 10мВ ?
******Цитата: Роман, не горячитесь, у нас альфа версия (006 - v0.0 build 6), вы - 1й тестер, всё в самом начале; мы стандартно проходим все этапы разработки ПО, - рано жалеть! ошибок и багов может еще навылезать, по железу планируется апгрейд, да и новый МК... попросите лучше не личную прошивку, а корректный EEPROM у Алексея, правильно составленный им самим на 10 мВ, внутри той функциональности, что он уже описывал в 6 версии, - просто надо правильно написать значение с нужным сдвигом, - и прошейте его; и вообще,
надо было послать разработчику свой EEPROM файл, он же не телепат, пусть сам увидит своими глазами, что вы там зашили в свой ВЦ. ошибки бывают до того детские даже у самых крутых профессионалов, что потом смеяться будем вместе.
18. пожелания разработчика, To-do список:показать

{Алексей} ещё в копилку пожеланий к прошивке:
- прямой и/или обратный отсчёт времени в режиме зарядки
- измерение закачанных А*ч и Вт*ч в аккумуляторы
- при отключении зарядки по времени, сообщать об этом на индикаторе (сейчас FUL)
- добавить возможность выхода из режима зарядки без перезагрузки МК

Фантазии по железу:
- придумать возможность регулировки яркости индикатора через встроенный ШИМ МК. Получим плавную настройку яркости без дополнительного мерцания и сложностей в программной реализации
- добавить пищалку/пьезик для возможности звуковой сигнализации о событиях, например, окончании зарядки
**{Николай} Здоровые они по размерам. Только в более мощный.
****{Алексей} Ну почему же здоровые? Пьезик очень даже небольшой, он меньше миллиметра в толщину. Можно клеить на крышку, и пружинками с платы подключаться. Так в часах делают, например в моей электронике-55.
- а что если кинуть ещё один проводок с неиспользуемой ноги на кнопку включения? Хотя сейчас уже не знаю для чего это было бы нужно, т.к. режим зарядки заработал.
**{Николай} Это было бы полезно, чтобы отключать только преобразователь и не дергать всю схему. Чтобы все работало заведомо корректно и не было гонок и гаданий "выключится-не выключится". Также, можно в таком варианте организовать поддержание заряда на заряжаемом аккумуляторе, когда возможно возобновить зарядку при снижении напряжения на акк.
- отображать зашкал для значений превышающих диапазон измерителей (U>17.6, I>2.2 ...)
**Цитата: можно зажигать все точки, т.к. цифры могут прыгать, что бы "зашкал" не менялся с цифрами уже показывающими верхний предел; а так цифры будут просто стоять, а точки как светофор, будут сообщать - перегрузка, измеритель врет.
****{Алексей} Можно зажигать. Но это чревато путаницей с режимом зарядки, когда точки мигают.
Я вполне допускаю, что зашкал может быть не постоянным, и визуально выглядеть как мигание в режиме зарядки.
Я себе это представляю по принципу мультиметров. Например, зажигать цифру "1" в первом разряде, и гасить остальные. Или, как вариант, рисовать минусы вместо цифр.


Последний раз редактировалось: LaleksUi (Сб 28 Янв, 2017 8:59), всего редактировалось 4 раз(а)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
LaleksUi




Зарегистрирован:
Nov 25, 2016
Сообщения: 32
Откуда: Кишинёв, Молдова

СообщениеДобавлено: Чт 19 Янв, 2017 3:54    Заголовок сообщения:
 Ответить с цитатой

сборка с 1,2,3,4,5,6,7,8- страницы
правки L1,L2,N,L,L,L3.

История Разработки.
условные обозначения:показать

[...] - элементы управления на ВЦ, экран, кнопки, крутилки, рычажки, джамперы, разъемы.
{Николай, nik34} - Автор аппаратной части, собственно электроники ВЦ6, радиомастер.
{Александр, alsegor} - Автор первоначальной прошивки ещё для ВЦ5, программист.
{Алексей, Lex} - Автор новой прошивки для ВЦ6, программист.
{Роман, RomaST} - Роман, первый тестер.
**,****,****** - вложенность диалогов в сложной беседе.
выделения цветом:
темно-красный: требуется комментарий/разъяснение разработчика. призыв к пользователю задуматься.
темно-синий: желательно обратить внимание.
ярко-синий: требуется обратить внимание.
светло-серый: неважное или второстепенное замечание или отсылка. (для удобства чтения можно выделить текст мышкой)
серый: чуть более важное, чем неважное; и всегда второстепенное замечание.
разработка:показать

Схема подключения контроллера, делителей АЦП:показать


МК только измеряет напряжение в заданном канале, кроме случая работы в режиме [ЗАР] (зарядника). В этом случае он дополнительно подает сигнал остановки работы (единица) на ножку 15 (pb3, mosi).
По каналу termo просто подается плюс питания, если будет низкий уровень, то МК подаст сигнал отключения на ножку 15, решив, что сработал термодатчик. (этот кусок в программе не нужен, т.к. сейчас термозащита контроллер не использует.)
Pou лучше мерять в единицах Вт. Заодно исчезнет индикация мощности без нагрузки:показать

{Алексей} ноги растут от ненулевых значений тока на холостом ходу. Либо в них поправку или минимальный порог вводить, либо тогда и ток округлять до единиц сильно превосходящих миллиамперы. Иначе это похоже на лечение симптомов вместо болезни.
{Николай} Ненулевые показания тока не убрать, т.к. это свойство микросхемы измерителя. Но можно убрать ненужное разрешение, оно не увеличивает точность. все должно быть согласовано: грубому датчику - достаточная степень округления. Лишнее мелькание цифр раздражает, они уже не значащие. разрешение и точность в 0.1Вт вполне устроит большинство.
**{Алексей} Давайте попробуем разобраться, из-за чего так происходит, вдруг можно немного компенисровать.
Моё предположение: для измерения тока используется токовый монитор, измеряющий напряжение на шунте в "+" шине. Ток его потребления и вносит нам дополнительную погрешность в измерения. И если этот ток как-то нормирован -- можно соответствующее значение вычитать из результата. Таким образом может получиться снизить разрешение измерителя до 10-20мА.
****{Николай} Там стоит токовый монитор с выходом по напряжению, а не току. MAX4372F, шунт 20мОм.
Если интересно, можете глянуть даташит на него. В общем, несколько процентов погрешности иметь будем.
Есть идея вычислять мощность входную/выходную/ещё какую:показать

{Алексей} Если по выходу всё очевидно, [I ] * [U ]; то для входной что перемножать, чтобы было юзабельно?
Например [Uac] * [Ich] даст мощность, текущую в аккумуляторы, но только при отсутствии дополнительной нагрузки [USB2] у понижайки.
{Николай} Входную мощность можно определить только косвенно, перемножив [Ich] на 5В (в режиме стабилизатора) или [Ich] * ([Uac] + 0.45В) (в режиме зарядника) и на 1.2 (как учет КПД импульсной части и выпрямителя). Но точность будет маленькая, т.к. ток меряется грубо и не калибруется (только если каждый для себя будет подгонять резисторы).
Можно программно скорректировать погрешность измерения тока выхода - там после примерно 1.5А ВЦ начинает завышать показания.
**{Алексей} Если завышение имеет высокую повторяемость на разных экземплярах и в разных условиях -- можно попробовать табличку пересчёта добавить. Завышает по причине нагрева шунта? (На плате есть нечто, выглядящее как шунт. Какую функцию оно выполняет?)
В описании контроллера упоминаются часы реального времени:показать

{Алексей} Кварца на плате я не заметил. Это значит, что с часами работать не получится? Полезо было бы иметь информацию о времени для подсчёта заряда/энергии.
{Николай} Кварца нет, используется внутренний RC-генератор контроллера, а он довольно грубый. Так что, с часами - пролет.
{Александр} Генератор наверняка будет плавать так как там RC цепь, но вот в каких пределах не проверял, не было необходимости, боюсь он и от экземпляра МК будет меняться, поэтому длительные задержки будут иметь высокую погрешность.
{Николай} Она будет равной точности RC-генератора. В конце-концов, точность нам большая и не нужна, даже 20% хватит с лихвой - это же, скорее, предохранительный таймер, он может быть очень грубым.
{Алексей} Мой вопрос был не понят. Я имел в виду нестабильность в рамках одного экземпляра. Если каждый пользователь откалибрует свой прибор через меню, насколько потом частота может гулять?
{Николай} Не знаю точно. Нужно брать datasheet на контроллер, там обычно указано.
{Роман} ...отключаемый таймер в режиме [ А ]. Чтоб можно было выбирать способ окончания заряда, либо по напряжению, либо по времени, либо по тому, что наступит раньше.
{Алексей} На практике, выйдет очень и очень приблизительный таймер, основанный на циклах программы, считающий "попугаев" (сравнимых с минутами), и в лучшем случае откалиброванный по моему экземпляру прибора. При таком подходе погрешность 10-20% вполне возможна.
{Николай} Да хоть 50% точность. Это таймер безопасности, его нет смысла делать точным.
Подробности работы режима ЗАР:показать

1.{Роман} Что происходит во время глюка и как это программно исправить, Николай, надеюсь, подробнее обяснит.
По сути, режим ЗАР отключает питание заряда внешних аккумуляторов при достижении нужного напряжения на этих аккумуляторах.
**{Николай} Совершенно верно. Только используется более сложный алгоритм с измерением напряжения без тока заряда и несколькими проверками, для исключения влияния помех.
1.{Роман} ...Достаточно оставить в этом режиме только одну функцию: возможность выбора напряжения отключения от 1.00В(нижний порог) до 16.00В, с шагом выбора 0.01В.
**{Николай} По сути дела, так и сделано. Только добавлен промежуточный выбор "для чайников", которые не знают на память, до какого же напряжения им заряжать. Поэтому и добавлены типа "1шт LiI0n", "2шт LiIon" и т.д.;
Разрешение АЦП в МК не позволяет мерять с таким (0.01В) малым шагом. Поэтому шаг 0.1В.
**{Алексей} чисто математически, разрешение АЦП = 1.1*16/1024 = 0,0171875 В. Или с учётом 16ти измерений с усреднением -- вообще 1.1/1024 = 0,001074219 В. Это если не учитывать калибровки, шумы, погрешность внутреннего источника 1.1В...
****{Николай} Если с циферкой 0.017 я еще могу согласиться, то с утверждением, что при большем количестве измерений мы увеличим точность - нет. По этой логике, если мы 500 раз померяем 2х позиционным индикатором какое-нибудь напряжение, то получим разрешение в 1/1000? Чудеса?
******{Алексей} Тут я рассуждал из соображений, что ошибка измерений младшего разряда подвержена равномерному распределению вероятности.
Например, если фактическая величина напряжения составляет 0,7 от младшего разряда, тогда мы должны получить примерно в 70% измерений большее значение, в 30% меньшее. Это идеализированная теория. А так да, пусть будет 0.02В. Можно в качестве шага выбрать 0.05.
**{Алексей} Но никто не мешает нижний порог изменить хоть сейчас. В данный момент там 4000 мВ.
****{Николай} Изменить, то можно, но классическая схема понижающего преобразователя не может иметь на выходе напряжение меньше, чем на ее входе (с точностью до падения на прямовключенном диоде). А у нас питание от 3 до 4.2В.
1.{Роман} ...Что бы корректно зарядить внешний аккумулятор на 100%, напряжение нужно мерять в момент отключения питания. Если мерять выход повышайки, получим недозаряд аккумулятора.
**{Николай} Это уже описывалось несколько раз. (глюк)
Если коротко, то чуть-чуть недозаряжает и отключается, не выдавая надпись [Ful].
Суть в том, что для исключения влияния внутреннего сопротивления заряжаемого аккумулятора, мы измеряем напряжение на нем, останавливая зарядный ток, временно отключая повышающий преобразователь.
В 5й версии сигнал МК на приостановку работы подавался на сам преобразователь и после снятия сигнала, работа преобразователя продолжалась. И только в конце, когда МК решал, что акк. уже заряжен, он писал [Ful] и выдавал сигнал остановки постоянно.
В 6й же, текущей, версии сигнал остановки с МК идет не на преобразователь, а в схему выключения (фактически, на кнопку [выкл]), соответственно он просто, тупо выключает ВЦ.
Ситуацию спасает, что кнопка [выкл] срабатывает с задержкой и при однократном измерении напряжения на заряжаемом акк. МК успевает снять напряжение с выхода, измерить напряжение на акк. и снова разрешить зарядку. Но в конце зарядки, прежде, чем окончательно отключиться, МК делает измерения несколько раз подряд и суммарное время оказывается большим и кнопка [выкл] успевает окончательно сработать и полностью выключить ВЦ.

{Алексей} В режиме зарядки, в теле основного цикла делается:
1. анализ напряжения (при зарядке тут же периодическое отключение выхода с включением на следующей итерации)
2. цикл по всем входам АЦП, в котором:
2.1 цикл по текущему входу АЦП (кол-во итераций=коэфф. деления +4 холостых), в котором:
2.1.1. одно измерение напряжения
2.1.2. опрос кнопок
2.1.3. отображение очередной позиции индикатора (из 3)
Иными словами, при измерении напряжения заряжаемых акк, выход пребывает в выключенном состоянии ровно одну итерацию основного цикла, пока работает измерение всех входов (та самая пачка).
КЗ в А1 и А2; и почти-невозможность зарядки меньше 3х AA акк:показать

{Роман}
В режиме А1 и А2 нет смысла, т.к. 1 или 2 NiMH вампирчик уводят в КЗ.
**{Николай}
В соседней теме:показать

{Николай} В ВЦ используется классическая схема повышающего преобразователя, которая в принципе, не позволяет ограничивать ток при напряжении на выходе ниже, чем на входе. НО, между выходом преобразователя и выходным разъемом стоит последовательный полевик (р-типа) для защиты от перепутки полярности. Это полевик и позволял иметь такую недокументированную возможность, как ограничение тока при низком выходном напряжении.
За счет чего это получалось? Этот полевик открывается при напряжении около 4В, поэтому, если схема регулировки тока в повышайке понизит напряжение на выходе повышайки до минимума, т.е. в реале ниже 4В, это последовательный полевик закрывается и ограничивает ток в нагрузку. Собственно таким образом и достигалась относительно безопасная регулировка тока при напряжениях ниже напряжения питания повышайки.
Почему же теперь идут сообщения о невозможности ограничить ток при низких напряжениях на выходе?
Дело в том, что в 5й версии ВЦ на выходе в защите стоял полевик типа IRFR5305, который имеет порог открывания 4В(макс). Этот полевик имеет сопротивление канала около 65мОм. Сейчас в 6й ВЦ ставлю полевик типа SUD50P06, который имеет более низкий порог - не более 3В, зато, сопротивление канала в 4 раз меньше, около 15мОм. Т.е., даже если схема повышайки опустила напряжение на ее выходе до минимума, то его все равно еще достаточно для открывания последовательного полевика и через него в нагрузку "шпарит" ток.
Если быть более точным, то этот порог открывания проходит где-то по границе минимального выхода повышайки, поэтому выходной ток зависит от уровня заряженности внутренних акк.
В общем, получается, что мы уменьшив резистивные потери на последовательном полевике, лишились регулировки тока при зарядке акк. с напряжением ниже, чем на внутренних акк. Т.е. эта недокументированная возможность стала негарантированной. Этим пришлось заплатить за некоторое повышение КПД.
Повторюсь, возможность негарантированная. Она зависит от типа использованного полевика и от разброса его напряжения включения. В старых моделях работала стабильно, сейчас - как повезет.
Также, кроме sud50p06 может стоять и p3506, у которого порог открывания выше, чем у sud50р06. В этом случае, скорее всего зарядка низковольтных акк. будет возможна. В общем, здесь без гарантий.
**Цитата:
Стало быть, при выкрученной в минимум ручке напряжения, прибор следует рассматривать, как защищённый [внутренний] аккумулятор?
{Николай} Фактически, да. Несмотря на то, что нет регулировки тока. При КЗ на выходе, во-первых, ток ограничивается сопротивлением последовательного полевика, когда он находится в режиме начала проводимости, т.е. не может пропустить большой ток, во-вторых, напряжение на акк. при большом токе тоже проседает, что еще более закрывает полевик. Т.е. даже если не влияет регулируемый ограничитель, ток все равно будет не слишком большим.
А, далее, этот ток разогревает полевик и срабатывает термозащита, которая его отключает. ну а дальше, цикл - вкл/откл, при поддержании температуры на полевике около 80гр.
Т.е. акк. мы защитили от КЗ.
**Цитата:
Насчёт грубого разрешения измерителя при калибровке плат могу предложить калибровочный вариант прошивки: Будут отображаться только 3 младших десятичных разряда во всех режимах измерений. Это позволит исключить погрешность отображения при калибровке.
{Николай} Нет, спасибо.
Мне что, больше делать нечего, как часами "ловить блох" с милливольтами? ВЦ все же не измерительный прибор, а всего лишь "блок питания на батарейках". И любой перфекционизм с точностями должен иметь границы, чтобы не превратиться в маразм. 2 цифры после запятой, как сейчас, вполне достаточно.
(кстати, Алексей, спасибо, стало гораздо удобнее настраивать).
я описал, почему не стоит надеяться на гарантированную зарядку аккумуляторов с напряжением ниже чем у внутренних акк. вампирчика. Поэтому не думаю, что в прошивке стоит плясать от этих низковольтных измерений.

**{Алексей} Лайфхак для зарядки аккумуляторов с напряжением ниже выходного:
в прошивке сохранена возможность установить напряжение зарядки внешних аккумуляторов от 1В, но в приборе не работает ограничение тока при низких выходных напряжениях...

Подключаем последовательно с заряжаемым аккумулятором резистор (можно переменный). Я пользовался лампочкой. (лампа накаливания - это бареттер, у неё меняется сопротивление в зависимости от тока (и накала), нужно чёткое понимание как эта схема подключения будет работать, не любая лампочка подойдет)
В результате имеем ограничение тока, а т.к. напряжение прибор измеряет при отключённой повышайке -- и корректное измерение напряжение окончания заряда через тот же резистор.
Таким способом мне удаётся заряжать 1 мизинчиковый аккумулятор, пусть и с низким КПД.
Разумеется, сопротивление и мощность резистора должны соответствовать требованиям режима работы.
(лайфхак - это что-то простое; а здесь неопределенность, сколько напряжения падало на резисторе, какое напряжение окончания заряда надо ставить в ВЦ, какое напряжение МК измерит через резистор, это же делитель, а у акк, особенно маленьких, бывает разное внутреннее сопротивление, это не просто; тут мультиметр нужен, что бы все правильно сделать, ИМХО, даже с пониманием как.
требуется более подробное описание, какой резистор взять для А1, какой для А2, какие напряжения окончания ставить в МК, все 4 случая надо описать: 1, 2 ААА, 1, 2 АА)


****{Роман} писал:
Николай, а как выйти из этой ситуации? Чего добавить к аккумулятору, чтоб зарядить его?
******{Николай} Купить USB зарядник для АА/ААА акк. (как пример, та же Литокала, что у меня на сайте)
Поставить резистор, чтобы ограничить ток до безопасного для 10 часовой зарядки. Правда, в этом случае, не будет контроля по напряжению, но он и не нужен, т.к. контроль будет по времени. И будет плохой КПД такой зарядки, т.к. половина энергии уйдет в нагрев резистора. (Это при зарядке 1 или 2х последовательных акк. на 1.2В, от 3х и более - будет штатная работа.)
Вопросы о первоначальной прошивке и апп. устройстве ВЦ6:показать

1. Максимальное измеряемое напряжение в 17.6В при максимальном заявленном пороге в 25В как-то не серьёзно. Не критично ли изменится погрешность, если делитель будет 23?
** Да, для канала [Uin] (измерения напряжения зарядки) коэффициент делителя логично будет поменять, там не нужна большая точность. (нужно перепаять резистор 15к на 22к в делителе перед АЦП МК)

2. Измерение для [Ich] опять же имеет делитель 16; 17.5А при максимуме в 3А -- как-то многовато...
** Величина напряжения, была подобрана чтобы можно было использовать первоначальную прошивку. Да, можно изменить номинал резистора, чтобы обеспечить большее разрешение в канале. Но, из-за низкой точности самого измерителя, гнаться за точностью при измерении смысла нет.
А, вообще, там нет делителя. просто резистор на который подается ток от измерителя тока.

3. А встроенный клокгенератор насколько сильно плавает от внешних факторов? Если его откалибровать -- для примерных измерений времени сойдёт?
** Десяток процентов, думаю. В разовом варианте, конечно, можно откалибровать, но в серии смысла не вижу, т.к. могут ставиться МК из разных партий, со своими разбросами.
А3. Генератор наверняка будет плавать так как там RC цепь, но вот в каких пределах не проверял, не было необходимости, боюсь он и от экземпляра МК будет меняться, поэтому длительные задержки будут иметь высокую погрешность.
**{Николай} Она будет равной точности RC-генератора. В конце-концов, точность нам большая и не нужна, даже 20% хватит с лихвой - это же, скорее, предохранительный таймер, он может быть очень грубым.

4. Подключённый датчик освещённости позволит изменять яркость индикатора в зависимости от окружающего освещения.
** А надо? Максимальную яркость задаем резисторами и программно можем только уменьшать, она и сейчас не слишком большая.

5. термометр позволит контролировать и выводить температуру внутри корпуса
** Она будет равна уличной, когда ВЦ не включен; все остальное время будет непонятная циферка (теплого корпуса).
Здесь смысл может быть только если МК будет при сильном нагреве прерывать работу выходного преобразователя, чтобы снизить среднюю мощность и нагрев. Но такой вариант во-первых, должен быть отключаемым - вдруг, какому-то гаджету не понравится такой режим, а, во-вторых, МК должен быть неотключаемым.

6. а если и кнопку включения на ногу МК повесить? Или могут быть ложные включения при инициализации контроллера?
** Тоже возможно. Как это сделано у всех "китайцев".
Но я как-то опасаюсь полностью завязывать работоспособность "железа" на программу - программные сбои наблюдаются гораздо чаще, чем отказы электроники.
** МК можно поручить некритичные вещи, например, фонарик, автовыключение при малом токе, внешний индикатор уровня, токовый индикатор и т.п. (теоретически, если пофантазировать, то можно заложить еще один МК для сервисных функций, а также под реализацию истинного МРРТ)
Но все это возможно в другой версии платы, с измененной разводкой. Сейчас в 6й версии в Вашем распоряжении остались только две свободные ноги на МК, к которым можно подпаяться и как-то задействовать.

7. Придётся аппетиты умерить немного на всякие дополнительные фичи, и аккуратнее писать. Видать, предыдущий автор прошивки на сишнике для большого компа писал немного.
С такими хотелками скоро на мегу88 переезжать придётся.
** А1-А4 - ответы Александра, автора первоначальной прошивки:
А1. Я писал как можно проще, так как писал для возможности самостоятельной правки Николаем. Так как памяти хватало, то оптимизацию кода не делал.
А2. Пустые циклы измерения, сделаны для "стабилизации" сигнала на выбранном входе после переключения, так как сразу после переключения из за емкостей на входе АЦП есть еще "воспоминания" от ранее подключенного входа.
это мы с Николаем в процессе работы выяснили, без этого погрешность была высокая, даже китайский мультиметр показывал точнее.
**{Николай} Алексей, чего-нибудь лишнего не выкиньте...
****{Алексей} Я себе позволял только арифметику и логику работы править. Не касаясь физической части. Но любопытно. Стало быть, в контроллере один АЦП, физически коммутируемый на разные входы...
******{Николай} Наиболее вероятно. Давно в его описание не заглядывал, там должно быть указано.
А4. Мега 88 сейчас антиквариат и поэтому цена у него антикварная как и доставабельность, тем более Microchip купил не так давно Atmel и не известно что будет дальше.
Рекомендовал бы посмотреть в сторону STM32F0ХХ или STM32F1ХХ.
Если будет много кушать то есть серия STM32LХХХ.
**{Николай} На Али сейчас увидел 88ю по 34р в пачке из 100шт.

8. В исходном архиве 3 проекта: 1_0, 1_1, 1_2 -- в чём отличия, и зачем так много версий?
**{Александр} Надо смотреть какую версию шьет Николай. Давно это было уже не помню всех нюансов.
****{Алексей} сравнивал, Николай шъёт 1_2.

9. Анализа ноги с термодатчиком я в коде 1_2 (который взял за основу) не обнаружил. Он там есть?
**{Александр} Это по моему вообще потом убрали, но на первых версиях вроде использовали. А в коде не нашли упоминаний? Я вроде с комментариями писал.
****{Алексей} Вообще ничего в ней. Искал по слову "term" и "терм".

10. Можно ли на плату запаять 88, и залить в него прошивку от 48? Без дополнительных телодвижений. atmega88 бы как раз на хотелки хватило.
**{Александр} Судя по документации цоколевка одна и та же, можете и 168 мегу поставить, плату переразводить не надо.
Ошибки индикации напряжений конца заряда в р. 3AP:показать

**решено.** в 4 прошивке: За 100% теперь берётся 1400 мВ. (см. описание 4 прошивки). (за никель и свинец отвечает одна и та же, "никелевая" константа (предыдущий разработчик сэкономил на таблицах с процентами), расчет для свинца: "5 никеля = 3 свинца", для свинца стало 2.33В).

{Николай} при установке напряжения конца заряда в [ЗАР], последняя цифра всегда 7, если увеличивать напряжение из режима [L3.7] или 4, если начали с [L7.4].
Если начинать с режима [Р12] и дальше уменьшать напряжение, то все нормально, показывается 0 в последнем разряде и изменяется с шагом 0.1В.
**{Алексей} В программе протабулированы напряжения и соответствующий им процент заряда для АА аккумулятора.
1120, //5%
1150, //10%
1180, //20%
1200, //30%
1220, //40%
1240, //50%
1270, //60%
1300, //70%
1330, //80%
1360, //90%
1390. //100%
За 100% берётся 1390 мВ. Есть таблица коэффициентов, на которые умножается эта величина, чтобы получить конечное напряжение зарядки:
3, //L3.7
6, //L7.4
9, //L11
3, //AA3
4, //AA4
6, //AA6
8, //AA8
10, //A10
5, //P6
10 //P12
Например, для 3.7В мы получаем начальное значение 4170 мВ, отображается как 4.17 (с шагом подстройки 0,1В). Отсюда 7ка. По старому стилю -- это 4.1В, т.е. незаметно было.
Соответственно Р12 13900 мВ с тем же шагом => не проявляется.
Можно:
- при установке обнулять десятки мВ
****{Николай} обнулять если будет шаг 0.1В
- сделать шаг 10 мВ и ускоренную установку долгим нажатием
****{Роман} Шаг 10мВ и ускоренная прокрутка, это лучший апдейт будет!
******{Николай} ага, и точность измерителя не более 0.1В
- подправить табличные значения? на какие?
- округлять до 100мВ?
****{Николай} Да, если не делать ускоренную прокрутку.
А, вообще, можно и 50мВ сделать. Хотя это уже точнее, чем гарантирует измеритель, но иногда бывает удобно чуть-чуть добавить напряжение зарядки.
Объективной необходимости нет, но для удовольствия. 50мВ достаточно.
********{Алексей} Значит сделаем 50 мВ и ускоренную прокрутку. Для тестеров шаг 10мВ.
**********{Николай} Да. Спасибо.

****{Николай} А с какого потолка взяты эти таблицы? Почему 1.39В, а не 1.4, например? У меня при зарядке 1.2В акк. полная зарядка была при 1.45В. Причем, это напряжение зависит от температуры, старости аккумулятора, может от производителя.
******{Алексей} Если потолок не Ваш, значит он где-то у Александра. Мне таблицы достались по наследству. Могу лишь предположить, что поскольку шкала используется одновременно для никеля и свинца, то там некие усреднённо-безопасные значения.
********{Николай} Если брались величины из прошивки, то, значит, эти цифры давал я. На самом деле, они немного занижены, чтобы гарантированно не испортить пользователю аккумуляторы, пусть и недозарядив их.
Так что, в небольших пределах их можно менять.
**********{Алексей} У меня были мысли в качестве конечного напряжения зарядки использовать округлённое вниз до кратности шагу перестройки. Но если 1390 дотянуть до 1400 -- автоматически пропадают и некруглые значения при перестройке и необходимость округления.
************{Николай} Сделайте как проще. В небольших пределах пороги можно менять.
****{Николай} ...Тем более, как описано по ссылке выше, сейчас зарядка 1.2В аккумуляторов не гарантируется совсем. Вернее, не гарантируется ограничение тока. (по причине других элементов относительно 5й версии).
******{Алексей} Это тут никак не влияет, в таблице коэффициенты начинаются от 3 (3*1390мВ).

**{Алексей} режим зарядника [FUL] качественно не изменился, но требуется подгонка временных коэффициентов]
****{Роман} Мои опыты показали, что в данной версии ВЦ6 временные коэффициенты надо оставить как в версии 003. Режим реально и удачно заработал. Недозаряд совсем незначительный.
напрашивается программная калибровка по нескольким точкам:показать

{Николай} У каждого экземпляра ВЦ точность измерителя напряжения подгоняется индивидуально и может отличаться на 50 милливольт и более совершенно спокойно. Тем более, что при подстройке у меня шаг на индикаторе 0.1В (100мВ).
Конечно, стараешься подогнать поточнее, но, как уже писал, характеристика измерителя в МК нелинейна и если настроить абсолютно точно, например при 10В, то на 5В он будет занижать показания, а на 15В - завышать. Примерно на те же 50...100мВ.
**{Алексей} Ну прямо напрашивается программная калибровка по нескольким точкам... Но это уже, пойдёт в список пожеланий к прибору с обновлённым контроллером.
Не проводили экспериментов, насколько сильно плавает погрешность от внешних условий? Имеет ли вообще смысл её компенсировать?
****{Николай} Нет, не проводил. Не вижу большого смысла.
****{Роман} Проводил. Мой экземпляр занижает напряжение на 1.25% при 4В, на 1.5% при 8В и 1.6% при 10В. Температура, степень заряженности внутренних акб и наличие/отсутствие внешней зарядки на эти цифры не влияют. (RomaST, здесь вы говорите "занижает", но далее по времени, ваш ВЦ уже "завышает" относительно мультиметра, это ОШИБКА, нужна коррекция)
Имеет смысл изначально точно калибровать, либо вводить индивидуальную програмную коррекцию.
******{Алексей} На измерения может влиять температура микросхемы контроллера и шунтов. Не проверили влияние влажности. Что можно сделать сейчас -- это персонально подправить формулу пересчёта отсчётов АЦП в милливольты. Нелинейность компенсировать пока не выйдет.
происхождение и суть коэффициента 1100 (.100):показать

{Роман}Алексей, вы сможете для моего ВЦ собрать прошивку, в которой напряжение на выходе ВЦ будет отображаться на 1.25% ниже, чем отображается сейчас? Т.е. сейчас ВЦ показывает 5.37В, а мультиметр 5.30В. Хотелось бы добиться максимального схождения. А самое главное, чтоб откорректированные показания использовались в режиме ЗАР, чтоб точнее определять напряжение окончания зарядки. (нужен вариант с шагом 10мВ).
**{Алексей} Сейчас формула для вычисления следующая:
U = (16*Uadc*1100) / 1024;
где Uadc -- 10-битное значение, измеренное АЦП,
16 -- неизменяемая константа (коэффициент аппаратного делителя напряжения).
Эти трогать нельзя.
Остальными двумя можете поиграться:
1100 -- максимальное измеряемое напряжение АЦП, мВ
1024 -- собственно, те самые 10 бит.
Давайте, что там вписать вместо них.
Только учтите, что деление здесь целочисленное. Обычное деление с остатком, как в школе. Остаток теряется.
И все промежуточные результаты вычислений ни при каких условиях не должны выходить за рамки диапазона [0..65535].
****{Роман} А вот так можно?
U = 0.9879*(16*Uadc*1100) / 1024
(эта цифра (0.9879), получена при делении [U на мультиметре] на [U на ВЦ6], или наоборот...).
******Цитата:
константу 0.9879 можно представить в виде 1000/1012=0.9881;
например автор - умножает на 1100 и делит на 1024.
но важно спросить у автора, какую из его цифр подгонять: 1100 или 1024.
********{Алексей} Предпочтительнее, конечно, 1100. Т.к. деление на 1024 можно ускорить, заменив сдвигом на 10 бит.
******Цитата:...подгоняем 1100, это пропорция:
(1.0000- исходный коэффициент автора по-умолчанию)
1.0000 - 1100/1024
0.9879 - х/1024
получаем:
(1100*0.9879/1024)/1.000=х/1024, => х=1100*0.9879, = 1086.69
округляя, проверим:
0.9879*1100/1024=1,061220703125
1.0000*1087/1024=1,0615234375, 0.0003(0273) - это наше отклонение в 4 знаке после запятой.
1087 - наш коэффициент, в меню при настройке цифру 1[100] уменьшим до 1[087].

********{Алексей} Есть идея именно это значение [1100] хранить как калибровочный коэффициент в 2х байтах [0..65535], и позволять его изменение в пределах, ну скажем, [1000..1200], остальные значения считать некорректными и инициализировать значением 1100.
**********{Николай} Да, пожалуй хватит +-10%. Хотя ток измеряется иногда и с большей погрешностью, но это не такой уж и важный параметр.
Пятая прошивка и её калибровки:показать

{Николай} Для надежности можно калибровать [Uin] и токовые.
U и Uас смысла не вижу, т.к. они подгоняются в "железе", которое сбойнуть не может (уже обсуждали). Это для основного варианта. Для желающих, можно дать версию, где калибруются и эти каналы тоже.
**{Алексей} Если пользователь не калибровал соответствующий канал, то с высокой долей вероятности в EEPROM по этому адресу будет лежать значение 65535 (как я понял, на стёртой или не записанной флешке все биты=1. На моём экземпляре, во всяком случае, так.), которое выходит за допустимые пределы, и будет игнорироваться. Следовательно, 5я версия без дополнительных телодвижений будет себя вести как не использующая программные калибровки.
Что же случится, если на флешке окажется какой-то мусор, и 2-байтное число оттуда неким чудом попадёт в разрешённый диапазон +/-10%?
- Для канала [Uac] будут не вполне корректно отображаться проценты. Неудобно, но на работе устройства никак не скажется, т.к. этот канал работает чисто на отображение.
- Для [U ] (он же напряжение зарядки) может быть больше неудобств.
При завышаемых показаниях можем иметь некоторый недозаряд аккумуляторов. Чуть хуже, но ничего не испортится.
Занижаемые критичнее, хотя опять же, при отображаемых 5В будем иметь не более 5.5 -- в принципе почти в пределах допусков, многие устройства нормально прожуют.
Иными словами, проблемы могут возникнуть только с очень капризными по напряжению питания устройствами, при наличии мусора во флешке, при его удачном попадании в установленные рамки (200 допустимых значений из 65536). Всё это должно произойти одновременно. Да, за заниженные показания будут отвечать только половина из тех 200 значений.
Считаю такую вероятность достаточно низкой, чтобы оставить в общей прошивке функцию калибровок штатно.
****{Николай} Если будет измерение занижаться, то это сильно критично потому что это уберет возможность зарядки литиевых аккумуляторов, которые не терпят перезаряда.

Попробуйте погонять 5ку с секундомером на разных экземплярах. За начало отсчёта берётся момент начала зарядки. Это когда отображение с устанавливаемых минут переключается на проценты зарядки. Интересует разброс погрешности. У меня 1 минута отсчиталась идеально точно (с точностью до реакции пальца на кнопке часов. Показания на секундомере 01:00.1).
Непредвиденное стирание EEPROM:показать

{Алексей} Вопрос к знатокам:
Можно ли при прошивании прошивки не стирать содержимое EEPROM с данными?

Хм. Написал прошивку для калибровки. изменил калибровку канала. Сохранил в EEPROM. Шью рабочую прошивку, и получаю девственно чистый EEPROM.
вывод avrdude:
Код:
# avrdude -p m48p -c stk200 -V -U flash:w:./vamp.hex:i
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.00s
avrdude: Device signature = 0x1e920a
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "./vamp.hex"
avrdude: writing flash (3254 bytes):
Writing | ################################################## | 100% 0.84s
avrdude: 3254 bytes of flash written
avrdude: safemode: Fuses OK (E:01, H:DD, L:62)
avrdude done.  Thank you.

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

В частности, чем может грозить запрет на стирание флешки перед записью обновлённой версии прошивки, особенно если новая меньше старой? Если тот "мусор", что останется в конце никак не повлияет на работу новой микропрограммы -- можно для желающих покалиброваться добавить предупреждение, чтоб не стирали.
**{Николай} Жаль, я тут не помошник.
По стиранию, у меня при прошивке стоит галочка "стирать все перед прошивкой". Т.е. определяется программой, через которую идет заливка.
Вспомнился один из приемов повышения надежности ПО, это заполнить всю оставшуюся память после окончания программы командой перехода в начало. Такая защита от зависания, если программный счетчик собьется и мы улетим за "край" программы, то автоматически перебрасываемся в начало.

Порядок калибровки:
1. При переключении каналов, после имени канала выводится [Cbr]-calibration-(калибровка).
2. Кнопка [вверх] включает калибровку данного канала:
(отобразится [AdJ]-adjust-(настройка), потом имя калибруемого канала, далее измеряемая величина).
3. [вверх] -- увеличить значение, [вниз] -- уменьшить.
4. Если несколько секунд не трогать кнопки, увидим вопрос [St?]-set? (нужно ли сохранить?), и подсказку [Y_^].
Если ничего не нажали, через несколько секунд вернемся в настройки п.3.
5. Пока светится [Y_^] (читать как: нажать [вверх] для ответа Yes-Да) -- кнопка [вверх] сохранит значение (отобразится [SEt] -- данные сохраняются);
кнопка [вниз] отменит сделанные настройки, и ничего не сохранит! увидим [Abr]-аbort-прекратить.
6. Если в п.5 выбран любой вариант ответа (т.е. нажата какая-нибудь кнопка) -- выйдем из режима калибровки и вернемся в п.1.

Сброс калибровки канала на значение по умолчанию:
после п.1. (когда отображается [Cbr]):
2a. Кнопка [вниз] сбрасывает калибровку данного канала в "заводское" значение [dEf]-default-поумолчанию.
3a. не трогая кнопки, вернёмся из режима калибровки в п.1.

Калибровочная прошивка: 005с (201612-09).
{Алексей} это специальная обрезанная, калибровочная версия 5й прошивки, без режима зарядки, без отображения "виртуальных" каналов [P ], [Pou], [3AP], заточенная именно на калибровку.
Использовать прибор можно и с ней, но неудобно будет; т.к. меню калибровки "вмешано" в основной режим листания каналов.
Подводный камень при использовании калибровочной прошивки я описал, или см. выше "Непредвиденное стирание EEPROM".
**{Роман} Порядок действий с калибровальной прошивкой:
1) Ставим калибровальную прошивку
2) Калибруем каналы
3) Записываем на комп содержание eeprom
4) Ставим рабочую версию
5) Записываем сохраненный в пункте 3) eeprom на ВЦ
И получаем 5ую версию, с необходимыми калибровками.
****{Алексей} Всё верно.
Если в программаторе есть возможность запретить стирание флешки перед записью, можете попробовать с этим запретом выполнить п.4, и обойтись без п.3, п.5.
О контроллере ATmega48 и его прошивках:показать

Цитата: можно впоследствии написать патчер с "мышинным" интерфесом и выпускать только одну стандартную прошивку; и таким образом унести калибровку на комп - то есть у компа ВЦ, мультиметр, инструкция (что где измерить тестером); все измеряем, вписываем полученные значения в прг-патчер, и получаем нашу индивидуальную прошивку, шьем, радуемся...
**{Алексей} В контроллере используется 2 отдельные флешки:

1. 4Kbytes of in-system self-programmable flash (ATmega48)
Endurance: 75,000 write/erase cycles
Туда пишется прошивка.
Используется файл с расширением .hex

2. 256 Bytes EEPROM (ATmega48)
Endurance: 100,000 write/erase cycles
в неё пишутся настройки, калибровки и прочие редко меняемые данные, которые нужно сохранить при отключении питания. Из неё v5 читает калибровочные коэффициенты.
Используется файл с расширением .eep

Шить их нужно отдельно. Это сделано, чтобы индивидуальные особенности экземпляра не затрагивали код прошивки.
патчер НЕ НУЖЕН! При большом желании можно на компе генерить файл .eep и шить его в EEPROM, не затрагивая прошивку, но программу для генерации пусть пишут желающие.

Формат файла прошивки описан тут:
http://microsin.net/programming/pc/intel-hex-file-format.html
https://ru.wikipedia.org/wiki/Intel_HEX
{Николай} о программной калибровке:показать

Может остановиться и "не ломать зря копья"? Я не вижу в ней необходимости. Поясню:
1. Точность в каналах [U ] и [Uac] подгоняется напаиванием резисторов. И в дальнейшем, мне эту работу всё равно придется делать независимо от того, есть калибровка или нет, т.к. считаю, что "железные" настройки надежнее, чем "программные".
2. Точность измерителя напряжения в МК довольно грубая - если точно откалибруем для 5В, то на 15В многие ВЦ покажут завышение на 0.1В (100мВ) - это много. А мы калибровкой хотим добиваться точности в единицы и десятки мВ. Зачем?
**{Алексей} Надо бы снять характеристики измеренных и реальных значений во всём диапазоне измерения. Интересно посмотреть на них для каждого канала, что из себя представляют. Может быть где-то будет прямая с постоянным смещением, которое можно вычесть.
****{Николай} Во многих экземплярах ВЦ (присутствует) не изменение наклона (характеристики), и не сдвиг нуля, а именно нарушение линейности - т.е. мы можем иметь занижение показаний при 5В и завышение около 15В.
Калибровки же по одной точке нам могут помочь только с коррекцией наклона характеристики АЦП.
У нас уже базовая точность около 1%, и с чем люди будут сравнивать, если у большинства домашних мультиметров точность не сильно выше? Т.е. чтобы калибровать надо иметь хороший вольтметр, которого у людей и нет.
3. Калибровка добавит дополнительных затрат времени, а не уменьшит их. Причем, как написал выше, не давая внятного результата.

Я не против её, но пусть ей занимаются те, кому приспичит получить суперточность, хотя бы внешне, т.к. реально её не будет; либо точность при каком-то конкретном напряжении.

Что касается, того, где "держать" программу настройки в компе или в МК, то я бы предпочел в МК (типа "все своё ношу с собой"), чтобы для изменений не требовались дополнительные устройства (комп и программатор), которых у людей может и не быть.
**{Алексей} Полностью согласен, но не раньше апгрейда МК, в мегу48 уже не помещается.
****{НИколай} Я могу заложить более мощный МК, но руки до разработки дойдут реально только через несколько месяцев (декабрь 2016).
К тому же, хотелось бы задействовать еще 3 свободных ноги в МК.

Можно делать две прошивки - "базовую" и "альтернативную". Базовую шить в ВЦ всегда, а альтернативу выложить здесь для желающих поразвлекаться.

LaleksUi, Вы правы в том, что стратегически надо все делать на компе. Но это верно, если рассматривать массовое производство ширпотреба. Я же пока не хочу отказываться от идеи минимального программного вмешательства в работу "железа", как более надежного варианта.
Если уж переходить на программу, то перебираться совсем и выкидывать треть "железа".
Пример файла с калибровочными коэффициентами, подробно (для 005):показать

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

Файл в формате "intel hex", в том же, что и прошивка.
005.eep (201612-12).
Формат такой:показать

Код:
struct {
  U32 magic;   // на это пока не обращаем внимания
  U16 coeff[CHAN_NUM];  // тут массив интересующих нас коэффициентов
}
// здесь U32 -- беззнаковое 32-битное значение, 4 байта.
// U16 то же, только 16-битное, 2 байта или 4 16ричных разряда в текстовом файле.

Индексы интересующих параметров в массиве:
Код:
 IND_ICH     0   //old uin
 IND_UIN     1   //old usl
 IND_UAC     3
 IND_U       4
 IND_I       5
Для наглядности, чтобы было видно где менять, в файле все коэффициенты заполнены соответствующим индексом:
элемент №0 0x1000
элемент №1 0x1101 (в файле ищем 0111)
элемент №5 0x1505 (в файле ищем 0515)

Для примера рассмотрим калибровку канала [U ] (измерение напряжения на выходе, он же отвечает за напряжение заряжаемых аккумуляторов).
1) Измеряем реальное напряжение U0 при измеренном прибором U1;
2) вычисляем коэффициент как X = U0 / U1 * 1100 и округляем к ближайшему целому
3) ищем среди индексов нужный канал, в нашем примере IND_U = 4
4) Ищем в файле 4+2*4 = 12й байт (считаем начиная с 0). 12й и 13й будут содержать младшую и старшую часть нашего коэффициента соответственно.
4а) если не поняли предыдущее -- находим в файле символы 0414
5) Допустим, в п.2 у нас получилось 1189. Вооружаемся калькулятором и переводим в 16-ричную систему: 1189 = 0x04A5.
6) Записываем значение в позицию, полученную в п.4, начиная с младшего байта: A504
7) Повторяем с п.1 для остальных каналов, которые нужно откалибровать.
8) Оставшиеся значения в файле-примере желательно заменить на FF, хотя и не обязательно. Это для каналов, калибровка которых не требуется
9) шьём в EEPROM прибора получившийся файл .eep. Естественно, версия 5 (или 6) должна быть уже прошита.
10) радуемся повысившейся (или испорченной, тут уж как сделаем) точности прибора.

Цитата:
контрольную сумму в конце строки как вычислять?
**{Алексей} avrdude вычисляет:
Код:
# avrdude -p m48p -c stk200 -V -U eeprom:w:./vamp_myq1.eep:i
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.00s
avrdude: Device signature = 0x1e920a
avrdude: reading input file "./vamp_myq1.eep"
avrdude: ERROR: checksum mismatch at line 1 of "./vamp_myq1.eep"
avrdude: checksum=0x00, computed checksum=0x0f
avrdude: read from file './vamp_myq1.eep' failed
avrdude: safemode: Fuses OK (E:01, H:DD, L:62)
avrdude done. Thank you.
computed checksum=0x0f
Два раза в секунду ярче вспыхивает одна из 3 цифр:показать

Цитата: ...есть одна особенность, которая выглядит слегка странно, - 2 раза в секунду ярче вспыхивает один из 3 индикаторов (цифр)...
**{Алексей} Меня тоже этот момент немного напрягает. Связано с разным количеством вычислений между отображением разрядов. Это ещё "причёсанный" вариант, почти незаметно. Тут уж компромисс относительно размера программы.
Скрытый текст:показать

главный цикл программы
- вычисление виртуальных вычисляемых каналов, таких как Pou, P
- цикл по каналам АЦП
- - получение калибровки измерителя
- - цикл по количеству измерений для канала
- - - одиночное измерение
- - - отображение очередной++ цифры
Цитата: в режиме настроек цифры каналов горят ярче, чем названия каналов; и нет совсем этого 2х/сек вспыхивания, когда пониженная яркость включена [L.G.H.]; это особенно заметно когда цикл заканчивается и последняя 100 сменяется на проценты заряда акк основного меню, цифры сразу тускнеют.
выходит не все меню подчиняются регулировке яркости, это тоже специально сделано?
**{Алексей} Я бы сказал, что это НЕ сделано из экономии и за ненадобностью. Индикация тесно переплетена с остальной программой, и яркость регулируется выключением индикатора в разных её частях.
В меню настроек отображение реализовано иначе. Используются те же функции, что для отображения [ %] при включении. Эти функции ничего кроме отображения не делают, и при отображении задаваемого времени в режиме [ЗАР] тоже они используются.
матчасть:
http://www.radiokot.ru/start/mcu_fpga/avr/15/
http://we.easyelectronics.ru/Shematech/dinamicheskaya-indikaciya_2.html
гуглить по словосочетанию "динамическая индикация".

Цитата: может можно сделать для индикатора буфер, оверлей, и управлять только яркостью буфера, что бы на всё влияло, и вычислительная нагрузка на сам индикатор прямо влиять перестанет, чтобы избавится от вспыхиваний?
**{Алексей} Может и удастся. В следующей жизни. Завести, например, таймер с прерываниями для индикации. А лучше бы вообще яркостью управлять с ноги контроллера, регулируя ток или напряжение на индикаторе. Мерцание убого выходит. (совсем нет, главное сделать это мерцание равномерно-периодичным, способ вполне годный; забавно выглядит "ночной" индикатор в темноте, цифры "плывут" внутри корпуса, а если потрясти кистью, то отпечатываются "в воздухе", а светодиоды размазываются).

Цитата: этот фъюз, который делит частоту на 8 нашего МК, верно я понимаю - в 8 раз медленнее работает процессор? может убрать его, но организовать именно показывание с нормальной скоростью, а вычисления на полной скорости производить?
**{Алексей} По фьюзам я вообще не в теме.
****Цитата: фьюз это программный (виртуальный) аналог джампера; и есть фьюз который замедляет наш проц в 8 раз, (и в меру моего понимания, это сделано для того, что бы цифры не слишком быстро скакали!) может вернуть процу полную скорость, а экран как-то иначе стабилизировать, (мне как-то неприятно, что наш проц искусственно замедлен), да и вы говорили что вспыхивания из-за порядка вычислений. (см. подробнее о фьюзах: в разделе "программатор..." в п.п.3 "Меня программатор спрашивает про какие-то фьюзы..." ответ Николая).
******{Алексей} ускорим проц -- будет кушать больше электричества, и (насколько я понял) снизится точность АЦП.
А вспыхивания из-за неравномерности вычислений в алгоритме. Решается увеличением программы.
Замеченная нелинейность, статистика:показать

{Алексей} (15дек16) заметил тенденцию:
Канал [Ich] в диапазоне 0,07-1,8А завышает средние показания на 50мА. Линейность нарушается только при токах сравнимых с величиной погрешности.
Канал [I ] вообще нелинейный, показания в разных участках диапазона то завышаются, то занижаются.
{Роман} (15дек16) Мне нужно изменить только параметр U. Т.к. ВЦ показывает бОльшее напряжение, чем есть на самом деле, что ведет к недозаряду аккумуляторов. по достижении 4.2В ВЦ отключит зарядку в режиме ЗАР. Когда реальное напряжение становится 4.15В, вц считет, что оно равно 4.20В. И выключается. Соответственно, получаем недозаряд.
Цитата: (27дек16) время у меня спешит: при зарядке [L7.4] - при установке на 5 мин, выключалась на 4:32 по секундомеру мобильника, на 10 мин - выкл на 8:46, (но я проводил только один раз этот эксперимент).
**


Последний раз редактировалось: LaleksUi (Пт 27 Янв, 2017 8:13), всего редактировалось 5 раз(а)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
LaleksUi




Зарегистрирован:
Nov 25, 2016
Сообщения: 32
Откуда: Кишинёв, Молдова

СообщениеДобавлено: Чт 19 Янв, 2017 3:54    Заголовок сообщения:
 Ответить с цитатой

резерв 04
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
LaleksUi




Зарегистрирован:
Nov 25, 2016
Сообщения: 32
Откуда: Кишинёв, Молдова

СообщениеДобавлено: Чт 19 Янв, 2017 3:55    Заголовок сообщения:
 Ответить с цитатой

резерв 05
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
LaleksUi




Зарегистрирован:
Nov 25, 2016
Сообщения: 32
Откуда: Кишинёв, Молдова

СообщениеДобавлено: Чт 19 Янв, 2017 3:55    Заголовок сообщения:
 Ответить с цитатой

резерв 06
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Lex




Зарегистрирован:
Nov 23, 2016
Сообщения: 337
Откуда: 61

СообщениеДобавлено: Чт 26 Янв, 2017 18:19    Заголовок сообщения:
 Ответить с цитатой

Цитата:
==
это: программатор, самостоятельная прошивка, калибровка->8. Настройка шага изменения U в режиме ЗАР в .eep (для 006):
вы писали: Величина смещения искомого байта = 22 = 0x16.
сверху строка от 5 прошивки eep, снизу от 6.
в меру понимания обычного человека, я просто посчитал байты, и как видите, ваша правка на 23 месте:
Код:

:20000000FFFFFFFF001001110212031304140515061607170818FFFFFFFFFFFFFFFFFFFF16
01 2 04 08 10 16 20 22
:20000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0FFFFFFFFFFFFFFFFFF15

в чем я ошибаюсь? или вы ошиблись, а Роман вообще бред несет?
это надо правильно вписать в инструкцию.

В меру понимания обычного человека -- всё верно. Но есть нюанс. Люди в жизни оперируют натуральными числами (1, 2, и т.д.), а в программировании счёт часто с нуля начинается.
В данном примере у байта помеченного "01" смещение 0. То есть он смещён относительно начальной позиции на 0 байт.
А 23е место относительно начального (1го) смещено, соответственно, на 22 байта. То есть тут я посчитал правильно.
А ошибся я запутавшись в обратном порядке байт, (в строке выше ..0818.. следует интерпретировать как число 0x1808). И переставил местами части одного байта (10=) 0x0A->0xA0 (=160) -- этого делать не нужно.

Правильный ответ: вместо A0 должно быть 0A

Написал маленькую программку, и скормил ей файлы с калибровками. Вышло следующее:

файл-пример из поста http://mobipower.ru/modules.php?name=Forums&file=viewtopic&p=6462#6462
Код:
 sizeof=25
magic = 0xFFFFFFFF
cal[0]=0x1000
cal[1]=0x1101
cal[2]=0x1202
cal[3]=0x1303
cal[4]=0x1404
cal[5]=0x1505
cal[6]=0x1606
cal[7]=0x1707
cal[8]=0x1808
volt_step = 0xFF
fullres = 0xFF
lowlight = 0xFF


Файл с шагом 10 мВ для RomaST. Обсуждался начиная отсюда: http://mobipower.ru/modules.php?name=Forums&file=viewtopic&p=6509#6509
Код:
 sizeof=25
magic = 0xFFFFFFFF
cal[0]=0xFFFF
cal[1]=0xFFFF
cal[2]=0xFFFF
cal[3]=0xFFFF
cal[4]=0xFFFF
cal[5]=0xFFFF
cal[6]=0xFFFF
cal[7]=0xFFFF
cal[8]=0xFFFF
volt_step = 0xA0
fullres = 0xFF
lowlight = 0xFF

Согласно увиденному, шаг перестройки должен быть равен 0xA0=160мВ. Т.е. да, я промахнулся на один шестнадцатеричный разряд. На остальные настройки повлиять не должно -- они заполнены значением по умолчанию.

Чтобы окончательно докопаться до истины -- можно проверить на реальном железе. Шаг в режиме ЗАР должен измениться на 0.16В, и это должно быть единственным изменением.
Если кому [не лень/есть время] -- проверьте и отпишитесь.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Lex




Зарегистрирован:
Nov 23, 2016
Сообщения: 337
Откуда: 61

СообщениеДобавлено: Чт 26 Янв, 2017 18:22    Заголовок сообщения:
 Ответить с цитатой

Предлагаю здесь писать по принципу один вопрос=один пост. Чтобы удобнее было чистить решённые вопросы.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Lex




Зарегистрирован:
Nov 23, 2016
Сообщения: 337
Откуда: 61

СообщениеДобавлено: Пт 27 Янв, 2017 23:00    Заголовок сообщения:
 Ответить с цитатой

Цитата:
темно-красный: требуется комментарий/разъяснение разработчика. призыв к пользователю задуматься.
Я, как разработчик, в этом путаюсь. И начинаю комментировать призывы к пользователю задуматься. Может быть, имеет смысл части не решённые с разработчиками выделять иначе?
Скрытый текст:показать

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




Зарегистрирован:
Nov 23, 2016
Сообщения: 337
Откуда: 61

СообщениеДобавлено: Сб 28 Янв, 2017 1:17    Заголовок сообщения:
 Ответить с цитатой

Цитата:
после надписи [FUL] кнопки будут заблокированы, и в ВЦ6 будут работать только фонарик, входные разъёмы (понижайка и зарядка внутр. акк) и [USB2], но только если ОН НЕ подключён параллельно [USB1] (джампером внутри корпуса). То есть, при воткнутом питании, например СолБат, на [USB2] будет напряжение от понижайки. В случае параллельного подключеня [USB] разъёмов, [USB2] будет отключён от понижайки, и НЕ будет активен.
Здесь можно попробовать упростить.
Основная суть в следующем:

При отображаемой надписи [FUL] прибор фактически работает с нажатой кнопкой выключения.

Всё остальное напрямую следует из данного факта. То есть не включается (не работает) повышайка. Все остальные части прибора функционируют без изменений. В этом режиме контроллер, пока включён, по сути "держит" кнопку выключения.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Lex




Зарегистрирован:
Nov 23, 2016
Сообщения: 337
Откуда: 61

СообщениеДобавлено: Сб 28 Янв, 2017 1:37    Заголовок сообщения:
 Ответить с цитатой

В инструкции и сообщениях часто мелькают числа в формате 0xNNNN. Считаю, что это требует пояснения, особенно для людей, далёких от программирования.
Так вот, приставка 0x у чисел указывает, что данное число записано в шестнадцатеричном (hexadecimal, hex) формате. Вместо традиционного десятичного.
В качестве примера:
0x0 = 0;
0x9 = 9;
0xA = 0xa = 10;
0xF = 15;
0xFF = 255;
0x100 = 256.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
LaleksUi




Зарегистрирован:
Nov 25, 2016
Сообщения: 32
Откуда: Кишинёв, Молдова

СообщениеДобавлено: Сб 28 Янв, 2017 7:32    Заголовок сообщения:
 Ответить с цитатой

Lex писал(а):
Цитата:
после надписи [FUL] кнопки будут заблокированы, и в ВЦ6 будут работать только фонарик, входные разъёмы (понижайка и зарядка внутр. акк) и [USB2], но только если ОН НЕ подключён параллельно [USB1] (джампером внутри корпуса). То есть, при воткнутом питании, например СолБат, на [USB2] будет напряжение от понижайки. В случае параллельного подключеня [USB] разъёмов, [USB2] будет отключён от понижайки, и НЕ будет активен.
Здесь можно попробовать упростить.
Основная суть в следующем:

При отображаемой надписи [FUL] прибор фактически работает с нажатой кнопкой выключения.

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

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

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




Зарегистрирован:
Nov 25, 2016
Сообщения: 32
Откуда: Кишинёв, Молдова

СообщениеДобавлено: Сб 28 Янв, 2017 7:57    Заголовок сообщения:
 Ответить с цитатой

Lex писал(а):
Цитата:
темно-красный: требуется комментарий/разъяснение разработчика. призыв к пользователю задуматься.
Я, как разработчик, в этом путаюсь. И начинаю комментировать призывы к пользователю задуматься. Может быть, имеет смысл части не решённые с разработчиками выделять иначе?
Скрытый текст:показать

если я правильно понял исходную фразу: и места, где требуется разъяснение, и места, где пользователь должен сам подумать, выделяются однотипно.
здесь нет противоречия, просто это одно и тоже, увиденное с разных сторон.
инструкция существует долго, разработчики заняты, пользователю остаётся только самому задумываться, если профессионалы (пока ещё? а когда? ожидание = "8 на боку"...) не доделали.

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

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




Зарегистрирован:
Nov 25, 2016
Сообщения: 32
Откуда: Кишинёв, Молдова

СообщениеДобавлено: Сб 28 Янв, 2017 8:12    Заголовок сообщения:
 Ответить с цитатой

для инструкции нужно пересчитать контрольную сумму для исправленной строки:
было:
:20000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0FFFFFFFFFFFFFFFFFF15

стало:
:20000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0AFFFFFFFFFFFFFFFFFF??

какая сумма? Лекс, проверьте пожалуйста, только у вас объективно сейчас есть возможность это сделать, Роман не прочитал моего письма до сих пор, Николай говорил что ему пока некогда тестировать, ко мне программатор не прилетел ещё; а в инструкцию нужно правильный пример вписать, готовый к употреблению. это же пару минут - запустить утилиту - пусть выдаст чексумму. Спасибо.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
LaleksUi




Зарегистрирован:
Nov 25, 2016
Сообщения: 32
Откуда: Кишинёв, Молдова

СообщениеДобавлено: Сб 28 Янв, 2017 8:23    Заголовок сообщения:
 Ответить с цитатой

Лекс, это:
http://www.mobipower.ru/modules.php?name=Forums&file=viewtopic&p=6546#6546
будет реализовано на МК ?

интересно для инструкции.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
LaleksUi




Зарегистрирован:
Nov 25, 2016
Сообщения: 32
Откуда: Кишинёв, Молдова

СообщениеДобавлено: Сб 28 Янв, 2017 10:42    Заголовок сообщения:
 Ответить с цитатой

начало нашей беседы с Лексом:
Цитата:
**{Алексей} Лайфхак для зарядки аккумуляторов с напряжением ниже выходного:
в прошивке сохранена возможность установить напряжение зарядки внешних аккумуляторов от 1В, но в приборе не работает ограничение тока при низких выходных напряжениях...

Подключаем последовательно с заряжаемым аккумулятором резистор (можно переменный). Я пользовался лампочкой. (лампа накаливания - это бареттер, у неё меняется сопротивление в зависимости от тока (и накала), нужно чёткое понимание как эта схема подключения будет работать, не любая лампочка подойдет)
В результате имеем ограничение тока, а т.к. напряжение прибор измеряет при отключённой повышайке -- и корректное измерение напряжение окончания заряда через тот же резистор.
Таким способом мне удаётся заряжать 1 мизинчиковый аккумулятор, пусть и с низким КПД.
Разумеется, сопротивление и мощность резистора должны соответствовать требованиям режима работы.
(лайфхак - это что-то простое; а здесь неопределенность, сколько напряжения падало на резисторе, какое напряжение окончания заряда надо ставить в ВЦ, какое напряжение МК измерит через резистор, это же делитель, а у акк, особенно маленьких, бывает разное внутреннее сопротивление, это не просто; тут мультиметр нужен, что бы все правильно сделать, ИМХО, даже с пониманием как.
требуется более подробное описание, какой резистор взять для А1, какой для А2, какие напряжения окончания ставить в МК, все 4 случая надо описать: 1, 2 ААА, 1, 2 АА)
я написал Николаю вопрос:
Цитата:
Лекс предложил поправку
к вашим словам, в разделе разработка:
Цитата:
можно добавить комментарий (с согласия автора), что контроль будет. Через резистор. Программа сразу будет работать в режиме "окончания заряда", измеряя напругу на отключённом выходе.
в спойлере КЗ в А1 и А2.
(я сомневаюсь в его образовании на эту тему, и он это не опровергает);
уже давно прожеванная тема опять всплывает, процитирую:

Цитата:
****{Роман} писал:
Николай, а как выйти из этой ситуации? Чего добавить к аккумулятору, чтоб зарядить его?
******{Николай} Купить USB зарядник для АА/ААА акк. (как пример, та же Литокала, что у меня на сайте)
Поставить резистор, чтобы ограничить ток до безопасного для 10 часовой зарядки. Правда, в этом случае, не будет контроля по напряжению, но он и не нужен, т.к. контроль будет по времени. И будет плохой КПД такой зарядки, т.к. половина энергии уйдет в нагрев резистора. (Это при зарядке 1 или 2х последовательных акк. на 1.2В, от 3х и более - будет штатная работа.)
что это значит "контроль будет. Через резистор." ?

я заинтересован добавлять в Инстр. только проверенные конкретные алгоритмы, обобщенные описания не годятся для повторения другим человеком, у него будут другие условия, другие (меньшие) знания, результат не повторится в общем случае. поэтому я стремлюсь к конкретике.

этот пост (сп. КЗ в А1 и А2), там где в середине:
Цитата:
**{Алексей} Лайфхак для зарядки аккумуляторов с напряжением ниже выходного:
он красный от моих замечаний, и у нас с Лексом вышел вялый спор, недопонимание на эту темy;
что же будет с другими пользователями, они, в большинстве своём, не будут умнее нас. значит история повторится.

рассудите нас с Лексом, но не ответ мне нужен, а попробуйте дать мне "ответ пользователю", что бы я красное мог убрать из статьи, что бы было решение от радиомастера. вы сможете такое обобщение сделать, что бы повторяемость обеспечивалась.

конечно, если у вас будет время ответить мне, я буду рад поднять свою планку образованности, но я не требую от вас этого. мне нужно пользователю понятно разъяснить, прожевать.

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

просто непонимание объективно присутствует, и мне хочется это разжёвано внести в Инструкцию. Спасибо.
вот подготовленный для публикации ответ Николая:
Цитата:
Цитата: как подключить внешний резистор для зарядки 1.2В аккумуляторов от вампирчика?
(пользователю, который не знает, как использовать закон Ома, этот метод не подходит. следует купить какой-нибудь USB зарядник для пальчиков, например Литокаала и т.п., который нормально зарядит АА/ААА и сделает это с большим КПД, чем с использованием резистора).

**{Николай} Резистор нужен, чтобы ограничить ток, который потечет в аккумулятор. Его сопротивление можно выбрать используя формулу закона Ома:
R = U / I
где:
U - разность напряжений между выходом ВЦ (или любого другого БП) и акк;
I - желаемый ток заряда.
Т.е. если мы выставим на ВЦ напряжение 4В, а на аккумуляторе будет около 1.5В, и захотим заряжать током 0.1А, то номинал резистора будет (4-1.5)/0.1= 25 Ом.

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

Поэтому, этот вариант подходит только тем, кто и так сам сообразит, что делать.
Тем более, если можно купить какой-нибудь USB зарядник для пальчиков. Например, те же Литокаала и т.п., который нормально зарядит АА/ААА и сделает это с большим КПД, чем с использованием резистора. И без "танцев с бубном".

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

Лекс предложил лампочку для стабилизации тока заряда аккумулятора, чтобы он изменялся в процессе заряда в меньшей степени, чем с использованием резистора. Но так ли нужна нам эта стабилизация тока, который и так меньше безопасного? И если резистор подходящего номинала в загашнике еще можно найти, то лампочку - вряд ли.
В общем, лишние заморочки.
****{Алексей} Николай по физике рассуждает верно, но он забыл учесть одну особенность алгоритма контроллера (измерение при выключенном выходе), которая сильно упрощает жизнь. (далее?...)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
nik34



Зарегистрирован:
Mar 23, 2008
Сообщения: 2820
Откуда: Москва

СообщениеДобавлено: Вс 29 Янв, 2017 11:25    Заголовок сообщения:
 Ответить с цитатой

Цитата:
{Алексей} Николай по физике рассуждает верно, но он забыл учесть одну особенность алгоритма контроллера (измерение при выключенном выходе), которая сильно упрощает жизнь. (далее?...)

Прошу прощения, я, действительно, забыл, что у нас измерение напряжения на заряжаемом акк. идет при снятом токе. Тогда, согласен, можно использовать внешний резистор.
---
Давно не заглядывал в тему. Такое ощущение, что она все усложняется и нормальному человеку, не программисту-перфекционисту разбираться в этих дебрях проблематично. По моему, и сам Алексей Lex уже про себя матерится, что связался. Wink Сам я уже давно потерял суть обсуждения.
Я, например, сейчас в оставшиеся платы ВЦ6 ставлю 2ю версию прошивки, и предполагаю, что большинство она вполне устроит.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Lex




Зарегистрирован:
Nov 23, 2016
Сообщения: 337
Откуда: 61

СообщениеДобавлено: Вт 31 Янв, 2017 16:29    Заголовок сообщения:
 Ответить с цитатой

LaleksUi писал(а):
для инструкции нужно пересчитать контрольную сумму для исправленной строки:
было:
:20000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0FFFFFFFFFFFFFFFFFF15

стало:
:20000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0AFFFFFFFFFFFFFFFFFF??

какая сумма? Лекс, проверьте пожалуйста, только у вас объективно сейчас есть возможность это сделать, Роман не прочитал моего письма до сих пор, Николай говорил что ему пока некогда тестировать, ко мне программатор не прилетел ещё; а в инструкцию нужно правильный пример вписать, готовый к употреблению.

Ищу в яндексе intel hex. Открываю статью https://ru.wikipedia.org/wiki/Intel_HEX
читаю:
Последний байт в записи является контрольной суммой. Рассчитывается так чтобы сумма всех байтов в записи была равна 0.

Количество байт в записи у нас 0x20, то есть 32. Из них 31 байт равны 0xFF.
Код:
31*0xFF + 0x0A = 0x1EEB
. -- обрезаем до одного байта, выходит 0xEB
Туда же прибавляем оставшиеся байты
Код:
0x 20 00 00 00
.
Код:
0x1EEB + 0x20 + 0x00 + 0x00 + 0x00 = 0x1F0B


Теперь ищем, чем дополнить 0x0B, чтобы младший байт был равен 0x00
Код:
0x100 - 0x0B = 0xF5
-- Полученное должно быть нашей искомой контрольной суммой.

альтернативный вариант (кому как понятнее):
Код:
0x00 - 0x0B = 0xFFFFFFF5
(так мне калькулятор выдал). Берём отсюда один младший байт: 0xF5

итого, строка полностью:
Код:
:20000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0AFFFFFFFFFFFFFFFFFFF5


Цитата:
это же пару минут - запустить утилиту - пусть выдаст чексумму. Спасибо.
Утилита без подключенного МК не работает. Развинчивать лишний раз ну совсем нет желания -- у моего нового экземпляра корпус закрывается проблематично

Последний раз редактировалось: Lex (Вт 31 Янв, 2017 16:43), всего редактировалось 3 раз(а)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Lex




Зарегистрирован:
Nov 23, 2016
Сообщения: 337
Откуда: 61

СообщениеДобавлено: Вт 31 Янв, 2017 16:51    Заголовок сообщения:
 Ответить с цитатой

LaleksUi писал(а):
Лекс, это:
http://www.mobipower.ru/modules.php?name=Forums&file=viewtopic&p=6546#6546
будет реализовано на МК ?

интересно для инструкции.
при достаточном размере флешки -- реализовать не проблема.
Все параметры (напряжения и токи) измеряются всё время, пока включён МК.

Главное не забывать, что МК доступа к движку автоотключения не имеет -- стало быть работать будет независимо от его положения.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Lex




Зарегистрирован:
Nov 23, 2016
Сообщения: 337
Откуда: 61

СообщениеДобавлено: Вт 31 Янв, 2017 18:03    Заголовок сообщения:
 Ответить с цитатой

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

Моя лампочка 12В 4Вт из поворотника каких-то жигулей. При номинальном напряжении её потребляемый ток 4/12 = 0.33 A. При меньшем падении напряжения на лампочке -- ток через неё всё же уменьшается, хотя и медленнее чем на резисторе по закону Ома.
При зарядке никелевых аккумуляторов необходимо добиться лишь чтобы ток заряда был безопасной величины как для ВЦ, так и для заряжаемых аккумуляторов.
В моём случае максимальный ток через лампочку не превышает 0.35-0.4А даже при максимальном положении регулятора напряжения ВЦ. Эта величина безопасна при зарядке даже мизинчиковых NiMh (750mAh) аккумуляторов. Для пальчиковых запас ещё больше.

При зарядке одного мизинчикового аккумулятора от ВЦ с выкрученным в минимум регулятором напряжения -- ток через лампочку получается порядка 70 мА.

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

Теперь о резисторе.
Для безопасной зарядки резистор необходимо правильно рассчитать. Для этого используем закон Ома ( I = U/R ) и формулу для мощности P = U*I.
Для начала по закону Ома находим необходимое сопротивление, исходя из безопасного тока для зарядки аккумуляторов.
U принимаем как разность минимально возможного напряжения на выходе ВЦ (показания канала U при выкрученной в минимум ручке напряжения, в моём случае 3.9В) и номинального напряжения на заряжаемом аккумуляторе (для 1 банки NiMh можно принять 1.3В)
Получаем U = 3.9-1.3 = 2.6В. Это минимальное напряжение на рассчитываемом резисторе. (т.к. ручка выкручена в минимум).
Далее берём безопасную величину тока для аккумулятора. Я стараюсь не заряжать аккумуляторы током, выше 0.5C (где C -- ёмкость аккумулятора в A*ч). Так как времени всегда мало -- я выбираю ток выше рекомендуемых 0.1C.
Для мизинчикового аккумулятора ёмкостью 750мА*ч ток желательно ограничить 350мА = 0.35А.
R = 2.6В/0.35А = 7.43Ом.
По таблице номиналов резисторов -- ближайшими будут 7.5 для 5% точности и 8.2 для 10%. Меньшие значения выбирать не советую, т.к. это увеличит ток относительно рассчётного.

Далее, что необходимо рассчитать -- мощность, рассеиваемую на резисторе.
P = 2.6В*0.35А =0.91Вт
Не следует забывать, что мы рассчитываем режим с минимальным напряжением на выходе ВЦ. При его повышении получим соответствующий рост напряжения на резисторе и рассеиваемой им мощности.
Получили минимальную необходимую мощность резистора 1Вт. По опыту скажу, что резистор МЛТ, работающий на мощности близкой к максимальной можно сравнить с небольшой печкой, об которую легко обжечься. Так что в данном случае лучше брать резистор не менее 2 Вт. Будет горячий, но терпимо.

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

Теперь можно посчитать КПД при зарядке.

На выходе ВЦ у нас Pou = U * I = 3.9 * 0.35 = 1.365Вт
В аккумулятор вкачивается 1.3 * 0.35 = 0.455Вт
КПД = 0.455/1.365 = 0.33 = 33%.
Оставшимися 0.91Вт мы греем атмосферу, приближая глобальное потепление.


P.S. На практике безопасные токи зарядки варьируются плюс-минус лапоть, их величину каждый для себя принимает сам. Так что не стОит относиться к моим цифрам, как к истине в последней инстанции.
И для универсального варианта можно рассчитать резистор, обеспечивающий минимальный из необходимых ток заряда (при мин. напряжении ВЦ, которое в примере 3.9).
- далее выкручиваем ручки тока и напряжения в минимум
- следя за каналом I (на всякий случай), увеличиваем напрядение ручкой U. ВЦ при этом должен уйти в ограничение тока на уровне минимального, согласно ручке I. Можно накрутить U до максимума, Фактическое напряжение в режиме ограничения тока меняться не должно (тут спорный момент, пусть Николай прокомментирует)
- увеличиваем ток до необходимого ручкой ограничения тока, включаем режим зарядки аккумуляторов, и наблюдаем процесс.

Ввиду большой неопределённости в ЛС по поводу лампочки (нельзя вот просто так взять и пользовать), попробую ещё раз разжевать:
На ней пишут её номинальное напряжение и ток, либо напряжение и мощность. Это значит, что при номинальном напряжении через неё будет течь соответствующий ток, либо будет выделяться соответствующая мощность (при этом ток из мощности вычисляется по формуле выше).

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

P.P.S. Коли уж просили поподробнее -- получайте. Хотя и сомневаюсь, что многие прочтут полностью)


Последний раз редактировалось: Lex (Вт 31 Янв, 2017 18:36), всего редактировалось 2 раз(а)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Форум об электронике, зарядке аккумуляторов, солнечных батареях, вопросы по теме "сделай сам".
Начать новую тему   Ответить на тему    Список форумов -> Электроника Часовой пояс: GMT + 3
На страницу 1, 2  След.
Страница 1 из 2

 
Перейти:  
Вы можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прилагать файлы к сообщениям
Вы можете скачивать файлы


Форум Mobipower.ru - о солнечных батареях, аккумуляторах, зарядных устройствах, самоделках
 

Загрузка страницы: 0.26 секунды