|
Датчики GY-80 и GY-521
|
|
| rheinhard | Дата: Вторник, 08.01.2013, 23:04 | Сообщение # 1 |
|
1.5 Вольт
Группа: Пользователи
Сообщений: 7
Репутация: 20
Статус: Offline
| У меня такой вопрос.
Заказывал два датчика - первый - GY-80, который,аксе-гиро-компас-барометр. Приехало, правда, нечто без опознавательных знаков:
Второй - GY-521, акселерометр-гироскоп.
Подключаю по общей схеме к шине I2С, которая везде валяется:
VCC - +3.3v GND - GND SCL - вывод A5 SDA - вывод А4
Первый датчик отработал полторы минуты, честно показывая мне температуру и давление, затем перестал отзываться вообще.
Второй датчик не работал изначально, с момента заказа.
Вопрос - что я не так делаю?
Скетчи для проверки брались из библиотек i2cdevlib, для MPU6050 и остальных микросхем: https://github.com/jrowberg/i2cdevlib/tree/master/Arduino/MPU6050 Имею 2 платы - старенькую Diecimilia и свежезаказанную Uno. С платами все в порядке, поскольку вот такой агрегат без проблем функционирует:
Это у меня кривые ручки, или брак?
Сообщение отредактировал rheinhard - Вторник, 08.01.2013, 23:04 |
| |
| |
| GRACH | Дата: Среда, 09.01.2013, 02:20 | Сообщение # 2 |
 dvrobot.ru
