Activity

MultiWii
mahowik:

я думаю надо взять обещание с каждого примелькавшегося мультивиста, на заполнение абзаца или раздела… а пассующих будем гнобить и не помогать

хоть еще и не примелькавшийся, но хочу попробовать перевести раздел про настройку ПИД из www.rcgroups.com/forums/showthread.php?t=1375728. Срок - до 7 дней максимум. Если вдруг что-то не так, то попрошу поправить в нужных местах )

MultiWii
mahowik:

davno piaril PIDs s visokim “D”… no niktozhe ne veril

все правильно и не только ты пиарил, за бугром тоже несколько постов в этом ключе вышло, НО если есть вибрации на акселе, то высокий D дает множественные мелкие осцилляции, которые даже большим P не скомпенсировать. Пробовал много разных комбинаций в т.ч. те, что ребята рекомендовали как проверенные (хотя все условно, т.к. коптер коптеру рознь). И вот как только ты сделал поправку диапазона и частоты среза фильтра акселя, все залетало как положено. Это мое мнение, могу быть и не прав.

Теперь бы днем в поле попасть, чтобы посмотреть на что он вообще способен. Затем пару аккумов докупить, хотя бы 9канальное радио турниджи и компас + баро + УЗ дальномер. Короче, плату придется пересобрать, т.к. в Promini ног уже не хватит на всё. И самое главное - плотнее вливаться в проект и постараться оставшееся заставить заработать или хотя бы помочь таким как ты хоть чем-то 😃 В общем, не будем загадывать. Щас просто подъем настроения.

Чуть позже, когда окончательно все приведу в порядок, выложу фотки поворотного узла хвоста. Идея - просто, крепко и дешево. Может быть кому-то пригодится 😃

MultiWii

ура! с юбилейной страницей - это раз!
и пусть будет больше позитива. Короче, щас только отлетал один аккум. Все коэфф-ты ПИДа по умолчанию, что на прошивке A1. Напомню, гира 3200 и аксель bma180, ни тебе магнетометра, ни барометра. Летает супер!!! Очень-очень плавно, полихачить не получится, но зато стиками можно дергать не опасаясь, что он раскачается и рухнет. Пока летал на площадке возле дома, вокруг довольно много машин, поэтому высоко не поднимался. Вдруг чего. Курс держит очень хорошо, хотя иногда приходится подруливать немножко. С высоты метров 10-15 отпускаю газ, начинает падать; ближе к земле прибавляю газ - нифига! никаких тебе осцилляций, как это было раньше. Повторюсь - очень стабильно. Лишь иногда небольшие подергивания, которые почти не заметны. Насчет просто висения ничего не могу сказать. Аппа дешмановская, центральные точки постоянно плавают. Надо deadband на 30 снова вернуть. щас по-моему на 10 стоит.

Короче, супер!!! Спасибо, Саш! )

зы. мы то радуемся, 100-я страница, но вот кто совсем новичек и ему только предстоит изучение темы, наверно, не очень воодушевлен 😁DDDDDDDD

MultiWii

выдержка с сайта ардуины. Описание promini, секция Reset

Automatic (Software) Reset

Rather then requiring a physical press of the reset button before an upload, the Arduino Pro Mini is designed in a way that allows it to be reset by software running on a connected computer. One of the pins on the six-pin header is connected to the reset line of the ATmega168 via a 100 nanofarad capacitor. This pin connects to one of the hardware flow control lines of the USB-to-serial convertor connected to the header: RTS when using an FTDI cable, DTR when using the Sparkfun breakout board. When this line is asserted (taken low), the reset line drops long enough to reset the chip. The Arduino software uses this capability to allow you to upload code by simply pressing the upload button in the Arduino environment. This means that the bootloader can have a shorter timeout, as the lowering of the reset line can be well-coordinated with the start of the upload.

