• Welcome to LusoRobótica - Robótica em Português.
 

Comunicação I2C com Arduino

Started by marlon.tiedt, 04 de December de 2014, 01:37

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

marlon.tiedt

Como nunca mexi com I2C, estas informações são muito valiosas.

Estou querendo mexer com acelerômetros e giroscópios, e encontrei o MPU-6050. Mas o que me desanimou foi o I2C. Já vi acelerômetros com saidas digitais, que eu acho mais tranquilo de trabalhar, pois cada elemento tem uma saída analógica.

Porém não achei nenhum giroscópio com saída analógica, será que existe? E claro, outros componentes como magnétron e medidor de pressão e altitude, tudo usa I2C.

E minha singela opinião, ler 3 saídas analógicas é mais rápido do que ler 6 bytes.




senso

Se for com um Arduino não, porque a ADC corre a pouco mais de 10Khz, e depois introduzes ruidos, problemas a desenhar filtros analógicos, bla bla bla.

Esses sensores são muito, muito usados, tens milhentas bibliotecas, quem não conhece, aqui fica uma boa base de dados de código comprovado e testado:
http://www.i2cdevlib.com/
Avr fanboy

Njay

Não senso, não é só de ti que o I2C não gosta :)

Não Kamm., não tem nada a ver com extensões ao I2C, são simplesmente bugs de implementação da funcionalidade básica.

senso

A ultima coisa estranha foi mesmo o PCA ser um Plus(ou plus + ou lá o nome do i2c rápido esta semana) que devia funcionar a 1Mhz, mas acima de 400Khz e passa-se quando tento mudar o prescaler do clock, o sinal tem uma forma bonita, tem os devidos pull-ups e pistas curtas, mas nem me preocupei muito com aquilo, a 400Khz funciona rápido o suficiente.
Avr fanboy

Njay

#19
Na DiffTrike temos um RasPI ligado a 2 isoladores galvânicos I2C que ligam a 2 AVR (que controlam as pontes-H de potência), por um cabo "em Y" que terá cerca de 50cm entre o PI e cada AVR, e I2C a bombar a 500 kbps (a 3V3). Temos uma "checksum", mas nunca vimos nenhum erro. Agora bomba, mas não sem antes termos partido a cabeça com o bug no I2C do PI.

O isolador I2C foi crucial para detectar o bug do PI, porque pela forma como funcionam estes isoladores; o sinal "low" tem uma tensão ligeiramente diferente para o mestre e para o escravo, o que permitiu perceber quem é que estava a fazer o quê.

O cabo não foi escolhido à toa, é um cabo de rede, que escolhi por causa de ter vários pares entrançados; cada sinal (SDA, SCL) tem o seu próprio par, em que o GND é ligado nas 2 pontas. Por ser entrançado reduz a inductância do cabo (e logo distorções, emissões de EMI e susceptiilidade a EMI) e o crosstalk (por serem pares separados e viajarem com o seu próprio GND). A alimentação para o isolador I2C também viaja pelo cabo, no seu próprio par entrançado o que também ajuda a reduzir a inductância e logo problemas de alimentação (quando se tenta puchar corrente muito depressa através duma inductância, ela opõe-se fazendo baixar a tensão, e vice-versa).