Перейти к содержанию
    

LSM303DLH - не могу прочитать показания

Здравствуйте, уважаемые. Работаю с LSM303DLH, в данный момент с акселерометром. Сказал ему в CTRL_REG1_A 0x27, а он мне в ответ по осям выдает какую-то непонятку и каждый раз разную. Плата лежит на столе а показания болтаются как ето, ну в общем в проруби. И что еще этот акселерометр от меня хочет не могу понять. Даташит ковыряю, там есть еще куча регистров, и не все понятно, как с ними работать. Подскажите , кто знает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Скажите, а с магнитным уже работали? В LSM303DLH возможна калибровка магнитного датчика?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Работал и с магнитным, но не для измерения напряженности, а "токма волею пославшей мя" для измерения азимутального угла, т.е. магнитным компасом.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Здравствуйте. Так как вы все-таки преодолели проблему с непоняткой в данных??? тоже начала работать с акселерометром и такая же фигня - показания скачут.. Что с этим делать??? :help:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Такая же проблема с акселерометром. Правда, пишу под Бэйсиком. Уважаемый demaven не могли бы вы сообщить адреса по которым общаетесь с датчиками?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Уважаемый demaven ответьте пожалуйста, как вы решили проблему с хаотичными значениями?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Уважаемый demaven, скиньте пожалуйста исходный код инициализации и чтения данных по i2c. Мучаюсь уже неделю пытаясь хоть как-то заставить это чудо работать. Заранее огромное спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Подскажите кто-нибудь в чем ошибка в процедуре чтения данных с магнитометра:

  i2c_start(); 
    i2c_write(0x3C);  // write mag 
    i2c_write(0x03);  // Select register OUT_X_L_M 
    i2c_start();         // repeated start 
    i2c_write(0x3D); // read mag 
    ACC_Data[0] = i2c_read();//read OUT_X_H_M (MSB) 
    ACC_Data[1] = i2c_read();//read OUT_X_L_M (LSB) 
    ACC_Data[2] = i2c_read();//read OUT_Y_H_M (MSB) 
    ACC_Data[3] = i2c_read();//read OUT_Y_L_M (LSB) 
    ACC_Data[4] = i2c_read();//read OUT_Z_H_M (MSB) 
    ACC_Data[5] = i2c_read(0);//read OUT_Z_L_M (LSB) NACK 
    i2c_stop();

 

Инициализация проходит нормально, но ACC_Data[0]..[5] на выходе получаются со значениями 255.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Подскажите кто-нибудь в чем ошибка в процедуре чтения данных с магнитометра:

  i2c_start(); 
    i2c_write(0x3C);  // write mag 
    i2c_write(0x03);  // Select register OUT_X_L_M 
    i2c_start();         // repeated start 
    i2c_write(0x3D); // read mag 
    ACC_Data[0] = i2c_read();//read OUT_X_H_M (MSB) 
    ACC_Data[1] = i2c_read();//read OUT_X_L_M (LSB) 
    ACC_Data[2] = i2c_read();//read OUT_Y_H_M (MSB) 
    ACC_Data[3] = i2c_read();//read OUT_Y_L_M (LSB) 
    ACC_Data[4] = i2c_read();//read OUT_Z_H_M (MSB) 
    ACC_Data[5] = i2c_read(0);//read OUT_Z_L_M (LSB) NACK 
    i2c_stop();

 

Инициализация проходит нормально, но ACC_Data[0]..[5] на выходе получаются со значениями 255.

 

получается считать данные из адреса WHO IS?

 

попробуй прочитать по байтно

вот так, из каждого адреса

 

i2c_write(0x3C); // write mag

i2c_write(0x03); // Select register OUT_X_L_M

i2c_start(); // repeated start

i2c_write(0x3D); // read mag

ACC_Data[0] = i2c_read();//read OUT_X_H_M (MSB) NACK

i2c_stop();

 

если получится, нужно протокол править в процедуре

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Помогите пожалуйста, у меня предмет диплома lsm303dlh, нету мат моделирования и эксперимента, дали готовый макет, а он не работает. Может у кого есть какие либо наработки, буду рад всему.

З.Ы. Все даташиты и срвис мануалы уже перелопатил.

[email protected]

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вопрос по обработке результатов измерений: как получить диапазон от -2048 до +2047? Байты на стороне компа сдвигаем и складываем так: Mx = (OUTXH << 8) + OUTXL. Как на выходе получить значение поля со знаком? Интересует чисто измеритель поля.. в гаусах, эрстедах.. без разницы в чем.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вопрос по обработке результатов измерений: как получить диапазон от -2048 до +2047? Байты на стороне компа сдвигаем и складываем так: Mx = (OUTXH << 8) + OUTXL. Как на выходе получить значение поля со знаком? Интересует чисто измеритель поля.. в гаусах, эрстедах.. без разницы в чем.

Mx = (signed short) (OUTXH << 8) + OUTXL;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Доброго времени суток есть очень уважительная просьба хотелось бы увидеть листинг программы по обработке данных с магнитометра и акселерометра какая бралась ценна младшего разряда и тд . Очень нуждаюсь в вашей помощи.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...