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


Одно из возможных последствий неконтролируемого разряда.

Покупка первого автомобиля или мотоцикла является значимой вехой в жизни каждого человека, и особенно – инженера. Ведь кто еще кроме очевидных преимуществ своего нового железного коня сразу же обращает внимание и на неочевидные его недостатки? Кто тут же начинает размышлять на предмет всяческих усовершенствований и дополнений к стандартной комплектации? Конечно, если это автомобиль из верхнего сегмента, да еще и «модной» марки, то сначала может показаться, что в нем есть абсолютно все. Но как показывает практика, и в этом случае время опровергает первые впечатления. Если же покупается машина эконом-класса, то тут руки начинают чесаться буквально в первый же день!

Желание по-максимуму «нафаршировать» свой автомобиль разнообразными вспомогательными электронными устройствами вполне естественно. Однако вскоре после реализации всех этих планов, жизнь сталкивает автовладельца с суровой реальностью. Оказывается, что даже самые современные, построенные на новейшей элементной базе, устройства все равно довольно охочи до электроэнергии. А кажущаяся такой огромной автомобильная АКБ – вовсе не ядерный реактор и легко может «присесть» под тяжестью всех этих безобидных на первый взгляд потребителей за считанные дни.

Чтобы не растекаться далее абстрактными и гипотетическими ситуациями, перейду сразу к своей истории. После покупки автомобиля, первым было желание поставить в него регистратор. Это и было сделано в течение минимально возможного срока, практически полностью продиктованного скоростью доставки посылки с Aliexpress. Понятно, что штатное питание от прикуривателя было крайне неудобным, и регистратор быстро получил стационарное подключение к ближайшей линии бортовой сети через импульсный преобразователь 12/5v. А т.к. дело было, мягко говоря, не вчера, преобразователь этот был не чета современным, на свои собственные нужды, как оказалось впоследствии, он жрал целых 21 mА тока. Теперь прикинем, сколько могла кормить один только этот преобразователь новая и полностью заряженная АКБ емкостью 60 А·ч. Арифметика крайне простая и неутешительная.


Вот так за неполных четыре месяца не нагруженный ничем преобразователь высадит аккумулятор буквально «в ноль». Если же учесть, что у не совсем свежей АКБ емкость легко может оказаться вдовое меньшей, а заряд после городских покатушек – далеко не 100%, черный день легко наступает уже через месяц с гаком.

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

Идем далее, сам регистратор в режиме записи FHD@30fps потребляет от источника +5v почти 300 mA, что после преобразования с учетом КПД дает около 150 mА тока из бортовой сети. Допустим, что преобразователь заменен на современный, и посчитаем время разряда только этим током.


Чуть более двух недель, а на практике – дней десять. Теперь перспектива прикуривать (а возможно, и менять АКБ) неиллюзорно маячит после ближайшего отпуска или командировки.

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

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

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

В общем, за несколько недель пассивных раздумий окончательно оформилась идея устройства, которое должно контролировать напряжение бортовой сети и на основе этих данных управлять подачей питания на две группы потребителей: второстепенные (регистратор, USB-розетка) и основные (GPS-трекер и еще кое-что).

Как это могло быть сделано


Первые виртуальные прототипы устройства были «построены» на базе аналоговых компараторов LM393N и умели все, что изначально планировалось получить от устройства. Абстрактная схема получалась примерно такой.


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


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

Что вышло в итоге


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

В качестве сердца девайса просто напросился контроллер ATtiny13A, который кроме простоты в обращении и дешевизны, все еще выпускается в приятном для олдфага теплом ламповом DIP-корпусе. Изначально возможности даже такого маленького контроллера казались избыточными по всем фронтам, от количества входов/выходов до объема программной и оперативной памяти, однако аппетит, как известно, приходит во время еды. В результате, забегая вперед, скажу, что в конечном варианте при деле оказались все выводы микросхемы, а свободной программной памяти осталось не более двух десятков байт.

Для измерения напряжения бортовой сети от микроконтроллера требовался всего один вход, имеющий привязку к АЦП. Еще два логических выхода должны были управлять потребителями. В первую очередь после окончательного мысленного перехода на «цифру» возникло желание приспособить к делу два свободных GPIO, и решение не заставило себя долго ждать. Когда в очередной раз на морозе стартер крутил двигатель с плохо скрываемым надрывом, наличие термодатчика в схеме и алгоритме показалось очень кстати. В итоге второй АЦП был использован для измерения температуры. А чтобы терморезистор потреблял ток только тогда, когда это нужно, запитать его было решено от последнего оставшегося логического выхода.

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


Тут мы видим самый минимум деталей, и среди них ничего не подлежит какому бы то ни было «подкручиванию». Пробежимся кратко по основным моментам.

Для питания контроллеру нужно стабильное напряжение от 1.8 до 5.5 В, значит, в схеме должен быть стабилизатор, который понизит напряжение бортовой сети до необходимого уровня. С точки зрения экономии энергии может показаться, что тут место исключительно импульсному stepdown-преобразователю, но это только на первый взгляд. Дело в том, что ATtiny13A даже в самом-самом энергоемком режиме работы (частота 8 МГц, активное выполнение кода) потребляет не более 6 mА. В данной схеме же контроллер 99% времени находится в режиме глубокого сна и к тому же работает на частоте 1.2 МГц, в результате чего среднее потребление составляет ориентировочно менее 15 µА. Плюс примерно 80 µА на базовые токи управляющих транзисторов (если обе нагрузки включены). Ну и на малую долю секунды активируется питание терморезистора, что добавляет к среднему току около 25 микроампер. И вот ответ на вопрос «стоит ли ради нагрузки с потреблением не более 120 µA городить импульсный преобразователь?» кажется уже не столь однозначным. А если учесть, что мы имеем дело с аналоговыми измерениями, то однозначно не стоит. Поэтому был применен линейный стабилизатор LP2950, функциональный аналог популярного 78L05, но гораздо более экономичный. Этот преобразователь может дать до 100 mA тока на выходе, потребляя при этом на себя любимого не более 75 µA.

Делитель напряжения бортовой сети, защищенный стабилитроном и конденсатором, позволяет измерять напряжения до 15 В.

Я знаю, что сейчас на меня обрушится волна критики за такое решение, но будем объективны. Во-первых, не спутник разрабатываю, а во-вторых, нет такого одиночного фактора, который привел бы к катастрофе. Сопротивления плечей высокие, стабилитрон способен отвести гораздо больший ток, чем тот, который может потечь через делитель даже в самом пессимистическом сценарии. От высокочастотных импульсов, когда стабилитрону не хватает быстродействия, защитит конденсатор C2 (с резистором R7 создает ФНЧ с частотой среза всего 7 Гц). D1 и R6 в какой-то мере страхуют схему от отвала друг друга. Да и про линейность не нужно забывать, любой способ гальванической развязки в таком месте сделает теоретический расчет величин совершенно нереальным, придется калибровать как минимум прототип, а нам это не нужно.

Выходное сопротивление делителя в десять раз выше, чем рекомендуемые 10 кОм для источника сигнала АЦП, но благодаря конденсатору C2 проблем с измерениями не возникает.

Вообще, входное сопротивление цепей АЦП контроллеров AVR по даташиту заявлено не менее 100 МОм. Однако, тем не менее, тот же даташит рекомендует использовать источники с внутренним сопротивлением до 10 кОм. Почему так? Дело в принципе работы этого самого АЦП. Сам преобразователь работает по принципу последовательного приближения, а его входная цепь представляет собой ФНЧ из резистора и конденсатора. Получение 10-битного семпла производится итерационно и нужно, чтобы в течение всего времени измерения конденсатор был заряжен до полного измеряемого напряжения. Если выходное сопротивление источника слишком велико, то конденсатор будет продолжать заряжаться прямо в процессе преобразования и результат получится неточным. В нашем случае емкость C2 более чем в семь тысяч раз превышает емкость фильтра АЦП, а это значит, что при перераспределении заряда между этими конденсаторами при их параллельном включении в момент измерения, входное напряжение снизится не более чем на 1/7000, что в семь раз меньше предельной точности 10-битного АЦП. Правда, нужно иметь в виду, что работает такой трюк только для одиночных измерений со значительными паузами между ними, поэтому не стоит «улучшать» управляющую программу путем добавления в нее цикла для нескольких последовательных измерений с усреднением результата.

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

В качестве управляющих ключей используются силовые P-канальные MOSFET-ы любого типа с приемлемым сопротивлением открытого канала и максимальным напряжением сток-исток не менее 30 вольт. В приведенной выше схеме используются разные транзисторы. Так сделано потому, что им предстоит коммутировать разные напряжения и тип каждого из них подбирался под конкретные условия работы. Верхний транзистор должен быть более высоковольтным, а нижний должен по возможности иметь минимальное сопротивление открытого канала. Но, повторюсь, это решение продиктовано схемой включения устройства (см. выше), при другом включении требования к нижнему транзистору могут быть иными.

