ArduCopter Mega: порт на обычную Arduino (тестим)

Syberian
SovGVD:

велкам бек

оу оу оу… а как перетащить свой репозиторий с ардупиратов? Там 90% всех обновлений за год - мои 😦 Хотелось бы историю сохранить.

SovGVD
Syberian:

а как перетащить свой репозиторий с ардупиратов?

слить себе на копм, поудалять .svn и залить в новый репозиторий наверное, но лучше у гуру SVNна спросить =)

Morpheus
Ustas69:

Так morpheus вроде и есть на aircam.ru (ака Руссокоптер)

Morpheus
Активный участник
34 лет
Омск
Дата рождения: Июнь-10-1977

Я тут тоже есть.

Syberian : Была версия 3.5

nemo61
SovGVD:

одна и та же рама с моторами, один и тот же пилот, но разные мозги

Так и было. На Руссокоптере взлететь не смог. На мегапирате с тем же железом летал.

tusik
SovGVD:

велкам бек ту мегапайратнг

Я че, зря нового ардукоптера заказал? 😃

Syberian
tusik:

Я че, зря

типа будет чем сравнить 😉

Я вот, например, только рад, что у меня алинонов и вортексов кучка: и на самолет, и на трикоптер есть что поставить… А там еще бензинка на подходе.

SovGVD
Syberian:

у меня алинонов и вортексов кучка

у меня адруинок и датчиков по отдельности… мозгов на 4 квадрика, моторов и регулей на 3 =)

Ustas69

Ну вот видите, как все славненько, главное во время подзадорить😁

Так что, allinone с MS5611 заказывать? Лучше он, чем BMP085?😃

Syberian

Считается, что лучше, но лично я не проверял. У меня все БМПшки, так что буду мучать то, что имею.

SovGVD
Ustas69:

allinone с MS5611 заказывать? Лучше он, чем BMP085?

я бы с MS заказал - датчик в 10 раз точнее (в теории), да и новые арду мозги с этим датчиком

Syberian
SovGVD:

да и новые арду мозги с этим датчиком

только уточняй, что это уже не пиратские а “оригинал” 😉 или я не о том подумал?

SovGVD
Syberian:

я не о том подумал?

о том =) да именно в оригинале, но раз код есть (не смотрел - занят работой), то можно от туда перетырить, да и Sir Alex вроде писал код под этот датчик

mahowik
Syberian:

Найти строку ( №125 ) i2c_write(0x18+4); // Internal Sample Rate 1kHz, 1…6: 1=200hz, 2-100,3-50,4-20,5-10,6-5 Заменить на i2c_write(0x18+2); // Internal Sample Rate 1kHz, 1…6: 1=200hz, 2-100,3-50,4-20,5-10,6-5

ето с 20hz на 98hz?
можно попробовать по идее смело и на 188hz врубить т.к. гиро оссобо не боится вибрации

i2c_write(0x18+1);

как раз имеет смысл если время цикла не более 5-6мс

Syberian:

у тебя не прописан инит PCINT - прерывания по входу ECHO
PCMSK0 = B00010000; // sonar port B4 - d10 echo
PCICR |= 1; // PCINT activated for PORTB

наставил Serial.println(“point_[N]”); в обработчки прерываний а также в setup() и loop()
в итоге картина такова: в обработчики и в loop() не заходит, а setup() вызывается в бесконечном цикле

есть идеи?

Sir_Alex

У меня сейчас мало времени на портирование (Я еще занимаюсь Русификацией электронных книг Kindle), но я почти закончил порт 2.1, осталось только проверить и допилить шероховатости. Я застрял на сборке нового коптера, старый разобрал, а на новый еще не успел установить мозги… Так что, Олег, подожди немного пока я не закончу, а дальше можем вместе что то делать. В старых исходниках не вижу смысла, пусть лежат на старом месте, можно туда сделать ссылку разве что.
Код под MS5611 написан, но не работает (пару человек пробовали), нужен человек понимающий код и с таким датчиком. Я не покупаю отдельно этот датчик, т.к. жду когда доделает новую платку Fabio (FreeIMU) с MS5611 и MPU6050 (тот, что стоит на новом APM 2.0) - у него были трудности с комплектухой, но в ближайшую неделю должны быть готовы. 😃

Sir_Alex
mahowik:

наставил Serial.println(“point_[N]”); в обработчки прерываний а также в setup() и loop() в итоге картина такова: в обработчики и в loop() не заходит, а setup() вызывается в бесконечном цикле есть идеи?

У тебя неправильно инициализировался Таймер5. В пирате используется еще канал B таймера, а у тебя его нет, но он инициализировался.
Замени код функции setup() на этот:

void setup() {
  // initialize the serial port, lets you view the
  // distances being pinged if connected to computer
  Serial.begin(115200);

 // Sonar INIT
//=======================
//D48 (PORTL.1) = sonar input
//D47 (PORTL.2) = sonar Tx (trigger)
//The smaller altitude then lower the cycle time
  cli();
  PORTH&=B10111111; // H6 -d9  - sonar TX
  DDRH |=B01000000;

  PORTB&=B11101111; // B4 -d10 - sonar Echo
  DDRB &=B11101111;

  TCCR5A = 0; //standard mode with overflow at A and OC B and C interrupts
  TCCR5B = (1<<CS11); //Prescaler set to 8, resolution of 0.5us
  TIMSK5 = B00000011; // ints: overflow, capture, compareA
  OCR5A = 65510; // approx 10m limit, 33ms period

  PCMSK0 = B00010000; // sonar port B4 - d10 echo
  PCICR |= 1; // PCINT activated for PORTB
  sei();
}

Кстати, спасибо за скетч, я пока сам ковырял, обнаружил багу с кодом сонара. Иногда происходит переполнение счетчика не успев обработать эхо сигнал от сонара. По уму надо это учитывать и кроме того измерения надо выполнять один раз за 5 переполнений счетчика (по спецификации на сонар, один цикл измерения не должен быть короче 150мс).

mahowik

спасибо огромное! попробую отпишусь.

Sir_Alex:

по спецификации на сонар, один цикл измерения не должен быть короче 150мс

ну да, по идее так для прохождения звуком 5м, как раз надо примерно 150мс…

а фикс на найденный баг уже есть?

Sir_Alex
mahowik:

а фикс на найденный баг уже есть?

Я в твоем скетче поправил, а в пирата пока не перенес.

mahowik
Sir_Alex:

Я в твоем скетче поправил, а в пирата пока не перенес.

проверил… терь все работает! спасибо еще раз!

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

Sir_Alex

Что то я застрял на портировании 2.1.0.
Планер не может подключится к плате, вроде параметры успевает прочитать, а потом все… больше ничего не идет, как будто он теряет коннект. Даже не знаю, где искать ошибку…
Последние исходники лежат в SVN, в папке trunk, Олег, может то же посмотришь? Кстати, специальная версия для BV уже не нужна, последние прошивки отлично работают на BV.
Может это защита от Китайских друзей? Вроде DIYDrones обещали ее сделать…