arduino + i2c + accelerometer = большие помехи

meccup
Offline
Зарегистрирован: 12.08.2012

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

Имею:

Sparkfun pro micro 3.3v - https://www.sparkfun.com/products/10999

Sparkfun Triple Axis Accelerometer Breakout - ADXL345 -  https://www.sparkfun.com/products/9836

Обычный шлейф, оставил 4ре контакта.

По уму подключил шлейф - крайние контакты на шлейфе SDA и SCL, земля и vcc - 2ой и 3ий провода соответственно. Шлейф длиной 30см.

Результат:

Все работает замечательно до тех пор пока я просто не подведу палец руки близко к чипу акселероментра (даже не дострагиваюсь), после чего прочитайть из акселерометра ничего не возможно (на то время когда палец находится над чипом). Или просто если подвести платку акселерометра к любой металлической детали - прочитать во время нахождения акс. в близости к металлической детали становится тоже невозможно.

Предыдущая конфигурация с китайской ардуиной и этим же датчиком работала прекрасно. Но возможно что-то случилось за вермя замены китайской ардуины на спаркфан. У меня подозрение на то что возмоможно платка акселерометра намагнитилась, поскольку она лежала рядом с природным магнитом какое-то время (хотя я не уверен что был реальный контакт).

В чем может быть дело?

leshak
Offline
Зарегистрирован: 29.09.2011

 >В чем может быть дело?

Подтягивающие резисторы к питанию (R1,R2 на картинке), для линий SDA, SCL не забыли? (в тексте вы нигде про них не упомянули).

leshak
Offline
Зарегистрирован: 29.09.2011

 Если "не поможет" - показывайте код и давайте ссылки на библиотеки которые используете. Возможно "обратная ситуация" - используются встроенные подтягивающие. А они по 20k.  И для 3-х вольтового питания они могут оказатся "слишком сильными". Линия не успевает востанавливаться. Возможно даже 10K будут "перебором", тогда можно до 4.7K попробовать понизить номинал.

Но "по описанию проблемы", все-таки больше похоже что "их нет вообще", чем "есть но перебор". Тем более в туториалах, почему-то, везде показанно подключение без них.

meccup
Offline
Зарегистрирован: 12.08.2012

Спасибо за ответ.

Да, конечно подтягивающие есть. По 10кОм.

Забыл сказать что я пробовал подключать другой акселерометр, тоже по i2c, но со шлейфом 20см. Этот работает хорошо, без помех.

meccup
Offline
Зарегистрирован: 12.08.2012

leshak пишет:

 Если "не поможет" - показывайте код и давайте ссылки на библиотеки которые используете. Возможно "обратная ситуация" - используются встроенные подтягивающие. А они по 20k.  И для 3-х вольтового питания они могут оказатся "слишком сильными". Линия не успевает востанавливаться. Возможно даже 10K будут "перебором", тогда можно до 4.7K попробовать понизить номинал.

Но "по описанию проблемы", все-таки больше похоже что "их нет вообще", чем "есть но перебор". Тем более в туториалах, почему-то, везде показанно подключение без них.

Использую эту библиотеку: http://www.i2cdevlib.com/devices/adxl345#source

 

meccup
Offline
Зарегистрирован: 12.08.2012

Вообще происходит нечто странное. Не думал что влияние человесеской плоти может настолько влиять на помехи (при этом не качаясь до саомго чипа) :)

Да и спросто если подносишь к металлической поверхности происходит тоже самое.

И самое главное что если трогаешь шлейф то помех не возникает.

leshak
Offline
Зарегистрирован: 29.09.2011

meccup пишет:

Вообще происходит нечто странное. Не думал что влияние человесеской плоти может настолько влиять на помехи (при этом не качаясь до саомго чипа) :)

Да и спросто если подносишь к металлической поверхности происходит тоже самое.

И самое главное что если трогаешь шлейф то помех не возникает.

Сама "человеческа плоть" - не может. Но в данном случае она выступает как антена которая ловит "помехи из эфира". Скорее всего 50 герц от проводки в стенах вокруг вас. Если вы уйдете куда-нибудь "далеко-далеко" в поле - возможно эффект и перестанет проявляется.

Можете еще попробовать снизить номинал подтягивающих до 4.7K, что-бы оно "сильнее притянулу" к питаю, авось менее чувствительно будет. 