Для управления силовыми ключами используется пара одинаковых биполярных транзисторов. Сначала может показаться, что транзисторы эти лишние, но тут не все так просто. Полевые транзисторы с изолированным затвором начинают открываться не от любого напряжения нужной полярности на затворе, а лишь после достижения некоторого порогового уровня, который в даташитах фигурирует под названием “gate-to-source threshold voltage” и равен обычно 2..4 В. Теперь давайте просто посчитаем. Выходная цепь контроллера может формировать два логических уровня: логический «0» с напряжением, стремящимся к нулю; и логическая «1» с напряжением, стремящимся к питающему. При питании 5 вольт это будут напряжения около 0 и 5 В соответственно. В итоге при коммутации 12-вольтового источника, логический «0» на затворе создаст разницу напряжений исток-затвор 12 – 0 = 12 вольт, силовой транзистор открыт. Вроде все нормально, но вот логическая «1» с ее напряжение 5 В создаст между истоком и затвором напряжение 12 – 5 = 7 вольт, и силовой транзистор все равно останется открытым. Таким образом, пятивольтовый управляющий сигнал не может контролировать ключ, который коммутирует напряжение выше 7..9 вольт. Поэтому управляющие биполярные транзисторы фактически работают не столько сигнальными ключами, сколько усилителями, поднимающими управляющее напряжение с 5 вольт до напряжения бортовой сети.

Резистор в цепи базы каждого из управляющих транзисторов просто ограничивает ток выходов контроллера до достаточного для управления уровня. Их номиналы могут быть уменьшены в два-три раза без последствия для работы схемы.

Легко заметить, что управляющих транзисторов не было в аналоговой схеме на базе LM393N. Тут все дело в том, что выходной каскад выбранного компаратора построен по схеме с открытым коллектором, то есть его выход – это просто вывод коллектора оконечного транзистора. Такой принцип построения требует навешивать на микросхему дополнительные детали для создания нагрузки выходного каскада, но с другой стороны делает микросхему очень гибкой. Открытый коллектор позволяет компаратору управлять любым допустимым источником тока, а не только совместимым с тем, который обеспечивает питание самого компаратора.

Нужно сказать, что ограничение порогового напряжения силового MOSFET-а работает не только в сторону высоких напряжений, как сказано выше, но и в сторону низких. Ведь если минимальное напряжение открытия транзистора, скажем, 4 вольта, то при коммутации источника 3.3 В даже соединение затвора с землей не создаст между истоком и затвором нужной разности напряжений и транзистор останется закрытым. Так что 5 вольт – это, пожалуй, минимальное напряжение, которое можно надежно коммутировать выбранными транзисторами.

Настройка


Настройка устройства – это отдельный разговор. С одной стороны, в схеме нет ни одного настроечного элемента, но с другой, мы имеем дело с измерением напряжений с точностью не хуже 0.1 В. Как увязать все это? Тут два пути. Первый состоит в использовании резисторов R6, R7 и R8 с допуском не хуже 1% (а лучше 0.1%). Второй же предполагает использование обычных резисторов с обмером их реальных сопротивлений и коррекцией коэффициентов в исходном коде программы.

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

Расчет крайне простой и состоит из вычисления коэффициента деления резистивного делителя и пропорции перевода полученного результата в LSB при аналогово-цифровом преобразовании.


Ux – входное напряжение делителя;
Ru – сопротивление верхнего плеча делителя (на которое подается Ux);
Rd – сопротивление нижнего плеча делителя (которое соединено с землей);
Uref – опорное напряжение АЦП (т.е. напряжение питания контроллера);
1024 – количество дискретных значений на выходе 10-разрядного АЦП;
LSB – числовое значение, получаемое программой из АЦП.

Начнем с делителя напряжения R6-R7. Для примера примем реальные сопротивления полностью соответствующие указанным на схеме. Питание тоже возьмем ровно 5.0 В. Пример расчета результатов преобразования напряжения 13.5 вольт:


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

Формула расчета делителя, измеряющего температуру, в принципе ничем не отличается, только переменной величиной тут будет Ru, а Ux можно принять равным Uref. Результат будет иметь такой вид:


Для примера возьмем величину R8 из схемы, а R9 из даташита на NTCLE100E3 при температуре 0?C:


Если кто скажет, что под влиянием нагрузки из последовательно соединенных R8 и R9 напряжение на логическом выходе может просесть, то он, конечно, будет прав. Теоретически. А на практике даже наиболее пессимистический сценарий, когда сопротивление терморезистора R9 окажется равным нулю, потребление от выхода контроллера будет не более 0.5 mА, что не вызовет сколь либо заметного падения. По крайней мере, в ходе натурных испытаний это падение не удалось зафиксировать при помощи вольтметра, имеющего точность 0.01 В.

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

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

Прошивка


Полный архив проекта для AtmelStudio (компилятор gcc-avr 5.4.0) можно скачать тут, также выложил уже собранный hex. А под катом листинг исходного файла, чтобы далеко не ходить.

Исходник
//#define F_CPU 1200000UL // определен в свойствах проекта

#include <avr/io.h>
#include <avr/wdt.h>
#include <avr/sleep.h>
#include <avr/interrupt.h> 
#include <util/delay.h>

//#define DBG

#define TEMPERATURE_OVERHEAT 753 // LSB-величина температуры +50?C
#define TEMPERATURE_GIST     8   // ширина петли гистерезиса (в LSB) при переходах по оси температур
#define VOLTAGE_GIST         3   // ширина петли гистерезиса (в LSB) при переходах по оси напряжений

#define INTERVAL             WDTO_1S // длительность одного цикла измерений (1 секунда)
#ifndef DBG
#define CELL_CHANGE_TIMEOUT  90  // задержка перехода в новое состояние (в циклах INTERVAL, не выше 254)
#define OVERHEAT_TIMEOUT     300 // минимальная задержка возврата из режима "перегрев" (в циклах INTERVAL)
#else
#define CELL_CHANGE_TIMEOUT  2
#define OVERHEAT_TIMEOUT     3
#endif

typedef unsigned char bool; // просто правило хорошего тона
#define true  0 == 0        //   использовать осмысленные имена
#define false 0 != 0        //   для булевого типа данных

typedef enum {st_none = 0b00, st_primary = 0b01, st_secondary = 0b10, st_both = 0b11} t_states; // перечисление состояний нагрузок 
                                                                                                //   тип используется в битовых операциях, поэтому реальные значения элементов заданы жестко
typedef enum {adc_temperature, adc_voltage} t_measure;                                          // перечисление типов датчиков
typedef enum {move_null, move_up, move_down} t_movement;                                        // перечисление направлений перемещения по таблице состояний

// координаты ячейки таблицы состояний
struct t_coordidates {
  signed char row, col;
};

// информация о последнем перемещении по таблице состояний
struct t_correction {
  t_movement voltage, temperature;
};

#define CELLS_ROWS 3 // количество строк в таблице состояний (ось температур)
#define CELLS_COLS 5 // количество столбцов в таблице состояний (ось напряжений)

// таблица состояний
const t_states CELLS[CELLS_ROWS][CELLS_COLS] = {
  {st_both, st_both,    st_both,    st_primary, st_none},
  {st_both, st_both,    st_primary, st_none,    st_none},
  {st_both, st_primary, st_none,    st_none,    st_none}
};

// LSB-величины температур, которые являются границами строк таблицы состояний
const unsigned int ROWS_EDGES[CELLS_ROWS - 1] = {
  241, // 0?C
  157  // -10?C
};

// LSB-величины напряжений, которые являются границами столбцов таблицы состояний
const unsigned int COLS_EDGES[CELLS_COLS - 1] = {
  864, // 13.5V
  800, // 12.5V
  787, // 12.3V
  768  // 12.0V
};

unsigned int overheat_rest_time = 0; // счетчик времени задержки выхода из состояния "перегрев"
unsigned char cell_change_time  = 0; // счетчик времени задержки перехода между состояниями
unsigned char no_cur_cell_time  = 0; // счетчик времени, на протяжении которого рабочая точка ни разу не возвращалась в текущую ячейку

#define NULL_CELL (struct t_coordidates){.col = -1, .row = -1} // заглушка, обозначающая отсутствие состояния
#define NULL_CORRECTION (struct t_correction){.voltage = move_null, .temperature = move_null} // заглушка, обозначающая отсутствие перемещения

struct t_correction moved_from = NULL_CORRECTION; // информация о направлении последнего перехода между состояниями
struct t_coordidates cur_cell  = NULL_CELL,       // координаты текущей ячейки в таблице состояний
                     next_cell = NULL_CELL;       // координаты ячейки-кандидата на следующее перемещение

// инициализация пинов
static void init_pins() {
  DDRB |= (1 << PB0) | (1 << PB1) | (1 << PB3);     // устанавливаем пины 2 (PB3), 5 (PB0) и 6 (PB1) как выходы
  PORTB &= ~(1 << PB0) & ~(1 << PB1) & ~(1 << PB3); // устанавливаем низкий уровень на пинах 2 (PB3), 5 (PB0) и 6 (PB1)
}

// включение/выключение подачи питания на терморезистор
static void toggle_thermal_sensor(bool state) {
  if(state) {
    PORTB |= (1 << PB1);  // если state истинно, подаем высокий уровень на пин 6 (PB1)

    _delay_ms(5); // подождем завершения переходных процессов
  } else {
    PORTB &= ~(1 << PB1); // если state не истинно, подаем низкий уровень на пин 6 (PB1)
  }
}

// измерение аналоговых величин
static unsigned int measure_adc(t_measure measure) {
  if(measure == adc_temperature) {
    toggle_thermal_sensor(true); // если задача измерить температуру, подаем питание на терморезистор

    ADMUX = 0b10; // при измерении температуры используем для аналого-цифрового преобразования пин 3 (PB4)
  } else {
    ADMUX = 0b01; // при измерении напряжения используем для аналого-цифрового преобразования пин 7 (PB2)
  }

  ADCSRA = (1 << ADPS2) | // коэффициент деления тактовой частоты для АЦП = 16 (75 КГц)
           (1 << ADIE) |  // режим оповещения через прерывание
           (1 << ADEN);   // активация АЦП

  set_sleep_mode(SLEEP_MODE_ADC); // подготавливаем режим "тихого" преобразования
  do {
    sleep_cpu(); // запуск АЦП происходит после засыпания контроллера, а после завершения преобразования генерируется прерывание, которое будит контроллер
  } while(ADCSRA & (1 << ADSC)); // если после пробуждения преобразование все еще не завершено, продолжаем спать

  ADCSRA = 0; // выключаем АЦП

  toggle_thermal_sensor(false); // отключаем подачу питания на терморезистор

  return ADC; // возвращаем 10-битный результат преобразования
}

// инициализация прерываний и watchdog
static void init_interrupts(void) {
  sleep_enable(); // разрешаем спящий режим

  WDTCR = (1 << WDCE) | (1 << WDE); // подготавливаем watchdog
  WDTCR = (1 << WDTIE) | INTERVAL; // watchdog генерирует прерывание вместо сброса всего контроллера, интервал 1 секунда

  sei(); // разрешаем прерывания
}

// устанавливает состояния нагрузок в соответствии с содержимым ячейки таблицы состояний
static void toggle_loads(t_states states) {
  unsigned char port = PORTB & ~((1 << PB3) | (1 << PB0)),     // считываем текущее состояние всех выходов контроллера и обнуляем в нем биты, соответствующие нашим выходам
                bits = (((states & st_primary) >> 0) << PB3) | // устанавливаем нужные биты в соответствии с состояниями нагрузок
                       (((states & st_secondary) >> 1) << PB0);

  PORTB = port | bits; // устанавливаем новое состояние нагрузок
}

// сравнение двух переменных типа t_coordidates
static bool cells_equal(struct t_coordidates cell1, struct t_coordidates cell2) {
  return cell1.row == cell2.row && cell1.col == cell2.col;
}

// определение строки в таблице состояний по полученному с датчика LSB-значению температуры
static signed char get_cell_row(unsigned int temperature) {
  signed char row = 0;

  while(row < CELLS_ROWS - 1) {          // передвигаемся от самого высокого порогового значения в сторону самого низкого
    if(temperature >= ROWS_EDGES[row]) { // если temperature больше или равен пороговому значению, значит нужная строка найдена
      return row;
    } else {
      ++row;
    }
  }

  return CELLS_ROWS - 1; // если temperature слишком низкая и не превышает ни одного порогового значения, значит мы в самой нижней строке таблицы
}

// определение столбца в таблице состояний по полученному с датчика LSB-значению напряжения
static signed char get_cell_col(unsigned int voltage) {
  signed char col = 0;

  while(col < CELLS_COLS - 1) {      // передвигаемся от самого высокого порогового значения в сторону самого низкого
    if(voltage >= COLS_EDGES[col]) { // если voltage больше или равен пороговому значению, значит нужный столбец найден
      return col;
    } else {
      ++col;
    }
  }

  return CELLS_COLS - 1; // если voltage слишком низкое и не превышает ни одного порогового значения, значит мы в самом правом столбце таблицы
}

// возвращает пороговые значения температуры, отделяющие текущую строку таблицы состояний от соседей
static void get_row_edges(signed char row, unsigned int *upper, unsigned int *lower) {
  *upper = row > 0 ? ROWS_EDGES[row - 1] : 0xffff - TEMPERATURE_GIST; // для крайней верхней строки верхний порог отсутствует, возвращаем максимально применимое значение
  *lower = row < CELLS_ROWS - 1 ? ROWS_EDGES[row] : TEMPERATURE_GIST; // для крайней нижней строки нижний порог отсутствует, возвращаем минимально применимое значение
}

// возвращает пороговые значения напряжения, отделяющие текущий столбец таблицы состояний от соседей
static void get_col_edges(signed char col, unsigned int *upper, unsigned int *lower) {
  *upper = col > 0 ? COLS_EDGES[col - 1] : 0xffff - VOLTAGE_GIST; // для крайнего левого столбца левый (верхний по напряжению) порог отсутствует, возвращаем максимально применимое значение
  *lower = col < CELLS_COLS - 1 ? COLS_EDGES[col] : VOLTAGE_GIST; // для крайнего правого столбца правый (нижний по напряжению) порог отсутствует, возвращаем минимально применимое значение
}

// коррекция координат потенциальной ячейки-кандидата в соответствии с данными о последнем перемещении и ширины гистерезисов для температуры и напряжения
static void gisteresis_correction(struct t_coordidates* new_cell, unsigned int temperature, unsigned int voltage) {
  unsigned int upper_edge, lower_edge;

  get_row_edges(cur_cell.row, &upper_edge, &lower_edge); // определяем границы текущей строки
  if(new_cell->row > cur_cell.row && moved_from.temperature == move_up && temperature >= lower_edge - TEMPERATURE_GIST) {
    --new_cell->row; // если потенциальная ячейка-кандидат находится ниже текущей, последнее перемещение было вверх, но температура недостаточно низкая для преодоления ширины гистерезиса, то уменьшаем номер строки
  }

  if(new_cell->row < cur_cell.row && moved_from.temperature == move_down && temperature <= upper_edge + TEMPERATURE_GIST) {
    ++new_cell->row; // если потенциальная ячейка-кандидат находится выше текущей, последнее перемещение было вниз, но температура недостаточно высока для преодоления ширины гистерезиса, то увеличиваем номер строки
  }

  get_col_edges(cur_cell.col, &upper_edge, &lower_edge); // определяем границы текущего столбца
  if(new_cell->col > cur_cell.col && moved_from.voltage == move_up && voltage >= lower_edge - VOLTAGE_GIST) {
    --new_cell->col; // если потенциальная ячейка-кандидат находится правее текущей, последнее перемещение было влево (вверх по напряжению), но напряжение недостаточно низкое для преодоления ширины гистерезиса, то уменьшаем номер столбца
  }

  if(new_cell->col < cur_cell.col && moved_from.voltage == move_down && voltage <= upper_edge + VOLTAGE_GIST) {
    ++new_cell->col; // если потенциальная ячейка-кандидат находится левее текущей, последнее перемещение было вправо (вниз по напряжению), но напряжение недостаточно высокое для преодоления ширины гистерезиса, то увеличиваем номер столбца
  }
}

// экономим шесть байт по сравнению с stdlib::abs()
 static unsigned char absolute(signed char value) {
  return value >= 0 ? value : -value;
}

// определяем направления перемещения по координатам ячейки-кандидата
static void calc_movement(struct t_coordidates new_cell) {
  moved_from = NULL_CORRECTION;                                                   // по-умолчанию принимаем отсутствие перемещения
  if(!cells_equal(new_cell, NULL_CELL) && !cells_equal(cur_cell, NULL_CELL)) {    // направление имеет смысл только если определены и текущая ячейка, и ячейка-кандидат
    if(absolute(new_cell.row - cur_cell.row) == 1) {                              // учитываем только перемещение в соседнюю ячейку
      moved_from.temperature = new_cell.row < cur_cell.row ? move_up : move_down; // перемещение по строкам
    }

    if(absolute(new_cell.col - cur_cell.col) == 1) {                              // учитываем только перемещение в соседнюю ячейку
      moved_from.voltage = new_cell.col < cur_cell.col ? move_up : move_down;     // перемещение по столбцам
    }
  }
}

// установка новой ячейки-кандидата
static void set_next_cell(struct t_coordidates cell) {
  next_cell = cell;
  cell_change_time = 0; // сброс счетчика задержки перехода
}

// установка новой текущей ячейки
static void set_cur_cell(struct t_coordidates cell) {
  cur_cell = cell;
  no_cur_cell_time = 0; // сброс счетчика времени непрерывного нахождения в посторонних ячейках
  set_next_cell(NULL_CELL); // сброс ячейки-кандидата
}

// действия, связанные с переходом в новую ячейку
static void change_cell(struct t_coordidates new_cell) {
  if(cells_equal(new_cell, NULL_CELL)) { // переход в пустую ячейку обозначает безусловное отключение всех нагрузок
    toggle_loads(st_none);
  } else {
    toggle_loads(CELLS[new_cell.row][new_cell.col]); // определяем состояния нагрузок для данной ячейки и применяем их
  }

  calc_movement(new_cell); // вычисляем и сохраняем напрявление перехода
  set_cur_cell(new_cell);  // устанавливаем текущую ячейку
}

