MultiWii
линейность
Сам датчик, скорее всего не может дать линейность. Это связано именно с большим диапазоном 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А приборчик имеется.
Но опять-же, прибор ещё советский… где уверенность в точности его показаний?
А так - да. Хотя-бы ёмкость батареи мониторить.
Почему-бы и нет, если есть возможность.
А откуда Пират знает, куда надо смещать компас?
Я пробовал прошиться на Пирата, но после прошивки коптер дико пищал всеми регулями, а как-то раз запустил два мотора сам по себе. Спасибо, что на холостых.
После этого отпали все желания с Пиратом экпериментировать 😃
Да и в МишнПланере чёрт ногу сломит…
Точность показаний дело такое…на приборчике должна быть написана погрешность. Обычно это было 2%. Но опять же приборчики бывают разные. Большие токи можно мерить вольтметром на куске провода. Берется кусок провода около 1м нормального сечения, что бы не расплавился, пропускаем ток, допустим 10А. При этом меряется падение напряжения на нем. У меня получалось примерно 150мв (у вас будет другая цифра). Ну и дальше пропорционально - 20А - 300мв… и тд.
А про Мегапират… все там хорошо и МП тоже. Нужно спокойненько въехать в тему и будет счастье! по сравнению с офф Мультивим 200%.
Да фиг уже с ней, с точностью…
Главное, что я понял, что я, по сути, делаю всё правильно. Остальные проблемы - метрология.
Мегапират, говорят, давно забросили - сейчас APM модно. А для него надо Пиксы за 10 тыс… Ну его…
Мегапират, говорят, давно забросили - сейчас APM модно.
Тут конечно, каждый сам себе выбор придумывает 😃. (Но мое мнение такое: несколько лет народ в этом хобби летал на 8-битных контроллерах и сильно не заморачивался. Мегапират не поддерживается, но в Пиксе новых полетных режимов тоже нет, без которых жить нельзя. Да, платформа мощнее. Мегапират на офф сайте имеет две последние облетанные версии. И в нашем случае прелесть в том, что можно безболезненно хотя бы попробовать прошиться и сравнить. Так почему бы это не сделать? Жпс режимы на порядок лучше работают, например, плюс другие классные фишки… разве не аргумент попробовать?)
Доброго времени суток. Имеется AIOP v2 с RCTimer. Имеется LED подсветка, которая управляется 3.3V (есть напруга-вкл, нет напруги-выкл). Вопрос. Как подружить прошивку мультивия/маховика, у которых имеется кусок кода для LED подсветки арминга и прочих событий, с такой подсветкой? Куда читать, что смотреть? Возможно есть простой способ в мануалах, но я запутался в обилии информации (AIOP только забрал с почты).
П.С. LED подсветка из разбитых матриц имеет хороший драйвер управления. Питается 6-21V (моя, у других немного иные цифры), меняет яркость в зависимости от управляющего сигнала (0-3V), включается подачей 3 V на соответствующий выход драйвера. Прямо создана для квадрика.
Вопрос. Как подружить прошивку мультивия/маховика, у которых имеется кусок кода для LED подсветки арминга и прочих событий, с такой подсветкой? Куда читать, что смотреть?
Я думаю вот это вам поможет rcopen.com/forum/f123/topic221574/12834. Всего навсего страничку перелистнуть.
разве не аргумент попробовать?
Вполне аргумент.
У меня до этого была AIOP не понятной версии… По составу она как v.2, а по формату - как v.1
Так в неё Пират залезал с большим скрипом. Надо было долго и нудно подбирать версии, чтобы после прошивки он смог подключиться к МП.
Была вторая плата с RCTimer - уже полноценный AIOP v.2, но у неё был наглухо заблокирован загрузчик и она не шилась даже через ISP.
Вот только на днях пришёл новый процессор - перепаял - теперь всё в порядке. Попробовал прошить Пирата - вроде всё хорошо. Подключается любая версия. Сейчас докуриваю Мультивий, а потом и с Пиратом поковыряюсь на досуге.
Мультивий нравится тем, что намного мягче и гибче. Плюс через мультивийный осд можно с пульта плату программировать.
По факту, у меня сейчас весь коптер лежит в виде набора запчастей. Вот после сборки уже и будем разбираться.
Ещё-бы научиться прошивать через bluetooth.
Куда читать, что смотреть?
Я подключил диод (тестовый) на пин A1. Всё работает. Завтра опишу как.
Куда читать, что смотреть?
Написал в дневнике подробнее.
таксь… если не опоздал.
проблема с датчиком тока в том была, что по умолчанию там настроен на использование датчика холла (0А тока = 1/2 питания = 2,5в)
для того, чтобы подключить обычный шунт - нужно немного повозиться, если интересно но не получиться разобраться - стучитесь, постараюсь помочь.
в свое время мультивий расковыривал до последней косточки - делал свой порт на хмегу как самого мультивия, так и маховия, на котором один из коптеров до сих пор успешно летает
Приехала neo-6m не сохраняет конфигурацию в флеш памяти (микросхема стоит) , через час конфиг слетает, подскажите пожалуйста как через мультивий с платой i2c-gps конфиг прописать? 3 дня перешиваю все 3 платы, свои мозги уже сломал… добавил в конфиг маховия
# define GPS_INIT_BAUD 9600
# define GPS_BAUD 115200
не помогает.
Вопрос Маховику. А когда предполагается выход в свет новой прошивки?
а она нужна?
как по мне - это была квинтэссенция.
все остальные никому не нужные плюхи можно получить от других контроллеров
Забыл в начале дописать “ИМХО”