Группа: Администраторы
Сообщений: 111
Репутация: 16181
Статус: Offline
| rheinhard здравствуйте !!
1. Датчик Вам приехал по функционалу тот же, просто схема платы немного различается. На сайте еще не успели поменять фото ( см. фото). Вероятность брака в датчиках данного типа очень мала, так как датчики данного типа на коленках не возможно сделать. Они или работают или нет, но об этом пока рано говорить.
2. Я поищу более подробную информацию по данным датчикам. Вы тоже продолжайте изучение, может еще кто подсоединится к нам, быстрее будет.
|
| |
| |
| rheinhard | Дата: Среда, 09.01.2013, 03:52 | Сообщение # 3 |
|
1.5 Вольт
Группа: Пользователи
Сообщений: 7
Репутация: 20
Статус: Offline
| Пример по ссылке с датчиком GY-80 у меня работал: https://github.com/jrowber....sic.ino
Инструкция для установки библиотек: 1. Качаем всю упаковку библиотек: https://github.com/jrowberg/i2cdevlib/archive/master.zip 2. Вытаскиваем оттуда директории I2Cdev и BMP085, кладем в arduino/libraries 3. Открываем пример из BMP085 (это если для GY-80 пробовать) и заливаем.
Подключение платы описано выше в посте.
Если кто, копаясь по форумам, найдет подключение датчиков к цифровым пинам, типа
Vcc - 3.3V GND - GND SCL - D5 SDA - D4 ADO - GND INT - D2
Оно не верное. Библиотека Wire не работает с цифровыми выводами. Можете сами проверить светодиодом. Есть схемы подключения однотипных датчиков
http://www.drotek.fr/photos....3.3.JPG http://www.microcopters.de/photos/95/freeimu-035.gif http://fpv-community.de/attachm....7406859 http://s10.postimage.org/41w5mhjy1/megacontroller.jpg
Есть идея всунуть между SDA и +, и междуSCL и + резисторы на ~4.7к, но они ведь на плате уже встроены, согласно спецификации...
http://playground.arduino.cc/Main/MPU-6050
Если это та плата GY-521. А то ведь тоже не очень похожа. На оригинале светодиод был.
Я в печали. =====================================================================================
Пожалуй, буду сюда потихоньку выносить найденное, возможно, однажды разберусь.
На форумах советуют отыскать некий Logic Level Converter, например, такой: https://www.sparkfun.com/products/8745 и пускать девайсы по шине через него.
Еще попадался способ такой: Переключить аналоговые пины:
pinMode(A4, INPUT); pinMode(A5, INPUT);
digitalWrite(A4,LOW); digitalWrite(A5,LOW);
На Uno R3 можно попробовать прицепиться к вынесенному SPI интерфейсу, что у UNO возле AREF находится:
Попробую так же схему коммуникации двух ардуино: http://arduino.cc/en/Tutorial/MasterReader ===============================================================================================
Напал на след. Нужен все-таки левел-шифтер с 5в логики большой ардуино на 3.3в логику маленького девайса. В магазине, к сожалению, чего-нибудь вроде SparkFun не найдешь, поэтому буду пытаться собрать по схеме: http://www.hobbytronics.co.uk/mosfet-voltage-level-converter ===============================================================================================
Тут советуют вырубить внутренние подтягивающие резисторы: http://aeroquad.com/showthr....e3 Это делается в недрах функции ::twi_init библиотеки i2c:
void twi_init(void) { twi_state = TWI_READY; // activate internal pull-ups for twi * sbi(PORTC, 4); * sbi(PORTC, 5); // initialize twi prescaler and bit rate cbi(TWSR, TWPS0); cbi(TWSR, TWPS1); TWBR = ((CPU_FREQ / TWI_FREQ) - 16) / 2; // enable twi module, acks, and twi interrupt TWCR = _BV(TWEN) | _BV(TWIE) | _BV(TWEA); }
Звездочками отмечены строки, которые нужно закомментарить, согласно очень подробному разбору работы библиотек: http://playground.arduino.cc/Code/ATMELTWI#shift
Но все же лучше спаять левел-шифтер.
Сообщение отредактировал rheinhard - Среда, 09.01.2013, 17:16 |
| |
| |
| rheinhard | Дата: Среда, 09.01.2013, 20:57 | Сообщение # 4 |
|
1.5 Вольт
Группа: Пользователи
Сообщений: 7
Репутация: 20
Статус: Offline
| Можете меня поздравить. Собранный на коленке шифтер по схеме http://letsmakerobots.com/node/34444 готов, датчик GY-521 подключен и исправно дает показания. Gy-80, похоже, все же сгорел.
ап: остальные выводы, например, INT (к цифровому 2), так же подключайте через резистор 2.2 ком, дабы не спалить.
Сообщение отредактировал rheinhard - Пятница, 11.01.2013, 09:55 |
| |
| |
| GRACH | Дата: Четверг, 10.01.2013, 20:17 | Сообщение # 5 |
 dvrobot.ru
Группа: Администраторы
Сообщений: 111
Репутация: 16181
Статус: Offline
| На сайте ДВ Робот, можно скачать библиотеку подключения Модуля GY-80 к Ардуино. http://dvrobot.ru/shop/i267.Modul_GY-80_Akse-Giro-Kompa-Barometr.htm
|
| |
| |
| rheinhard | Дата: Понедельник, 14.01.2013, 21:32 | Сообщение # 6 |
|
1.5 Вольт
Группа: Пользователи
Сообщений: 7
Репутация: 20
Статус: Offline
| Датчик GY-80 10DOF, перебрал предложенные примеры, переделал их, чтоб работали и выкладываю полное описание:
1. Подключение датчика 10DOF (GY-80)
Arduino ...... GY-80
5v...... vcc_+5v GND...... GND A4...... SDA A5...... SCL
2. Проверка устройств на шине. Для этого загрузите скетч: Код // -------------------------------------- // i2c_scanner // // This program (or code that looks like it) // can be found in many places. // For example on the Arduino.cc forum. // The original author is not know. // // This sketch tests the standard 7-bit addresses // from 0 to 127. Devices with higher bit address // might not be seen properly. // // Adapted to be as simple as possible by Arduino.cc user Krodal // // June 2012 // Using Arduino 1.0.1 //
#include <Wire.h>
void setup() { Wire.begin();
Serial.begin(9600); Serial.println("\nI2C Scanner"); }
void loop() { byte error, address; int nDevices;
Serial.println("Scanning...");
nDevices = 0; for(address = 0; address <= 127; address++ ) { // The i2c_scanner uses the return value of // the Write.endTransmisstion to see if // a device did acknowledge to the address. Wire.beginTransmission(address); error = Wire.endTransmission();
if (error == 0) { Serial.print("I2C device found at address 0x"); if (address<16) Serial.print("0"); Serial.print(address,HEX); Serial.println(" !");
nDevices++; } else if (error==4) { Serial.print("Unknow error at address 0x"); if (address<16) Serial.print("0"); Serial.println(address,HEX); } } if (nDevices == 0) Serial.println("No I2C devices found\n"); else Serial.println("done\n");
delay(8000); // wait 8 seconds for next scan }
Сканер должен выдать в порт 4 найденных устройства:
I2C Scanner Scanning... I2C device found at address 0x1E ! I2C device found at address 0x53 ! I2C device found at address 0x69 ! I2C device found at address 0x77 ! done
Архив с переделанными примерами мне лениво заливать, я передам его Максиму, надеюсь, он поместит его на страницу GY-80 в магазине, вместо нерабочих примеров к датчику.
Сообщение отредактировал rheinhard - Понедельник, 14.01.2013, 21:38 |
| |
| |
| GRACH | Дата: Вторник, 15.01.2013, 14:40 | Сообщение # 7 |
 dvrobot.ru
Группа: Администраторы
Сообщений: 111
Репутация: 16181
Статус: Offline
| rheinhard, Спасибо !! В ближайшее время обязательно это сделаю !!
|
| |
| |
| LizardBoot | Дата: Воскресенье, 12.05.2013, 03:50 | Сообщение # 8 |
 1.5 Вольт
Группа: Пользователи
Сообщений: 1
Репутация: 0
Статус: Offline
| rheinhard,у меня небольшая проблемка. Когда заливаю скетч кроме как Scanning... ничего не происходит. Согласно схеме подключил: Ard 5V -> HV; Ard 3.3V -> LV -> VCC(GY-521); Ard GND -> GND -> GND(GY-521); Ard SCL -> RXI1; RXO1 ->SCL(GY-521); Ard SDA -> RXI2; RXO2 -> SDA(GY-521);
Подключение выполняю на Mega 2560. Буду очень признателен, если поможете советом.
Сообщение отредактировал LizardBoot - Воскресенье, 12.05.2013, 03:53 |
| |
| |