This setup has other implications. When the Pro Mini is connected to either a computer running Mac OS X or Linux, it resets each time a connection is made to it from software (via USB-). For the following half-second or so, the bootloader is running on the Pro. While it is programmed to ignore malformed data (i.e. anything besides an upload of new code), it will intercept the first few bytes of data sent to the board after a connection is opened. If a sketch running on the board receives one-time configuration or other data when it first starts, make sure that the software with which it communicates waits a second after opening the connection and before sending this data.

коротко смысл. Ресет выводится на ногу RTS, когда используется FTDI кабель и на DTR, когда используется плата Спаркфана. Подрубается через конденсатор в 100 нанофарад. И самое главное - МК ресетится автоматически посредством софта (не в ручную) и именно поэтому период ожидания бутлодера сокращен!!!

Дальше, если смотрим схематику, то вывод RESET (RST на самой плате) - это прямое подключение к самому контроллеру, а нам нужно через емкость. В схематике эта нога обозначена как DTR (arduino.cc/en/…/Arduino-Pro-Mini-schematic.pdf) и выходит на 6ти контактный разъем JP1.
На самой плате (arduino.cc/en/Main/ArduinoBoardProMini) этому соответствует пин под названием GRN (нижний левый на картинке). Вот к нему то и надо подрубать вывод 2 с микросхемы FT232 переходника USB-COM. У Вас на плате он должен быть разведен и обозначен как DTR. Итого, 6 ног в интерфейсном разъеме (2*GND, VDD, Rx, Tx, DTR).

что до джампера на переходнике, это скорее всего выбор источника питания, подаваемого на колодки JP2 и JP3
arduino.cc/en/uploads/…/mini_usb_schematic.pdf
(либо с порта USB, либо внешнее 5В)

и да, это не просто слова. У меня все работает. Схематику использовал ардуиновскую, но платы разводил сам

MultiWii
nemo61:

Можно и не подрубать. Я делаю так:
нажимаю кнопку загрузки.
Когда появляется надпись об окончании компиляции - выжидаю примерно секунду и жму ресет на ардуине.

пробовал так. на promini так уже не получается, короткий интервал ожидания команды с программатора. у Вас какая плата?

ЗЫ. ура!!! переделал поворотный узел хвоста. Теперь люфты оооочень маленькие. )))))))))))))
вопрос: на полном газе показания ACC_Z проваливаются с 515 до ~500. Можно шкалу на 8g оставить или желательно на 16 перейти? Где-то на 70% газа ACC_Z никуда не прыгает. Так ш скорее всего и с +\- 8g все будет ок. Не помню такого, когда газ на полную давал ))

MultiWii

по даташиту точность самого сонара 0.3 см (!!!). По ходу дела все остальное упирается в математику, правильность настройки ПИДа, и уровень разброса в показаниях сонара

не помню в каком проекте, но я только начинал разбирать тему коптеров, смотрел видео полетов с сонаром. Высота от пола была небольшая, не более 1.5 метров. С виду держался очень ровно. Не знаю, если в +/- 10 сантиметрах от исходного положения болтался… не больше…

MultiWii

конечно, желательно, чтобы он излучал перпендикулярно поверхности земли. Угол излучения обычно небольшой, порядка 15 градусов.

Александр Дроздов, что до ардуинки, то не хватает еще и сигнала reset. Обрати внимание на то, что это 2я нога ft232, подключенная к ресету AVRки через последовательно включенный конденсатор. На старых версиях плат можно было ресетить вручную. У них интервал ожидания после ресета был довольно большой. У promini такого не выйдет. Сам пробовал. + еще Rx и Tx могут быть попутаны местами.

Определить, есть ли бутлодер, обычно можно так: заресетил кнопочкой платку, после отпускания светодиод на 13й ноге должен моргнуть.

MultiWii

насколько знаю, для сонара критична ровная поверхность без посторонних предметов, чтобы ловил только одно отражение.
статейка на тему распространенного сонара:
we.easyelectronics.ru/…/ultrazvukovoy-dalnomer.htm…

