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

IvanDeft

Поищите на github’e… Выкладывал кто-то уже ссылку эту: github.com/jrowberg/i2cdevlib/tree/…/Arduino для i2c много полезной инфы с примерами. Думаю можно много найти полезного. И решение вашей задачи тоже )))

SergDoc

Уряя всё заработалооо!!!
Вот оно колдунство
По образцу TC


i2cRead(LSM330GYRO_ADDRESS, LSM330_OUT_X_L_G, 6, buf);

неработает 😃,
По образцу Дмитрия omegapraim


i2cRead(LSM330GYRO_ADDRESS, LSM330_OUT_X_L_G +0x80, 6, buf); 

Заработало!!!😃

IvanDeft

Видео возвращаемых данных, плиз!!!)) сейчас сам сижу мучаюсь с APC220 )))

SergDoc

осталась одна проблема, аппарат то у меня последний кончился, так что только к осени проверю 😦

IvanDeft:

Видео возвращаемых данных, плиз!!!)) сейчас сам сижу мучаюсь с APC220 )))

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

HikeR
SergDoc:

LSM330_OUT_X_L_G +0x80

а в чем юмор? вместо даташитного регистра 0x29h вы читатете регистр 0xA8h (29h+80h) которого даже чисто технически нет. может там вместо данных мусор какой, а вы тут радуетесь 😉

SergDoc
HikeR:

а в чем юмор? вместо даташитного регистра 0x29h вы читатете регистр 0xA8h (29h+80h) которого даже чисто технически нет. может там вместо данных мусор какой, а вы тут радуетесь

В том то и прикол что показания точные, а вот раньше был мусор, сам в шоке - пока непонял почему так, разберусь отпишу…

вот что пишут

The I2C embedded inside the LSM330DL behaves like a slave device and the following
protocol must be adhered to. After the start condition (ST) a slave address is sent, once a
slave acknowledge (SAK) has been returned, an 8-bit sub-address (SUB ) will be
transmitted: the 7 LSb represents the actual register address while the MSB enables the
address auto increment. If the MSb of the SUB field is ‘1’, the SUB (register address) will be
automatically increased to allow multiple data read/writes.

для автоматического приращения регистров, а не просто к адресу регистра прибавить число…

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

Меня сейчас волнует магнитометр, он походу на что-то на плате реагирует, не на баро ли, если так придётся разводить всё по новой, и перепаивать…

SergDoc

С магнитометром разобрался, виновник - шнурок от программатора, после замены показания просто супер, остаётся вопрос по барометру, он у меня почему-то показывает -632.22, показания меняются только после запятой, ну изредка -633, в чём может быть беда? совместимость полная с NAZE 32 так что должен работать…

может просто дохлый?

HikeR
SergDoc:

показания просто супер

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

я как-то с телефона снял сырые данные с датчиков, по компасу получилось вот так:

смещение, вогнутость-выпуклость, овальность и прочие гадости.

SergDoc

Я имею ввиду что платка и компас обычный рядом, показывают одно и тоже 😃 , а значит платку переделывать ненадо, кстати TC что-то менял в прошивке относительно магнитометра, а у меня сейчас последняя версия…

А ещё может это не так критично но у меня время цикла 1100 максимум, а в NAZE32 заявлен 1300…

SergDoc
SergDoc:

может просто дохлый?

ну уже незнаю что с ним и делать - заказать новый?

mataor

у меня с баро (bmp085) такое было (-330) когда стал его прикручивать…
когда разобрался оказалось все просто - поменять адрес… я по i2c родной либой на хмегу пользуюсь - там адрес 8-ми битный нужен
так что проверь этот момент и посмотри все ли читается с баро?

SergDoc
  1. Адрес семь бит
  2. Читается, иначе автодетект бы не сработал
  3. в коде всё правильно - NAZE32 работает
    Возможности две (баро стоял на платке прикручивающейся к СС), либо перегрет, либо в него что-то прописано нехорошее после неудачных экспериментов с шиной i2c в СС…
mataor
  1. ну если используется i2c драйвер со сдвигом чтения/записи то да… 7 бит… у меня же используется 8-ми битный
  2. у меня он тоже не выдавал никаких ошибок, но данные были тоже в минусах… сейчас все норм и т-ру показывает реальную, и высоту 200м, прыгает в пределах полуметра в стабильном состоянии
    это было просто мое предположение… если баро дохлый или еще чего тут уже другой вопрос
SergDoc

ГЫ-ГЫ надо драйвер копать тут то у меня баро работал rcopen.com/forum/f134/topic224458/439 - это со стандартной прошивкой, значит либо я напартачил, либо у TC исходники с ошибкой выложены, вечером залью стандартную и проверю…

Alexey_1811
SergDoc:

Вот драйвер для гиры:

Попробуйте в адресе по которому начинаете читать данные установить в 1 старший бит.

SergDoc
Alexey_1811:

Попробуйте в адресе по которому начинаете читать данные установить в 1 старший бит.

С этим я уже давно разобрался, у меня сейчас баро не работает, при чём на старых прошивках ТС ноль показывает, а на новых -632, вот в чём прикол, и ТС пишет

Requires latest development version of MultiWiiConf from code.google.com/p/multiwii/downloads/list. Firmware shipped after May 7 2012 only works with development version of MultiWiiConf, does not work with 2.0 release (due to serial protocol changes).

но такой версии я не нашол, может у меня тупо в этом проблема…

SergDoc

Чёт меня в сторону КУКа потянуло, собрать на аналоговых гирах и акселе, что-нибудь на атмеге, посчитать фильтр, отложенный пока в загашник, вывести крутилки P I, а то чёт я совсем духом упал, после дохлого барометра, да и коптер ещё не скоро соберу, вроде как из двух движков покалеченых один можно собрать - останется один прикупить (в одном колокольчик прогнулся и магниты раскололись, во втором вроде только магнит один) серва на крайняк ещё одна имеется лучи едут 😃

о кстати вот драйвера к LSM330 если кому надо:

аксель немного шумит, но можно с фильтрами поизгалятся…

SergDoc

Крайняя паршивка работает с Mw-WinGUI-2.1RC1 подходит для NAZE32 c MPU6050, с 3050 работать не будет есть так же сомнения на счёт баро 😦