Eu tenho um projeto que requer I²C / I2C / TWI a uma longa distância (30 a 40 metros).
Eu já vi algumas pessoas sugerindo baixar a freqüência para algo em torno de 500 Hz, para mitigar os efeitos da capacitância de uma linha tão longa, presumo? Os componentes que estou usando requerem pelo menos a taxa de clock padrão de 100 kHz. Eu fiz algumas pesquisas adicionais e encontrei entre as respostas para outra pergunta uma sugestão para usar um deslocador de nível P82B96. Na folha de dados, eles dão exemplos de como usá-los em linhas de até 100 metros:
deparei-me com outra maneira de alterar os níveis através de uma placa de fuga da adafruit , que é apenas um mosfet (bss138) com dois resistores pull-up (um para cada lado / tensão). Eles tiveram a ideia deuma nota de aplicação do NXP (AN10441) e dois dos canais lá poderiam ser usados assim:
Agora eu me pergunto: qual a melhor solução? Ou há algo que eu tenha esquecido? E também, 5V é suficiente para garantir uma boa conexão? Haveria uma vantagem em usar uma tensão ainda mais alta como 12V?
Respostas:
Eu acho que você está no caminho certo com algo como o NXP P82B96. Se você der uma olhada na Figura 14 e no texto associado, a folha de dados discute o uso de comprimentos de cabo de até 250 m com taxas de dados acima de 100 kHz.
Existem muitos sensores de temperatura I2C disponíveis que podem fornecer precisão de alguns graus Celsius sem calibração e sem nenhum circuito analógico adicional. Como você está trazendo os dados de volta para processamento, filtrar o ruído seria muito fácil.
Se você está preocupado com a capacitância da fiação, pode ser melhor usar um par trançado não blindado em vez de um cabo blindado.
fonte
Provavelmente você pode se safar dos sensores DS18B20 usando um cabo blindado CAT5 ou similar. São apenas medições térmicas, portanto, se algumas leituras forem corrompidas, você poderá tornar seu programa robusto o suficiente para lidar com isso (é uma boa prática de qualquer maneira).
Para uso em restaurantes em cadeia, projetei os chamados controles RTU (unidade na cobertura) que funcionam em vários sensores passivos (eles usam termistores NTC intercambiáveis , que não requerem calibração para aquecimento confortável). É muito mais fácil filtrar o ruído de um sensor passivo. Outro conjunto de instalações (um grande complexo automotivo norte-americano) usava RTDs de platina com condicionadores de sinal - dispositivos muito precisos e estáveis. Você deve decidir primeiro o sensor e depois verificar como ele pode estar em interface - qualquer uma dessas opções de sensor é adequada para a sua aplicação (embora os RTDs possam ser um exagero).
Caso não esteja claro, estou sugerindo uma configuração "estrela" de sensores em torno do seu processador.
Se você realmente deseja usar um "barramento" (que não seja um fio ou I2C), precisará de inteligência nas extremidades, o que significa um processador de alguma forma. Se você estiver louco, considere o uso de sensores sem fio que se comunicam por meio de uma banda ISM legal em sua localidade. Como alternativa, você pode usar um sensor por Pi e fazer com que eles conversem através da intranet WiFi.
fonte