MultiWii

Art_Nesterov
Saradon:

Замерял датчик.

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

mw_2015
ka103:

Я так и не победил… такой же сетап, как у Вас. Поменял регули, на которых у меня Наза летает. Эффекта никакого, я думаю, движки А2212 на для 450 платы… разводят нас, как лохов…

Спасибо за ссылку на злоключения. Разбор и подсказки по ситуции думаю помогут. По опыту предыдущей работы с разными приводами, показалось, что А2212 с липо 2200 мАн (у меня тоже такой) хиловат для такого квадрика. Попытаюсь проверить весоизмерением квадра и оценкой тяги движков по совету Владимира (по лучам). Комплектовался по отдельности, движки с Али.

jeka101:

Причем тут движки?

mw_2015
А что если тапку газу дать?
Подключите к компу мультивий и включите аппу, покрутите стики посмотрите что там будет с газом(FRONT L, и.т.д…), конечно предварительно снимите винты.

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

Art_Nesterov:

Судя по вашему скрину, вы в принципе не пользуетесь полетными режимами… В таком варианте вам ни компас ни аксель даром не нужны 😃. У вас мозг находится в единственно возможном режиме - АКРО. То есть работают только гироскопы. А если вы еще и питание подаете в руках, а потом крутите его, ставите на землю… то гироскопы тоже криво калиброванные. В горизонтальное положение он вообще у вас не обязан выравниваться. Получается, что ваш коптер вполне адекватно себя ведет…

Сразу у меня много чего из режимов было сконфигурировано не совсем понятного. Когда не заладилось со взлетом пришлось поотключать в расчете что минимума АКРО хватит. Наверное я не прав. Если не трудно дайте пожалуйста ссылочку на минимально оптимальную конфикурацию МВ для взлета (хотя бы).

Все делаю по уставу, факам и манюалам. Включение акка в статике на горизонтальной поерхности и как ранее писал "регули калибруются через аппу перед армом и калибровкой подсистем - Acro Gyro - Stable ACC - Mag3). Acro Gyro - Stable ACC в статичном горизонтальном положении. Хорошее слово фак.

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

Art_Nesterov

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

Saradon

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