Go Down

Topic: protocolo i2c (Read 3232 times) previous topic - next topic

bruguink

boas a todos,
Preciso que me digam se é possível construir um protocolo i2c sem utilizar as entradas analógicas já preparadas para esse efeito (no caso do Arduino Nano são os pinos analógicos 4(sda) e 5(slc)). posso por exemplo construir esse protocolo em 2 pinos digitais? se sim, como poderei fazer isso? alguma sugestão?

eu pergunto isso porque   no meu projecto necessito de utilizar todas as entradas analógicas para recolher os dados de 8 sensores de carga e preciso de um protocolo i2c para recolher dados de um sensor de temperatura/humidade.

obrigado e abraço

mmoscz

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
4x Duemilanove (clone)
Uno torrado (clone)
Amiga 1200 40MB
Windows XP

AlxDroidDev

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.
Learn to live: Live to learn.
Showing off my work: http://arduino.cc/forum/index.php/topic,126197.0.html

AlxDroidDev

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.
Learn to live: Live to learn.
Showing off my work: http://arduino.cc/forum/index.php/topic,126197.0.html

mmoscz

4x Duemilanove (clone)
Uno torrado (clone)
Amiga 1200 40MB
Windows XP


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://extremeelectronics.co.in/avr-tutorials/software-i2c-library-for-avr-mcus/
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...

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).

AlxDroidDev


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.

Learn to live: Live to learn.
Showing off my work: http://arduino.cc/forum/index.php/topic,126197.0.html

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).

HugoPT

#8
Oct 10, 2012, 01:40 pm Last Edit: Oct 10, 2012, 01:44 pm by HugoPT Reason: 1
Ola pessoal tava aqui a ler o post e encontrei isto que me deixou com duvidas.O colega mmoscz disse isto
Quote
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?? :smiley-eek-blue: :smiley-red:
Debian,Mint,Ubuntu
Arduino Mega 2560
Arduino Nano
Arduino Duemilanove
MAC OS Montain Lion
Raspberry PI Model B

HugoPT

#9
Oct 10, 2012, 01:47 pm Last Edit: Oct 10, 2012, 01:49 pm by HugoPT Reason: 1
Apos ler o datasheet do 4051 vi a tua sugestao, lapso meu nao sabia que ele era analogico :D
Mesmo assim pergunto te se ja testaste essa configuraçao em algum projecto e qual a fiabilidade dos valores analogicos na saida.
Debian,Mint,Ubuntu
Arduino Mega 2560
Arduino Nano
Arduino Duemilanove
MAC OS Montain Lion
Raspberry PI Model B

mmoscz

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)
4x Duemilanove (clone)
Uno torrado (clone)
Amiga 1200 40MB
Windows XP

mmoscz

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


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

4x Duemilanove (clone)
Uno torrado (clone)
Amiga 1200 40MB
Windows XP

HugoPT

Muito boa dica vou apontar este mux aqui num byte do meu cerebro para quando tiver esse problema de poucas analogicas.
Bons estudos colega
Debian,Mint,Ubuntu
Arduino Mega 2560
Arduino Nano
Arduino Duemilanove
MAC OS Montain Lion
Raspberry PI Model B


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.
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).

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?
4x Duemilanove (clone)
Uno torrado (clone)
Amiga 1200 40MB
Windows XP

Go Up