MMA7455 SPI длина линии

Ivan
Offline
Зарегистрирован: 21.08.2011

Есть акселерометр MMA7455, подключаю его к Arduino по шине SPI. При короткой линии коммуникации и питания все хорошо работает; при подключении 15м кабеля по питанию (- и +) коммуникации нет с акселерометром. Если один из полюсов питания имеет длинный провод, а другой короткий, то взаимодействие успешно.

Сопротивление 15 метрового кабеля 4 Ом.

Я понимаю, если 15 м по шине комуникации, тогда может и не работать, а тут по питанию такое...

В чем проблема?

maksim
Offline
Зарегистрирован: 12.02.2012

Если смогли померить сопротивление проводов, то в чем была трудность померить напряжение питания на акселерометре, когда он не работает?

maksim
Offline
Зарегистрирован: 12.02.2012

 И еще. Любая линия данных работает относительно одной из линий питания, чаще всего относительно земли (GND), поэтому удлинение линий питания так же может сказываться на связь. Попробуйте снизить скорость SPI:

void setup(){
  SPI.setClockDivider(SPI_CLOCK_DIV128);
  .....

 

AlexFisher
AlexFisher аватар
Offline
Зарегистрирован: 20.12.2011

Длинная линия - это всегда проблемма. Начинает сказываться ёмкость и индуктивность линии (точнее, ее волновое сопротивление), возможно, придется позаботиться о согласовании линии по волновому сопротивлению (входное сопротивление приемника должно быть равно волновому сопротивлению линии). Старайтесь использовать только витые пары и для каждого сигнала - свой земляной провод. То есть если всего 4 сигнальных провода, то потребуется кабель UTP-5 (от комповой сети). 

Ivan
Offline
Зарегистрирован: 21.08.2011

maksim пишет:

Если смогли померить сопротивление проводов, то в чем была трудность померить напряжение питания на акселерометре, когда он не работает?

 

С напряжением, кажется все в порядке, это одно из первых что я проверил.

Понижение скорости SPI не желательно.

AlexFisher пишет:

Длинная линия - это всегда проблемма. Начинает сказываться ёмкость и индуктивность линии (точнее, ее волновое сопротивление), возможно, придется позаботиться о согласовании линии по волновому сопротивлению (входное сопротивление приемника должно быть равно волновому сопротивлению линии). Старайтесь использовать только витые пары и для каждого сигнала - свой земляной провод. То есть если всего 4 сигнальных провода, то потребуется кабель UTP-5 (от комповой сети).

Да, видимо придется заниматься и согласованием и использовать витую пару. Быть может подскажете ссылку на материал, или ключевые слова? Я нашел это: http://habrahabr.ru/post/145612/ - это по моей части?

 

AlexFisher
AlexFisher аватар
Offline
Зарегистрирован: 20.12.2011

Да. Это Ваша тема. Если есть возможность измерить ёмкость и индуктивность, то волновое можно посчитать:

Сопротивление терминатора должно быть равно волновому. Это главное условие передачи фронта. 

Ivan
Offline
Зарегистрирован: 21.08.2011

AlexFisher пишет:

Да. Это Ваша тема. Если есть возможность измерить ёмкость и индуктивность, то волновое можно посчитать:

Сопротивление терминатора должно быть равно волновому. Это главное условие передачи фронта. 

Пока такого прибора нет.

Прибор с параметрами подойдет?:

6 Capacitance Measuring Ranges : 1pF to 200uF
Range 1 to 5 : 2000pF / 20nF / 200nF / 2uF / 20uF, +/-2. 5 ;
Range 6 : 200uF, +/-7% ;
4 Inductance Measuring Ranges :20mH / 200mH / 2H / 20H, +/- 2.5%, + 5 digits;

AlexFisher
AlexFisher аватар
Offline
Зарегистрирован: 20.12.2011

Скорее всего нет, там индуктивность будет в микрогенри. Попробуйте с резистором 100 Ом. Если не пойдет, тогда 75 Ом, потом 50 Ом. Волновое витой пары находится где-то в интервале 50-150 Ом. Точно не помню. 

Ivan
Offline
Зарегистрирован: 21.08.2011

AlexFisher пишет:

Скорее всего нет, там индуктивность будет в микрогенри. Попробуйте с резистором 100 Ом. Если не пойдет, тогда 75 Ом, потом 50 Ом. Волновое витой пары находится где-то в интервале 50-150 Ом. Точно не помню. 

А от длины кабеля не зависит волновое сопротивление?

AlexFisher
AlexFisher аватар
Offline
Зарегистрирован: 20.12.2011

Ivan пишет:

А от длины кабеля не зависит волновое сопротивление?

Нет. От длины зависит затухание, которое пропорционально активному сопротивлению. Чем длиннее, тем более выражено волновое и тем легче его померить (увеличиваются емкость и индуктивность, их соотношение не меняется), так что если хотите измерить, берите бухту и меряйте любым китайцем, который умеет измерять емкость и индуктивность.

Чтобы было понятнее, пример: берете телевизионный кабель, хоть метр, хоть 100 метров, у него все равно волновое сопротивление 75 Ом.

Ivan
Offline
Зарегистрирован: 21.08.2011

AlexFisher пишет:

...

Чтобы было понятнее, пример: берете телевизионный кабель, хоть метр, хоть 100 метров, у него все равно волновое сопротивление 75 Ом.

Спасибо, буду пробовать.

Ivan
Offline
Зарегистрирован: 21.08.2011

AlexFisher, спасибо, работает, по крайне мере 15 метров, сопротивление терминаторов 100-120 Ом. Работает на скорости SPI.setClockDivider(SPI_CLOCK_DIV128);

Если терминаторы ставить на все 4 шины на обоих концах, то не работает, я ставил так, с учетом направления передачи сигнала, это работает:

                         A                                                                               M

SDA(MOSI)        R             ====================T                   M

SDO(MISO)        D            T====================                   A

SCLK(SCL)         U            T====================T                 7

CS                      I            T ====================T                4

                          N                                                                             5

                          O                                                                             5

 

AlexFisher
AlexFisher аватар
Offline
Зарегистрирован: 20.12.2011

Правильно. Не пробовали на SCLK и CS тоже только со стороны слейва ставить? Было бы логичнее. Это же тоже однонаправленные линии (на мастере они всегда выходные)