Создание собственной системы стабилизации

SergDoc

изучаю тоже CooCox, попытался перетащить проект пока безрезультатно - ковыряюсь…

SergDoc

Накатило что-то…
Реинкарнация мелкоплаты, а может просто бзик?
Мне нравится мелкоплата, но в том состоянии в котором она сейчас - ну как-то не айс 😃
С учётом ошибок и общих веяний, а так же того, что у меня имеется в наличии и с чем более-менее разобрался, получается нечто…
Это не означает что я прекратил попытки сделать контроллер на F4, но пока не могу им заняться 😦
в общем схема (набросок) в архиве:

mahowik

как то совсем давно не заходил почитать фишки-феньки OpenPilot, а тут вон чего! Там и калман и инс по акселю с кореекцией по гпс… Никто не пробовал?

  • External GPS is used for positioning and speed and to correct the data from accelerometers based on motion trajectory models.
  • Extended Kalman filter (EKF 13-16 states) to pull together data from more than 10 sensors (3 gyros, accelerometers, 3 3-axis magnetic compass, barometer, GPS coordinates, GPS speed).
  • Positioning, orientation, and velocity in real time based on data from all the sensors, even at a loss of GPS signal (dead reckoning).
  • User selectable stabilization algorithms (outdoors, using GPS and magnetic compass; indoors without using GPS and possibly magnetic compass; simplified for testing and tuning).

wiki.openpilot.org/display/…/OpenPilot+Overview#Op…

SergDoc

Это не это, короче на F103-м т.е. CC3D всё по старому (ковыряюсь никак до ума не доведу - флешки здоровой нету), а вот в Revo да там все вкусности эти есть… но контроллера нет…
Всё что там писано - это август 10-го года…

SergDoc

а может вия такого приобрести, а то ведь и правда ни разу ничего покупного не пробовал, даже КУК-и сам паял, почему такой? да просто, полетать и разобрать, а из неё и датчик MPU 6050 и микруха с кварцем (PPM нормальный забадяжить), и USB разъём, ну много чего интересного получается 😃

DVE

Лучше уж Naze32 тогда, атмега это шаг назад 😃

SergDoc
DVE:

Лучше уж Naze32 тогда

у меня две платы на F103 (одна с LSM330 - мелкоплата, вторая с MPU6000 - по мотивам CC3D - ещё не запущена), ещё и купить одну? да меня жаба задушит 😃

soliada

О,как раз дней пять назад там заказал.Пока молчек,на письма о вопросе как идет процесс не отвечают.
Вроде в письме присланном после оплаты написано,что если через 10 дней не алё,то пишите,разберемся.
У меня к вам вопрос.Гербер проекта у вас программа выдает с тем расширением что требуют в требованиях к проекту?
У меня все файлы получаются с расширением GBR,а там вроде как другие расширения…

SergDoc

А у меня чёт не пошло, “палка” ругается (мол адрес не действительный) - пойду к другому продавцу, а расширение просто поменять и всё…
блин лучше лучи квадру своему куплю…

soliada

Хм… У меня с оплатой все ок получилось.Прошло на ура. Может из РБ платежи не проходят?
На всякий случай выслал им файлы с исправленным расширением,как указано в требовании к документации.
Спасибо за совет.

SergDoc

Я на пробу нижнюю плату на www.seeedstudio.com заказал, посмотрим… если всё хорошо то будут лишние платы V1.2…
и на лучи хватило, верхнюю плату следующим заходом закажу…

soliada

О,спасибо за ссылку.Попробую и у них заказать.Тут даже вроде как и форма заказа более понятная.

SergDoc

только один ордер-одна плата (10 шт но одной)

SergDoc

Вроде всё нормально

02/27/2013 PCB Confirmed This order has PCB item(s)
02/27/2013 PCB Processing PCB File: D73414_Multirotor.zip is now waiting for file examination.
02/27/2013 PCB Processing PCB File: D73414_Multirotor.zip passed file examination.

Razek
SergDoc:

Я на пробу нижнюю плату на

А у них же вроде 100 штук минимум заказ?

oleg70

Во первых всем спасибо за ссылки и поддержку.!
Смотрю примеры кода в инете в основном на F10x, вижу например следующую строку заполнения структуры:
RCC->APB2ENR|=RCC_APB2ENR_IOPCEN;
начинаю искать в хедерах на F303 сие “RCC_APB2ENR_IOPCEN” – НЕТУ !
Это чеж, на каждую линейку Cortex свою отдельную библиотеку изучать надо?
Где ж тогда “переносимость” кода и прочие удобства от CMSIS ?
Знатоки объясните…

DVE

Ну нафиг всю эту прямую работу с регистрами.

Пишется что-то типа

GPIO_SetBits(GPIOA,GPIO_Pin_2|GPIO_Pin_3);

И просто, и красиво, и переносимо.

rual
oleg70:

Смотрю примеры кода в инете в основном на F10x, вижу например следующую строку заполнения структуры: RCC->APB2ENR|=RCC_APB2ENR_IOPCEN; начинаю искать в хедерах на F303 сие “RCC_APB2ENR_IOPCEN” – НЕТУ ! Это чеж, на каждую линейку Cortex свою отдельную библиотеку изучать надо?

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

oleg70:

Где ж тогда “переносимость” кода и прочие удобства от CMSIS ?

Это совместимость на уровне ядра, к перифириии отношения не имеет.

oleg70

Вас понял, спасибо…
Вообще конечно (мое мнение) создатели библиотек хотели показать как они классно владеют Си (а они так и владеют:)) , буквально на все “изжоги” пошли, а меня такая структуризация пока только с толку сбивает где? что?..
Да и сам проект по количеству подключаемых файлов становится не маленький.

rual
oleg70:

такая структуризация пока только с толку сбивает где? что?..

А должна помогать 😃 Каждый файл библиотеки относиться к определённому устройству.

oleg70:

Да и сам проект по количеству подключаемых файлов становится не маленький.

При выработанной привычке это не страшно, попробуйте сделать проект сложнее мигалки из одного файла (это вполне возможно) - при попытке что-то дописать огребёте счастья по полной…

SergDoc

Вернусь к нашим баранам: мелкоплате и ЛСМ, почему сейчас в вие не читают регистр статуса, раньше вроде было, может мне его читать и на основе данных решать переписывать значения по осям или нет?
ну вот что-нибудь такое?

static void LSM330ACCRead(int16_t *accelData)
{
    uint8_t buf[7];
    uint8_t status;

    i2cRead(LSM330ACC_ADDRESS, LSM330_STATUS_REG +0x80, 7, buf);
    status= buf[0]
if status>0 {
    accelData[0] = ((buf[2] << 8) | buf[1]);
    accelData[1] = ((buf[4] << 8) | buf[3]);
    accelData[2] = ((buf[6] << 8) | buf[5]);
    }

}

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

DVE
oleg70:

меня такая структуризация пока только с толку сбивает где? что?..

Чем и хорош Coocox - выбираем в визарде нужные компоненты (например timer или gpio), он сам скопирует в проект требуемые файлы.