Монитор батареи и навигационные огни для Walkera #36

osnwt

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

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

Основная функция: как только напряжение упадет ниже определенного порога (например, до 11 вольт при 12.6 исходно), оба светодиода начинают синхронно вспыхивать. Частота вспышек увеличивается до почти непрерывного горения при дальнейшем падении напряжения до другого предела (скажем, 9 вольт - уже критический порог). При снижении до третьего предела (скажем, 8.5) устройство все гасит и уходит в режим powerdown, потребляя микроамперы (чтобы не убить батарею, если забыли выключить).

При обдумывании, чем занять устройство во время полета, и при воспоминании о свободном 5-м канале приемника на #36 и тумблере на пульте захотелось задействовать его. Так появилась вторая функция той же схемы - режим моргающих поочередно (как на самолетах) навигационных огней. С передатчика можно переключать режим “включено-выключено”. При включенном идут поочередные вспышки по принципу “верх-пауза-низ-пауза”. Если же свободного канала передатчика нет, то можно принудительно включить этот режим, поставив перемычку на схеме.

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

Реализовано все это (пока в виртуальном виде - надо платку спаять) на одном контроллере AVR ATtiny15L (8 ног корпус), стабилизаторе 5v (если всегда использовать с управлением от приемника, то питать можно от него) и двух светодиодах, управляемых ключами на полевых транзисторах (мои светодиоды кушают по 40 mA штатно, зато их видно отлично даже днем).

Мне интерес представляло написать софт для этого контроллера, не имеющего оперативной памяти и не поддерживаемого поэтому большинством компиляторов C. На ассемблере бы можно было написать все несколько быстрее, но мне было интересно опробовать компилятор ImageСraft ICCtiny, рассчитанный как раз на контроллеры AVR без SRAM. Энное время ушло на то, чтобы уяснить пару особенностей компилятора для написания более эффективного кода (путем изучения кода генерируемого) и нахождение бага компилятора. Зато эксперимент удался, и в симуляторе Proteus данная схема работает в реальном масштабе времени.

Собственно, вопрос: какие есть смысл установить параметры питания батареи для 3-cell LiPo батареи? В макете поставил пока так:

// Battery voltage levels
#define BATTERY_RECOVERY			11.2	// battery recovery level
#define BATTERY_LOW				 11.0	// battery discharge level
#define BATTERY_CRYTICAL			9.0	 // crytical battery level
#define BATTERY_POWERDOWN		   8.5	 // powerdown level

Может, кто-то подскажет по своему опыту, как лучше подстроить эти пределы?

Prikupets

знаю что у новых батарей с 3.2 спадает ниже 3 секунд за 20.
я думаю 3.5 - уже надо сажать (вертолет)

Psw

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

osnwt
Psw:

Позволю себе продублировать пару/тройку скачанных из Инета разрядных графиков для лития - места много не займёт…

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

Интеллект делать в таком устройстве не хочется, так как чтобы мерять такие разрадные токи… Вообще говоря, есть мысли интегрировать эту функциональность в контроллер двигателя - там ток все равно меряется, и статистика разряда может быть накоплена. Но пока сойдет и так, как есть. Только пределы подобрать надо под конкретный экземпляр батареи. Вчера собрал на макетике - симулятор не подвел, работает, как доктор прописал 😃 Буду ставить на верт и на летающее крыло. Последнее - прикольная летающая тарелка будет в свете луны в динамике у Черного моря 😉

abalex
osnwt:

Вообще говоря, есть мысли интегрировать эту функциональность в контроллер двигателя

Буду ставить на верт и на летающее крыло. Последнее - прикольная летающая тарелка будет в свете луны в динамике у Черного моря 😉

И сирену для поиска модели туда же. С каким-нибудь НЛО-шным звуком во время полета 😃

Boriska62
osnwt:

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

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

osnwt
Boriska62:

Видел где-то такое решение - измеряется разность напряжений на “положительном” проводе питания регулятора