насколько помню, бывают двух типов:

  1. излучательн и приемник. Инженегр сам обрабатывает эхо
  2. с контроллером на плате. Выдает готовый результат. Ммм, по-моему меняет ширину импульса как функцию расстояния.
    В одной из статей были недовольны тем, что с МК. Самостоятельно больше простора для интерпретации. И второе - почему-то у чувака получилось, что дальность образца с контроллером оказалась меньше, чем указана на модуль только приемника и передатчика.
    еще немножко справочки: elagin-pavel.livejournal.com/146901.html

сам даташит
www.marsohod.org/index.php/…/77---hc-sr04

и еще одна статья марсоходовцев (известный проект для тех, кто начинает заниматься ПЛИС)
www.marsohod.org/index.php/projects/159-sonar

надеюсь, чем-то помогло

Upd: на рабочем компе еще немножко материалов на эту тему было. Завтра как раз гляну 😃

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

MultiWii
Sir_Alex:

пока он перемещается

точнее будет “пока он движется ускоренно”

SovGVD:

они вроде только ускорение узнают, если начинается выше чем порог перегрузки, то головку сразу в парковочную зону

ну да, у bma180, к примеру, есть такая опция - выдавать внешнее прерывание при достижении ускорением одного из порогов
коряво написал, но надеюсь, что понятно )

MultiWii

не помню, наверняка здесь уже писали про это, но в тему:
www.starlino.com/imu_guide.html

SovGVD:

опять же ИМХО, но в даташитах про ±1g пишут на осях, в зависимости от положения датчика

ну, все верно. Аксели вроде фиксируют ускорение свободного падения и если он будет, к примеру, просто валяться в плоскости, перпендикулярной одной из осей, на этой оси как раз и должно быть +1g или -1g (если перевернут на 180 градусов). Если же его расположение будет произвольным, то тут на осях будут иные значения, исходя из углов

MultiWii

подозреваю, потому, что будет сложно отслеживать изменение высоты. Смотри, такая ситуация: ты висишь, затем начинаешь медленно снижаться. Т.е. небольшое ускорение появляется в первый момент времени, а затем скорость снижения становится постоянной (при этом результирующая сила) и аксель ничего не показывает. Стало быть отследить такие изменения довольно непросто. Наверно, по барометру или по УЗ дальномеру это сделать проще. Насчет второго могу сказать, что на небольших высотах (диапазон зависит от типа датчика) рулит именно он, а не какой-нить барометр.

если вдруг где-то ошибся в рассуждениях, поправьте, пожалуйста )

зы. хотя зерно сомнения не исчезло. Ведь аксели могу зафиксировать свободное падение (типо защита на HDD), но значения акселя в нашем случае и при свободном падении будут сильно отличаться

MultiWii

тоже попробовал А1 версию. По крайней мере ACC_Z перестал проседать даже на газе, большим половины. И в точке висения коптер иначе стал себя вести - пропали эти беспрерывные маленькие подергивания. ПИДы к моему три тоже, похоже, довольно неплохо подходят. Нет явного недорегулирования, либо осцилляций даже при сильный резких рывках луча рукой.

зы. пока в живую не летал, только в руках. За окном сыро и идет дождь… ждем улучшения погоды 😉 😃

да, ценно в плане тестирования - это датчики. У меня гира ITG3200 + аксель bma180.

MultiWii

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

www.gaw.ru/html.cgi/txt/interface/iic/index.htm + сопутствующие pdf’ки.
Смотрим на п 10.1

MultiWii
mahowik:

ADXL345 по идее все ок. Там +/-8g и резолюшн хороший на этот диаппазон

