Собрал данное устройство .Подключаю АК.батарею и ток отображается 00.6А.Все настройки произвел по описанию.Автор подскажите что не так с lm358.Перем.рез.по току уменьшить не удаётся.
Проверяй всю цепь измерения тока. При подключенной батарее
без начала заряда ток всегда 0.0А, и как не крути подстроечник ничего не измениться, через шунт ток не течёт. А АЦП у тебя меряет какое-то падение на шунте, по сути это заряд не идет, а падение напряжения есть, т.е. вся цепь измерения неисправна. Если плату разводил сам, то может выводы контроллера перепутал. Может тиристор приоткрывается, КЗ (т.е. сопля) где-то между проводниками. Может не работаем преобразование -5В (что скорее всего). Гадать можно долго, проверяй железо.
Добавлено after 50 minutes 23 seconds:Всем привет.
Пошел маленький дождишко, лодырям отдышка. Вот и у меня появилось время выложить свой вклад в общее дело.
Выкладываю исходник на С. Функционал полностью исходный + небольшие доработки (для себя, а там может кому и понравится).
Аппаратная часть идентична авторской, за одним исключением. У автора LCD 0802 (судя по фото и по исходнику), т.е. на 8 символов в строке, а у меня классический 1602, т.е. 16 символов в строке. Соответственно под него и сделано. У него 2 недостатка: 1-й - нет подсветки, что не сильно критично (поэтому на плате поставил 78l05, вместо 7805, такой мощный не нужен), 2-й - в нет кирилицы, поэтому все сообщения на аглицком. В некоторых словах сознательно сделаны ошибки и выброшены некоторые вспомогательные глаголы. Всё для того, что бы вместить в длину строки LCD.
Если все же кому нужно будет моё творение на LCD 0802 могу допилить.
Теперь о том, что дополнено:
1. У нас частенько выключают свет. Поэтому если такое случилось, после включения ЗУ перейдет в тот же режим в котором оно выключилось. Если был заряд, то с тем током, который был выставлен энкодером.
Если режим хранения, то он продолжится. Если был в режиме какой-либо ошибки, то сообщит что до выключения была ошибка, и будет ждать когда снимут клеммы с батареи.
2. Если подключаемая батарея убита и у неё напряжение меньше 9В, то заряжать не даст, сообщив об этом. Но если все же хочется заряжать такую батарею, то перед включением 220в удерживайте нажатым энкодер до первого сообщения на экране, блокировка будет отключена.
3. Если при какой-либо внештатной ситуации сработает WDT, что при нормальной работе не должно происходить в принципе, высветится сообщение об этом (типа BSOD в windows) и будет ждать когда снимут клеммы с батареи. Я долго думал сообщать или продолжить прерванный режим, не мог решить как поступить, выбрал сообщение.
Если у кого есть кирилица в LCD можете загрузить прошивку для неё.
Для настройки можно временно скомпилить и зашить пока настаивается с разкомментированным определением
#define _TUNE_ADC_, это даёт следующее. Значение напряжения и тока выводятся не преобразованными в В и А, а в значениях измеренными АЦП. Так можно точнее настроить. Например: измеряем напряжение мультиметром, допустим 12.26В () и переводим в значение АЦП = ЦЕЛОЕ(12.26 * 100 / 6) = 204. Для тока формула та же. После настройки зашиваем рабочую прошивку. Если измерение тестером до десятых, все это не имеет смысла делать.
Язык сообщений выбираем закомментировано или нет определение #define _RU_
Если разводке платы перепутали ноги энкодера (как я например), можно разрезать дорожки и запаять проводами, а можно скомрилить с разкомментированным определением #define _SWAP_ENCODER_BITS_.
Написано для кварца 8МГц, если ставите другой, то в определении зайте свою частоту кварца #define F_CPU 8000000UL. Все задержки будут пересчитаны под неё.
Ну и для понтов (как же без них), в процессе зарядки выводится прогресс-бар напряжения. Шкала растянутая от 9В до 14.4В.
Исходник на С, и прошивки для EN и RU прилагаю. Компилил в AtmelStudio 7.0, но думаю и в 6 и в 5 скомпилится без ошибок.
Фьюзы те же, как у автора.
Если что не так пишите поправлю или подскажу.
- Вложения
-
- z_m8_44780_1602.7z
- (21.95 KiB) Скачиваний: 795