naza2frsky - адаптер смартпорта для FrSky за 3$

alezz
AndrewV:

у него есть один значительный недостаток - реализация датчика тока

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

Features:
·Input voltage: 6~28V (support 30V)
·Max current sensing: 90A
·Voltage and current measurement configured for 5V ADC

т.е. при токе 90А на выходе должно быть 5В, а ни как не менее 150мВ

AndrewV
alezz:

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

т.е. при токе 90А на выходе должно быть 5В, а ни как не менее 150мВ

Все правильно. Делителя нет. Сажусь на a1, a2. Внутри датчика bec 5В.
При полностью заряженной 4S сигнал с выхода датчика напряжения 1,64 В. Внутри датчика делитель на 10 скорее всего. А вот по току я ничего не увидел сразу. Думал что спалил. Пробовал наоборот включать. Но все дома с токами до 10 ампер. Потом стал разбирать схему ну и разобрался. Если есть сомнения откройте даташит от Техас инструмента на ina169. Бывает ещё похожий, но там жёлтого цвета деталь около шунта. Может там другая история или шунт побольше.

AndrewV
AndrewV:

имеет формулу выходного напряжения Iшунта*Rшунта*Rусиления/1000кОм.

Извиняюсь, делить на 1кОм

Вторая разновидность датчика имеет в цепи управления усилением ina169 резистор в 110 ком (на фото рядом с ёмкостью). Т.е выходное напряжение до 5В при 100А. Все как в спецификации.

Sorcer
AndrewV:

Вторая разновидность датчика имеет в цепи управления усилением

Можно чуть попроще объяснить, тот что у меня на скриншоте #465 мерить правильно до 100А не будет, как понимаю? а нужно было брать с жёлтым резистором тот что выше на картинке?

AndrewV
Sorcer:

Можно чуть попроще объяснить, тот что у меня на скриншоте #465 мерить правильно до 100А не будет, как понимаю? а нужно было брать с жёлтым резистором тот что выше на картинке?

да, но по сути они одинаковые, просто к 1-му надо паяльник приложить. замените резистор как у меня на картинке в посте rcopen.com/forum/f123/topic386079/475
и все будет работать. Резистор подбирайте исходя из ваших потребностей. Хотите на выходе максимум 5В - 110кОм, 2,5В - 47 кОм.
Работы на 10 минут.

Sorcer
AndrewV:

да, но по сути они одинаковые, просто к 1-му надо паяльник приложить.

тфу… эт не моей скрин, там выкладывал с линиями питания.
У меня вот такая, по совету Алексея - www.ebay.com/itm/…/181485306857
В описание - Max current sensing: 90A -
И тут вроде есть резистор этот.

alezz
Sorcer:

У меня вот такая

должна работать безо всяких модификаций, если (вдруг) не работает то можно смело предъявлять претензии китайцу т.к. в описании написано “Voltage and current measurement configured for 5V ADC” и требовать замену. Но обычно китайцам нет ни какого резона высылать то что не соответствует описанию, а точнее банально неисправно, при пиковой нагрузке в 100А выдавать напряжение 150мВ это неисправность. Думаю вышеописанный случай или очень редкое исключение или чья-то ошибка

Sorcer
alezz:

Но обычно китайцам нет ни какого резона высылать то что не соответствует описанию

А вот на этом, как раз, половина китайцев бизнес и строят. И ещё как высылают.

alezz:

при пиковой нагрузке в 100А выдавать напряжение 150мВ

150мВ эт не у меня было, а у Андрея. И там всё норм, т.к. у него другая плата…

alezz
Sorcer:

А вот на этом, как раз, половина китайцев бизнес и строят. И ещё как высылают.

глянул, у меня с 2008 года около 200 покупок на ебей (70-80% китайцы), штук 30 на ХК, рцтаймер, бангуд и т.д. Чтобы откровенно обманули, не было ни разу, единичный брак или не получение было, но все решалось или возвратом денег или бесплатно высылали замену. Единственная проблема в случае форсмажора, все это происходит оочеееень долго, хотя тут основная вина на почте лежит, но все 100% проблемных покупок решались в мою пользу а не в пользу китайца

AndrewV
Sorcer:

тфу… эт не моей скрин, там выкладывал с линиями питания.
У меня вот такая, по совету Алексея - www.ebay.com/itm/…/181485306857
В описание - Max current sensing: 90A -
И тут вроде есть резистор этот.

