Caros,
Estou tentando utilizar 3 dispositivos na interface I2C, em um Wemos D1-R2 mini:
MPU6050 - acelerômetro e giroscópio
MAX30100 - frequencímetro de pulso e medidor de O2
GY906-MLX90614 - medidor de temperatura ambiente e de objeto
Mas quando conecto os 3 o GY906 fica maluco, coletando um valor fixo nas 2 temperaturas 1307 graus aproximadamente, isso pode ser devido ao resistor de pull-up? caso seja qual seria o valor ideal para esses resistores, estou utilizando alimentação de 3,3V para todos os dispositivos.
Tags:
Carlos ajuda ai !
Tem conflito de endereço nessas mensagens !
Com o módulo GY521-MPU6050:
Scanning...
I2C device found at address 0x68 !
done
Com o módulo MAX30100:
Scanning...
I2C device found at address 0x68 !
done
Falha minha na hora do Ctrl-C/Ctrl-V, mas o endereço do MAX30100 é 0x57, como você pode ver quando os 3 estão montados.
Acabei de fazer o teste somente com o MAX30100
Scanning...
I2C device found at address 0x57 !
done
Olá Carlos
Isso confirma que não há conflito de endereço e que o barramento está funcionando muito bem.
A próxima etapa é identificar no seu firmware onde está o problema, pode ser conflito entre bibliotecas ou até mesmo erro de lógica.
Bom dia,
Descobri uma limitação do MLX90614 !
https://www.melexis.com/en/product/MLX90614/Digital-Plug-Play-Infra...
https://www.melexis.com/en/documents/documentation/application-note...
O padrão da interface dele não é exatamente I2C . E sim SMBUS.
Serial, 8-bit oriented, bi-directional data transfers can be made at up to 100 kbit/s !
A velocidade padrão da interface I2C com Arduino é de 400 Kbits/s.
Poste por favor o programa que esta usando para ler os três sensores.
Bom dia,
Veja nesse manual, como proceder quando os dispositivos tem duas velocidades diferentes.
https://www.nxp.com/docs/en/application-note/AN10216.pdf
Limitação do protocolo I2C: em uma aplicação onde os dispositivos de 100 kHz e 400 kHz (mestres e / ou escravos) estão presentes no mesmo barramento, a menor freqüência deve ser usada para garantir um comportamento seguro. "
"Due to the different I2C specification available (100 kHz, 400 kHz and now 3.4 MHz), devices designed for the 100 kHz specification are not suitable to work properly at 400 kHz, while the opposite is true. In applications where upgrades have been performed by using newer 400 kHz devices while keeping the 100 kHz legacy devices, it may become necessary to separate the 400 kHz devices from the 100 kHz devices when a 400 kHz I2C transfer is performed.
•I2C protocol limitation: in an application where 100 kHz and 400 kHz devices (masters and/or slaves) are present in the same bus, the lowest frequency must be used to guarantee a safe behavior."
Agradeço a todos pela ajuda, consegui funcionar todos os sensores, tive que mudar a velocidade dos sensores que utilizam I2C para 100MHz e o mais complicado foi o MAX30100, pois está na lib o default para 400MHz, foi preciso mudar na lib para compatibilizar com o protocolo SMBus.
Agradeço pricipalmente a você José Gustavo pelas dicas que foi buscar na net as dicas para a solução do problema.
Desculpe a demora em responder, mas final de ano é muita correria.
Boa noite Carlos,
Que bom que conseguiu !
Corrigindo suas informações :
I2C clock pode ser 100 KHz ou 400 KHz.
boa tarde como voce conseguiu fazer isso no sensor max30100 estou com o mesmo problema
Boa tarde Pessoal, tudo bem com vocês?
Pelo que entendi, após ler algumas vezes as mensagens deste post, não é necessário remover os 3 resistores de 4.7k (pull up) se for utilizar apenas o módulo MAX30100.
Entretanto algumas referências recomendam a retirada dos resistores de pull-up da placa e a instalação dos mesmos externamente https://www.teachmemicro.com/max30100-arduino-heart-rate-sensor.
Outros até recomendam adicionar mais 3 resistores de pull-up externamente no módulo MAX30100.
Essa divergência nas informações me deixou confuso! Posso usar o módulo MAX30100 ligado a um Arduino UNO sem modificar nem adicionar resistores de pull-up?
Agradeço desde já a atenção!
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por