Hutch84 0 4 апреля, 2011 Опубликовано 4 апреля, 2011 · Жалоба Здравствуйте, с гироскопами сталкиваюсь впервые. Вообщем задача пока просто измерять углы по 2 осям. Гироскоп подлючен по I2C к ARM. Интерфейс работает нормально (регистр WHO_AM_I считывется правильно), а когда пытаюсь считывать углы получаю ерунду: устройво лежит в покое, при этом показания например по оси x меняютя ( принимают значения 30000, 60000, 771, 64000...). Из настроек по умолчанию в CTRL_REG1 изменил power_down на normal_mode и DATA_RATE поставил 200Гц, в CTRL_REG4 BDU поставил в 1. С настройками по умолчанию считываю первый раз значение и больше оно не меняется при вращении устройства. Вообщем как заставить это работать и измеряется абсолютный угол или изменение угла? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
-=TRO=- 0 22 апреля, 2011 Опубликовано 22 апреля, 2011 · Жалоба С этим чипом ещё не работал, только жду заказа, но возможно по аналогии с компасами, при чтении из первого регистра(данных по осям) остальные блокируются до того момента пока вы не прочитаете последовательно их все. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Данилыч 0 28 апреля, 2011 Опубликовано 28 апреля, 2011 (изменено) · Жалоба Здравствуйте, с гироскопами сталкиваюсь впервые. Вообщем задача пока просто измерять углы по 2 осям. Гироскоп подлючен по I2C к ARM. Интерфейс работает нормально (регистр WHO_AM_I считывется правильно), а когда пытаюсь считывать углы получаю ерунду: устройво лежит в покое, при этом показания например по оси x меняютя ( принимают значения 30000, 60000, 771, 64000...). Из настроек по умолчанию в CTRL_REG1 изменил power_down на normal_mode и DATA_RATE поставил 200Гц, в CTRL_REG4 BDU поставил в 1. С настройками по умолчанию считываю первый раз значение и больше оно не меняется при вращении устройства. Вообщем как заставить это работать и измеряется абсолютный угол или изменение угла? Здравствуйте! Сначала у меня была точно такая же история. Потом почти все получилось. 1. В соответствии с даташитом CD00265057 данные угловой скорости по осям представлены как числа в дополнительном коде. После соответствующих преобразований получаются удобочитаемые значения в диапазоне приблизительно от 0 до +/-5000. 2. Если Вас отвлекают шумы (около +/-50), то для начала полученные 2-байтовые значения можно загрубить. Я сдвигал их вправо на 8 бит! Получается очень наглядно. Сейчас работаю над системой прерываний. В скупо написанном даташите встречаются ошибки. CD00265057.pdf Изменено 28 апреля, 2011 пользователем Данилыч Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ren5 0 9 мая, 2011 Опубликовано 9 мая, 2011 · Жалоба Здравствуйте, с гироскопами сталкиваюсь впервые. Вообщем задача пока просто измерять углы по 2 осям. Гироскоп подлючен по I2C к ARM. Интерфейс работает нормально (регистр WHO_AM_I считывется правильно), а когда пытаюсь считывать углы получаю ерунду: устройво лежит в покое, при этом показания например по оси x меняютя ( принимают значения 30000, 60000, 771, 64000...). Из настроек по умолчанию в CTRL_REG1 изменил power_down на normal_mode и DATA_RATE поставил 200Гц, в CTRL_REG4 BDU поставил в 1. С настройками по умолчанию считываю первый раз значение и больше оно не меняется при вращении устройства. Вообщем как заставить это работать и измеряется абсолютный угол или изменение угла? скорее всего ошибка в чтении по I2C, получал такие данные, когда пытался прочитать серией все 6 регистров, стандартной подпрограммой, изменил протокол чтения, согласно даташита, и все стало читаться нормально можно ничего не менять, попробуй считывать отдельно из каждого регистра, а не серией шумы убираю упрощенным алгоритмом Калмана Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rzn62 0 22 июля, 2011 Опубликовано 22 июля, 2011 (изменено) · Жалоба Здравствуйте! Проблема с гироскопом следующая. В управляющие регистры внесены те же изменения, что и у Alexander_84. Обмен данными - по I2C, чтение и запись поочередно для каждого регистра, не серией. При неподвижном гироскопе старший байт угловой скорости по ВСЕМ осям 11111110 = FE h (младшие байты разные). Такое характерно для ВСЕХ 4-х приобретенных гироскопов из одной партии. Если перевести из доп. кода и умножить на 0,00875 (цена младшего разряда при Wmax = 250 град/с), по модулю выходит больше 1 град/с. Это нормально, что "ноль" смещен на такую величину, притом одинаково по всем трем осям? Пробовали режим SELF TEST, при переводе из доп. кода выдает значение 146 град/с (если цену младшего разряда брать из datasheet с сайта производителя 0,00875 град/с) или 126,7 град/с (если цена младшего разряда 250/32768 град/с), что заявленным 130 град/с никак не соответствует. Вопросы: 1) если кто с подобным встречался, подскажите, пожалуйста, чем такой эффект может быть вызван? 2) почему регистр STATUS_REG имеет значение 11111111 (происходит перезапись данных угловой скорости), даже если в старший бит CTRL_REG4 поставить "1", т.е. запретить перезапись содержимого выходных регистров до завершения чтения из них данных? Изменено 22 июля, 2011 пользователем rzn62 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alecsej 0 25 июля, 2011 Опубликовано 25 июля, 2011 (изменено) · Жалоба Вопросы: 1) если кто с подобным встречался, подскажите, пожалуйста, чем такой эффект может быть вызван? Допустимое смещение нуля по ДШ +/- 10 гр/сек, при диапазоне +/- 250 2) почему регистр STATUS_REG имеет значение 11111111 (происходит перезапись данных угловой скорости), даже если в старший бит CTRL_REG4 поставить "1", т.е. запретить перезапись содержимого выходных регистров до завершения чтения из них данных? Подразумевается, что произошла утеря данных вследствие несвоевременного прочтения. Изменено 25 июля, 2011 пользователем MrAlex Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
klen 1 25 июля, 2011 Опубликовано 25 июля, 2011 · Жалоба таже беда, моя тема ниже чуток но никио не ответил. а) я взял кусок кода "ихний" - тоесть ST-мовский пример который к этому датчику идет с доками, внем нада только spi прикрутиить, spi работает отлично - читает id и можно запичсать число в регистр а потом его считать. - значит не в spi дело 2) с дуру был впаян неправильный кондер в филтр фапч. но температуру то он должен же был мериить. тоже не дает измерений - значения как вкопаные не меняются к уого какую температуру показывает и как это значение в градусы перевести? если не слтожно у кого заработало дайте кусок кода с инициализвцией и чтением. какой интерфейс - i2c или spi неважно Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alecsej 0 25 июля, 2011 Опубликовано 25 июля, 2011 (изменено) · Жалоба к уого какую температуру показывает и как это значение в градусы перевести? При комнатной температуре показывает 23 - 25 непосредственно в градусах(8 бит в дополнительном коде), но масштаб отрицательный при нагреве показания уменьшается. Изменено 25 июля, 2011 пользователем MrAlex Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rzn62 0 27 июля, 2011 Опубликовано 27 июля, 2011 · Жалоба если не слтожно у кого заработало дайте кусок кода с инициализвцией и чтением. какой интерфейс - i2c или spi неважно Присоединяюсь. :-) тоже не дает измерений - значения как вкопаные не меняются Если совсем не меняются, возможно, гироскоп после подачи питания "самостоятельно" уходит в режим power down (нужно прописать единичку в бит PD CTRL_REG1) либо, если старший бит CTRL_REG4 BDU = "1", не считываются все 6 байт угловых скоростей и гироскоп не обновляет выходные регистры. Предположение, конечно. Есть приложение к ДШ - AN3393 Application note; в нем некоторые вопросы, в частности, алгоритм инициализации (Startup sequence), рассмотрены чуточку подробнее. Может кому пригодится. На сегодняшний день гироскоп вроде задышал - в режиме покоя пошли близкие к нулю данные (в пределах +/- 0,6..0,8 град/с), но периодически (в среднем на каждый 50-й отсчет) выскакивает такой косяк, как повторное чтение предыдушего байта: например, значение младшего байта по одной оси повторно считывается как старший байт скорости по другой оси. В результате - дикие выбросы, вплоть до Wmax. Ошибка в протоколе I2C? AN3393_Application_note.pdf Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alecsej 0 28 июля, 2011 Опубликовано 28 июля, 2011 · Жалоба Присоединяюсь. :-) Неспортивно. Законченные библиотеки можно поискать в проектах под Ардуины. Если совсем не меняются, возможно, гироскоп после подачи питания "самостоятельно" уходит в режим power down (нужно прописать единичку в бит PD CTRL_REG1) ... После пода питания гироскоп всегда находится в powerdown mode, кроме PD надо выставить Zen,Yen,Xen. старший бит CTRL_REG4 BDU = "1" блокирует результат одной оси пока не будут прочитаны оба регистра ( H - L ), результаты двух других осей могут быть обновлены. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rzn62 0 28 июля, 2011 Опубликовано 28 июля, 2011 (изменено) · Жалоба Неспортивно. Знаете, MrAlex, когда у Вас гироскоп уже работает, можно рассуждать и о спортивной этике, и показать мне желтую карточку за неспортивное поведение на форуме. А когда с Вас требуют результат, от которого зависит работа Ваших коллег, в бестолковку невольно начинают лезть мысли типа "вороне как-то бог послал кусочек сыра". Мой коллега со светлой (не в смысле цвета волос) головой прочитал с гироскопа адекватные данные. Как тут уже писали выше, стандартный протокол чтения нужно изменить в соответствии с ДШ. После пода питания гироскоп всегда находится в powerdown mode, кроме PD надо выставить Zen,Yen,Xen. Не шибко силен в англицком, но фраза "After power supply is applied, the L3G4200D performs a 10 ms boot procedure to load the trimming parameter. After the boot is completed, the device is automatically configured in power-down mode" заканчивается словами "...после завершения процедуры загрузки устройство автоматически переходит в режим Power Down". Это и подразумевал, когда написал "самостоятельно". Биты Zen,Yen,Xen, судя по ДШ, по умолчанию уже выставлены в "1". блокирует результат одной оси пока не будут прочитаны оба регистра ( H - L ), результаты двух других осей могут быть обновлены. Да, признаю, сегодня убедился. По поводу измеряемой температуры: при +30 в помещении выдает 11111001, что при переводе из доп. кода дает -7. Нагревать/охлаждать гироскоп пока не пробовали. Фраза "The L3G4200D is provided with an internal temperature sensor that is suitable for delta temperature measurement." вроде как не обещает возможности измерения абсолютных значений температуры. Изменено 28 июля, 2011 пользователем rzn62 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alecsej 0 29 июля, 2011 Опубликовано 29 июля, 2011 · Жалоба Мой коллега со светлой (не в смысле цвета волос) головой прочитал с гироскопа адекватные данные. Значит вопросы сняты. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
klen 1 3 августа, 2011 Опубликовано 3 августа, 2011 · Жалоба Значит вопросы сняты. код в студию Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alexey_1811 0 25 августа, 2011 Опубликовано 25 августа, 2011 · Жалоба код в студию Поделитесь кодом, пожалуйста!!!! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alecsej 0 26 августа, 2011 Опубликовано 26 августа, 2011 · Жалоба Поделитесь кодом, пожалуйста!!!! Кодом чего с вами поделится? TWI_Init(); Hardware_TWI_Enable(); if(!L3G4200D_Init((unsigned short*)&SensorsRawData[0u])) G_SENSOR_MODE |= SENSOR_L3G4200D; Вот и весь код, остальное - это библиотеки собранные в проект. Инициализируется следующим образом: Write CTRL_REG1 (20h) = BW1 | BW0 | PD | Zen | Yen | Xen Write CTRL_REG2 (21h) = 0x00, // High Pass Filter not used Write CTRL_REG3 (22h) = I2_DRDY Write CTRL_REG4 (23h) = BDU Write CTRL_REG5 (24h) = Out_Sel0 Данные считываются одним блоком начиная со статуса. FIFO не используется. Разные варианты настроек расписаны в appnote: http://www.st.com/internet/com/TECHNICAL_R.../DM00026768.pdf Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться