Пищалка позволяет контролировать напряжение на банках (до 4 банок) LiPo батареи, может пищать при включении с пульта, а также сигнализировать о потере сигнала (при отсутствии failsafe у приёмника).
Давно зрела идея скрестить поисковую пищалку и пищалку для контроля напряжения аккумулятора. Сперва хотел заставить пищалку для контроля за батареей ещё пищать по команде с пульта, посредством RC Switch. Но для реализации пришлось бы колхозить к пищалке этот самый Switch, что мне не нравилось. Поэтому решил сделать свою универсальную пищалку, которая будет контролировать напряжение на банках батареи, пищать по команде с пульта, а также и при потере сигнала.
За основу был взят распространённый не дорогой контроллер Tiny13A, который имеет 4-е АЦП, что позволяет контролировать напряжение на 4-х банках (только при прошивке фьюза RSTDISBL и превращении ножки Reset в ещё один входной порт, иначе будут контролироваться только 3-и банки и распайку резисторов делителя для четвёртой банки R7, R8 ни в коем случае не делать).
Все остальные элементы были выпаяны из старых ненужных плат, кроме мосфета, который был у меня в запасниках. (транзистор можно поставить и биполярный на ток 200-250 мА для электромагнитного излучателя, для пьезо – можно меньше.)
Т.к. устройство предполагалось универсальное, то питание заводится с 2-х сторон: от батареи и с приёмника (чтобы была возможность работать отдельно от батареи). Обращаю особое внимание на то, что при неправильном подключении батареи, (при подключенном кабеле от приёмника) будут спецэффекты с дымом (банка или несколько банок получат короткое замыкание через плату пищалки). Поэтому особое внимание следует уделить установке предохранителя (0.2A думаю будет вполне). А если не предполагается использовать пищалку отдельно от батареи, то лучше от приёмника заводить только сигнальный провод, а питание и общий провод не подключать, тогда нет опасности короткого замыкания батареи при неправильном её подключении.
Для защиты схемы от переполюсовки батареи предусмотрен защитный диод VD2.
Предполагается использование безгенераторного пьезо- или электромагнитного излучателя на 5 вольт. Сопротивление между + и – звукового излучателя (R11) нужно при использовании пьезоизлучателя (для электромагнитного излучателя оно не нужно). (Прошивка RC_BattAlarm_ATtiny13_1_NoGen.hex)
Для применения звукового излучателя со встроенным генератором, используйте соответствующую прошивку (RC_BattAlarm_ATtiny13_1_Gen.hex).
Я у себя поставил какие-то NoName электромагнитные излучатели, причём я не знал их резонансную частоту. Пришлось подбирать опытным путём. Оказалось, что мои излучатели (на слух) имеют максимумы на частотах 2344Гц и 4688Гц. Остановился на 4688Гц – более противный писк :)
Для тех, кто будет себе подбирать частоту, изменяя программу:
Есть константа c_Tone, которая определяет частоту сигнала: F = 150000/( c_Tone *2)
Также есть отдельная прошивка (RC_BattAlarm_ATtiny13_1_TEST.hex), которая после подачи питания, воспроизводит поочерёдно сигналы частотой начиная с c_Tone = 36 (2083Гц) до 15 (5000Гц) (22 градации). Нужно на слух найти наиболее громкий звук, запомнить его номер по порядку и сопоставить значению c_Tone. Далее в основной программе изменить константу c_Tone новым значением. И откомпилировать программу (в AVR Studio, достаточно 4 версии).
Также, изменяя константу c_lowBatt, можно изменить порог напряжения для срабатывания сигнализации.
c_lowBatt = 876 3.6B
c_lowBatt = 828 3.4B
c_lowBatt = 779 3.2B
Самый ответственный и сложный момент, это подбор резисторов R1 – R8 в делителях напряжения. Необходимо добиться, чтобы при подключенном заряженном аккумуляторе, напряжение на входах АЦП контроллера было 1,1В. (на схеме приведены номиналы для LiPo аккумулятора - 4.2В на банку)
Резисторы могут быть любого номинала, главное чтобы соблюдалось соотношение R1/R2, R3/R4, R5/R6, R7/R8.
Вот примерные варианты для распространённых номиналов:
При прошивке фьюзы остаются по умолчанию. При этом 1 ножка работает не как входной порт и не может контролировать напряжение на 4-й банке. (устройство может видеть только 3-и банки, и резисторы делителя напряжения для 4-й банки распаивать не надо!)
При программировании фьюза RSTDISBL устройство начинает «видеть» 4-ю банку. Но тогда перепрошить контроллер, простыми средствами, уже не получится. Для перепрошивки нужно будет собрать специальный программатор.
Теперь о работе.
Пищалка может включаться по 3-м причинам (в порядке уменьшения приоритета):
Архив со всем добром (RC_BattAlarm_ATtiny13_1.rar) (Проект в AVR Studio, схема, плата в Sprint Layout 6, файл для тестирования в Протеусе).
Пожелания и критика приветствуются.
За основу был взят распространённый не дорогой контроллер Tiny13A, который имеет 4-е АЦП, что позволяет контролировать напряжение на 4-х банках (только при прошивке фьюза RSTDISBL и превращении ножки Reset в ещё один входной порт, иначе будут контролироваться только 3-и банки и распайку резисторов делителя для четвёртой банки R7, R8 ни в коем случае не делать).
Все остальные элементы были выпаяны из старых ненужных плат, кроме мосфета, который был у меня в запасниках. (транзистор можно поставить и биполярный на ток 200-250 мА для электромагнитного излучателя, для пьезо – можно меньше.)
Т.к. устройство предполагалось универсальное, то питание заводится с 2-х сторон: от батареи и с приёмника (чтобы была возможность работать отдельно от батареи). Обращаю особое внимание на то, что при неправильном подключении батареи, (при подключенном кабеле от приёмника) будут спецэффекты с дымом (банка или несколько банок получат короткое замыкание через плату пищалки). Поэтому особое внимание следует уделить установке предохранителя (0.2A думаю будет вполне). А если не предполагается использовать пищалку отдельно от батареи, то лучше от приёмника заводить только сигнальный провод, а питание и общий провод не подключать, тогда нет опасности короткого замыкания батареи при неправильном её подключении.
Для защиты схемы от переполюсовки батареи предусмотрен защитный диод VD2.
Предполагается использование безгенераторного пьезо- или электромагнитного излучателя на 5 вольт. Сопротивление между + и – звукового излучателя (R11) нужно при использовании пьезоизлучателя (для электромагнитного излучателя оно не нужно). (Прошивка RC_BattAlarm_ATtiny13_1_NoGen.hex)
Для применения звукового излучателя со встроенным генератором, используйте соответствующую прошивку (RC_BattAlarm_ATtiny13_1_Gen.hex).
Я у себя поставил какие-то NoName электромагнитные излучатели, причём я не знал их резонансную частоту. Пришлось подбирать опытным путём. Оказалось, что мои излучатели (на слух) имеют максимумы на частотах 2344Гц и 4688Гц. Остановился на 4688Гц – более противный писк :)
Для тех, кто будет себе подбирать частоту, изменяя программу:
Есть константа c_Tone, которая определяет частоту сигнала: F = 150000/( c_Tone *2)
Также есть отдельная прошивка (RC_BattAlarm_ATtiny13_1_TEST.hex), которая после подачи питания, воспроизводит поочерёдно сигналы частотой начиная с c_Tone = 36 (2083Гц) до 15 (5000Гц) (22 градации). Нужно на слух найти наиболее громкий звук, запомнить его номер по порядку и сопоставить значению c_Tone. Далее в основной программе изменить константу c_Tone новым значением. И откомпилировать программу (в AVR Studio, достаточно 4 версии).
Также, изменяя константу c_lowBatt, можно изменить порог напряжения для срабатывания сигнализации.
c_lowBatt = 876 3.6B
c_lowBatt = 828 3.4B
c_lowBatt = 779 3.2B
Самый ответственный и сложный момент, это подбор резисторов R1 – R8 в делителях напряжения. Необходимо добиться, чтобы при подключенном заряженном аккумуляторе, напряжение на входах АЦП контроллера было 1,1В. (на схеме приведены номиналы для LiPo аккумулятора - 4.2В на банку)
Резисторы могут быть любого номинала, главное чтобы соблюдалось соотношение R1/R2, R3/R4, R5/R6, R7/R8.
Вот примерные варианты для распространённых номиналов:
При прошивке фьюзы остаются по умолчанию. При этом 1 ножка работает не как входной порт и не может контролировать напряжение на 4-й банке. (устройство может видеть только 3-и банки, и резисторы делителя напряжения для 4-й банки распаивать не надо!)
При программировании фьюза RSTDISBL устройство начинает «видеть» 4-ю банку. Но тогда перепрошить контроллер, простыми средствами, уже не получится. Для перепрошивки нужно будет собрать специальный программатор.
Теперь о работе.
Пищалка может включаться по 3-м причинам (в порядке уменьшения приоритета):
- Потеря сигнала с приемника (наивысший приоритет) – частые короткие сигналы.
- Включение с пульта – серия из двойных коротких сигналов.
- Уменьшение напряжения любой банки до порога 3.6В – длинные сигналы с длинной паузой.
Архив со всем добром (RC_BattAlarm_ATtiny13_1.rar) (Проект в AVR Studio, схема, плата в Sprint Layout 6, файл для тестирования в Протеусе).
Пожелания и критика приветствуются.
Подрубаем заряженный аккумулятор и по команде (к примеру, сразу переводим стик в максимум) запоминаются значения АЦП каналов для заряженного аккумулятора. А потом напряжения каналов просо вычисляется. Но там вычисления с плавающей точной - памяти маловато. На СИ только одна операция деления сразу съела всю память. Хотел было сделать свою библиотеку на Ассемблере для операций над 2-х байтными :) числами с плавающей точкой (для данной задачи было бы достаточно) . Но сделал только операцию сложения и конвертирования и уже занял 20% памяти. Понял, что толька одна математика забьет всю память. Оставил эту затею.
Пунктиром можно и сделать. Решил, что описания словами будет достаточно.