ArduCopter Mega: порт на обычную Arduino (тестим)
Это как бы далеко не синонимы. Ардупилот на одной элементной базе, мегапират-совсем на другой. Общим являются только процессоры. Прошивки тут, конфиги ищите по теме.
Это как бы далеко не синонимы. Ардупилот на одной элементной базе, мегапират-совсем на другой. Общим являются только процессоры. Прошивки тут, конфиги ищите по теме.
Исходник-то один. Не суть важно.
Можно взглянуть на ваш? Из рабочих конечно-же.
Что конкретно интересует? У меня квадр 1,2 кг, моторы ДТ-750, регуляторы плюши 18А, батарея 2,2А, ардуина 1268, датчики аллиноне без ГПС, АР-220, ГПС от Г-ОСД от хоббикинга, сонар версия 1. Рама из алюминиевой трубы 10х20х1,5, центральные пластины вырезаны из старых печатных плат 150х150, мозг в банке из-под СД. Винты ставил 12х4,5 и 10х4,5 от рцтаймера, но больще понравились 10х6 от хоббикинга. Видео полета постил в этой теме, можно посмотреть
Что конкретно интересует? У меня …
Наверное это и интересует.
А версия прошивки какая(или все подходят?)? По точкам летает? Сколько грузоподъемность?
Прошу извинить за тупые вопросы - в ветке с первого взгляда заметил одни сомнения и тесты, нигде не указаны стабильные билды и всё такое…
Вопрос про трикоптер. Есть новые прошивки? где взять или что править? А то я подсоединял серву хвоста как на картинке ( rcwiki.ru/index.php/MegaPirates ) он вообще не реагирует.
ЗЫ проша MegaPirateNG_2.0.49_Beta5.zip и бета4 так-же не пашет. ЭТО ТОЛЬКО ксаемо трикоптера… квадрика нету
Прошивка 49. По точкам летает, но с вопросами - где-то в теме выкладывал. Домой возвращается отлично. Подымает граммов 400, но специально не тестил, просто цеплял еще батарею на 5А, но не подключал ее.
Исходник-то один. Не суть важно.
Можно взглянуть на ваш? Из рабочих конечно-же.
Ну попробуйте залить прошивку от ардупилота в мегапират, увидите насколько “исходник-то один” 😃
Вот навскидку посты, где я писал о своем коптере: 1, 2. DT750, 10х4,5, сентри 18, нанотех 2200, профиль 10х10х0,8, центральная часть от ХК рамы. И, на будущее, есть поиск, ищете по имени пользователя и все.
А то я подсоединял серву хвоста как на картинке ( rcwiki.ru/index.php/MegaPirates ) он вообще не реагирует.
Пдключай к М5. Но серва будет дергаться. Недолюбливают “трешки” тут. Я вот 49-ю прошиву под трикоптер доработал, хорошо висит… Кинь мылу в личку, сброшу свой проект. Надеюсь, у тебя Black Vortex а не ардупилот мега 😉
там почему было закомментировано offsets
не получается настроть компас в MegaPirateNG_2.0.49_Beta4… сейчас в прошивке оффсеты автоматически настраиваются при работе компаса или это ошибка? пробовал раскомментить offsets и настроить их через CLI перед работой… все равно врет. Может кто проверить и отписаться?
Может кто проверить и отписаться?
Проверил, автоматически. Причем, неплохо настраивают. Раньше я выкидывал нафиг и делал вручную калибровку, но сейчас авто неплохо работает. Авто-сохранение модификации каждую минуту. Чтобы получилось что-то близкое к норма, достаточно покрутить плату туда-сюда. После первого полета уже почти в идеале.
- пытаюсь выдрать драйвер сонара из пирата для 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
}
помогите разобраться гуру программинга под Атмегу
у тебя не прописан инит PCINT - прерывания по входу ECHO 😃
PCMSK0 = B00010000; // sonar port B4 - d10 echo
PCICR |= 1; // PCINT activated for PORTB
Проверил, автоматически. Причем, неплохо настраивают. Раньше я выкидывал нафиг и делал вручную калибровку, но сейчас авто неплохо работает. Авто-сохранение модификации каждую минуту. Чтобы получилось что-то близкое к норма, достаточно покрутить плату туда-сюда. После первого полета уже почти в идеале.
Спасибо!
у меня 5883 компас отдельный… возможно с осями напутал… если мотреть по чипу ось Y должна смотреть вперед, а X вправо?
Спасибо Syberian. Я думал что твоя прошивка пойдет НО
То-ли лыжи не едут, то-ли я совсем…
- Качаю это Mission Planner 1.0.68.zip … распаковываю на диск С
- Качаю это MegaPiratePlanner.zip … распаковываю с заменой туда-же
- В ардуину с заменой скидываю исходники прошивки… Ну там настраваю под свое (трикоптер GPS плата датчиков)
компилю и заливаю через ардуину в проц готовый ХЕКс
Запускаю миссионпланер
в мисионпланере половина пидов “Лоадинг” и не меняються…
если во вклакдке Фирмаваре тыкнуть setup мисонпланер висит.
Что я не так делаю…
Чорд… страница в вики безбожно устарела.
качается планнер 1.1.9 code.google.com/p/ardupilot-mega/…/detail?name=Mis…
распаковывается и запускается. Везде выбираем ардукоптер2.
В ардуине меняется только плата датчиков
Всё. Дальше сетап-ресет в планнере, калибровка радио в нем же и в путь. Перед калибровкой радио можешь залить мой param-файл.
Расположение моторов и каналов приемыша - как я писал в письме.
АААА, заработала… )))) Спасибо.
Да как-то нужно с вики разобраться… а то новичкам (вроде меня ) тяжело разобраться… уж очень много разных вариантов. что откуда качать
Про моторы и приемник я уже посмотрел и сравнил файлы… deff
Попробую их подмахнуть в 49 beta5. там у меня gps лучше
у тебя не прописан инит PCINT - прерывания по входу ECHO PCMSK0 = B00010000; // sonar port B4 - d10 echo PCICR |= 1; // PCINT activated for PORTB
не пашет 😦
в консоли строчит zero с бешенной скоростью не смотря на delay
0
0
0
0
там delay не причем, где то в моторах/приемнике счетчик тикает, если память не изменяет, если эти либы разорвать, то работать не будет
там delay не причем
я имелл ввиду что стандартный delay не пашет, даже если выставить в 1сек… loop строчит с бешенной скоростью
но в обшем это не важно, т.е. надо понять почему дривер не пашет…
loop строчит с бешенной скоростью
обработка внтури прерывания, там delay не действует - как пришел сигнал, так и отработалась команда, а то что нули выходят - это счетчик надо выковырять из другой либы