реклама на сайте
подробности

 
 
> Кто работал с L3G4200D?
Alexander_84
сообщение Apr 4 2011, 08:07
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 36
Регистрация: 14-09-08
Пользователь №: 40 181



Здравствуйте, с гироскопами сталкиваюсь впервые. Вообщем задача пока просто измерять углы по 2 осям. Гироскоп подлючен по I2C к ARM. Интерфейс работает нормально (регистр WHO_AM_I считывется правильно), а когда пытаюсь считывать углы получаю ерунду: устройво лежит в покое, при этом показания например по оси x меняютя ( принимают значения 30000, 60000, 771, 64000...). Из настроек по умолчанию в CTRL_REG1 изменил power_down на normal_mode и DATA_RATE поставил 200Гц, в CTRL_REG4 BDU поставил в 1. С настройками по умолчанию считываю первый раз значение и больше оно не меняется при вращении устройства. Вообщем как заставить это работать и измеряется абсолютный угол или изменение угла?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
mataor
сообщение Apr 5 2012, 04:20
Сообщение #2





Группа: Новичок
Сообщений: 3
Регистрация: 5-04-12
Пользователь №: 71 191



Добавлюсь и я в ваш огород)))
C этим гироскопом ковырялся полдня, ито в основном из-за того что сейчас начался ковыряццо с xmega128a3 и его TWI.
Гир отсюда http://www.ebay.com/itm/L3G4200D-Triple-Ax...a#ht_535wt_1396 - подключай питание и I2C/SPI и работай - так же мона найти и схемку модуля
инициализацию и снятие показаний взял из MultiWii исходников - там кстати дофига гир, акселерометров, магнетометров, барометров + GPS
в итоге получился такой код (извиняюсь он еще не причесан):
Код
USART_puts(eUSARTF0, "L3G4200D test\r\n");

    USART_puts(eUSARTF0, "TWI_Baud ");outputHex(TWI_BAUDSETTING);USART_puts(eUSARTF0, "\r\n");
    uint8_t l3g4200address=L3G4200D_ADDRESS1; // gyro can be assigned to 2 addresses, we check the two here
    
    USART_puts(eUSARTF0, "Trying address ");
    outputHex(l3g4200address);
    USART_puts(eUSARTF0, "...\r\n");
    
    // Задаем адрес ячейки для чтения
      sendBuffer[0]=0x0F; // WHOAMI регистр
    
    TWI_MasterWriteRead(&twiMaster, l3g4200address, &sendBuffer[0], 1, 1);
    while (twiMaster.status != TWIM_STATUS_READY); // ждем
    
    if (twiMaster.readData[0x00]!=L3G4200D_WHOAMI)
    {
        USART_puts(eUSARTF0,"Not found...\r\n");
        l3g4200address=L3G4200D_ADDRESS2;
        USART_puts(eUSARTF0,"Trying address ");
        outputHex(l3g4200address);
        USART_puts(eUSARTF0, "...\r\n");
        sendBuffer[0]=0x0F; // WHOAMI регистр
        TWI_MasterWriteRead(&twiMaster, l3g4200address, &sendBuffer[0], 1, 1);
        while (twiMaster.status != TWIM_STATUS_READY); // ждем
        
        if (twiMaster.readData[0x00]!=L3G4200D_WHOAMI)
        {
            USART_puts(eUSARTF0,"Not found...\r\n");
            USART_puts(eUSARTF0,"Please check I2C bus connection, pull ups on SDA/SCL, power to the gyro, decoupling capacitors etc...\r\n");
            for(;;);
        }
      }
      USART_puts(eUSARTF0, "L3G4200D answered !\r\n");
      USART_puts(eUSARTF0,"Configuring gyro for basic measurements, no filtering, 500sps...\r\n");
      
      sendBuffer[0]=0x20;//Адрес старта
      sendBuffer[1]=0x8F;//значение
      TWI_MasterWriteRead(&twiMaster, L3G4200D_ADDRESS2, sendBuffer, 2, 0);
      while (twiMaster.status != TWIM_STATUS_READY); // ждем
      sendBuffer[0]=0x24;//Адрес старта
      sendBuffer[1]=0x02;//значение
      TWI_MasterWriteRead(&twiMaster, L3G4200D_ADDRESS2, sendBuffer, 2, 0);
      while (twiMaster.status != TWIM_STATUS_READY); // ждем
      //sendBuffer[0]=0x23;//Адрес старта
      //sendBuffer[1]=0x90;//значение
      //TWI_MasterWriteRead(&twiMaster, L3G4200D_ADDRESS2, sendBuffer, 2, 0);
      //while (twiMaster.status != TWIM_STATUS_READY); // ждем
      
      // Проверка что записали в регистры
      USART_puts(eUSARTF0,"Reading writed registr\r\n");
      sendBuffer[0]=0x20;
      TWI_MasterWriteRead(&twiMaster, l3g4200address, &sendBuffer[0], 1, 1);
      while (twiMaster.status != TWIM_STATUS_READY); // ждем
      outputHex(twiMaster.readData[0x00]);USART_puts(eUSARTF0,"  ");
      //sendBuffer[0]=0x23;
      //TWI_MasterWriteRead(&twiMaster, l3g4200address, &sendBuffer[0], 1, 1);
      //while (twiMaster.status != TWIM_STATUS_READY); // ждем
      //outputHex(twiMaster.readData[0x00]);USART_puts(eUSARTF0,"  ");
      sendBuffer[0]=0x24;
      TWI_MasterWriteRead(&twiMaster, l3g4200address, &sendBuffer[0], 1, 1);
      while (twiMaster.status != TWIM_STATUS_READY); // ждем
      outputHex(twiMaster.readData[0x00]);USART_puts(eUSARTF0,"  ");
      USART_puts(eUSARTF0,"\r\n");
            
      USART_puts(eUSARTF0,"Reading x,y,z data\r\n");


    while (1)
    {
        // read 3 int16 which is 6 bytes.
        sendBuffer[0]=(0x80|0x28); //
        TWI_MasterWriteRead(&twiMaster, l3g4200address, sendBuffer, 1, 6);
        while (twiMaster.status != TWIM_STATUS_READY); // ждем
        gyroscope[0]=((twiMaster.readData[1]<<8) | twiMaster.readData[0])/20;
        gyroscope[1]=((twiMaster.readData[3]<<8) | twiMaster.readData[2])/20;
        gyroscope[2]=((twiMaster.readData[5]<<8) | twiMaster.readData[4])/20;
            
        USART_puts(eUSARTF0,"Angles x,y,z in °/s : ");
        float angle;
        int i=0;
        while(i<3)
        {
            angle=gyroscope[i]*0.0175f;
            dtostrf(angle,5,4, buffer);
            USART_puts(eUSARTF0,buffer);
            if (i!=2) USART_puts(eUSARTF0,", ");
            i++;
        }
        
        USART_puts(eUSARTF0,"    raw : ");    

        i=0;
        while(i<3)
        {
            itoa( gyroscope[i], buffer, 10);  // output 16 bit signed value to decimal.      
            USART_puts(eUSARTF0,buffer);
            if (i!=2) USART_puts(eUSARTF0,", ");
            i++;
        }
        USART_puts(eUSARTF0,"\r\n");

        _delay_ms(250); // wait 100ms so user can read something
        _delay_ms(250); // wait 100ms so user can read something
        _delay_ms(250); // wait 100ms so user can read something
        _delay_ms(250); // wait 100ms so user can read something
        
    }
