protocolo i2c

Desculpa a ignorância, mas se precisa de 8 entradas, como vai fazer se há apenas 6 pinos analógicos???
Então melhor seria usar um 4051 para multiplexar para entradas analógicas e usar o pinos 4-5 para o I2C

Eu pesquisei em twi.c, twi.h, tentando ver se era possível apenas alterar a designação dos pinos, mas acontece que esta designação tem mais a ver com o hardware do que com uma atribuição arbitrária do software.

Ou seja: a biblioteca apenas mapeia os pinos 4 e 5 para os respectivos SDA e SCL no chip Atmel.

Na verdade, a sua melhor chance aqui é usar um outro Arduino, como um Mega 2560 ou algo baseado no 1284.

Você não conseguirá fazer isto no Uno, Nano ou Duemilanuove.

Pode tentar essa biblioteca SoftI2CMaster

http://todbot.com/blog/2010/09/25/softi2cmaster-add-i2c-to-any-arduino-pins/

AlxDroidDev:
Você não conseguirá fazer isto no Uno, Nano ou Duemilanuove.

Não sei a que te referias... mas o protocolo I2C é dos mais simples de implementar devido a não haver requerimentos muito apertados relativamente a temporizacões (como nas UARTS, por exemplo).

Existem já várias bibliotecas escritas, como a que o mmoscz meteu ou então para quem quiser mais info:

http://www.robot-electronics.co.uk/acatalog/I2C_Tutorial.html

http://www.insidegadgets.com/2012/02/12/avr-soft-i2c-master-with-example-for-i2c-eeproms/

Esta é a minha fonte favorita para código C para AVRs.

http://homepage.hispeed.ch/peterfleury/avr-software.html

Ele tem um .zip com uma quantidade incrível de bibliotecas prontas a usar. Por vezes pode ser necessário um pouco de conhecimentos avancados de C para entender as instrucões de compilacão, mas não é nada que não se faca com um pouco de lógica e um manual ao lado. Com um pouco de sorte tem código de interface para o teu sensor de temperatura/humidade...

bubulindo:
Não sei a que te referias... mas o protocolo I2C é dos mais simples de implementar devido a não haver requerimentos muito apertados relativamente a temporizacões (como nas UARTS, por exemplo).

A implementação do I2C não é problema, até porque ela é das mais simples e a biblioteca Wire já encapsula tudo que precisamos.

O que eu quis dizer é que os modelos de Arduinos que listei não possuem portas analógicas o suficiente (6 ao todo) para atender sua demanda. Se você separar 2 para dispositivos I2C, sobram-lhe apenas 4 portas analógicas. Já no Mega2560, você teria mais que o dobro disto, portanto conseguiria facilmente fazer o que deseja em um 2560 ou no 1284.

ahh ok, my bad.

Ola pessoal tava aqui a ler o post e encontrei isto que me deixou com duvidas.O colega mmoscz disse isto

Então melhor seria usar um 4051 para multiplexar para entradas analógicas

Podes explicar melhor isto? Tas a dizer que podes comutar a entrada analogica com o mux?? :fearful: :blush:

Apos ler o datasheet do 4051 vi a tua sugestao, lapso meu nao sabia que ele era analogico :smiley:
Mesmo assim pergunto te se ja testaste essa configuraçao em algum projecto e qual a fiabilidade dos valores analogicos na saida.

O 4051 é um mux/demux analógico, tu tens 6 entradas analógicas no Arduino UNO/Duemillanove (pelo que li, o mini tem 8 entradas analógicas), com o 4051, ligado a uma das portas analógicas poderá ler os oito sensores, mas tens que usar 4 pinos do arduino para isso, 1 pino Analógico e 3 pinos para o endereçamento do 4051 (até mesmo pode usar 3 pinos analógicos como "digitais", para endereçar o 4051)

Eu faço parte da claque desse CI, já salvou muitos projetos meus...

HugoPT:
Apos ler o datasheet do 4051 vi a tua sugestao, lapso meu nao sabia que ele era analogico :smiley:

Muito boa dica vou apontar este mux aqui num byte do meu cerebro para quando tiver esse problema de poucas analogicas.
Bons estudos colega

mmoscz:
Eu faço parte da claque desse CI, já salvou muitos projetos meus...

Estava aqui a pensar porque é que isso nunca me tinha acontecido e lembrei-me que quando precisei de comutar sinais analógicos, o mux perdia mais corrente do que a que eu ia medir. Mas é muito boa dica.

bubulindo:

mmoscz:
Eu faço parte da claque desse CI, já salvou muitos projetos meus...

Estava aqui a pensar porque é que isso nunca me tinha acontecido e lembrei-me que quando precisei de comutar sinais analógicos, o mux perdia mais corrente do que a que eu ia medir. Mas é muito boa dica.

Como isso acontecia? O chip consumia muita corrente dos sensores?

Perdas... quando entramos na gama dos Giga Ohm, qualquer coisinha serve para estragar a medicão.

Acabei por conseguir o que pretendia com um amp-op que na altura (2003) custava cerca de 30 euro. Cada um... :S mais uma fonte de corrente e uns relés.

Entendi.

De facto essa é uma questao a qual me interrogo, alguem ja testou comparar o sinal quer em tensao ou em corrente que entra e sai do mux.
No datasheet vem mencionado o seguinte:

Low ``ON'' resistance: 80 Ohms (typ.) over entire 15Vp-p signal-
input range for VDDbVEEe15V

Por isso a saida saira ligeiramente atenuada deduzo.Bom bom era uma imagem de osciloscopio a comparar, isto porque quando se trabalha com analogicas tudo é importante

O mux, a não ser que se opte por um esquema exótico (como o meu de comutar ganhos na amplificacão), ficaria na saída do andar de amplificacão. Como esse andar introduz sempre erro, o mux poderia ser compensado directamente com uma calibracão. A questão é, qual a variacão do mux com temperatura e chips diferentes...

Alguém que se dedique a experimentar isso?

Já agora, que é esta cena do karma que aparece debaixo do nosso nome?

Penso que o Karma é uma forma de agradecer ao usuario mas...