Акселерометр 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. Разве это лучше?
@DimChtz, 👍0
2 ответа
SDO должен быть привязан к земле, а не к 3,3 В. Это переводит его в режим I2C.
VDDIO, VS и CS все должны быть на 3,3 В.
Для связи с Arduino при 5 В вам действительно нужен переключатель уровня I2C 5 В -> 3,3 В. Я использую PCA9306DCUR.
Насколько мне известно, вам не нужно подключать его к выдвижным резисторам. Если вы используете 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 В, а также проходит процедуру запуска (см. таблицу) для вас.
Что касается библиотеки, вы можете воспользоваться этой здесь
Также вы можете обратиться к этой статье для подробного использования здесь
И я надеюсь, что в следующий раз вы проведете еще несколько исследований, а затем купите новую деталь.
- Снять гравитацию с акселерометра MPU-6050
- Использование MPU-6050 без I2C
- Изменение скорости передачи данных не работает
- MPU-6050 с Arduino – вскрытие
- Можно ли измерить скорость акселерометром? Насколько точно?
- В чем разница между акселерометром, гироскопом и датчиком магнитометра?
- OVF в последовательном мониторе вместо данных
- Линейное ускорение от MPU 6050
Комментарии не предназначены для расширенного обсуждения; этот разговор был [перенесен на 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