MultiWii

Art_Nesterov
mw_2015:

минимально оптимальную конфикурацию МВ для взлета

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

  1. После подачи питания коптер должен быть без движения 10-15 сек. Подключать питание и при этом вертеть коптер в руках - неправильно, гироскопы криво откалибруются и кувырок обеспечен.
  2. Про калибровку акселя на горизонтальной плоскости наверно можно не писать…
  3. Если вы пытаетесь взлететь с такими режимами, как на вашем скрине то это АКРО. В Акро нужно еще уметь рулить. Мозг “опирается” только на гироскопы и не пытается выровнять горизонт. Нужно назначить режим ANgle или horizon.
  4. В прошивке нужно выставить фильтрик для гироскопа, который обрежет вибрации от вашей ВМГ выше заданного значения. Поставьте 20Гц. Если вибрации сильные, можно и 10Гц. (эффективная штука!)
  5. Можно на отдельный тумблер (или комбинацию) вывести барометр. Тогда при активации должна удерживаться высота. С вашей платой, точнее с барометром +/-1м.
  6. Для первых полетов, компас активировать не нужно. Если у вас большие наводки от силовой части - общая беда, то коптер может крутить или непредсказуемо разворачивать.
    Потом, когда все полетело, и вы решите добавить ЖПС, тогда компас необходим.

ps: Смотреть на уровень сигналов, которые идут на моторы без пропеллеров без толку! Мозг видит перекос, пытается его выровнять, добавляя обороты на соответствующие моторы, а реакции нет… коптер стоит на столе, например. Тогда он еще больше компенсирует, и тд… короче ерунда выходит.

jeka101
mw_2015:

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

Я про питание и не говорю. Просто у меня ЮСБ мощный, хватило что-бы мотор включился один, поэтому рекомендую обезопаситься.
А так там по арму крутить стики достаточно понятно, к примеру должно быть при подъеме стика газа, при условии что квадр ровно стоит а там это видно, уровень газа должен быть крест накрест примерно или ±20% на все моторы.
На счет моторов.
A2212 мотор при 1400kv должен давать на 2s 700 грамм, на 3s 800~ грамм.
A2212 900kv~ 2s 600 грамм, 3s 1кг, это все результаты моих шаманств с этими моторами и реальными тестами. Проверяйте свои моторы, если они косячные то они будут иметь разные характеристики.

Art_Nesterov:

ps: Смотреть на уровень сигналов, которые идут на моторы без пропеллеров без толку! Мозг видит перекос, пытается его выровнять, добавляя обороты на соответствующие моторы, а реакции нет… коптер стоит на столе, например. Тогда он еще больше компенсирует, и тд… короче ерунда выходит.

Не ерунда, условие при включении, ровное положение, и тогда хотя-бы примерно видна реакция.
Другими словами, если проблема в ПК то хоть газ 30 хоть 100% на 2х каналах будет слабый сигнал или отсутствие.

Art_Nesterov
jeka101:

Не ерунда…

Если с УМОМ смотреть, то не ерунда. Да, там видно, есть хоть что то или нет. Но народ в основном видит не равномерно поданный газ на разные моторы и впадает в ступор… дескать, коптер же вроде горизонтально, значит косяк коптера! Спасите, помогите!
А ориентироваться по этим данным не стоит, реакция есть… и слава Богу.

Saradon
Art_Nesterov:

Раскомментируйте соответствующую строку, и в ГУИ выставьте реальное напряжение. Должно работать.

Итак. Беру в руки AIOP v2 от RcTimer.
Делаю EEPROM_Clear.
Достаю из коробки чистый MultiWii.
Открываю config.h и раскомментирую три строчки:
#define HEX6X
#define CRIUS_AIO_PRO
#define VBAT
Всё. Больше ничего.
VBATSCALE оставляю по-умолчанию - 131.
Заливаю.
Батарейку к датчику, провод датчика напряжения на пин A0.
Плата питается только от USB. Запускаю GUI - напряжение скачет от 6,1 до 6,9.
Ту-же самую прошивку заливаю во вторую плату - AIOP от hexTronik.
Все условия те-же.
Напряжение в GUI так-же скачет от 6,1 до 6,9.
Изменил VBATSCALE на популярное тут значение - 21.
Залил на обе платы, обе платы в GUI показывают всё те-же от 6,1 до 6,9 вольт.
Вот тут, думаю, нужно остановиться и выслушать советы профессионалов…

UPD. Выдёргиваю проводок из А0 - напряжение в GUI стабилизируется на 4,2 вольта.
Выдёргиваю батарейку из датчика - напряжение в GUI скачет от 5,8 до 7,5.
Подключил вместо батарейки регулируемый БП.
От 0.5 до 24 вольт в GUI ничего не меняется.
Подключил регулируемый БП напрямую на A0.
При 0,7 на входе GUI показывает 2,1 вольта. Не скачет.
При 4,5 на входе показывает 12 вольт.
Вернул в прошивке для VBATSCALE исходное значение - 131.
В GUI относительные значения НЕ ИЗМЕНИЛИСЬ!!
Получается, что вся проблема в том, что нет реакции на множитель в VBATSCALE.
Куда теперь копать - то?

Saradon

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

Залез в кодярник. Кажется понял почему у вас не получается настроить. VBATSCALE определена в конфиге, НО она на первой заливке прошивки (либо после читки eeprom) зачем то пишется в eeprom и при последующих заливках/перепрошивках уже читается оттуда. Это было бы логично, будь в ГУИ поле для редактирования vbatscale… видимо с заделом на будущее слепили…
В общем если хотите, что бы VBATSCALE из конфига вносил свою лепту, то надо либо каждый раз чистить eeprom, что совсем не вариант, либо заменить 600-ю строку в MahoWii_2_2_rc3_1.ino:

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

скачал свежий dev ГУИ, так там появилась закладка SETTINGS, где появилось поле VBATSCALE

Значение-же в GUI выставляется!!!
В общем, с напряжением разобрался. Кроме того, скажу ещё, что сам AIOP при этом не просто можно, а нужно питать от бека датчика тока, ибо если подцепить только минус - напряжение врёт.

Но при этом остался один интересный вопрос.
Есть в коде такая строчка:

 //#define OVERRIDE_V_BATPIN                   A0 // instead of A3    // Analog PIN 3

И по-умолчанию она не активна.
Тобишь VBAT висит на A3? Но там-же RSSI…
Кстати, измеряется и отображается напряжение и с A0 и с А3 одновременно.
Если строчку раскомментировать, но не активировать RSSI, то измерение на A3 пропадает, остаётся на A0, но если активировать RSSI, то измерение снова работает и там, и там…
В общем, буду выяснять опытным путём как-же оно должно быть, а пока займусь хардовым датчиком тока.

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