Можете попробовать заменить шлейф на витую пару. Взять кабель для Ethernet. Его и экрнированным можено найти. Шлейфы обычно используются для коротких растояний. Внутри экранированного корпуса.

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

meccup
Offline
Зарегистрирован: 12.08.2012

Спасибо за советы. В итоге обнаружил пробой на плате акселерометра SCL контакта. Дорожка повредилась.

Кстати, что делают в таких случаях? Я пока аккуратно восстановил её оловом.

leshak
Offline
Зарегистрирован: 29.09.2011

meccup пишет:

Спасибо за советы. В итоге обнаружил пробой на плате акселерометра SCL контакта. Дорожка повредилась.

Кстати, что делают в таких случаях? Я пока аккуратно восстановил её оловом.

Электроника - наука о контактах :)

Да, вот именно это и делают. Припоем "востанавливают". Обычно, когда плату изготавливают в домашних условиях, даже не ждут пока "дорожка повредится", а изначально все их "промазывают" припоем. Называется "лудить плату". Что-бы если были огрехи травления - снизить их катострофичность.

meccup
Offline
Зарегистрирован: 12.08.2012

Черт, рано радовался. Все по-прежнему. Но такое чувство что помех меньше. Все-таки мне кажется что i2c тут ни при чем.

Может такое поведение быть из-за намагниченности? На плате акселерометра есть три SMD конденсатора. Могут ли они быть причиной, если намагнитились?

.

leshak
Offline
Зарегистрирован: 29.09.2011

Не похоже. Если бы проблема была в "намагниченности", то поднесение руки вряд ли на что-то влияло. Да и по описанию, все-таки, намного больше похоже на "ловит помехи". Мне кажется если бы дело было в "намангиченности", то он бы "врал", а не "обижался и замолкал" (хотя, конечно может магнит и повредил чего). Так что все-таки i2c очень даже может быть "причем".

Но это можно "проверить", возмите короткий шлейф. в пару сантименторов. Если проблема "датчик поврежден", то длина шлейфа не должна ему помочь, а вот если на коротком "все заработает" - версию намагниченонсти точно можно откинуть.

Да и "починеная дорожка", раз вы говорите "стало меньше" говорит о том что уровня сигнала не хватает на линии. "Починили дорожку" - уменьшили сопротивление. Стало лучше "проходить".

Вообщем попробуйте

  1. Укоротить шлейф
  2. Вместо шлейфа взять витую пару, на которой интренет по дому проводят. В идеале - экранированную (в для начала и обычной попробовать можно). Или даже просто на каких-нибудь два провода "потолще" (значит сопротивление у них - поменьше будет).
  3. Уменьшить номинал подтягивающих резисторов (все-таки 10K это обычно рекомендуют для 5v-тового питания).

 

leshak
Offline
Зарегистрирован: 29.09.2011

 А еще, раз одна дорожка была повреждена. Просмотрите все дорожки. Не только "которые данные". Проверте не отвалился ли кто-то из конденсаторов между питанием и землей, на модуле. Может в питание помеха наводится, а кто-то из них "отвалился" и перестал ее фильтровать.

Ну и традиционное: померте тестером питание на модуле, не просаживается?

leshak
Offline
Зарегистрирован: 29.09.2011

 Кстати вот в родственной теме

http://arduino.ru/forum/obshchii/lcd-lovit-pomekhu-s-lampy-dnevnogo-svet...

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

Так что можно попробовать не 10K заменять на 4.7K, а просто влепить по 10K и возле дуины, и возле модуля. Тогда, собственно и получится "потдягивающий" 5K, и расположен "близко ко всем".

Но это уже, конечно, какие-то "пляски с бубном". И если будут еще устройства подключатся - смотреть внимательно что-бы в итоге паралельное подключение всех подтягивающих не вылелось в слишком малый номинал.

 

meccup
Offline
Зарегистрирован: 12.08.2012

Спасибо за советы.

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

Но сейчас вроде бы все работает и так, посмотрим как будет дальше...

Baltazor
Offline
Зарегистрирован: 20.07.2012

Проверил сканером, ни на один адрес но не получил ответа.

Єто значить что часы дохлые?

leshak
Offline
Зарегистрирован: 29.09.2011

Baltazor пишет:

Проверил сканером, ни на один адрес но не получил ответа.

Єто значить что часы дохлые?

Темой промахнулись?

Baltazor
Offline
Зарегистрирован: 20.07.2012

Да, промахнулся :(