MultiWii

Art_Nesterov
Saradon:

Значение-же в GUI выставляется!!!

Так я вроде так и писал…

А вы какую прошивку заливаете?

mw_2015
Art_Nesterov:

Вот необходимое, для нормального влета.

Спасибо за развернутое и систематическое изложение сути. Буду отрабатывать и заодно проведу НИР по движкам. Расброс в характеристиках замечал и ранее.

Saradon
Art_Nesterov:

Так я вроде так и писал…

А вы какую прошивку заливаете?

2.4
А я прям в коде менял и удивлялся, почему не воспринимает.
Ну да ладно. Это проехали. Потихоньку в ток вникаю.
Раскомментировал токомерялку - показывает мне потребление 67А и на нагрузку никак не реагирует.

Saradon

Выставил показания холостого тока в 0.1А.
Подключаю нагрузку, а показания в GUI наоборот - уменьшаются…

Art_Nesterov
Saradon:

Подключаю нагрузку, а показания в GUI наоборот - уменьшаются…

Значит коптер вырабатывает электроэнергию 😃. Попробуйте без контроллера, просто повермодуль и подключите нагрузку к нему. При этом нужно контролировать сигнал для измерения тока. Меняете нагрузку, сигнал тоже должен меняться пропорционально. И гляньте зависимость, может она обратная?
Теоретически в диапазоне до 90А сигнал меняется от 0-5в.

Saradon
Art_Nesterov:

Значит коптер вырабатывает электроэнергию

Ну круто-же! Буду соседям продавать 😃
Значится, эксперименты на коленке.
Меряю напряжение на датчике тока.
К сожалению, динамической нагрузки у меня нет, зато есть лампочки на 5, 20 и 60 ватт.
При нулевой нагрузке, соответственно, и напряжение на проводе - 0 вольт.
Нагрузка 0,4А - напряжение остаётся 0, хотя измерение до тысячных. Только 0,001 появляется в момент подключения.
Нагрузка 1,75А - напряжение 0,05 вольта.
Нагрузка 4.3А - напряжение 0,16 вольт.
Нагрузка 5,1А - напряжение 0,22 вольт.
Короче, девайс работает.
Буду экспериментировать с напряжением прямо на пин.

С параметрами в прошивке по умолчанию на увеличение напряжения GUI реагирует адекватно.
При входе на А2 4,92 вольта в GUI показывает 125А
При 0.82 (меньше не получается) - 21,5А

Тааак. Видимо, таже история, что и с напряжением - данные пишутся в EEPROM. После чистки и заливки тех-же параметров картина уже другая.
При входе. 0,82 вольта показывает 44,5А
А вот дальше самое интересное. При увеличении напряжения ток ПАДАЕТ. При 2,5 на входе GUI показывает ток, равный, или около нуля. При дальнейшем увеличении напряжения ток растёт и при 4,9 доходит до 60А.
Лечится сие выставлением #define PSENSORNULL в 0 и прошивкой через EEPROM_clear.
Принципы поняты, копаю дальше.

Saradon

По итогам - упёрся в линейность отображения нагрузки.
PSENSORNULL = 0 - при отсутствии нагрузки ток, соответственно, нулевой.
Подключаю нагрузку 1.6А и выставляю параметром #define PINT2mA значение, при котором в GUI так-же показывается те-же 1,6А.
У меня это значение 230.
Но при подключении 2,3А в GUI показывает уж 6,5А.
Где настраивается линейная зависимость?

Art_Nesterov
Saradon:

линейность

Сам датчик, скорее всего не может дать линейность. Это связано именно с большим диапазоном 0-90А. (Это в принципе касается любых измерительных приборов. Если например взять обычный мультиметр, и выставить предел, например 2000в и померять 3в, то погрешность будет больше чем в при измерении в диапазоне 20в.) Повермодуль работает до 90А, как заявлено… А ваша нагрузка существенно меньше, и на выходе вы имеете диапазон напряжения 20% от максимально возможного.

Теоретически, нас ведь не интересуют малые токи… По этому “юстируется” по максимальному значению, а минимальные, это уже как выйдет. Ваш коптер потребляет 20А(к примеру) в висении. Создайте нагрузку в 20А, контролируйте ее мультиметром, и выставьте эти 20А.

Saradon

