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

west_25_x

Вопрос про трикоптер. Есть новые прошивки? где взять или что править? А то я подсоединял серву хвоста как на картинке ( rcwiki.ru/index.php/MegaPirates ) он вообще не реагирует.
ЗЫ проша MegaPirateNG_2.0.49_Beta5.zip и бета4 так-же не пашет. ЭТО ТОЛЬКО ксаемо трикоптера… квадрика нету

tusik

Прошивка 49. По точкам летает, но с вопросами - где-то в теме выкладывал. Домой возвращается отлично. Подымает граммов 400, но специально не тестил, просто цеплял еще батарею на 5А, но не подключал ее.

RA4ASN
cynIC:

Исходник-то один. Не суть важно.
Можно взглянуть на ваш? Из рабочих конечно-же.

Ну попробуйте залить прошивку от ардупилота в мегапират, увидите насколько “исходник-то один” 😃
Вот навскидку посты, где я писал о своем коптере: 1, 2. DT750, 10х4,5, сентри 18, нанотех 2200, профиль 10х10х0,8, центральная часть от ХК рамы. И, на будущее, есть поиск, ищете по имени пользователя и все.

Syberian
west_25_x:

А то я подсоединял серву хвоста как на картинке ( rcwiki.ru/index.php/MegaPirates ) он вообще не реагирует.

Пдключай к М5. Но серва будет дергаться. Недолюбливают “трешки” тут. Я вот 49-ю прошиву под трикоптер доработал, хорошо висит… Кинь мылу в личку, сброшу свой проект. Надеюсь, у тебя Black Vortex а не ардупилот мега 😉

mahowik
nsk-racer:

там почему было закомментировано offsets

не получается настроть компас в MegaPirateNG_2.0.49_Beta4… сейчас в прошивке оффсеты автоматически настраиваются при работе компаса или это ошибка? пробовал раскомментить offsets и настроить их через CLI перед работой… все равно врет. Может кто проверить и отписаться?

Syberian
mahowik:

Может кто проверить и отписаться?

Проверил, автоматически. Причем, неплохо настраивают. Раньше я выкидывал нафиг и делал вручную калибровку, но сейчас авто неплохо работает. Авто-сохранение модификации каждую минуту. Чтобы получилось что-то близкое к норма, достаточно покрутить плату туда-сюда. После первого полета уже почти в идеале.

mahowik
  1. пытаюсь выдрать драйвер сонара из пирата для multiwii 😃
    загружаю MegaPirateNG_2.0.49_Beta4 скетч, сонар пашет отлично… выношу в отдельный скетч не дышит… помогите разобраться гуру программинга под Атмегу 😃

вот скетч

//#include <FastSerial.h>

// variables to take x number of readings and then average them
// to remove the jitter/noise from the DYP-ME007 sonar readings
const int numOfReadings = 10; // number of readings to take/ items in the array
int readings[numOfReadings]; // stores the distance readings in an array
int arrayIndex = 0; // arrayIndex of the current item in the array
int total = 0; // stores the cumlative total
int averageDistance = 0; // stores the average value

// setup pins and variables for DYP-ME007 sonar device
int echoPin = 10; // DYP-ME007 echo pin (digital 2)
int initPin = 9; // DYP-ME007 trigger pin (digital 3)

unsigned long pulseTime = 0; // stores the pulse in Micro Seconds
unsigned long distance = 0; // variable for storing the distance (cm)

