Акселерометр ADXL345 не работает

Я только что получил модуль акселерометра ADXL345. Я перепробовал все, что мог найти в Интернете, но не могу заставить это работать. Вот как я подключаю контакты к arduino uno:

ADXL345    ->     ARDUINO
  VCC               3.3V
  CS                3.3V
  GND               GND
  SDA               SDA
  SCL               SCL

Я также использую 2 резистора 10 Ком от SDA, SCL до 3,3 В на arduino. Я пробовал библиотеки Adafruit и SparkFun ADXL345, но это не работает. При использовании библиотеки Adafruit говорится, что adxl345 не подключен. Я попытался подключить SDO к штифту 3,3 В, а затем он перестал говорить, что adxl345 не подключен,но все равно не работал (не отображались значения x,y, z). Затем я попробовал библиотеку SparkFun без подключения SDO к 3,3 В (потому что это не удалось), и все, что я получил, было 0, 0, 0. Я буквально перепробовал все, что мог найти в видео, учебниках и т. Д. Я не знаю, почему это не работает. Что я делаю не так? Я уже заказал MPU6050. Разве это лучше?

, 👍0


2 ответа


0

SDO должен быть привязан к земле, а не к 3,3 В. Это переводит его в режим I2C.

VDDIO, VS и CS все должны быть на 3,3 В.

Для связи с Arduino при 5 В вам действительно нужен переключатель уровня I2C 5 В -> 3,3 В. Я использую PCA9306DCUR.

,

Комментарии не предназначены для расширенного обсуждения; этот разговор был [перенесен на chat](http://chat.stackexchange.com/rooms/50079/discussion-on-answer-by-majenko-adxl345-accelerometer-doesnt-work)., @Nick Gammon

В модуле ADXL345 уже есть переключатель уровней., @Supragya Mishra

@SupragyMishra Откуда ты знаешь? Конкретный модуль не указан, указан только чип, который находится на модуле., @Majenko

Большинство модулей поставляются с переключателем, и обратите внимание, что он ссылается на VCC, а не на Vdd (цифровое питание) и Vs (напряжение питания)., @Supragya Mishra

@SupragyMishra Модуль, имеющий регулятор напряжения (обычный), не означает, что модуль имеет преобразователь логического уровня (редкий). Adafruit-единственный, который я нашел, у которого есть переводчик уровня. Все остальные-нет. VCC и VDD не подразумевают никакого напряжения. Один-это напряжение коллектора (со старых времен TTL), а другой-напряжение стока (терминология CMOS). Ничто там не подразумевает никакого напряжения., @Majenko

@Majenko Хорошо. Я провел свое исследование, и да, контакты НЕ подразумевают никакого напряжения... И в ADXL, которые у меня с собой, есть регулятор, а не ПЕРЕКЛЮЧАТЕЛЬ. Но логика 5 В хорошо работает с линиями I2c. Поэтому я просто предположил, что это сработает с датчиком Dimchtz, @Supragya Mishra

@SupragyMishra В целом I2C довольно устойчив к различным напряжениям, так как это система шин с открытым стоком. Подтяните шину до более высокого напряжения и надейтесь, что ток через подтягивающие резисторы не будет слишком высоким для диодов ESD в устройстве с более низким напряжением. В большинстве случаев это совершенно нормально., @Majenko


1

Насколько мне известно, вам не нужно подключать его к выдвижным резисторам. Если вы используете Arduino 5 В, просто подключите его следующим образом:

VCC --> 5 В (Arduino)>
GND --> GND (Arduino)
SDA --> A4 или SDA (Arduino Uno имеет специальные контакты I2C рядом с выводом AREF)>
SCL --> A5 или SCL>

Это все, что вам нужно. Поскольку ADXL345 является MEMS 3,3 В, его модуль поставляется с преобразователем 5 В в 3,3 В, а также проходит процедуру запуска (см. таблицу) для вас.
Что касается библиотеки, вы можете воспользоваться этой здесь
Также вы можете обратиться к этой статье для подробного использования здесь
И я надеюсь, что в следующий раз вы проведете еще несколько исследований, а затем купите новую деталь.

,