Я понял.
Возможно оно так.
С другой стороны, при подаче 5 вольт на пин мы имеем в GUI максимум 130А.
Значит где-то же в прошивке этот параметр задан.
И поменяв это значение на 90 (в теории, при максималке в 90А датчик должен выдавать 5 вольт) - мы можем получить вполне линейные значения.
Теоретически…

Art_Nesterov
Saradon:

Теоретически…

Теоретически оно так… но заморачиваться не стоит. 130 и 90 отличаются не в разы, а всего на 30%. Имеет смысл выжать из повермодуля напряжение около 5в при максимальном токе для вашего конфига (я так думаю, около 25-30А). Скорее всего это делается заменой одного-двух сопротивлений на самом модуле (нужно схемку глянуть).

схемка модуля
Посмотрел схемку…Нужно не менять сопротивления а добавить делитель на ногу №4. и тогда вообще можно регулировать максимальный выходной сигнал.

Saradon

У меня под 70A максимальный.
Ну где-то же в прошивке задано, что 0-5В соответствуют 0-130А
Всего-лишь надо назначить, что 0-5 равно 0-90…
Моих скромнейших пониманий Arduino хватает лишь на то, что значение напряжения с пина присваивается переменной uint16_t p.

#if defined(POWERMETER_HARD)
      static uint32_t lastRead = currentTime;
      static uint8_t ind = 0;
      static uint16_t pvec[PSENSOR_SMOOTH], psum;
      uint16_t p =  analogRead(PSENSORPIN);
      //LCDprintInt16(p); LCDcrlf();
      //debug[0] = p;
      #if PSENSOR_SMOOTH != 1
        psum += p;
        psum -= pvec[ind];
        pvec[ind++] = p;
        ind %= PSENSOR_SMOOTH;
        p = psum / PSENSOR_SMOOTH;
      #endif
      powerValue = ( conf.psensornull > p ? conf.psensornull - p : p - conf.psensornull); // do not use abs(), it would induce implicit cast to uint and overrun
      analog.amperage = ((uint32_t)powerValue * conf.pint2ma) / 100; // [100mA]    //old (will overflow for 65A: powerValue * conf.pint2ma; // [1mA]
      pMeter[PMOTOR_SUM] += ((currentTime-lastRead) * (uint32_t)((uint32_t)powerValue*conf.pint2ma))/100000; // [10 mA * msec]
      lastRead = currentTime;
    #endif // POWERMETER_HARD
Art_Nesterov
Saradon:

в прошивке задано

Если есть желание, то можно и найти… но на весь диапазон входных напряжений у атмеги, есть 1023 градаций (не знаю как правильно назвать) . Минус 30% это около 700 градаций для отображения ваших 70А… Вам мало?

Saradon
Art_Nesterov:

Минус 30% это около 700 градаций для отображения ваших 70А

Но придётся рядом ставить супругу с калькулятором, чтобы она могла пересчитывать показанные Амперы в реальные 😃
Сейчас ещё поковыряю micro minimOSD. Там в бета-версиях MWOSD в GUI есть кнопка калибровки тока.

Судя по Вики, ничего там не зашито…

powermeter hardware sensor config.h (v2.3 or newer)
As example amploc 25A sensor has 37mV/A (from datasheet), promini arduino analog resolution is 4.9mV per unit; units from [0…1023], independant of cycle time, PLEVELDIV is set internally

#define POWERMETER_HARD
#define PINT2mA 130 // used for telemtry display: one integer step on arduino analog translates to mA (example 4.9 / 37 * 1000. Larger value of PINT2mA will get you larger displayed value for power (mA and mAh)
#define PSENSORNULL 510 // to start with - what the arduino analog input sees for zero current; depends on sensor. Find the output voltage for zero current in the datasheet, then convert it to arduino value [0Volt ; 5Volt] -> [0 ; 1023]

Нужно знать разрешение датчика (сколько вольт на выходе прибавляет 1А нагрузки) и разрешение измерения Arduino (5000mV / 1023 “пункта” = 4.887) и по вышеозначенной формуле выводим значение #define PINT2mA
Косяк может быть в том, что с возрастанием нагрузки увеличение напряжения может быть не линейно…

Saradon

