Go Down

Topic: Criar PCB com mais de 8 ligações I2C (Read 1 time) previous topic - next topic

Boas,

tenho andado a procurar aqui pelo forúm informações sobre como ligar diversos dispositivos com ligação I2C ao arduino, e apesar de encontrar diversa informação ela não se foca em nada de realmente informativo!

Existe este tópico http://arduino.cc/forum/index.php/topic,67574.0.html

O que eu preciso é saber se é possivel a partir do meu Arduino Uno expandir a mais 10 Ligações I2C?
Depois desta parte, algum esquema que possa utilizar para produzir a minha própria placa?

A ideia geral é ligar uma placa feita por mim usando este CI MCP23017 ou outro que permita fazer isto e poder ligar um LCD, uma placa FM, um relatime clock, um cartão SD para logs!

Não sei se é possivel também ligar um xbee, e uma porta RJ45?!!

Agradeço toda a informação possivel.

Obrigado

Podes expandir o I2C até um número relativamente alto de periféricos. Tens no entanto de ter cuidado com o tamanho das pistas uma vez que a capacidade pode danificar a propagacão do sinal I2C. Não te esquecas de deixar pull-ups para soldar na placa no caso de necessitares de mais corrente do que o Arduino consegue fornecer a esses pinos.

O cartão SD usa SPI, não I2C... ou existe algum chip que faca essa conversão?

O esquema é dependente do que pretendes fazer... se já alguém o fez, não precisas de o fazer. Se ninguém o fez, vais ter de ser tu a fazê-lo.

A placa FM usa I2C? Que modelo queres usar?
Que LCD vais ligar?

A XBee é possível uma vez que a vais ligar aos pinos que já estão a ser usados pela porta série.

A porta RJ45 vai servir para quê? Chamadas, internet, OBD-II, Profibus, RS-485, Modbus?

Eu acho que o motivo pelo qual não encontras informacão é não saberes que informacão em específico queres encontrar. Tenta definir mais o que pretendes fazer e depois questiona de forma concreta em vez de deixares no ar o que pretendes.
Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Obrigado pela resposta bubulindo!

de qualquer forma já tenho uma ideia do que pretendo, a minha dúvida relativa ao i2c é simples, sei que posso ter e se não estou em erro até 112 dispositivos ligados por i2c!

agora eles podem comunicar ao mesmo tempo?
eu só preciso de 10 circuitos e usando o ic MCP23017 acho que só dá para oito?!
como é que eu consigo identificar cada um individualmente?

no caso de ser um dispositivo SPI, posso fazer uma coisa idêntica, tipo ter mais 3 ligações a partir de apenas uma?
mas no caso do SPI estou a usar portas série, logo não poderei comunicar ao mesmo tempo, certo?

Sei que para usar uma porta RJ45 para usar como ethernet para escrever para um servidor web, preciso de uma porta SPI, e para usar uma porta USB para comunicar com um breaduino preciso de uma porta série, e se precisar ter os dois?
No caso do xbee este também usa uma porta SPI ou existe maneira de usar uma I2C?

A ideia destas perguntas é tentar perceber até que ponto posso pensar num circuito que me contemple todas estas ligações para adaptar a diferentes contextos!! Se precisar de usar a ligação ethernet na vez do xbee, se precisar de ter um LCD um xbee e uma placa FM (http://www.goodluckbuy.com/programmable-low-power-fm-stereo-radio-module-tea5767-fm-radio-module-full-version-2-pack.html).

No caso do SD, vamos imaginar quero ter um SD, uma RJ45 e um xbee, opções de ligação se forem todos SPI?

Para o projeto que quero desenvolver estou a usar um arduino para testes das ligações, dispositivos e blocos de código, onde posteriormente vou desenhar um circuito baseado ou num breaduino ou num sanguino(por causa das ligações disponiveis) e aplicar todos os módulos que estou a testar e onde fazem parte a ligação Ethernet, SD, FM, USB, LCD, RTC, Relés! etc...

Se alguém estiver mais por dentro destas questões e puder dar uma ajuda seria excelente.

Obrigado mais uma vez!






Antes de mais... tens de ter em conta o tamanho do programa que vais ter. Muitos periféricos, implicam mais código que pode não caber nalgumas versões do Arduino. O LCD gráfico certamente que ocupará mais espaco que um alfanumérico. Mas isso é passível de ser testado.

Não... o I2C não permite multicast, ou não permitia da última vez que o usei. Logo só comunicas com um de cada vez.

Define o que são circuitos. Só consegues colocar 8 destes chips no mesmo barramento porque como podes ver apenas existem 3 bits para definir a morada de cada um. Se leres o datasheet do chip (http://ww1.microchip.com/downloads/en/devicedoc/21952b.pdf) vais reparar em 3 pinos chamados A0, A1 e A2. Consoante o valor lógico nesses pinos a morada será diferente.

8 chips destes são 128 bits. Se vais precisar de tantas portas de entrada e saída acho que o teu problema vai estar na fonte de alimentacão para tudo isso. Algum motivo em especial para precisares de 128 bits?

O protocolo SPi funciona de maneira diferente. Precisas de três linhas que são comuns a todos os chips nesse barramento e depois precisas de um bit extra por cada dispositivo que tenhas no barramento. Ou seja, para acederes a X chips, precisas de 3 pinos (MISO, MOSI, SCK) mais X pinos de chip select. Não existe limite ao número de dispositivos que podes aceder com SPI, desde que tenhas pinos suficientes para fazer chip selects, memória de programa para aceder a eles e alimentacão para tudo isso.
Um truque para criares chip selects é usar o MCP23017 ou aquilo a que se chama de MUX.

A XBee se me lembro correctamente usa uma USART. Logo podes usar os pinos onde o chip USB está ligado ao controlador do Arduino.

Para ligares o Arduino à net precisas de um chip que faca isso. O meu favorito é o W5100, mas fazer o PCB para ele não é simples. O W5100 precisa de uma ligacão SPI, mas como já disse em cima a limitacão está no tamanho de código que podes ter no micro e numero de linhas para chip select que podes criar.


A ideia destas perguntas é tentar perceber até que ponto posso pensar num circuito que me contemple todas estas ligações para adaptar a diferentes contextos!! Se precisar de usar a ligação ethernet na vez do xbee, se precisar de ter um LCD um xbee e uma placa FM (http://www.goodluckbuy.com/programmable-low-power-fm-stereo-radio-module-tea5767-fm-radio-module-full-version-2-pack.html).


Acho que estás um pouco mal direccionado. O Arduino é um tanto ou quanto limitado no que toca a dar imensas opcões de interface. Como disse o espaco de memória de programa não é extenso e o número de pinos é algo limitado. Depois quando dizes adaptar a outros contextos que te referes? Ter um placa que te permita fazer uma funcão com diferentes interfaces ou uma placa que te permita fazer várias funcões com vários interfaces?
Se precisas de algo que faca só uma funcão, acredito que consigas algo interessante com o Arduino. Se pretendes fazer algo com várias funcões, se calhar é preferível escolher algo mais modular. A solucão dos shields é boa porque se não precisares de algo, podes remover.




No caso do SD, vamos imaginar quero ter um SD, uma RJ45 e um xbee, opções de ligação se forem todos SPI?

Diz-me tu. Já pesquisaste na net?


Para o projeto que quero desenvolver estou a usar um arduino para testes das ligações, dispositivos e blocos de código, onde posteriormente vou desenhar um circuito baseado ou num breaduino ou num sanguino(por causa das ligações disponiveis) e aplicar todos os módulos que estou a testar e onde fazem parte a ligação Ethernet, SD, FM, USB, LCD, RTC, Relés! etc...

Se alguém estiver mais por dentro destas questões e puder dar uma ajuda seria excelente.

Obrigado mais uma vez!


Não entendi o que pretendes fazer. Tens uma máquina e queres testar a máquina com um Arduino? Ou queres ter uma placa geral para poderes testar código de interface com vários dispositivos? Se for o segundo caso, creio que o investimento será menor se fizeres algo modular e com shields. Podes também olhar para fora do Arduino e ver placas compatíveis na Olimex ou seeedstudio. Deve haver mais pela net.
Tenta explicar melhor o propósito ou dar um exemplo para ver se entendo melhor o que pretendes e poder esclarecer melhor as limitacões ou vantagens.
Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Boas,

vou tentar arranjar aqui uns exemplo em esquema do que pretendo fazer para ver-mos melhor estas questões!

Obrigado

Go Up