//setup
void setup() {
  pinMode(initPin, OUTPUT); // set init pin 3 as output
  pinMode(echoPin, INPUT); // set echo pin 2 as input

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

  // create array loop to iterate over every item in the array
  //for (int thisReading = 0; thisReading < numOfReadings; thisReading++) {
    //readings[thisReading] = 0;
  //}

 // Sonar INIT
//=======================
//D48 (PORTL.1) = sonar input
//D47 (PORTL.2) = sonar Tx (trigger)
//The smaller altitude then lower the cycle time

 // 0.034 cm/micros
//PORTL&=B11111001;
//DDRL&=B11111101;
//DDRL|=B00000100;

PORTH&=B10111111; // H6 -d9  - sonar TX
DDRH |=B01000000;

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



//PORTG|=B00000011; // buttons pullup

//div64 = 0.5 us/bit
//resolution =0.136cm
//full range =11m 33ms
// Using timer5, warning! Timer5 also share with RC PPM decoder
  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=B00000111; // ints: overflow, capture, compareA
  OCR5A=65510; // approx 10m limit, 33ms period
  OCR5B=3000;

}

// Sonar read interrupts
volatile char sonar_meas=0;
volatile unsigned int sonar_data=0, sonar_data_start=0, pre_sonar_data=0; // Variables for calculating length of Echo impulse
ISR(TIMER5_COMPA_vect) // This event occurs when counter = 65510
{
        if (sonar_meas == 0) // sonar_meas=1 if we not found Echo pulse, so skip this measurement
                sonar_data = 0;
        PORTH|=B01000000; // set Sonar TX pin to 1 and after ~12us set it to 0 (below) to start new measurement
}

ISR(TIMER5_OVF_vect) // Counter overflowed, 12us elapsed
{
    PORTH&=B10111111; // set TX pin to 0, and wait for 1 on Echo pin (below)
    sonar_meas=0; // Clean "Measurement finished" flag
}

ISR(PCINT0_vect)
{
    if (PINB & B00010000) {
        sonar_data_start = TCNT5; // We got 1 on Echo pin, remeber current counter value
    } else {
        sonar_data=TCNT5-sonar_data_start; // We got 0 on Echo pin, calculate impulse length in counter ticks
        sonar_meas=1; // Set "Measurement finished" flag
    }
}


// execute
void loop() {
  //digitalWrite(initPin, HIGH); // send 10 microsecond pulse
  //delayMicroseconds(10); // wait 10 microseconds before turning off
  //digitalWrite(initPin, LOW); // stop sending the pulse
  //pulseTime = micros();
//  pulseTime = pulseIn(echoPin, HIGH); // Look for a return pulse, it should be high as the pulse goes low-high-low
//  distance = pulseTime/58; // Distance = pulse time / 58 to convert to cm.

    if ( (sonar_data < 354) && (pre_sonar_data > 0) ) {    //wrong data from sonar (3cm * 118 = 354), use previous value
            sonar_data=pre_sonar_data;
        } else {
            pre_sonar_data=sonar_data;
        }
        distance = (sonar_data / 118); // Magic conversion sonar_data to cm

  Serial.println(distance, DEC); // print out the average distance to the debugger

  /*total= total - readings[arrayIndex]; // subtract the last distance
  readings[arrayIndex] = distance; // add distance reading to array
  total= total + readings[arrayIndex]; // add the reading to the total
  arrayIndex = arrayIndex + 1; // go to the next item in the array
  // At the end of the array (10 items) then start again
  if (arrayIndex >= numOfReadings) {
    arrayIndex = 0;
  }
  averageDistance = total / numOfReadings; // calculate the average distance
  */

  (averageDistance, DEC); // print out the average distance to the debugger
  delay(100); // wait 100 milli seconds before looping again
}
Syberian
mahowik:

помогите разобраться гуру программинга под Атмегу

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

mahowik
Syberian:

Проверил, автоматически. Причем, неплохо настраивают. Раньше я выкидывал нафиг и делал вручную калибровку, но сейчас авто неплохо работает. Авто-сохранение модификации каждую минуту. Чтобы получилось что-то близкое к норма, достаточно покрутить плату туда-сюда. После первого полета уже почти в идеале.

Спасибо!
у меня 5883 компас отдельный… возможно с осями напутал… если мотреть по чипу ось Y должна смотреть вперед, а X вправо?

west_25_x