хотелось бы немножко об акселерометрах поговорить. Как я понял из темы multiwii форума, проблемы с уплыванием связаны с тем, что происходит насыщение выхода акселя под воздействием ВЧ вибраций. Чтобы от этого избавиться, надо увеличивать диапазон полной шкалы (или виброизолировать датчики), т.е, к примеру, если раньше +/- FS достигалась при значениях +/- 1g (FS - полная шкала), то теперь при +|- 8(16) g, но при этом появляется проблема - падает разрешающая способность и как следствие возрастает ошибка определения угла, так?
Данные какой битности использует multiwii для своих расчетов? Где-то мелькала цифра 10 бит. Глянул даташит к adxl345 и bma180. У них 10 и 14 бит, соответственно. Собсно такой вопрос как владельца bma180 - у нас имеется дополнительные 4 бита, т.е. не ухудшая разрешающей способности по отношению к bma020 (10бит) мы можем поднять диапазон измерения Ж до 16 раз. Верно? Если да, то, к примеру, почему бы не сделать +/- FS = +/- 8g? Насколько понял, значение Acc_Z при таких настройках почти у всех уже перестает проседать. Получилось бы более или менее универсальное решение. Поправьте, если вдруг где не прав.
Но это были рассуждения. А теперь главное - как это сделать? - Править регистры, но надо знать что и как править. Никто не сталкивался с уже готовыми кусками кода? Если нет, то придется изучать даташит. О результатах напишу )

MultiWii

ага, по ходу дела причина в величине MINTHROTTLE (находится в самом верху config.h). видимо для этого ESC установленная у тебя величина маловата. Попробуй поднять немножко.
с другой стороны не видно, какие значения в ГУИ на выходе канала в момент остановки двигателя. Просто не в фокусе. Насколько я знаю, при любом раскладе ниже значения, присвоенного MINTHROTTLE значения по каналам падать не должны. К примеру, если MINTHROTTLE = 1150, то как ты резко не наклоняй коптер, как ни ерзай стиками, ни на одном канале ниже 1150 в заведенном состоянии упасть не должно.

ps а почему ближний к зрителю мотор вообще стоит? Не подключен?

MultiWii
soliada:

а можно немного по подробней,какие именно файлики вытащить и в какой корень?

конечно можно.
По порядку и с самого начала.

  1. скачал архив с прошивкой. Папку с исходниками распаковал на рабочий стол (хотя это может и не оч хорошо)
  2. сменил расширения с *.ino на *.pde. Это для того, чтобы можно было открыть в arduino-0022
  3. Открыл файлики. Попробовал скомпилить - ошибка - не хватает описания некоторых функций, одна из них initOutput();
  4. скопировал из папок IMU и Output файлы IMU.pde и Output.pde в папку с остальными файлами проекта.
  5. перезапустил айрдуйню и попробовал скомпилировать заново. Все компилируется. Насколько работоспособно, не могу сказать. Завтра буду возиться 😃

зы. несколькими страницами ранее был вопрос на тему декабрьского pre, но как я понял, у ребят проблемы подобной моей не возникло…

MultiWii

по теме новой прошивки MultiWii_dev_20111203

может быть кому пригодится. Компилил в arduino-0022 с переименовыванием ino -> pde. Ошибка - не найдены несколько функций. Оказалось, что просто надо вытащить файлики из папочек IMU и Output в корень и все заработало.
зы. саму прошивку еще не пробовал облетывать

MultiWii
nsk-racer:

Так чего мне делать с регулями? Хочу моторы мощнее, dt-750 совсем износились, и ещё вопрос, как сделать чтобы более хорошо крутился по yaw? мне кажется он почти не крутится, питч и ролл прям хорошо реагирует на стики, а вот yaw как то вяло, может мне кажется)

смотря какая конфигурация коптера. У меня три- - проблем с yaw нет, по мне довольно резво крутится. Но вообще стараюсь держать его хвостом ко мне, т.к. еще подтормаживаю, когда он передом поворачивает.
А всякие там квадры и гексы более вяло на yaw реагируют. Многократно обсуждалось 😃

зы. Народ, я тут в самом начале 91й страницы большой пост написал с описанием проблем. Гляньте, пожалуйста. Вдруг кто хоть какие-то ответы знает или может посоветует чего… )

MultiWii

nsk-racer, на каком-то из форумов читал, что регули вообще желательно калибровать, подключив вход к приемнику напрямую. Я именно так и делаю.
но можно еще и через посредника в виде multiwii. Про такое тоже читал, но не пробовал

MultiWii

nsk-racer, кусочек кода из def.h

#if defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__)
#define PROMINI
#endif
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega1281__) || defined(__AVR_ATmega2560__) || defined(__AVR_ATmega2561__)
#define MEGA
#endif

