MultiWii
минимально оптимальную конфикурацию МВ для взлета
Вот необходимое, для нормального влета.
- После подачи питания коптер должен быть без движения 10-15 сек. Подключать питание и при этом вертеть коптер в руках - неправильно, гироскопы криво откалибруются и кувырок обеспечен.
- Про калибровку акселя на горизонтальной плоскости наверно можно не писать…
- Если вы пытаетесь взлететь с такими режимами, как на вашем скрине то это АКРО. В Акро нужно еще уметь рулить. Мозг “опирается” только на гироскопы и не пытается выровнять горизонт. Нужно назначить режим ANgle или horizon.
- В прошивке нужно выставить фильтрик для гироскопа, который обрежет вибрации от вашей ВМГ выше заданного значения. Поставьте 20Гц. Если вибрации сильные, можно и 10Гц. (эффективная штука!)
- Можно на отдельный тумблер (или комбинацию) вывести барометр. Тогда при активации должна удерживаться высота. С вашей платой, точнее с барометром +/-1м.
- Для первых полетов, компас активировать не нужно. Если у вас большие наводки от силовой части - общая беда, то коптер может крутить или непредсказуемо разворачивать.
Потом, когда все полетело, и вы решите добавить ЖПС, тогда компас необходим.
ps: Смотреть на уровень сигналов, которые идут на моторы без пропеллеров без толку! Мозг видит перекос, пытается его выровнять, добавляя обороты на соответствующие моторы, а реакции нет… коптер стоит на столе, например. Тогда он еще больше компенсирует, и тд… короче ерунда выходит.
Когда МВ подключается к компу через фтди, в некоторых постах ветки не советуют включать питание регулей с движками. Просто просмотреть арм и калибровки можно, изменения сигналов на регули видны при шевелении стиков и на наклоны квадра реакция есть, но насколько все правильно не определишь.
Я про питание и не говорю. Просто у меня ЮСБ мощный, хватило что-бы мотор включился один, поэтому рекомендую обезопаситься.
А так там по арму крутить стики достаточно понятно, к примеру должно быть при подъеме стика газа, при условии что квадр ровно стоит а там это видно, уровень газа должен быть крест накрест примерно или ±20% на все моторы.
На счет моторов.
A2212 мотор при 1400kv должен давать на 2s 700 грамм, на 3s 800~ грамм.
A2212 900kv~ 2s 600 грамм, 3s 1кг, это все результаты моих шаманств с этими моторами и реальными тестами. Проверяйте свои моторы, если они косячные то они будут иметь разные характеристики.
ps: Смотреть на уровень сигналов, которые идут на моторы без пропеллеров без толку! Мозг видит перекос, пытается его выровнять, добавляя обороты на соответствующие моторы, а реакции нет… коптер стоит на столе, например. Тогда он еще больше компенсирует, и тд… короче ерунда выходит.
Не ерунда, условие при включении, ровное положение, и тогда хотя-бы примерно видна реакция.
Другими словами, если проблема в ПК то хоть газ 30 хоть 100% на 2х каналах будет слабый сигнал или отсутствие.
Не ерунда…
Если с УМОМ смотреть, то не ерунда. Да, там видно, есть хоть что то или нет. Но народ в основном видит не равномерно поданный газ на разные моторы и впадает в ступор… дескать, коптер же вроде горизонтально, значит косяк коптера! Спасите, помогите!
А ориентироваться по этим данным не стоит, реакция есть… и слава Богу.
Раскомментируйте соответствующую строку, и в ГУИ выставьте реальное напряжение. Должно работать.
Итак. Беру в руки 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.
Куда теперь копать - то?
Твою-же дивизию…
В общем, гугленье навело меня на похожий случай.
Сие было в обсуждениях прошивки Маховика и вот какой был ответ:
Залез в кодярник. Кажется понял почему у вас не получается настроить. 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, то измерение снова работает и там, и там…
В общем, буду выяснять опытным путём как-же оно должно быть, а пока займусь хардовым датчиком тока.
Значение-же в GUI выставляется!!!
Так я вроде так и писал…
А вы какую прошивку заливаете?
Вот необходимое, для нормального влета.
Спасибо за развернутое и систематическое изложение сути. Буду отрабатывать и заодно проведу НИР по движкам. Расброс в характеристиках замечал и ранее.
Так я вроде так и писал…
А вы какую прошивку заливаете?
2.4
А я прям в коде менял и удивлялся, почему не воспринимает.
Ну да ладно. Это проехали. Потихоньку в ток вникаю.
Раскомментировал токомерялку - показывает мне потребление 67А и на нагрузку никак не реагирует.
Выставил показания холостого тока в 0.1А.
Подключаю нагрузку, а показания в GUI наоборот - уменьшаются…
Подключаю нагрузку, а показания в GUI наоборот - уменьшаются…
Значит коптер вырабатывает электроэнергию 😃. Попробуйте без контроллера, просто повермодуль и подключите нагрузку к нему. При этом нужно контролировать сигнал для измерения тока. Меняете нагрузку, сигнал тоже должен меняться пропорционально. И гляньте зависимость, может она обратная?
Теоретически в диапазоне до 90А сигнал меняется от 0-5в.
Значит коптер вырабатывает электроэнергию
Ну круто-же! Буду соседям продавать 😃
Значится, эксперименты на коленке.
Меряю напряжение на датчике тока.
К сожалению, динамической нагрузки у меня нет, зато есть лампочки на 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.
Принципы поняты, копаю дальше.
По итогам - упёрся в линейность отображения нагрузки.
PSENSORNULL = 0 - при отсутствии нагрузки ток, соответственно, нулевой.
Подключаю нагрузку 1.6А и выставляю параметром #define PINT2mA значение, при котором в GUI так-же показывается те-же 1,6А.
У меня это значение 230.
Но при подключении 2,3А в GUI показывает уж 6,5А.
Где настраивается линейная зависимость?
линейность
Сам датчик, скорее всего не может дать линейность. Это связано именно с большим диапазоном 0-90А. (Это в принципе касается любых измерительных приборов. Если например взять обычный мультиметр, и выставить предел, например 2000в и померять 3в, то погрешность будет больше чем в при измерении в диапазоне 20в.) Повермодуль работает до 90А, как заявлено… А ваша нагрузка существенно меньше, и на выходе вы имеете диапазон напряжения 20% от максимально возможного.
Теоретически, нас ведь не интересуют малые токи… По этому “юстируется” по максимальному значению, а минимальные, это уже как выйдет. Ваш коптер потребляет 20А(к примеру) в висении. Создайте нагрузку в 20А, контролируйте ее мультиметром, и выставьте эти 20А.
Я понял.
Возможно оно так.
С другой стороны, при подаче 5 вольт на пин мы имеем в GUI максимум 130А.
Значит где-то же в прошивке этот параметр задан.
И поменяв это значение на 90 (в теории, при максималке в 90А датчик должен выдавать 5 вольт) - мы можем получить вполне линейные значения.
Теоретически…
Теоретически…
Теоретически оно так… но заморачиваться не стоит. 130 и 90 отличаются не в разы, а всего на 30%. Имеет смысл выжать из повермодуля напряжение около 5в при максимальном токе для вашего конфига (я так думаю, около 25-30А). Скорее всего это делается заменой одного-двух сопротивлений на самом модуле (нужно схемку глянуть).
схемка модуля
Посмотрел схемку…Нужно не менять сопротивления а добавить делитель на ногу №4. и тогда вообще можно регулировать максимальный выходной сигнал.
У меня под 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
в прошивке задано
Если есть желание, то можно и найти… но на весь диапазон входных напряжений у атмеги, есть 1023 градаций (не знаю как правильно назвать) . Минус 30% это около 700 градаций для отображения ваших 70А… Вам мало?
Минус 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
Косяк может быть в том, что с возрастанием нагрузки увеличение напряжения может быть не линейно…
В общем, разобрался, но настроить так и не смог.
Для этого, как и описано в вики (As example amploc 25A sensor has 37mV/A (from datasheet)), нам надо знать напряжение на вольт из даташита датчика тока. Конечно, нам его никто не предоставил.
Измерение даёт очень плавающий показатель. Видимо из-за довольно большого разброса потребления тока лампочками на разных имеющихся у меня измерительных приборах.
Я, когда подключал датчик тока, просто брал коптер с пропами, поднимал над головой, армил… ну и контролировал ток мультиметром. Добавлял газку, пока ток дойдет до 20А (это предел измерения мультиметра). Датчик тока покупал Алегро на эффекте Холла.
ПС. Честно говоря, я не стал заморачиваться с изменениями коэффициетов… а просто перешил на Мегапират. В Мультивие знать потребляемый ток, особого смысла не имеет. Максимум можно посчитать расход аккума. (А Мегапирате на показания тока опирается “компассмот” и вычисляет смещение направления компаса при сильных наводках. Полезная штука!)
Как вариант.
На 20А приборчик имеется.
Но опять-же, прибор ещё советский… где уверенность в точности его показаний?
А так - да. Хотя-бы ёмкость батареи мониторить.
Почему-бы и нет, если есть возможность.
А откуда Пират знает, куда надо смещать компас?
Я пробовал прошиться на Пирата, но после прошивки коптер дико пищал всеми регулями, а как-то раз запустил два мотора сам по себе. Спасибо, что на холостых.
После этого отпали все желания с Пиратом экпериментировать 😃
Да и в МишнПланере чёрт ногу сломит…