Спасибо Syberian. Я думал что твоя прошивка пойдет НО
То-ли лыжи не едут, то-ли я совсем…

  1. Качаю это Mission Planner 1.0.68.zip … распаковываю на диск С
  2. Качаю это MegaPiratePlanner.zip … распаковываю с заменой туда-же
  3. В ардуину с заменой скидываю исходники прошивки… Ну там настраваю под свое (трикоптер GPS плата датчиков)
    компилю и заливаю через ардуину в проц готовый ХЕКс
    Запускаю миссионпланер
    в мисионпланере половина пидов “Лоадинг” и не меняються…
    если во вклакдке Фирмаваре тыкнуть setup мисонпланер висит.
    Что я не так делаю…
Syberian

Чорд… страница в вики безбожно устарела.
качается планнер 1.1.9 code.google.com/p/ardupilot-mega/…/detail?name=Mis…
распаковывается и запускается. Везде выбираем ардукоптер2.
В ардуине меняется только плата датчиков
Всё. Дальше сетап-ресет в планнере, калибровка радио в нем же и в путь. Перед калибровкой радио можешь залить мой param-файл.

Расположение моторов и каналов приемыша - как я писал в письме.

west_25_x

АААА, заработала… )))) Спасибо.
Да как-то нужно с вики разобраться… а то новичкам (вроде меня ) тяжело разобраться… уж очень много разных вариантов. что откуда качать

Про моторы и приемник я уже посмотрел и сравнил файлы… deff
Попробую их подмахнуть в 49 beta5. там у меня gps лучше

mahowik
Syberian:

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

не пашет 😦
в консоли строчит zero с бешенной скоростью не смотря на delay
0
0
0
0

SovGVD

там delay не причем, где то в моторах/приемнике счетчик тикает, если память не изменяет, если эти либы разорвать, то работать не будет

mahowik
SovGVD:

там delay не причем

я имелл ввиду что стандартный delay не пашет, даже если выставить в 1сек… loop строчит с бешенной скоростью
но в обшем это не важно, т.е. надо понять почему дривер не пашет…

SovGVD
mahowik:

loop строчит с бешенной скоростью

обработка внтури прерывания, там delay не действует - как пришел сигнал, так и отработалась команда, а то что нули выходят - это счетчик надо выковырять из другой либы

mahowik
SovGVD:

обработка внтури прерывания, там delay не действует - как пришел сигнал, так и отработалась команда

это понятно что на само прерывание delay (который внутри loop) ни как не влияет… НО вот диррективы (или как их назвать) самого драйвера влияют на delay внутри loop, т.е. delay игнорится и loop на бешенной скорости

bergorsam

Нисибе чего!!!😃
Олег, у квада размерчик то мужской!
ДВС планируется?

Ustas69

Всем привет! Есть вот такой аппарат, плата Руссокоптер, регули I2C, перешитые из HobbykingSS. Мне не нравится, как Руссокоптер летает именно в конфигурации Y6 (постоянная перекомпенсация). Аппарат задумывался для съемки с воздуха, есть активный подвес. В связи с этим несколько вопросов:

  1. Регуляторы нужны PWM, HobbykingSS 25-30 пойдут? (Слышал, что требуется перепрошивка) просто есть в наличии.
  2. Сонар победили таки? Есть такой, как на фото, с виду тоже самое. Есть еще Maxbotix MaxSonar-EZ0 (вроде тоже на ардуине работал).
  3. Есть Arduino Mega 2560, нужно купить AllinOne и всё? И стоит ли покупать с GPS, если есть GPS от ИглТрии?
  4. Реально кто из наших летал по GPS? Каков порядок а точности в метрах?

Почитал ветку, и проект мне понравился, тем более Олега знаю по другим проектам. В общем охота замутить 😒

SovGVD
  1. регули любые PWM
  2. сонар победили
  3. надо 1280 или 2560 ардиунку, нужно докупить allinone, гпс любой с UART выходом
  4. хз

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

Razek
Syberian:

Чорд… страница в вики безбожно устарела.

А какая на текуший момент супер стейбл версия прошивки?