Красной стрелкой вы указывает на монитор шунта ina169 www.ti.com/lit/pdf/sbos181 Резистор маленький выше, через 1 деталь, на нём надпись неразборчиво видна. Суть одна, в этих датчиках размер резистора в килоомах по сути и есть коэффициент усиления.

Рассмотрел. У вас он обозначен 05D это 110кОм. Это хороший вариант. При 90А - 5В

alezz:

глянул, у меня с 2008 года около 200 покупок на ебей (70-80% китайцы), штук 30 на ХК, рцтаймер, бангуд и т.д. Чтобы откровенно обманули, не было ни разу, единичный брак или не получение было, но все решалось или возвратом денег или бесплатно высылали замену. Единственная проблема в случае форсмажора, все это происходит оочеееень долго, хотя тут основная вина на почте лежит, но все 100% проблемных покупок решались в мою пользу а не в пользу китайца

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

10 days later
Morfey

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

#define USE_SINGLE_CELL_MONITOR
#define USE_AP_VOLTAGE_BATTERY_FROM_SINGLE_CELL_MONITOR // use this only with enabled USE_SINGLE_CELL_MONITOR
#ifdef USE_SINGLE_CELL_MONITOR

Тут написал три банки:

#define MAXCELLS 3

И подправил делители:

 238.547031716,
  116.553595658,
  77.750655456,
  0.0,
  0.0,
  0.0,,
  0.0, // diverders 7-12 not defined because my network includes only 6 voltage dividers
  

Соответственно собрал резистивный делитель, и подал на входы ардуино А0-А2 (На выходах с делителя ~ 2.8 - 3,2в). Ардуино шлет данные в смарт порт, таранис видит датчики, но напряжение на банках видеть отказывается.
Пробовал разные версии MavLink_FrSkySPort, брал тут и на git.

Что я забыл?

alezz
Morfey:

Что я забыл?

Залить в таранис OpenTX 2.1.х (если еще не залит), зайти на вкладку телеметрии и настроить свои датчики, для примера смотри RxBt.

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

Morfey
alezz:

Залить в таранис OpenTX 2.1.х (если еще не залит), зайти на вкладку телеметрии и настроить свои датчики, для примера смотри RxBt.

У меня вообще не отображается датчик который должен отображать напряжение.
В 2,1, как я понимаю надо делать так: создаешь виртуальный датчик calculated | cell, а дальше в cell sensor выбираешь источник. Но у меня в источниках пусто.
А в 2,0 в параметрах cell и cells показывают только range который задал.

Вот такие датчики у меня выводятся:

В naza2frsky все работает, правда там делал напряжение всего акка.

alezz
Morfey:

У меня вообще не отображается датчик который должен отображать напряжение

В naza2frsky все работает, правда там делал напряжение всего акка.

ну раз датчик не видно, получается что ардуино либо НЕ шлет данные в смарт порт, либо шлет в неправильном формате. Учитывая что “в naza2frsky все работает” осталась мелочь - определить что в скетче для АРМ не правильно, сравнив оба скетча 😉

Morfey
alezz:

ну раз датчик не видно, получается что ардуино либо НЕ шлет данные в смарт порт, либо шлет в неправильном формате.

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

alezz:

Учитывая что “в naza2frsky все работает” осталась мелочь - определить что в скетче для АРМ не правильно, сравнив оба скетча

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

alezz:

осталась мелочь - определить что в скетче для АРМ не правильно

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

alezz
Morfey:

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

ну наверное НЕ ноль если удалось прикрутить к naza2frsky вывод напряжения, который он изначально НЕ делается. Для начала точно так же в АРМ версии попытаться выводить общее напряжение (напряжение одной банки) как это сделано в naza2frsky ибо искомая строка тебе уже известна.

Morfey
alezz:

ну наверное НЕ ноль если удалось прикрутить к naza2frsky вывод напряжения, который он изначально НЕ делается.

Просто внимательно прочитал тему и делал по твоему описанию. Так же удалось таким же методом прикрутить три банки к naza2frsky, но это больше смахивает на колхоз. (И такое будет нормально работать только в opentx 2.1, как я понимаю)

alezz:

Для начала точно так же в АРМ версии попытаться выводить общее напряжение (напряжение одной банки) как это сделано в naza2frsky ибо искомая строка тебе уже известна.

Сейчас буду пробовать.

