Вопрос по IMU-сенсор на 10 степеней свободы и 3.3v

Тема в разделе "Arduino & Shields", создана пользователем Shestipaliy, 25 май 2019.

  1. Shestipaliy

    Shestipaliy Нуб

    Может ли он работать от 3.3v? Судя по описанию да, но у меня адруина почему-то виснет при попытке считать с нее данные когда подаю такое напряжении. При 5v все нормально. Но у меня на шине есть другие устройства 3.3v и я не хотел бы их поджарить. Ведь по SDA\SDL как я понял идет то же напряжение что и на самих устройствах? Хотя я замерил выход 3.3 на арудине и мультиметр мне показывает 3.25, может в этом дело или это нормально?
     
    Последнее редактирование: 25 май 2019
  2. Daniil

    Daniil Гуру

    Описание
    Схема и код?
    Есть ли у вас устройства с одинаковыми адресами?
    ничего не понятно, как вы такое поняли? Если на устройствах разное напряжение, то и на линиях разное, как? Почитайте про i2c и открытый коллектор.
    На этих линиях максимальное напряжение равно напряжению на подтягивающих резисторах.
    все имеет разброс, допустимые отклонения описываются в даташитах.
    50 мВ это всего лишь 1.5% от 3.3 В - норм.
     
    Shestipaliy нравится это.
  3. Shestipaliy

    Shestipaliy Нуб

    В данный момент, в тестовом варианте ничего кроме ардуино, тройка шилда и иму не подключено. Если подключаю 2мя трех-контактниками прямо в шилд, то все работает хорошо. Но если в тот трех-контактник по которому идет питание втыкаю 3.3в и землю, то все сразу начинает виснуть.

    У меня изначально ардуино законкчен с малиной через i2c, чтобы не было проблем с напряжением я нашел код отключающий подтягивающие резисторы на ардуино и все работает. Вот теперь на ту же шину мне нужно повесить этот самый imu - вот я и озадачился, чтобы там не было 5в, а иначе может быть каюк малинке.
     
  4. Daniil

    Daniil Гуру

    не у всех есть обозначенные выше модули.
    Резисторы подтягивающие устанавливаются внешние, надо их только найти.
    Тут я их не вижу.
    Обратите внимание, что есть джампер выбора питания.
    Без схем вам мало кто помогать будет.
    нужна схема. I2C по определению ОК. Подозреваю, что отключая/подключая внутренние подтягивающие вы по сути ничего не делаете, т.к. их должна отключать библиотека. Я в ней не копался.
     
  5. Shestipaliy

    Shestipaliy Нуб

    А не подскажете где их лучше всего изображать, я нашел нечто подобное - www.tinkercad.com.
    Там есть некие базовые модули. Но если я хочу этот вот с этим самым гироскопом, акселерометром и подобным изобразить то как мне лучше это сделать?
     
  6. Daniil

    Daniil Гуру

    Я бы делал в DiagramDesigner.
    В крайнем случае, на листочке.
    В программах рисования красивых картинок не разбирался. Слишком много красивостей, которые отвлекают.
    Интересуют какие выводы к чему подключены, какие напряжения питания (проверить все джамперы, если есть возможность, то и тестером пройтись, а то вдруг вы втыкаете в 3.3 В, а там ничего нет или земля не объединена..). Наличие каких-либо внешних элементов (подтягивающих резисторов) на используемых проводниках.
     
  7. Карандашом на бумаге проще всего
     
  8. На уно очень слабый регулятор 3.3v - всего 50мА. Вполне возможно, что не хватает питания, если у вас еще и другие устройства.
     
  9. parovoZZ

    parovoZZ Гуру

    В I2C нет подтягивающих резисторов. Я писал об этом здесь
    http://forum.amperka.ru/threads/Суперэкономичный-беспроводной-монитор-Т-и-rh.17221/
    Поэтому только внешние.
     
  10. Daniil

    Daniil Гуру

    Значит, раз работало, они есть на модуле.
     
  11. parovoZZ

    parovoZZ Гуру

    для сенсора должно хватить. При условии, что производитель модуля не ухудшил данный параметр.
     
    Последнее редактирование: 26 май 2019
  12. Shestipaliy

    Shestipaliy Нуб

    Смотрите у меня сейчас ардуина соединена с маликой напрямую, двумя кабелями SDA SDL и все работает без каких либо проблем, хотя я читал что адруина 5 вольтовая а малинка 3.3 и надо конвертировать уровни. Я подозреваю что все потому что я использовал код:

    #ifndef cbi
    #define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
    #endif
    #if defined(__AVR_ATmega168__) || defined(__AVR_ATmega8__) || defined(__AVR_ATmega328P__)
    // deactivate internal pull-ups for twi
    // as per note from atmega8 manual pg167
    cbi(PORTC, 4);
    cbi(PORTC, 5);
    #else
    // deactivate internal pull-ups for twi
    // as per note from atmega128 manual pg204
    cbi(PORTD, 0);
    cbi(PORTD, 1);
    #endif

    Из вот этой статьи:
    http://www.varesano.net/blog/fabio/how-disable-internal-arduino-atmega-pullups-sda-and-scl-i2c-bus

    Он вообще что-то делает? Или я могу его убрать и у меня все продолжит работать и ничего не сгорит?
     
    Последнее редактирование: 26 май 2019
  13. Shestipaliy

    Shestipaliy Нуб

    А с пина 5в он больше ампер дает?
     
  14. parovoZZ

    parovoZZ Гуру

    Нет. Здесь надо ознакомиться с аппаратной частью интерфейса I2C и с тем, как формируются CMOS уровни.
     
  15. parovoZZ

    parovoZZ Гуру

    Он отдаст столько, сколько способен отдать блок питания. Но если питание на плату подаётся через встроенный линейный стабилизатор, то я бы больше 300 мА не снимал.
     
  16. Shestipaliy

    Shestipaliy Нуб

    Тоесть если я уберу эти строки то ничего не изменится?
     
  17. Daniil

    Daniil Гуру

    нет, эти строки из другой песни)
     
  18. Shestipaliy

    Shestipaliy Нуб

    Ох, я нуб и хотел общий простых ответов а меня отправиили штудировать матчасть, ну как всегда). Так и не понял тогда зачем в сети куча статей про всякие понижения повышения напряжения при соедниении микрокомьютьеров (Beaglebone, Raspberry) c Arduino по всевозможным интерфейсам. Если просто можно воткнуть два провода и не париться вообще. Так и делают когда надо ардуино с малиной соединить?
     
  19. AlexU

    AlexU Гуру

    Согласовывать уровни нужно, чтобы не сжечь процессор или микроконтроллер. Но бывают случаи, когда процессор питается от 3V, а некоторые выводы толерантны к 5V. Тогда достаточно двух проводков.
    Или наоборот -- 5тивольтовый микроконтроллер "понимает" 3ёхвольтовую логику и в случае интерфейса I2C с его открытыми коллекторами можно сделать 3ёхвольтовую логику на пинах 5тивольтового микроконтроллера. В этом случае так же нет необходимости согласовывать уровни.
    В общем надо смотреть в каждом конкретном случае -- нужно согласовывать и как уровни или и "так сойдёт".
     
  20. parovoZZ

    parovoZZ Гуру

    У CMOS логики раздел уровня "0" и "1" ровно посередине питания. Но не надо забывать о триггерах шмидта на входе у некоторых экземпляров. В любом случае "1" с трехвольтовой логики гарантировано попадает в зону "1" 5-ти вольтовой (3 вольта > 2.5 вольт).