В общем, разобрался, но настроить так и не смог.
Для этого, как и описано в вики (As example amploc 25A sensor has 37mV/A (from datasheet)), нам надо знать напряжение на вольт из даташита датчика тока. Конечно, нам его никто не предоставил.
Измерение даёт очень плавающий показатель. Видимо из-за довольно большого разброса потребления тока лампочками на разных имеющихся у меня измерительных приборах.

Art_Nesterov

Я, когда подключал датчик тока, просто брал коптер с пропами, поднимал над головой, армил… ну и контролировал ток мультиметром. Добавлял газку, пока ток дойдет до 20А (это предел измерения мультиметра). Датчик тока покупал Алегро на эффекте Холла.

ПС. Честно говоря, я не стал заморачиваться с изменениями коэффициетов… а просто перешил на Мегапират. В Мультивие знать потребляемый ток, особого смысла не имеет. Максимум можно посчитать расход аккума. (А Мегапирате на показания тока опирается “компассмот” и вычисляет смещение направления компаса при сильных наводках. Полезная штука!)

Saradon

Как вариант.
На 20А приборчик имеется.
Но опять-же, прибор ещё советский… где уверенность в точности его показаний?
А так - да. Хотя-бы ёмкость батареи мониторить.
Почему-бы и нет, если есть возможность.
А откуда Пират знает, куда надо смещать компас?
Я пробовал прошиться на Пирата, но после прошивки коптер дико пищал всеми регулями, а как-то раз запустил два мотора сам по себе. Спасибо, что на холостых.
После этого отпали все желания с Пиратом экпериментировать 😃
Да и в МишнПланере чёрт ногу сломит…

Art_Nesterov

Точность показаний дело такое…на приборчике должна быть написана погрешность. Обычно это было 2%. Но опять же приборчики бывают разные. Большие токи можно мерить вольтметром на куске провода. Берется кусок провода около 1м нормального сечения, что бы не расплавился, пропускаем ток, допустим 10А. При этом меряется падение напряжения на нем. У меня получалось примерно 150мв (у вас будет другая цифра). Ну и дальше пропорционально - 20А - 300мв… и тд.
А про Мегапират… все там хорошо и МП тоже. Нужно спокойненько въехать в тему и будет счастье! по сравнению с офф Мультивим 200%.

Saradon

Да фиг уже с ней, с точностью…
Главное, что я понял, что я, по сути, делаю всё правильно. Остальные проблемы - метрология.
Мегапират, говорят, давно забросили - сейчас APM модно. А для него надо Пиксы за 10 тыс… Ну его…

Art_Nesterov
Saradon:

Мегапират, говорят, давно забросили - сейчас APM модно.

Тут конечно, каждый сам себе выбор придумывает 😃. (Но мое мнение такое: несколько лет народ в этом хобби летал на 8-битных контроллерах и сильно не заморачивался. Мегапират не поддерживается, но в Пиксе новых полетных режимов тоже нет, без которых жить нельзя. Да, платформа мощнее. Мегапират на офф сайте имеет две последние облетанные версии. И в нашем случае прелесть в том, что можно безболезненно хотя бы попробовать прошиться и сравнить. Так почему бы это не сделать? Жпс режимы на порядок лучше работают, например, плюс другие классные фишки… разве не аргумент попробовать?)

Saire

Доброго времени суток. Имеется AIOP v2 с RCTimer. Имеется LED подсветка, которая управляется 3.3V (есть напруга-вкл, нет напруги-выкл). Вопрос. Как подружить прошивку мультивия/маховика, у которых имеется кусок кода для LED подсветки арминга и прочих событий, с такой подсветкой? Куда читать, что смотреть? Возможно есть простой способ в мануалах, но я запутался в обилии информации (AIOP только забрал с почты).
П.С. LED подсветка из разбитых матриц имеет хороший драйвер управления. Питается 6-21V (моя, у других немного иные цифры), меняет яркость в зависимости от управляющего сигнала (0-3V), включается подачей 3 V на соответствующий выход драйвера. Прямо создана для квадрика.

Владимир#
Saire:

Вопрос. Как подружить прошивку мультивия/маховика, у которых имеется кусок кода для LED подсветки арминга и прочих событий, с такой подсветкой? Куда читать, что смотреть?

Я думаю вот это вам поможет rcopen.com/forum/f123/topic221574/12834. Всего навсего страничку перелистнуть.