Создание собственной системы стабилизации
Да в исходниках, в бета версии, лежит его схема, я ещё думал что за хрень, без датчиков, только куча разъёмов…
Какие-то изменения по OpenPilot происходят, последний раз обновлял исхдники (всё надеюсь что i2c поправили) - изменения были …
Забавная вещь, на одном контроллере у меня на данный момент работают гиры и аксель, а на втором маг и баро 😃 надо второй перед первым повесить 😃
Хы хы, пока я тут идеи кидал, Китайцы ужо сделали:
goodluckbuy.com/kcopter-stm32f103cbt6-flight-contr…
Хы хы, пока я тут идеи кидал, Китайцы ужо сделали:
Дык это оно и есть Naze 32 без датчиков, пиратить будут 😃
причём написаны датчики которые использует Таймкоп, интересно если я щас драйвер выложу они микруху допишут в поддерживаемые?
причём написаны датчики которые использует Таймкоп, интересно если я щас драйвер выложу они микруху допишут в поддерживаемые?
Так посмотри, у них есть платы с дочерними платами с сенсорами.
rcopen.com/forum/f123/topic281652
Это именно то что я и хотел. В общем, заказал себе вариантик без сенсоров, поставлю на него свою AllInOne… если найду время на это 😃
Схема и платка в орле, есть ошибка с питателями (корпуса меньшие) но запаять можно, так же библиотека с элементами:
есть ошибка с питателями (корпуса меньшие)
кстати это изъян в стандартных библиотеках орла, вечно косяки какие-то, в стандартном LQFP 48-ног контактные площадки были 0.13мм по ширине, хотя нормально и 0.25 и даже 0.3мм
О блин ST на семинар приглашали:
Free technical seminars
Save weeks of development time by attending a free seminar on the new STM32 F0 MCU based on the ARM® Cortex™-M0 core. Learn more about the features of the ARM® Cortex™-M0 core (system architecture, connectivity interfaces, advanced digital and analog peripherals) and the ecosystem of STM32 F0 microcontroller (development and programming tools, evaluation and development kits, firmware libraries). More
А вот такую стабилизацию видели??)))
robotor.ru/2012/06/05/joggobot/
Немного заглядывая вперёд:
STM32F405RGT6
MPU6000
bmp180 ?
HMC5883L ?
FGPMMOPA6B - GPS модуль на MT3329
как-то так
Из приятного, CP2102 дружит с линуксом определяется как TTYUSB 0 без всяких извращений, так что теперь оба контроллера под одной ОС запускаются…
в фотике CANON PC1475 стоят две гиры ENC-03 SMD 😃
MPU6000
Заказал себе 6050. Жду когда придет, начну мучать )))
в 6050 нет SPI 😦
I2c не хватит???
Хватит, и можно клон NAZE 32 сварганить, я просто хочу по SPI, после СС чёт I2C не вставляет, хотя на данный момент вроде без ошибок работает…
ну так ставте 6000 и будет SPI … правда они в отличии от 6050 пока в дефиците …
Первый запуск драйвера ничего не дал, не определилась LSMка 😦
аааа, а в автодетект кто править будет:)
Чёт я не могу въехать
bool ack = false;
uint8_t sig = 0;
ack = i2cRead(ADXL345_ADDRESS, 0x00, 1, &sig); // вот тут немогу разобратся что вычитывается из акселя, я так понимаю что и ack и sig присваивается значение 0хЕ5 это id устройства, к чему привязатся в LSM?
if (!ack || sig != 0xE5) // но тут же неack
return false;
Аксель определился, но читатся отказывается…
# statusshow
System Uptime: 863 seconds, Voltage: 0 * 0.1V (2S battery)
Detected sensors: ACC BARO MAG ACCHW: lsm330acc
Cycle Time: 1150, I2C Errors: 0
#
Беда с автоопределением, я подцепился к первому регистру (он единственный с ненулевыми показаниями) - определился, но что бы аксель заработал, этот регистр программировать надо, а так как я его щас запрограммировал, аксель уже не определяется, бядааа… 😦
да проверил свою догадку, надо искать другой способ автоопределения…
придумал, оси всегда включены, значит надо вычитать, только три младших байта из регистра, они будут всегда постоянны, вопрос как это сделать?
вычитать регистр, сместить <<5 получим число E0 его и примем за сигнатуру?
Можно ли так записать?
ack = i2cRead(LSM330ACC_ADDRESS, LSM330_CTRL_REG1_A << 5, 1, &sig);
Что то у вас всё сложно. В чём смысл идентификации акселя? В том чтобы не заточенную под железо прошиву определить при старте?
Умолчательное значение 00000111b
bool ack = false;
uint8_t sig = 0;
ack = i2cRead(ADXL345_ADDRESS, 0x20, 1, &sig); // если я правильно понимаю параметры функции читаем аксель по адресу 0x20
if (!ack || sig != 0x07) // тут либо NACK, либо считанное занчение не равно 7
return false;
вот вроде так
ps точнее так
ack = i2cRead(LSM330ACC_ADDRESS, LSM330_CTRL_REG1_A, 1, &sig);
сдвигать внутренний адрес акселя не нужно!