если все правильно понимаю, то тип платы определяется исходя из установленного контроллера. Эмм, подозреваю, что тип контроллера передается IDE.
В самой Ардуине задается в Tools -> Board.
думаю, что ничего страшного не будет, если самостоятельно зададите тип Вашей платы. У меня самопальная promini, все работает ок )

что до датчиков, тут ничего не могу подсказать. Про себя - чтоб корректно работало, собрал преобразователь уровней 5В (ардуина) -> 3.3В (датчики). Проблем с определением не возникало.

А теперь мои вопросы.

исходные данные. Плата promini на Atmega 328p. Конфугурация пепелаца - трикоптер. Радио - 6 канальное ХоббиКинг. Датчики - ITG3205 и bma180 по i2c.
Моторы dt750, регули Mystery 20A blue series (brake - off, timign setup - (22-30)deg, soft start-up - start acceleration, switch freq - 16kHz)

прошивка 1.9

вопросы:
1) не могу заставить работать 6-й канал. 5 задействованы, пашут правильно.
физически 6-й подключен к D12 (до этого была свободна). Правки в коде

/* possibility to use PIN8 or PIN12 as the AUX2 RC input
it deactivates in this case the POWER PIN (pin 12) or the BUZZER PIN (pin 8)

раскомментировал #define RCAUXPIN12

  • в def.h поправил с
    #define AUX2PIN 0 // optional PIN 8 or PIN 12
    на
    #define AUX2PIN 12 // optional PIN 8 or PIN 12

вроде все. Однако в гуи значение на AUX2 = 900 и не меняется. Пробовал на 12 пин подавать данные с других каналов приемника. Никакой реакции. И обратно - 6й канал вместо, к примеру, 5го. 6й физически работает

2). по поводу использования опции trust acc_z. Эмм, смотрю тут на форуме народ чувствительность акселя в данном направлении меняет и полосу пропускания фильтра. И это все для bma020. Никто ничего не пробовал подобного делать с bma180? Просто пока не вникал какие флаги и в какие значения надо выставлять. Надеюсь, можт кто подскажет, если же нет, будем сами курить. И вообще, насколько сильно сказывается включение использования acc_z на поведение коптера? Оно того стоит? 😃

3 со включенным стабмод коптер плывет назад и вправо. До сих пор не могу понять почему. Чтобы избежать дальнейших вопросов:

  • регуляторы на максимальный газ откалиброваны;
  • аксель и гиро откалиброваны;
  • включение питания на максимально возможной горизонтальной поверхности. Задержка калибровки гиры - 2 сек;
  • значения стиков Pitch и Roll совсем рядом с 1500. Прыгают немного, но это аппа виновата;
  • триммирование акселя сильно не помогает, хотя делаю по 15-20 “щелчков” для каждого направления завала
  • вибрации на датчиках в режиме 2/3 от полного газа заметны, но не фатальны;
  • расположение датчиков правильное. Отклонения кривых совпадают, изображение виртуальной модельки повторяет перемещения реальной. Ничего никуда не плывет со временем.

нипонятна почему так. на 1.7 подобного не замечал. Вечером скрин ПИДов выложу )

upd: ах да, тут кто-то еще serial LCDшками интересовался. Глянул на спаркфане - дороговато будет и ждать надо. У меня уже была LCDшка. Стало быть надо платку было сваять serial -> parallel. Если глянуть в ардуиновскую IDE, то там в примерах (Examples -> LiquidCrystal -> SerialDisplay фактически уже есть код для этого преобразователя. Облом в том, что он отображает только одну строчку. Прямо сейчас не могу вспомнить, но дописал буквально пару строчек кода, чтобы LCDшка заработал корректно. Если интересно, попытаюсь найти. Собсно сам код занимает 3кбайта + загрузчик. Так ш на atmega8 пойдет только так, если, конечно, вы не считаете, что для таких нужд использовать мегу8ю вообще транжирство. Зато все можно собрать чуть меньше, чем за вечер. Проверял, работает 😃