Решение нормальное, есть только два минуса:

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

Более красивое решение - специальные датчики тока на эффекте Холла или что-то подобное. Но они не слишком дешевые.

osnwt:

Реализовано все это (пока в виртуальном виде - надо платку спаять) на одном контроллере AVR

А вот и реальное решение, выполненное на скорую руку (SprintLayout -> негатив на струйнике -> фоторезист -> плата):

dmitryu
Boriska62:

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

Вот схема автомобильного амперметра “без шунта”. Собрал, поставил на машину - работает.
vksn.narod.ru/auto/r489it.html

osnwt
dmitryu:

Вот схема автомобильного амперметра “без шунта”. Собрал, поставил на машину - работает.

Принцип понятен вполне (шунтом является кусок провода). Более того, у многих AVR есть режим дифференциального входа АЦП с программируемым усилителем. Так что вполне реально это все померять. Надо просто экспериментировать.

Psw
osnwt:

на скорую руку

Прикольная у osnwt рука. Линия жизни долгая, (“бесов треугольник”?) явно выражен, хотя его лучше
на правой руке глядеть … Интересно, что сказал бы On-Line хиромант по такой фото ?

(SprintLayout -> негатив на струйнике -> фоторезист -> плата):

А я такой путь ещё ни разу в жизни не прошёл - из новостей на ентом пути - только покупка струйника R220 способного лоток для CD заглатывать, а у него размеры вполне подходящие/достойные.
Но однако - ещё идти и идти, одно изучение проги разводки чего стоит…

osnwt
Psw:

А я такой путь ещё ни разу в жизни не прошёл - из новостей на ентом пути - только покупка струйника R220 способного лоток для CD заглатывать, а у него размеры вполне подходящие/достойные.
Но однако - ещё идти и идти, одно изучение проги разводки чего стоит…

В моем варианте достаточно любого струйника или лазерника. Я печатал на каком-то Epson. При печати на пленке не нужно способности печатать на твердом листе (CD). Хотя в последнем варианте можно попробовать прямую печать на фольгу без фоторезиста (если пигментные чернила).

А насчет программы разводки - мне не хотелось морочиться с PCAD/ORCAD и т.п. монстрами для данной платы (я долго вообще думал, сделать ее на макетке или все же развести). Потом взял любимый многими SprintLayout4… Это примитивная программа, рассчитанная на ручную разводку, но с готовыми примитивами типа площадок, инструмента прокладки дорожек и библиотеки корпусов. Ее изучение у меня заняло вместе с разводкой несколько часов параллельно с переключением на основную работу. Рекомендую для простых вещей.

А печать на пленке, вырезание платки, наклейка при свете неонки пленочного фоторезиста, экспонирование, проявка, травление и пайка с проверкой заняли еще часа 4, из которых больше всего неприятного времени ушло на вырезание платки из стеклотекстолита ввиду малости ее размеров. Так что в этом процессе, по моему, главное - это иметь негативный пленочный (не аэрозоль) фоторезист (я использовал Riston-215 от Du-Pont) и правильный проявитель к нему (Na2CO3 0.85% раствор - пробовал другим подручным материалом - результаты намного хуже)

Ниже прицеплено описание моего самого первого опыта изготовления платы - сразу с шагом 0.5мм и толщиной дорожек 0.3мм. Многие вещи подтверждены - надо прикатывать пленку утюгом и использовать нормальный проявитель. Не претендую на правильность технологии - это лишь описание первой попытки. Но, может, кому-то будет интересно. Во всяком случае, даже для такой мелкой платки из SMD компонентов изготовление PCB уже оправдывает себя. И в руках держать приятнее, и сопли проводами разводить не нужно.

Изготовление PCB - описание первой попытки:

DataSheet на негативный пленочный фоторезист Rison-215:

Плата в SprintLayout под резисторы 0805 - мелочь, а приятно 😃