Go to the top of the page
 
+Quote Post
Andrew-S
сообщение Apr 5 2012, 06:16
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 71
Регистрация: 18-01-06
Пользователь №: 13 333



Всем спасибо за советы. Буду дальше экспериментировать. Получается действительно на моей стороне проблемы если у всех работает.

Цитата(mataor @ Apr 5 2012, 07:20) *
Добавлюсь и я в ваш огород)))
C этим гироскопом ковырялся полдня, ито в основном из-за того что сейчас начался ковыряццо с xmega128a3 и его TWI.

Код
    while (twiMaster.status != TWIM_STATUS_READY); // ждем

Я не знаком с этим контролером, поясните, пожалуйста, что это за статус?

Код
gyroscope[2]=((twiMaster.readData[5]<<8) | twiMaster.readData[4])/20;

И вот здесь не понятно зачем делить на 20?


Цитата(Alex_1811 @ Apr 4 2012, 22:31) *
Обрати особое внимание на питание.

С питанием вроде ОК.

Цитата(MrAlex @ Apr 4 2012, 22:28) *
Может поучиться записи регистров с последующим чтением и сравнением? Может и остальные вопросы отпадут

Это как бы намек что я конфигурацию не проверил после записи?

Сообщение отредактировал Andrew-S - Apr 5 2012, 06:29
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Alexander_84   Кто работал с L3G4200D?   Apr 4 2011, 08:07
- - -=TRO=-   С этим чипом ещё не работал, только жду заказа, но...   Apr 22 2011, 16:12
- - Данилыч   Цитата(Alexander_84 @ Apr 4 2011, 12:07) ...   Apr 28 2011, 18:51
- - ren5   Цитата(Alexander_84 @ Apr 4 2011, 12:07) ...   May 9 2011, 22:03
- - rzn62   Здравствуйте! Проблема с гироскопом следующая....   Jul 22 2011, 10:07
|- - MrAlex   Цитата(rzn62 @ Jul 22 2011, 14:07) Вопрос...   Jul 25 2011, 12:14
|- - klen   таже беда, моя тема ниже чуток но никио не ответил...   Jul 25 2011, 12:48
|- - MrAlex   Цитата(klen @ Jul 25 2011, 16:48) к уого ...   Jul 25 2011, 13:30
|- - rzn62   Цитата(klen @ Jul 25 2011, 16:48) если не...   Jul 27 2011, 17:35
|- - MrAlex   Цитата(rzn62 @ Jul 27 2011, 21:35) Присое...   Jul 28 2011, 05:37
|- - rzn62   Цитата(MrAlex @ Jul 28 2011, 09:37) Неспо...   Jul 28 2011, 18:15
|- - MrAlex   Цитата(rzn62 @ Jul 28 2011, 22:15) Мой ко...   Jul 29 2011, 07:09
|- - klen   Цитата(MrAlex @ Jul 29 2011, 11:09) Значи...   Aug 3 2011, 14:02
|- - Alex_1811   Цитата(klen @ Aug 3 2011, 17:02) код в ст...   Aug 25 2011, 17:58
|- - MrAlex   Цитата(Alex_1811 @ Aug 25 2011, 21:58) По...   Aug 26 2011, 06:23
- - Bearpaw   Привет всем! Пытаюсь запустить сей гироскоп по...   Jan 2 2012, 19:49
- - delphi   Привет всем. Описанная в первом посте проблема на ...   Mar 13 2012, 17:19
- - delphi   Это проблема протокола. Он неправильно читает сраз...   Mar 16 2012, 14:02
- - Andrew-S   Как раз сейчас вожусь с этим датчиком. Настройки н...   Mar 23 2012, 14:24
- - Andrew-S   Продолжаю исследования, пока безрезультатно. Попро...   Apr 4 2012, 10:51
- - MrAlex   Может поучиться записи регистров с последующим чте...   Apr 4 2012, 19:28
|- - Alex_1811   Обрати особое внимание на питание.   Apr 4 2012, 19:31
- - mataor   TWIM_STATUS_READY - не обращайте внимания.... это ...   Apr 5 2012, 14:06
|- - Andrew-S   Цитата(mataor @ Apr 5 2012, 17:06) а так ...   Apr 5 2012, 18:03
- - mataor   никаких аномалий нет... в спокойном положении при ...   Apr 6 2012, 15:05
- - Andrew-S   Посмотрите, пожалуйста, какие у вас конденсаторы с...   Apr 16 2012, 11:51
|- - ren5   Цитата(Andrew-S @ Apr 16 2012, 15:51...   Apr 16 2012, 14:28
|- - Andrew-S   Цитата(ren5 @ Apr 16 2012, 17:28) не знаю...   Apr 17 2012, 05:37
- - Mityan   Извините, пожалуйста, может ли кто-нибудь размести...   Apr 20 2012, 09:26
- - Andrew-S   Mityan, получил такой график. Покачал плату с датч...   Apr 23 2012, 06:57
|- - Mityan   Цитата(Andrew-S @ Apr 23 2012, 09:57...   May 4 2012, 05:57
|- - Shopper   Проблема, возникающая при повышении температуры L3...   Aug 3 2012, 22:23
|- - Ruslan1   Цитата(Shopper @ Aug 4 2012, 01:23) Пробл...   Aug 4 2012, 07:59
- - Shopper   Кто-нибудь пробовал нагревать гироскоп до температ...   Apr 25 2012, 21:08
|- - Andrew-S   Цитата(Shopper @ Apr 26 2012, 00:08) Кто-...   Apr 26 2012, 10:48
|- - Shopper   Цитата(Andrew-S @ Apr 26 2012, 14:48...   Apr 26 2012, 13:49
- - Артур   Товарищи, которые запустили, как коэффициент для н...   Dec 14 2012, 15:51
- - Артур   Вроде нашел. Уже не актуально.   Dec 15 2012, 17:58
|- - Acvarif   Вроде я попал туда куда надо. Стоит задачка опреде...   Feb 23 2015, 19:26
|- - Xenia   Цитата(Acvarif @ Feb 23 2015, 22:26) Пыта...   Feb 23 2015, 21:17
|- - Acvarif   Цитата(Xenia @ Feb 24 2015, 01:17) Мне та...   Feb 24 2015, 06:26
|- - Xenia   Цитата(Acvarif @ Feb 24 2015, 09:26) Дума...   Feb 24 2015, 07:01
|- - Acvarif   Может оно и так. Дело в том, что частота излучения...   Feb 24 2015, 07:40
|- - Xenia   Цитата(Acvarif @ Feb 24 2015, 10:40) Може...   Feb 24 2015, 23:40
|- - Acvarif   Цитата(Xenia @ Feb 25 2015, 03:40) 200 мс...   Feb 25 2015, 07:35
|- - Xenia   Цитата(Acvarif @ Feb 25 2015, 10:35) Спас...   Feb 25 2015, 09:32
- - A. Fig Lee   Не знаю насчет точности, но угол надо мерять с пом...   Feb 24 2015, 14:38


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 6th August 2025 - 20:49
Рейтинг@Mail.ru


Страница сгенерированна за 0.01467 секунд с 7
ELECTRONIX ©2004-2016