// основной метод
static void main_proc(void) {
  unsigned int temperature, voltage; // 10-битные LSB-величины измеренных температуры и напряжения
  struct t_coordidates cell;         // переменная для хранения координат потенциальной ячейки-кандидата

  if(overheat_rest_time) { // если счетчик выхода из состояния "перегрев" не нулевой, уменьшаем его значение на единицу и больше ничего не делаем
    --overheat_rest_time;
  } else {
    temperature = measure_adc(adc_temperature); // измеряем температуру
    if(temperature >= TEMPERATURE_OVERHEAT) {   // если температура выше или равна +50C, значит перегрев:
      change_cell(NULL_CELL);                   //   сбрасываем текущую ячеку (аварийно отключаем все нагрузки)
      overheat_rest_time = OVERHEAT_TIMEOUT;    //   устанавливаем счетчик возврата на максимальное значение
    } else {
      voltage = measure_adc(adc_voltage);   // измеряем напряжение

      cell.col = get_cell_col(voltage);     // вычисляем столбец потенциальной ячейки-кандидата по напряжению
      cell.row = get_cell_row(temperature); // вычисляем строку потенциальной ячейки-кандидата по температуре

      if(cells_equal(cur_cell, NULL_CELL)) { //  если текущая ячейка ранее не была определена, то немедленно устанавливаем ее на основе приведенных выше измерений
        change_cell(cell);
      } else {
        gisteresis_correction(&cell, temperature, voltage); // производим возможную коррекцию вычесленных ранее координат с учетом направления последнего перемещения и ширин гистерезисов

        if(cells_equal(cell, cur_cell)) { // если потенциальная ячейка-кандидат соответствует текущей ячейке, то значит кандидата у нас нет
          set_next_cell(NULL_CELL);
          no_cur_cell_time = 0; // побывали в текущей ячейке, сбрасываем счетчик
        } else {
          if(no_cur_cell_time++ > CELL_CHANGE_TIMEOUT) { // если в течение CELL_CHANGE_TIMEOUT+1 рабочая точка ни разу не побывала в cur_cell, значит текущая ячейка была выбрана неудачно
            change_cell(cell); // устанавливаем текущей ту ячейку, в которой рабочая точка сейчас
          } else {
            if(cells_equal(next_cell, NULL_CELL) || !cells_equal(next_cell, cell)) { // если ячейка-кандидат не определена или не соответствует новому кандидату, устанавливаем нового кандидата
              set_next_cell(cell);
            } else {
              if(++cell_change_time >= CELL_CHANGE_TIMEOUT) { // если кандидат стабилен, и таймаут перехода в другую ячейку истек, переходим, иначе только инкрементируем счетчик
                change_cell(cell);
              }
            }
          }
        }
      }
    }
  }
}

// обработчик прерывания от watchdog
ISR(WDT_vect) {
  WDTCR |= (1 << WDTIE); // после каждого срабатывания watchdog нужно заново "заказывать" прерывание вместо сброса контроллера
}

// пустой обработчик прерывания АЦП, для определения момента завершения преобразования используется флаг ADSC в measure_adc()
EMPTY_INTERRUPT(ADC_vect);

// точка входа
int main(void) {
  init_pins();       // инициализация пинов
  init_interrupts(); // инициализация прерываний и watchdog
	
  while(true) {                          // главный цикл, управление никогда не должно выходить из него
    set_sleep_mode(SLEEP_MODE_PWR_DOWN); // включаем режим глубокого сна с минимальным потреблением тока
    sleep_cpu();                         // засыпаем и ждем пробуждения по прерыванию от watchdog 

    main_proc();                         // быстро делаем работу и снова идеем спать в следующей итерации
  }
}


Фъюзы должны иметь такие значения: L:0x6A, H:0xFF.

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


Верхняя строка таблицы определяет режим перегрева и обрабатывается отдельным простым ветвлением кода, поэтому ее нет в исходном коде.

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

Допустим, в какой-то момент времени программа находится в состоянии, когда как минимум одна из нагрузок включена. По мере расходования заряда АКБ напряжение сети будет падать и рано или поздно достигнет порогового значения, когда нагрузку нужно отключить, что и произойдет в нужный момент. Однако, из-за того, что провода, соединяющие схему с АКБ, имеют ненулевое сопротивление, уменьшение текущего через них тока при отключении нагрузки приводит к некоторому увеличению напряжения на входе схемы. А т.к. мы только-только пересекли границу отключения, то даже незначительное увеличение напряжения почти гарантированно перебросит нас в состояние, когда нагрузка должна быть снова включена. И схема включает нагрузку. Напряжение снова немного проседает и снова пересекает пороговое значение. И так будет продолжаться довольно долго, пока аккумулятор не разрядится еще сильнее, нагрузка будет включаться и выключаться.

Для подавления колебательного процесса в программу внесен механизм гистерезиса, который после перехода границы состояний как бы сдвигает только что пересеченную черту немного назад против движения рабочей точки. Таким образом, при пересечении, скажем, границы 12.5 В снизу вверх, для ее пересечения в обратном направлении, нужно будет опуститься уже до 12.4 В. Этот же принцип в значительной мере препятствует переключению состояния также под влиянием шумов АЦП и наводок. Константы, определяющие ширину гистерезиса по вертикали и по горизонтали тоже могут быть легко изменены.



Кроме гистерезиса, в программу добавлены также задержки переключения состояний в первую очередь для случаев кратковременного изменения напряжения, например, при запуске двигателя. Нет никакого смысла на три секунды отключать полуамперную нагрузку при работе стартера, потребляющего несколько сотен ампер. Пусть даже напряжение бортсети в этот момент просядет до совершенно «аварийных» 8-9 вольт.

Еще одной проблемой может стать периодическое изменение напряжения бортовой сети, например при некоторых неисправностях двигателя. В этом случае рабочая точка может начать «метаться» между несколькими соседними ячейками, не задерживаясь ни в одной из них на необходимый таймаут. В этом случае, если среди таких ячеек нет той, с которой это «метание» началось, программа через некоторое время выберет-таки одну из них (наугад, и не факт, что самую удачную, но точно более подходящую, чем та, в которую рабочая точка давным-давно не заходила).

Верхняя строка таблицы не имеет ни гистерезиса ни задержки перехода и при пересечении температуры +50?C снизу вверх нагрузки отключаются немедленно и безусловно. Также для этого режима введен отдельный таймаут выхода, значительно больший, чем тот, что используется при пересечении остальных границ ячеек. Возврат из этого режима возможен только если температурные показатели будут стабильно ниже порога в течение всего таймаута.

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

Может показаться, что такое решение лишает нас основной функции сторожевого таймера – предотвращения зависания. Но на самом деле это не так. Watchdog устроен таким образом, что флаг, включающий генерацию прерывания вместо перезагрузки, аппаратно сбрасывается при каждом срабатывании. Таким образом, если произойдет зависание контроллера, то не будет выполняться не только основной цикл программы, но и обработчик прерывания watchdog. А это значит, что первое срабатывание сбросит флаг прерывания, а следующее за ним уже инициирует полную перезагрузку.

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

Кстати, размер итогового бинарника зависит от опций оптимизации, что логично. Но как оказалось, в моем случае минимальную длину дала опция O2, в то время, как предназначенная для минимизации размера опция Os выдала код, с трудом влезающий в отведенные 1024 байта. Так что если программа на пределе возможностей контроллера и не влазит совсем чуть-чуть, всегда имеет смысл поиграться данным параметром.

Код на самом деле не блещет оптимальностью с точки зрения размера и при желании может быть ужат еще на сотню байт без потери функционала.

Файлы схемы и разводки платы

Скачать редактируемые файлы в формате Eagle можно здесь.

