Восстановление лазерного нивелира

Сгорел процессор на лазерном нивелире по причине замены штатных трёх батареек по 1,5В на три аккумулятора по 3,7В. Название процессора затёрто и прошивки нет.

Было решено оставить аккумуляторы по 3,7В, включенные параллельно для увеличения ёмкости.

Плата переделана по размеру как было в оригинале.

По количеству ног (14) выбор пал на ATTiny44A (хотя пойдёт и ATTiny24A).


Для стабилизации напряжения (5 Вольт) установлен модуль DC-DC на MT3608.

Для зарядки аккумуляторов добавлена плата на TP4056.

Защита аккумуляторов от разряда установлена BMS плата, хотя можно установить универсальную зарядку на той же TP4056 с защитой.

Печатная плата нарисована на LayOut5. Файл прилагается в конце статьи. Все подключения подписаны. Выход стабилизатора на 5В подключается к "5В OUT", земля к "GND", аккумулятор к разъёму "3...5V", датчик вертикального положения к клеммам "L" через крепёжные отверстия к шасси прибора, выключатель питания к нарисованному тумблеру на монтажной плате, лазеры и кнопки подписаны. Лазеры включаются логическим нулём. Нажатие кнопок тоже соответствует логическому нулю.
Лазеры подключены катодами напрямую к портам PB0 (Horizontal), PB1 (Vertical1), PB2 (Vertical2), PA6, PA7 (Vertical3). Порты PA6, PA7 включены параллельно для увеличения тока. Аноды лазеров подключены к +5В. Если нужно увеличить ток лазеров, то можно добавить транзисторы. Так как транзисторы будут инвертировать сигнал, то в коде программы нужно поменять:
#define OFF 1
#define ON 0
на
#define OFF 0
#define ON 1
и заново откомпилировать проект.
Кнопки подтянуты к логической единице. Кнопка Door подключена к PA2, Horizontal - к PA3 и Vertical - к PA4.
Динамик подключён через транзистор к порту PA5.
Измерение заряда аккумуляторов происходит только при включении устройства через АЦП на порту PA1. Во время работы этот порт перестраивается на вход компаратора для контроля разряда аккумулятора до критического значения 3,3В. Порог задаётся делителем на резисторах 24кОм и 12кОм на выводе PA1 относительно встроенного опорного напряжения 1,1В.
Для контроля вертикального положения лазерного уровня имеется датчик наклона, который соединён с шасси устройства и подключается к плате управления на порт PA0 через отверстия крепления на печатные площадки. При допустимом наклоне на этом порту будет присутствовать логический ноль. При отклонении от допустимого наклона от горизонтали на этот порт подаётся +5В.
Программа написана на Си в среде CodeVision V3.12. Архив проекта прилагается в конце статьи. Фьюзы для процессора ATTiny44A (Fuses: LOW=0x62; HIGH=0xDC) указаны в исходном тексте программы. Если ничего не менять, то в архиве имеется hex файл прошивки.
Алгоритм управления находится в файле инструкции по эксплуатации.
Печатная платаИсходник на СиИнструкция по эксплуатации