alezz:

ну наверное НЕ ноль если удалось прикрутить к naza2frsky вывод напряжения, который он изначально НЕ делается.

Просто внимательно прочитал тему и делал по твоему описанию. Так же удалось таким же методом прикрутить три банки к naza2frsky, но это больше смахивает на колхоз. (И такое будет нормально работать только в opentx 2.1, как я понимаю)

alezz:

Для начала точно так же в АРМ версии попытаться выводить общее напряжение (напряжение одной банки) как это сделано в naza2frsky ибо искомая строка тебе уже известна.

Сейчас буду пробовать.

Попробовал в MavLink_FrSkySPort заменить

FrSkySPort_SendPackage(FR_ID_A3_FIRST, handle_A2_A3_value((ap_roll_angle+180)/scalefactor));

на

FrSkySPort_SendPackage(FR_ID_A3_FIRST, analogRead(A0));

Получил в телеметрии датчика “А3” число, не зависящее от поданного напряжения на вход А0. (Так что “в лоб”, как в naza2frsky не получилось).

А если такую же операцию проделать, но написать так:

FrSkySPort_SendPackage(FR_ID_CELLS, analogRead(A1));

То хоть в телеметрии начинает отображаться датчик “Cels”, правда вместо значений там “—”.

alezz
Morfey:

Попробовал в MavLink_FrSkySPort заменить

FrSkySPort_SendPackage(FR_ID_A3_FIRST, handle_A2_A3_value((ap_roll_angle+180)/scalefactor));

на

FrSkySPort_SendPackage(FR_ID_A3_FIRST, analogRead(A0));

Получил в телеметрии датчика “А3” число, не зависящее от поданного напряжения на вход А0. (Так что “в лоб”, как в naza2frsky не получилось).

Ну давай разбираться дальше, то ли разрядность FR_ID_A3_FIRST в телеметрии не правильное, то ли analogRead не работает (например нет напряжения на входе). Вот инфа по analogRead arduino.ru/Reference/AnalogRead
т.е. функция выдает значения от 0 до 1023. Поэтому пробуем сначала например FrSkySPort_SendPackage(FR_ID_A3_FIRST, 500); потом FrSkySPort_SendPackage(FR_ID_A3_FIRST, 1000); а потом запредельное FrSkySPort_SendPackage(FR_ID_A3_FIRST, 10000); и смотрим что получаем по телеметрии. Исходя из полученных результатов делаем выводы 😉

Morfey
alezz:

Поэтому пробуем сначала например FrSkySPort_SendPackage(FR_ID_A3_FIRST, 500); потом FrSkySPort_SendPackage(FR_ID_A3_FIRST, 1000); а потом запредельное FrSkySPort_SendPackage(FR_ID_A3_FIRST, 10000); и смотрим что получаем по телеметрии. Исходя из полученных результатов делаем выводы

В первом случае телеметрия дает 5.0, второй 10.0 и последний 100.0.
Как я понимаю почему то не считываются данные с входов A0-A2

alezz
Morfey:

Как я понимаю почему то не считываются данные с входов A0-A2

ну вот, так и до истины добраться не долго 😃 Либо нет напряжения на входах (например подтянул вход к земле низкоомным сопротивлением), либо оно слишком большое (подтянул вход к плюсу, а не минусу), либо AnalogReference неправильно настроен arduino.ru/Reference/AnalogReference, либо увы выгорели входы A0-A2 (например подал напряжение больше 5В). Может есть какие еще варианты, это то что сразу в голову пришло.

Morfey

Сейчас еще раз проверил, при таком виде:

FrSkySPort_SendPackage(FR_ID_A3_FIRST, analogRead(A0));

В телеметрию приходит фиксированное значение 10,23.

alezz:

Либо нет напряжения на входах (например подтянул вход к земле низкоомным сопротивлением), либо оно слишком большое (подтянул вход к плюсу, а не минусу), либо AnalogReference неправильно настроен arduino.ru/Reference/AnalogReference, либо увы выгорели входы A0-A2 (например подал напряжение больше 5В).

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

Делитель делал по схеме:

alezz:

AnalogReference неправильно настроен arduino.ru/Reference/AnalogReference,

Поменяв AnalogReference на DEFAULT заработала

FrSkySPort_SendPackage(FR_ID_A3_FIRST, analogRead(A0));

Но побаночно все ровно молчит.