Комментарии (131)


  1. AllexIn
    05.04.2019 22:08

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


    1. quwy Автор
      06.04.2019 02:54

      сообщают о том, что он низкий на брелок и телефон

      А кто регик отключит?

      сигналки сейчас идут с трэкингом — их сразу глушат

      Правильный трекер при детекте глушилки должен остановить автомобиль, но статья не об этом.


      1. esaulenka
        06.04.2019 09:43
        +4

        Правильный трекер при детекте глушилки должен остановить автомобиль

        Как сделаете, повесьте, пожалуйста, на заднее стекло плакат «внимание! моя машина может внезапно и без предупреждений остановиться в любом месте и на любой скорости!».
        Да и на лобовое тоже, чтоб не забыть.
        Трекер — это трекер, иммобилайзер — это отдельное устройство. И никто никогда не делает иммобилайзер с привязкой к сотовым сетям.


        1. quwy Автор
          06.04.2019 17:16

          Как сделаете, повесьте, пожалуйста, на заднее стекло плакат «внимание! моя машина может внезапно и без предупреждений остановиться в любом месте и на любой скорости!».

          Остановить не значит педаль в пол сделать.

          Трекер — это трекер, иммобилайзер — это отдельное устройство

          Кто запрещает совместить?


          1. artyums
            06.04.2019 21:53
            +3

            Я прямо представляю историю, как автомобиль с иммобилайзером, завязанным на GPS-трекер, заезжает в подземный паркинг… и… (конец истории)


          1. BratSinot
            06.04.2019 21:59
            -1

            Остановить двигатель, означает лишиться ГТЦ (главного тормозного цилиндра) и вакуумного усилителя, проще говоря лишиться тормозов.
            А теперь представьте, вы едете по трассе 110 км/ч и у вас резко «отваливаются» тормоза.


            1. artemlight
              06.04.2019 22:16
              -1

              На одно торможение ещё хватит, может даже на два.
              Ну и ручник никто не отменял.


              1. BratSinot
                06.04.2019 22:18
                -1

                На одно торможение ещё хватит, может даже на два.

                Попробуйте на досуге в гололед / дождь оттормозиться с одного раза. Вы в тот-же миг заблокируете колеса и улетите куда-нибудь или в кого-нибудь.
                А ручником можно «dejavu i have been in this place before» устроить, даже на переднем приводе.


            1. MahMahoritos
              07.04.2019 12:55

              означает лишиться ГТЦ
              ложь, это гидравлика+механика, от глушения ДВС механизм никуда не испарится
              проще говоря лишиться тормозов
              тоже ложь. Да, ВУТ перестанет работать, но затормозить всё еще будет возможно, главная проблема при этом — изменение привычного усилия на педаль тормоза, давить придется со всей дури… Ну и максимальное тормозное усилие, скорее всего, развить не получится.


              1. BratSinot
                07.04.2019 12:58

                Ну вот и вы тоже попробуйте на досуге в гололед / дождь оттормозиться без заведенного ДВС. Пару раз нажмете, цилиндры «вылезут», а так как обратно не «влезут», то колеса заблокируются и прощай управление.


                1. MahMahoritos
                  07.04.2019 14:07
                  +1

                  цилиндры «вылезут», а так как обратно не «влезут»
                  Лол, конструкцию тормозной системы изучи, чтобы такого бреда не пороть. Они НИКОГДА обратно не залазят (что отлично знает любой, менявший колодки — цилиндр необходимо вдавить/вкрутить в корпус, чтобы он на новые колодки налез), более того, ДВС с тормозной системой связан только через ВУТ, отсутствие которого делает торможение физически сложным для водителя, но не невозможным.
                  Ну вот и вы тоже попробуйте на досуге в гололед / дождь оттормозиться
                  Примерно 100 км (загород, потом еще по городу до СТО) ехал без ВУТ (умер вакуумный насос) — тормоза работают, нужно только приноровиться к жесткой педали и увеличившемуся тормозному пути, гасить скорость заранее.
                  без заведенного ДВС
                  Покажи, каким образом ДВС связан с тормозной системой иначе, как через ВУТ или систему ABS/ESR/etc.


                  1. MahMahoritos
                    07.04.2019 14:28

                    Аргументы у минусаторов будут? Может минусаторы подумают, как едет машина на буксире, если по логике BratSinot у буксируемого автомобиля, у которого, очевидно, не работает ДВС, не может работать тормозная система?


                    1. VT100
                      07.04.2019 15:14

                      MahMahoritos и migelle74 совершенно правы. Всё продолжит работать, это требование безопасности. Просто надо будет «давить» на педаль тормоза, а не «перемещать» её.
                      BratSinot 'у следует изучить устройство автомобиля.


                      1. BratSinot
                        07.04.2019 17:20

                        VT100 Это не отменяет того, что цилиндр в суппорте будет возвращаться «с опозданием» и в целом вся система станет более «тугодумной» и менее отзывчивой. Да и в целом все это при условии полной исправности тормозной системы, в случае коррозийной поверхностям в суппорте или на цилиндре «целые» все может привести к более печальным последствиям.

                        А теперь вернемся к ситуации с отключением ДВС, у обычного человека будет шоковое / стрессовое (не знаю как правильно описать «неожиданность») состояние, а это, в купе с «тугодумием» тормозной системы без ДВС ни к чему хорошему не приведет.
                        Так-же учтем, что на многих машинах АКПП, т.е. «двигателем» вы не затормозите, и тот факт, что у многих машин электронный ручной тормоз.

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

                        В общем, я в любом случае против отключения ДВС в качестве защиты от угона, как в заводском исполнении (вроде в заграничных странах у того-же Ford'а что-то такое было), а тем более в «самопальном».


                        1. migelle74
                          07.04.2019 17:36

                          Это не отменяет того, что цилиндр в суппорте будет возвращаться «с опозданием» и в целом вся система станет более «тугодумной» и менее отзывчивой
                          Интересно, зачем вы из раза в раз пишете свои фантазии о работе тормозной системы? Вы действительно уверены, что цилиндры возвращает обратно ВУТ? Может действительно сначала почитать об устройстве тормозной системы?


                          1. BratSinot
                            07.04.2019 17:41

                            Интересно, зачем вы из раза в раз пишете свои фантазии о работе тормозной системы? Вы

                            Может тогда объясните, почему если вывесить машину и пару раз нажать на педаль тормоза, то колесо не крутится свободно (колодки «цепляются» об тормозной диск), а когда заведешь машину все становится нормально?


                            1. MahMahoritos
                              07.04.2019 18:13

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

                              Классические устройства тормозной системы НЕ СОДЕРЖАТ ничего, чтобы задвигать цилиндры при отпускании педали, они немного (на микроны) задвигаются силой натяжения уплотнительной манжеты и силой противодействия тормозного диска, т.е. ни ВУТ, ни главный тормозной цилиндр никак не могут влиять на этот процесс.

                              Схема тормозной системы ВАЗ 2106 тебе в помощь: покажи, чем и как ВУТ будет тормозную систему разжимать — a.d-cd.net/bc3b8du-960.jpg


                            1. VT100
                              07.04.2019 18:19

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

                              Где-то «закисло», 145%.
                              Если за городом проехаться километров 5 без торможений, остановиться «на выбеге» и потрогать диски/барабаны — какая будет температура? Должна быть неотличимая от окружающей среды.

                              P.S. Да, я тоже считаю, что отключение двигателя на ходу плохая идея. Возможно даже — наказуемая.


                            1. oops1
                              08.04.2019 09:21

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

                              У любого тормозного диска есть легкое биение. Колодки разводятся буквально на миллиметр. Ни какая автоматика (или гидравлика) не разводит колодки принудительно.

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

                              >>, а когда заведешь машину все становится нормально?
                              Я с таким явлением никогда не сталкивался, может быть это особенность работы конкретно вашего авто, связанная с работой блока АБС.

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


                              1. DrPass
                                09.04.2019 01:27

                                К чему я это сказал, а к тому что колодки на дисковых тормозах разводятся самим диском при движении.

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


                                1. u010602
                                  09.04.2019 01:39

                                  Я боюсь что oops1 прав, т.к. на исправном современном автомобиле зазор между колодкой и диском постоянный, вне зависимости от износа колодок. Еще там есть «пискуны», металлические пластинки, которые касаются диска и издают мерзкий звук, когда износ колодок достигает опасного уровня. Если-бы что-то втягивало колодки обратно, то пискуны бы не работали. Или-же нужны были бы сложные датчики для создания нужного давления, причем на каждом колесе.


                  1. DrPass
                    07.04.2019 15:24

                    Покажи, каким образом ДВС связан с тормозной системой иначе, как через ВУТ или систему ABS/ESR/etc.

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


            1. migelle74
              07.04.2019 12:56

              >Остановить двигатель, означает лишиться ГТЦ (главного тормозного цилиндра)
              Извиняюсь, куда это он у вас вдруг денется?
              >проще говоря лишиться тормозов.
              Удивительно, как раньше люди ездили без усилителя. Да и сейчас можно встретить живые «копейки» на дороге. Да, торомозить станет труднее, но это совсем не означает, что тормоза пропали.


          1. esaulenka
            06.04.2019 22:41

            Остановить не значит педаль в пол сделать.

            Остановить — значит остановить. Заглушить двигатель. Если это произойдёт на широкой магистрали в левом (четвёртом, предположим) ряду, у вас есть несколько сотен метров инерции, чтобы понять, что за фигня происходит, перестроиться и припарковаться у отбойника. Ну окей, это возможно.
            А вот что будет, если это решит заблокировать двигатель в момент обгона, думайте сами.
            В общем, умные люди, которым не хочется тюрьма сидеть, выпускают иммобилайзеры, которые блокируют неподвижный (или только-только начинающий двигаться) автомобиль.

            Кто запрещает совместить?

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


            1. Mogwaika
              08.04.2019 14:07

              Т.е. разрыв на цепь реле стартёра, я правильно понял?


              1. u010602
                08.04.2019 15:03

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


                1. Mogwaika
                  08.04.2019 15:04

                  Без мозгов же заглохнет, а это плохо, как выяснили выше? Не?


                  1. u010602
                    08.04.2019 15:07

                    Так отключать до завода.


                    1. Mogwaika
                      08.04.2019 15:10

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


                      1. u010602
                        08.04.2019 15:17

                        Если отключать только стартер — то можно и не отключать вовсе. Кинуть два провода не сложно. Если бояться поломок сигнализации — то лучше ее вообще не ставить. А вдруг сирена включится на обгоне, вы испугаетесь и в кювет? Вдруг блокиратор руля сработает? Вдруг теслу хакнут и она поедет на встречку? А если коротнет электро усилитель руля? А если колесо лопнет?

                        Какая подушка с странах СНГ? Закрыть ЧП — открыть ЧП, заказать новый логотип.


                        1. DrPass
                          09.04.2019 01:38

                          Если отключать только стартер — то можно и не отключать вовсе. Кинуть два провода не сложно.

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


                          1. u010602
                            09.04.2019 01:40

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


              1. esaulenka
                09.04.2019 12:27

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


      1. Duss
        06.04.2019 10:30
        +1

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


        1. quwy Автор
          06.04.2019 17:15
          +1

          Посмотрел бы я на такие трекеры в каком нибудь туннеле или за городом, где сеть не ловит.

          Глушилка и отсутствие сигнала — две большие разницы.


          1. Smittyperm
            06.04.2019 20:31
            +1

            Расскажите, пожалуйста, в чем разница.


            1. quwy Автор
              07.04.2019 02:30

              Отсутствие сигнала — это когда нет радиоволны. А глушилка — это когда очень много радиоволн. Короче, глушилка детектируется на-раз.


              1. DrPass
                07.04.2019 03:11

                Отсутствие сигнала — это когда нет радиоволны. А глушилка — это когда очень много радиоволн

                С точки зрения трекера в обоих случаях будет просто отсутствие связи с базовой станцией, он-то причин знать не будет.


                1. quwy Автор
                  07.04.2019 04:02

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

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


          1. cpcat
            06.04.2019 20:39

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


            1. gnomeby
              06.04.2019 20:53

              Чувствуется серьёзное нарушение закона. Хотя скорее там не глушилка, а сетка Фарадея.


              1. cpcat
                07.04.2019 10:06

                Чувствуется, но всем пофиг. Если бы была сетка, то и 2G бы не работало, а так только 3G и LTE отшибает.


      1. AllexIn
        06.04.2019 21:51

        Так глушилка не для сотовой связи. Глушилка для GPS.
        Окей, у вас есть связь с сигналкой.
        Толку? Вы не знаете где она. Даже если вы заглушили машину через сигналку(что ни одна сигналка не делает, запрещено законом или принципиальная позиция — не знаю, но факт. в движениии сигналки машину не гасят) — что толку? Вы всё равно её не найдете.

        А регик вы можете отключать через приложение. Надо только установщиков сигналки попросить протянуть доп подключение от модуля сигнализации. Благо сигналки сейчас идут и с дополнительными каналами для управления переферией.


        1. artyums
          06.04.2019 22:05
          +1

          Воу воу, гасят и еще как. У Starline, например, знаю про функцию «Антиограбление», при ее активации (брелком, через приложение, по метке) через минуту начинает мигать аварийка, еще через минуту — глохнет и блокируется двигатель. Сделано против хайджекинга.


          1. AllexIn
            06.04.2019 22:08

            Занятно. Я сколько не пробовал на своём старлайне погасить заведенный двигатель — фиг там. Понял, покопаю еще.
            P.S. Что-то у меня все утверждения в этой теме оказываются ошибкой. Повод помолчать. :)


            1. artyums
              06.04.2019 22:21
              +1

              Только смотрите аккуратнее: проверьте, что знаете код авторизации. Без него из режима антиограбления выйти не получится. Смотрите инструкции пользовательские и по установке для своей модели сигнализации :) По умолчанию этот режим отключен


            1. esaulenka
              06.04.2019 22:58

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


              1. AllexIn
                06.04.2019 22:58

                Автозапуск то работает. Так что врядли.


                1. esaulenka
                  06.04.2019 23:10

                  «Запустить» и «заглушить» — вещи прямо противоположные :-)
                  Так что работа автозапуска ни о чём не говорит.


                  1. AllexIn
                    06.04.2019 23:11

                    Я подразумеваю систему автозапуска. А не просто удаленный запуск двигателя.
                    Там и запуск и остановка двигателя происходит.
                    По таймеру и по команде.
                    Так вот, команда на остановку не работает если машину завели с ключа.


        1. DrPass
          06.04.2019 23:14
          +1

          Так глушилка не для сотовой связи. Глушилка для GPS.

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


      1. Igor_O
        08.04.2019 02:46

        должен остановить автомобиль,

        Не должен, а может иметь такую функцию, чтобы не дать завести автомобиль при наличии глушилки.
        А вот заглушить двигатель на движущемся автомобиле — это для производителя трекера — подсудное дело. Не имеют права! Именно на этом строятся угоны дорогих автомобилей в наше время — угонщик с помощником. С ретранслятором сигнала и некоторыми дополнительными фишками. Угонщик инициирует процедуру открывания дверей. Машина спрашивает ключ «это ты?» сигнал ретранслируется на ключ. Ключ отвечает «вроде я». Машина открывает двери. Угонщик нажимает кнопку «запустить двигатель». Машина спрашивает ключ «ты тут?». Сигнал ретранслируется. Ключ отвечает «да вроде тут», сигнал ретранслируется обратно. Все. Поехали. Глушить двигатель в движении автомобиль не имеет права по законам кучи разных стран.


  1. Kitsok
    05.04.2019 22:21

    Не в бровь, а в глаз — за полгода на двухкамерном регистраторе 24х7 дважды высадил аккумулятор в ноль, теперь катаюсь на 30% ёмкости, автозапуск спасает.


    Моя мысль пошла в сторону отдельной батареи LiFeP и контроллера, но дальше идеи пока не идёт...


    1. lonelymyp
      05.04.2019 22:55
      +1

      Что-то похожее может помочь: www.aliexpress.com/item/DC-12V-8A-Dual-Way-Automatic-Transfer-Switch-Controller-UPS-Power-Ideal-Diodes-intelligent-switching-module/32946694473.html Автоматически переключает на резервную батарею.
      Ну или готовый бесперебойник www.aliexpress.com/item/12V2A-22-2W-UPS-Uninterrupted-Power-Supply-Backup-Power-Mini-Battery-for-Camera-Router/32906334436.html


      1. Kitsok
        05.04.2019 23:47

        Второе не пролезает в диапазон входного напряжения, а вот первое интересно, спасибо!


    1. nevzorofff
      06.04.2019 00:23

      У бати на девятке перетёрся проводок на сигнал и машина стала гудеть постоянно. Батя тот ещё электрик и сдёрнул с сигналов провода. А т.к. ездил только по выходным(будни на развозке), то его стал встречать полностью высаженный аккумулятор. Это было не менее 5 раз. 300ма от реле хватало )
      АКБ был 2008 года, события были осенью 2010. Потом на девятке ездила мама, моя жена, и, наконец в, августе 2016 году эта девятка была продана с этим самым аккумулятором. В феврале он ещё отдавал 21А-ч из заводских 55. Белый, кальциевый Мутлу.
      Я к чему — не так страшен глубокий разряд, как его малюют.


  1. gnomeby
    05.04.2019 22:27

    Я извиняюсь, это вы аналог TrendVision PowerControl изобрели?


    1. quwy Автор
      06.04.2019 02:56

      Ну, что-то типа того, только двухканальное. Говорю же, изобрел велосипед.


  1. lonelymyp
    05.04.2019 22:37

    Вроде и интересно но…
    1. Так и не увидел ответа почему прикуривать вредно.
    2. На КДПВ скорее ситуация обратная той что указана в подписи, на картинке аккумулятор закипел из за перезарядки и слегка потёк, вытекшая кислота окислила клеммы.
    3. Готовые аналоги: www.aliexpress.com/item/XH-M609-DC-12-V-24-V/32860472797.html или www.aliexpress.com/item/Free-Shipping-electronic-12V-battery-discharge-protection-automatic-recovery-low-voltage-low-voltage-protection/1000001394325.html
    4. Не увидел где отрабатывается работа стартера, когда автомобиль заводится (особенно зимой), напряжение может упасть на пару секунд пока работает стартер, имеет смысл мониторить динамику напряжения и не выключать нагрузку если напряжение слишком резко просело.


    1. San_tit
      05.04.2019 23:08

      На многих современных авто все побочные цепи автоматически отключается при работе стартера, так что там не то что падение будет, а скорее всего, вообще отсутствие напряжения.


      1. lonelymyp
        06.04.2019 00:03
        +1

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


      1. esaulenka
        06.04.2019 09:49

        ВАЗ-2101 по этому критерию можно считать современным автомобилем, там уже был соответствующий контакт на замке зажигания.


      1. AllexIn
        06.04.2019 21:52

        Наоборот же… На большинстве(всех?) современных автомобилях побочные цепи вообще не замечают работы стартера.


    1. quwy Автор
      06.04.2019 03:03

      Так и не увидел ответа почему прикуривать вредно

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

      На КДПВ скорее ситуация обратная той что указана в подписи

      Не скажите! Видели когда-нибудь АКБ на давно (годами) не использовавшейся технике? Каждый третий в таком состоянии.

      Готовые аналоги

      Я велосипед изобретаю, да еще и тандем. То есть хотелось сделать самому и чуть погибче.

      Не увидел где отрабатывается работа стартера

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


      1. SergeyMax
        06.04.2019 06:54

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


        1. quwy Автор
          06.04.2019 17:19

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


  1. SergeyMax
    05.04.2019 23:42

    Арифметика крайне простая
    Не могу понять, как в результате этой арифметики из 2857 часов получилось 106 дней. Сколько часов в ваших сутках?))


    1. quwy Автор
      06.04.2019 03:04

      Да… Даже и не знаю как так получилось :)


    1. vis_inet
      06.04.2019 14:48
      +1

      Сколько часов в ваших сутках?))
      26,95 ч. — очевидно же )))


  1. DrPass
    06.04.2019 00:22

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


    1. quwy Автор
      06.04.2019 03:06
      +1

      Разница в потреблении, и, как следствие, сроках разряда. Штатная электрика жрет от силы миллиампер 5..10, а пишущий регик может и 300 скушать, разница огромная.


  1. BratSinot
    06.04.2019 00:42

    Проблема с потреблением DC-DC легко решается физическим выключателем.


    1. quwy Автор
      06.04.2019 03:07

      Который нужно не забывать каждый раз выключить. На то мы и инженеры, чтобы не делать такую работу руками.


      1. BratSinot
        06.04.2019 09:23

        На то мы и инженеры, чтобы иметь «железный» выключатель, ибо ТБ.


        1. esaulenka
          06.04.2019 10:13
          +1

          У меня плохие новости. В современном гражданском автомобиле выключатель обязателен только на бензовозах. И то есть исключения (в виде устройств, которые штатно запитаны в обход этого выключателя).
          Все остальные авто ни «железно отключить» нельзя.


          1. BratSinot
            06.04.2019 22:03

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

            Простите, а когда бензовоз стал «гражданским»? Или вы про военных говорите?
            Да и вообще, часто вы видите новые самосвалы или бетономешалки?

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


            1. esaulenka
              09.04.2019 12:52

              Простите, а когда бензовоз стал «гражданским»?

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

              Да и вообще, часто вы видите новые самосвалы или бетономешалки?

              Ежедневно, к сожалению. У нас под окнами очередной торговый центр строят.
              А несколько лет назад, когда занимался разработкой железяки для авто, ещё и «изнутри» видел.

              Я к чему это. Если мы говорим «ТБ», должно быть какое-то официальное требование. А его нету, и все автопроизводители не считают необходимым полностью обесточивать машину (более того, это несёт кучу неудобств и проблем как для пользователя, так и для самого производителя).

              Прикуриватель, кстати, часто на цепь аксессуаров замка зажигания подключается, и питание там «автоматически» пропадает на заглушенной машине.


        1. AllexIn
          06.04.2019 21:54

          у ECU даже тип ошибки такой есть «нештатное отключение питания». Это когда массу выключаете.
          Современные машины не любят отключения питания полного. Так что не, не надо.


          1. BratSinot
            06.04.2019 22:00

            Только вот на ЭБУ питание, при выключенном зажигании, не идет.


            1. AllexIn
              06.04.2019 22:02

              Хм. Вы заставили задуматься.
              Ок, пока не буду спорить.


              1. BratSinot
                06.04.2019 22:04

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


                1. AllexIn
                  06.04.2019 22:07
                  +1

                  Вобщем, вы правы, а я — нет.
                  Внимательно сейчас посмотрел схему подключения своего ЭБУ и оказалось что оно не имеет постоянного питания.
                  А в заблуждение меня ввел тот факт, что гаснет оно не сразу.
                  Судя по документации сделано для того, чтобы оно само штатно обработало факт отключения питания.


            1. d-stream
              07.04.2019 17:05

              Идет. И не только на ECU.


  1. Caracat
    06.04.2019 02:46

    По опыту я за второй аккамулятор для вторичных устройств. Надежность системы выше и сбой/отказ не так критичен. Но и для такого случая можно предусмотреть переключение на основной.


    1. quwy Автор
      06.04.2019 03:08

      Это да, но и габариты выходят на порядки больше.


      1. Caracat
        06.04.2019 09:02

        Можно второй использовать типа как для ИБП. Часто в подкапотном пространстве места достаточно.


    1. Nomad1
      06.04.2019 09:59
      +1

      Второй АКБ совсем не просто заряжать — его запрещено подключать к генератору параллельно с основным из-за разных параметров и условий использования. На лодках для этого используется что-то такого типа.
      В любом случае, такой аккумулятор должен быть не свинцово-кислотным, а заодно к нему нужен контроллер разряда, который отключит устройства при напряжении ниже некого предела.
      Одним словом — овчинка выделки не стоит, на мой взгляд.


      1. Caracat
        06.04.2019 10:43

        Это да, лучше бы производитель авто предлагал такую опцию.


        1. artyums
          06.04.2019 23:02

          Увы, но слишком маловостребовано для внедрения в массовый автопром…


      1. AllexIn
        06.04.2019 21:55

        А можно подробнее про разные условия использования и запрет параллельного подключения?


        1. Nomad1
          06.04.2019 23:20

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


          1. AllexIn
            06.04.2019 23:24

            Очевидно что второй аккум подключен через диод и не отдает ток лвым потребителям.
            Так что это не тоже самое что аккум двойной емкости.


            1. Nomad1
              07.04.2019 09:58

              Если через диод, то это уже не совсем параллельное соединение :) Банально, ток из батареи А в Б не будет перетекать, а из Б в А будет, а заодно и будет питать его потребителей. При этом зарядка такой системы должна быть раздельной, двухканальной, иначе мы просто закоротим диод. Так мы понемногу приходим к BMS, аналогичной тем, что используются для заряда ячеек в литиевых батареях. Ну или к аналогу Echo Charge по ссылке.


          1. DrPass
            06.04.2019 23:27

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


            1. Nomad1
              07.04.2019 09:55

              Для балансировки заряда есть контроллеры, по ссылке выше был один, не дешевый. Для балансировки нагрузки, чтобы могли меняться ролями — пока не нашел.


  1. Walter
    06.04.2019 04:27

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

    Может элементной?


    1. quwy Автор
      06.04.2019 04:28

      Может элементной?

      Может и так. Спасибо.


  1. FreeManOfPeace
    06.04.2019 09:10

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


  1. esaulenka
    06.04.2019 10:06
    +3

    Очень хорошая статья, особенно на фоне «фигак-фигак, кубМХ, лампочка моргает! смотрите продолжение в следующей серии».
    Человек, который знает, как внутри работает АЦП, а не только имеет примерное представление о разнице ардуиновских DigitalRead и AnalogRead — это какой-то уникум по нынешним временам…

    Парочка замечаний.
    В цепи измерения внешнего напряжения стабилитрон имеет ток утечки, сравнимый с током делителя. Это надо бы перепроверить (партнамбер на стабилитрон я не увидел) и что-то сделать. Самое простое — выкинуть его, возложив защитные функции на встроенные диоды контроллера.
    Я не знаю, откуда Вы взяли, что характеристика термистора линейная. В даташите на импользуемый NTCLE100E3 приведена совершенно стандартная формула с логарифмом.


    1. quwy Автор
      06.04.2019 17:37

      В цепи измерения внешнего напряжения стабилитрон имеет ток утечки, сравнимый с током делителя

      Сейчас прямо проверил. У кремниевого стабилитрона в закрытом состоянии ток утечки не удается измерить прибором с разрешающей способностью 0.01 мкА, не думаю, что он как-то влияет.

      Я не знаю, откуда Вы взяли, что характеристика термистора линейная

      Ну, под «более-менее линейная» имелось в виду что на расстоянии от типичной комнатной температуры до ключевых точек нелинейностью можно в некоторой мере пренебречь.


      1. esaulenka
        06.04.2019 22:50
        +1

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


    1. seri0shka
      06.04.2019 18:18
      +2

      Подтверждаю. Ещё лет 25 тому нужен был экономичный линейный стабилизатор в мультиметр для питания дополнительного устройства. Тогда оптимальным решением оказался обычный эмиттерный повторитель. Стабилитронов пришлось перебрать много, при том токе, который я им позволил, напряжение на них было в 1,5...2 раза меньше положенного. В результате остановился на эмиттерном переходе какого-то транзистора в качестве стабилитрона (есть такая возможность у транзисторов, применяемая даже в промышленных устройствах).
      А публикация очень понравилась, моя любимая ATtiny13, и достойный уважения уровень знаний по теме.


      1. quwy Автор
        07.04.2019 02:42

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


  1. inventor
    06.04.2019 11:24

    Для себя решил эту проблему установкой солнечных панелей на hyundai i20. АКБ 55ah из тех в которые нужно воду заливать. Работает в сумме уже более 4 лет. 1.5 года работал на гидропонике, заряд разряд, год простоя(разрядился почти до 11v, думал ему конец, но для пробы поставил на авто). И ничего, возможно именно малые токи с солнечной панели его и оживили. Днём при любой погоде на АКБ 14.2v, утром 12.7v. Видео регистратор работает круглосуточно, машина заводится с пол оборота. Хочется верить википедии, выходит вроде как работа в буфферном режиме. Пишут, что АКБ так может протянуть 8-12 лет. Врут наверное, или я что то не так понял, но если протянет еще пару лет, то система окупится.


    1. vis_inet
      06.04.2019 15:24

      Что за панели?
      Куда их установили?


      1. inventor
        06.04.2019 16:11

        Панели 10w поставил 6 штук, прилепил на крышу, на силикон Super7. Толщина панелей 2-3мм не думаю, что особо влияет на аэродинамику. Покупал на алиэкспресе по 13.5$, еще контроллер заряда 7$ и блок розеток с 3 USB и 3 выходами по 12v под прикуриватель 4.5$.


        1. EvgeniyNuAfanasievich
          06.04.2019 18:47

          не боитесь, что лкп настанет пипец из-за влаги и грязи под ними?


          1. inventor
            06.04.2019 19:36

            Силикон который использовал(Super7) к краске нейтрален, от него проблем точно не будет. Ни влага, ни грязь под панели не попадут, зазоров нет, всё герметично.


  1. VT100
    06.04.2019 12:23
    +1

    По «автотеме» — надо учитывать возможность импульсных перенапряжений (импульсы амплитудой до сотен вольт) и переполюсовок в бортовой сети. И не только с т.з. входа стабилизатора питания (хотел было предложить LM2931, но у него существенно выше ток потребления), но и с точки зрения затворов ключевых транзисторов.

    esaulenka

    В цепи измерения внешнего напряжения стабилитрон имеет ток утечки, сравнимый с током делителя. Это надо бы перепроверить (партнамбер на стабилитрон я не увидел) и что-то сделать. Самое простое — выкинуть его, возложив защитные функции на встроенные диоды контроллера.

    +1


  1. u010602
    06.04.2019 22:16
    +1

    Устройство с микроконтроллером для защиты акб от высадки микроконтроллерами.


  1. batman12345
    06.04.2019 23:15

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


    1. uups
      07.04.2019 01:17
      +2

      Чем больше степеней защиты, тем более увеличивается количество остальных и уменьшается количество «тех кому надо». Среди угонщиков нет дураков тратить час на демонтаж всех систем, если машину соседа со штатной системой можно угнать за секунды, использовав девайсы за несколько десятков тысяч рублей.


      1. u010602
        07.04.2019 01:31

        Почему этим занимаются только в СНГ? Я про сигнализации. Может проще застраховать авто за те-же деньги? Ну а если авто дешевле 20к, может и вообще смысла нет парится? Меня всегда удивляли сигнализации в жигулях… Просто дешевые сигнализации ломаются устройствами намного дешевле десятков тысяч рублей. И такие устройства зачастую универсальные. По хорошему сигнализацию нужно регулярно менять, брать самую уникальную и дорогую. И средства на защиту превысят цену страховки.


        1. uups
          07.04.2019 01:42

          Рискну предположить, что из-за большого количества угонов, дорогих страховок и не самого клиентоориентированного отношения самих СК. Если иметь достаточно дорогое и угоняемое авто, то противоугонный комплекс отбивается или почти отбивается за счет скидки на каско в течении лет 5. Плюсом идет отсутствие потери нервов и нескольких месяцев времени(и аренды аналогичного авто) в случае угона. От одной сигнализации толку чуть больше 0. Необходим еще иммобилайзер, замок капота, блокиратор руля и пара маяков. Можно еще много чего добавить. Естественно чем больше систем, тем хуже юзабилити и надежность всего этого добра. Именно в этом и заключается основная проблема противоугонных комплексов, а не в том что «если захотят все равно угонят».


          1. u010602
            07.04.2019 02:04

            Если иметь достаточно дорогое авто, то его надо и менять раз в 3 года, ну максимум через 5 лет. Т.е. выходит или не окупается, или выходит в 0.
            Хотя с такими приключениями, я бы взял авто по проще и не такое угоняемое. А зачем арендовать аналогичное авто? Можно же поездить с женой… или на такси, или арендовать седан по проще.
            Страховка заодно еще покроет пожары, аварии, воровство фар, колес, падение деревьев.

            А что вы будете делать с маяками? Сами поедете морду бить? Или полиция обьявит план перехват вашего авто, которое может за сутки проехать до 2000 км, пересечь границы областей (или других территориальных единиц)? Если авто такое дорогое, что в него стоит ставить 6 систем защиты, и люди обошли 4 из них, то думаю они уж озаботятся загнать машину в кузов фуры из металла, где ни один спутник не ловится, ни одна моб связь не берет.

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


            1. uups
              07.04.2019 02:19

              Ну можно и с женой и на такси и попроще, но тогда можно дойти до того что и это авто не обязательно покупать было…
              Лучше знать местоположение авто, замотивировать полицию работать шансы есть.
              Если авто такое дорогое, то долго стоять в неохраняемом месте оно не должно, это тоже одна из степеней защиты. А быстро за минуты и тихо угнать его невозможно.
              Ну т.е возможно, но с участием владельца(разбой), это кстати станет самой главной дырой в безопасности начиная с определенного уровня защиты.
              Страховаться точно проще и это надо делать, но от проблем это к сожалению не избавляет, если не учитывать такой вариант, что в случае угона едем салон за новой машиной, а адвокат ходит по овд и страховым выбивает выплату. Но это опять же потеря кучи бабла.


              1. u010602
                07.04.2019 19:18

                это авто не обязательно покупать было…

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

                Если авто стоит на стоянке или в гараже — может лучше охранять помещение, а не авто?

                разбой

                Так может ну его? пусть лучше угоняют :)

                от проблем это к сожалению не избавляет

                Только если воспринимать это как проблему. Ведь вы правильно написали:

                в случае угона едем салон за новой машиной, а адвокат ходит по овд и страховым выбивает выплату.


                потеря кучи бабла

                А все эти системы, работа по их установке, время на их изучение, выбор, простой авто — это не потеря? Тем более ни каких гарантий.

                А сколько стоят нервы? В смысле если вообще не парится за угон, просто страховать и терять маржу, вдруг это дешевле по нервам чем переживать? Ведь если готовишься к угону, то ты уже переживаешь.


                1. uups
                  07.04.2019 19:38

                  Конечно не обязательно :)

                  Мне кажется это лежит далеко за рамки нашего обсуждения. У всего есть плюсы и минусы.
                  Если авто стоит на стоянке или в гараже — может лучше охранять помещение, а не авто?

                  Если не охранять помещение, то это только упросит задачу угонщику.
                  В закрытом гараже за ночь думаю можно абсолютно с любой защитой справиться, и шум никто не услышит. Но если охранять только помещение, то получается нельзя оставлять авто в неохраняемом месте…
                  А сколько стоят нервы? В смысле если вообще не парится за угон, просто страховать и терять маржу, вдруг это дешевле по нервам чем переживать? Ведь если готовишься к угону, то ты уже переживаешь.

                  Может дешевле, а может нет. Каждый сам решает. Общение с полицией и ск не всем приятно. Утрата своего имущества эмоционально тоже не приятна. Помимо этого, потеряешь процентов 10 от реальной цены такого же БУ авто. А от нового еще больше.
                  Париться или не париться мне кажется от других вещей зависит, а не от наличия защиты на авто. Чтобы не париться самый лучший вариант купить модель, которую меньше угоняют.


            1. AllexIn
              07.04.2019 06:39

              Авто попроще и не такое угоняемое…
              У меня ширпотребная Kia Rio. Второй по угоняемости автомобиль. Первый — ВАЗ.


        1. Squoworode
          08.04.2019 21:40

          Меня всегда удивляли сигнализации в жигулях
          Жигули угоняют для души!


          1. u010602
            08.04.2019 22:24
            +1

            Просто сигнализация дороже жигуля :)


    1. quwy Автор
      07.04.2019 04:07

      Практикуется и такой подход. Вскрытую машину перегоняют в соседний квартал и на пару дней бросают на парковке многоэтажки на «карантин». Если через несколько дней она все еще там, угоняют насовсем. Это как раз тот случай, когда трекер будет мегаполезным.


  1. rinaty
    07.04.2019 01:32

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


    1. quwy Автор
      07.04.2019 02:49

      Меня как-то стукнули на парковке и смылись, но регистратора тогда еще не было. Вот и захотелось, чтобы регик по мере сил работал не только на ходу.


      1. AllexIn
        07.04.2019 06:40

        Пихните ему буферный аккум не большой емкости.
        Тогда потреблять ток он будет только когда машина заведена, но работать будет еще N времени после этого, пока не сядет буфер.


      1. rinaty
        07.04.2019 10:51

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


        1. quwy Автор
          08.04.2019 03:00

          Для борьбы с этим поставил мотоциклетный регистратор. Коробочка без экрана в бардачке, на проводах две выносные камеры, размером с крупную виноградину. Все управление со смартфона по wifi (регик содержит маломощную AP).


          1. rinaty
            08.04.2019 11:30

            спасибо, утащил себе идею


  1. legolegs
    07.04.2019 12:40

    Существуют видеорегистраторы со встроенным аккумулятором и детектором ударов. Они сами включаются и снимают объект, вызвавший удар, потом выключаются.


    1. artyums
      07.04.2019 19:10

      Они не выключаются, а прекращают запись. Сама камера при этом постоянно работает и лишь сохраняет тот отрывок, в котором произошел удар.

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


  1. alexyr
    07.04.2019 17:06

    image
    У меня на обеих машинах регистраторы питаются от коробочки с отключением питания при низком вольтаже:
    Mini USB Hardwire DC 12V to 5V…
    Automatically turn off the camera when the car power supply drops to 11.6V