Pages: [1] 2   Go Down
Author Topic: protocolo i2c  (Read 2764 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 12
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Brasil
Offline Offline
Sr. Member
****
Karma: 2
Posts: 315
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

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


BHZ, MG, Brazil
Offline Offline
Sr. Member
****
Karma: 10
Posts: 346
Android developer; Arduino enthusiast
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

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

BHZ, MG, Brazil
Offline Offline
Sr. Member
****
Karma: 10
Posts: 346
Android developer; Arduino enthusiast
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

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

Brasil
Offline Offline
Sr. Member
****
Karma: 2
Posts: 315
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Pode tentar essa biblioteca SoftI2CMaster

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

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


'round the world...
Offline Offline
Faraday Member
**
Karma: 42
Posts: 3247
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Logged

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

BHZ, MG, Brazil
Offline Offline
Sr. Member
****
Karma: 10
Posts: 346
Android developer; Arduino enthusiast
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.

Logged

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

'round the world...
Offline Offline
Faraday Member
**
Karma: 42
Posts: 3247
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

ahh ok, my bad.
Logged

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

Portugal
Offline Offline
Edison Member
*
Karma: 37
Posts: 1575
Pretending you know everything then you will learn nothing.
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
« Last Edit: October 10, 2012, 06:44:50 am by HugoPT » Logged

Debian,Mint,Ubuntu
Arduino Mega 2560
Arduino Nano
Arduino Duemilanove
MAC OS Montain Lion
Raspberry PI Model B


Portugal
Offline Offline
Edison Member
*
Karma: 37
Posts: 1575
Pretending you know everything then you will learn nothing.
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Apos ler o datasheet do 4051 vi a tua sugestao, lapso meu nao sabia que ele era analogico smiley-grin
Mesmo assim pergunto te se ja testaste essa configuraçao em algum projecto e qual a fiabilidade dos valores analogicos na saida.
« Last Edit: October 10, 2012, 06:49:15 am by HugoPT » Logged

Debian,Mint,Ubuntu
Arduino Mega 2560
Arduino Nano
Arduino Duemilanove
MAC OS Montain Lion
Raspberry PI Model B


Brasil
Offline Offline
Sr. Member
****
Karma: 2
Posts: 315
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

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


Brasil
Offline Offline
Sr. Member
****
Karma: 2
Posts: 315
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 smiley-grin

Logged

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


Portugal
Offline Offline
Edison Member
*
Karma: 37
Posts: 1575
Pretending you know everything then you will learn nothing.
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Debian,Mint,Ubuntu
Arduino Mega 2560
Arduino Nano
Arduino Duemilanove
MAC OS Montain Lion
Raspberry PI Model B


'round the world...
Offline Offline
Faraday Member
**
Karma: 42
Posts: 3247
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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

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

Brasil
Offline Offline
Sr. Member
****
Karma: 2
Posts: 315
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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?
Logged

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


Pages: [1] 2   Go Up
Jump to: