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??
Apos ler o datasheet do 4051 vi a tua sugestao, lapso meu nao sabia que ele era analogico
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
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...