Handmades</center>
 
*
Bem-vindo, Visitante. Por favor faça o Login ou Registro. 28 de Março de 2024, as 05:25:15


Login com nome de usuário, senha e duração da sessão


Páginas: [1]   Ir para o Fundo
  Imprimir  
Autor Tópico: Raspberry Pi - Portas GPIO  (Lida 8828 vezes)
xformer
Administrator
DIY Freak
******
Offline Offline

Sexo: Masculino
Mensagens: 6.254

Obrigado
-Dado: 71
-Recebido: 2009


e^(i x pi)+1=0


WWW
« : 21 de Maio de 2014, as 21:01:01 »

Para quem estiver pensando em aproveitar o Raspberry Pi para montar e controlar circuitos com ele, é importante saber as características do barramento de portas de entrada e saída de uso geral (GPIO - general purpose input output).  Basicamente estas portas funcionam como as portas de um microcontrolador comum, mas para fazer interfaces e conexões com essas portas, algumas regras precisam ser respeitadas.

O barramento é o seguinte:


Existe um chip na placa do Pi que controla as portas, esse chip é delicado e se danifica facilmente se conexões incorretas forem feitas. Por exemplo, os sinais que podem ser aplicados como entrada tem que ficar dentro da faixa de 0 a 3,3Vdc. Ligar sinais com 5V ou 12V vai causar a queima da porta de entrada/saída.  Assim, os níveis lógicos reconhecidos pelas portas também tem seus valores diferentes dos usados por exemplo com lógica TTL comum.
Assim sinais com tensão entre 0 e 0,8V na entrada serão reconhecidos como nível lógico 0;  e sinais entre 2,2V e 3,3V serão nível lógico 1. Quaisquer valores entre 0,8V e 2,2V podem não ser reconhecidos ou ficarem indeterminados, portanto devem ser evitados.
Já nas saídas, o valor para nível lógico 0 fica entre 0V e 0,6V, enquanto que para nível 1 a saída terá entre 2,4V e 3,3V.

As correntes da porta de saída dependem do regulador de 3,3V do circuito, que é limitado a 50mA. Portanto a máxima corrente total que as portas podem fornecer (nível 1 na saída) é de 50mA, que podem ser divididos pelas portas. Por outro lado, a corrente máxima que uma porta (individual) pode consumir (nível 0 na saída) é de 16mA por porta, mas a corrente total de várias portas pode ser maior do que os 50mA de fornecimento quando em nível 1. Para todos os efeitos é melhor manter sempre a corrente menor do que 16mA tanto para suprir como para drenar corrente, em cada porta.

As portas GPIO podem ser configuradas e manipuladas através de programas, mas precisam de uma biblioteca de funções específica (RPi.GPIO) que deve ser importada e instalada para ser reconhecida pelos programas escritos em Python.

Os pinos do barramento das portas de GPIO são padronizados e podem ser interligados a outras placas ou circuitos por flat cables como das antigas impressoras ou tipo dos drives de PCs (IDE), ou se for usar uma protoboard para se realizar experimentos e protótipos, usar fios flexíveis com pinos e barras individuais.

Para saber mais:
http://www.raspberrypi.org/documentation/usage/gpio/README.md


 
« Última modificação: 21 de Maio de 2014, as 21:27:36 por xformer » Registrado

O que se escreve com "facilidade" costuma ser lido com dificuldade pelos outros. Se quiser ajuda em alguma coisa, escreva com cuidado e clareza. Releia sua mensagem postada e corrija os erros.
juloliveira
Freqüente
**
Offline Offline

Sexo: Masculino
Mensagens: 285

Obrigado
-Dado: 80
-Recebido: 41


Não tá morto quem peleia, tchê!


« Responder #1 : 11 de Junho de 2014, as 16:32:41 »

Já fez algum projeto com o Pi , xformer?

Eu comprei um, faz um tempão, mas não tive tempo ainda de usar.

Tua explicação foi ótima, porém, o uso das GPIO ainda é confuso pra mim.

Por exemplo, como poderíamos  fazer um voltímetro com uma das portas? Como funciona esse processo de converter o analógico para o digital?
Só um exemplo de como poderíamos convergir entre o mundo analógico e o digital.

Abração
Registrado

Juliano Oliveira
xformer
Administrator
DIY Freak
******
Offline Offline

Sexo: Masculino
Mensagens: 6.254

Obrigado
-Dado: 71
-Recebido: 2009


e^(i x pi)+1=0


WWW
« Responder #2 : 11 de Junho de 2014, as 18:30:51 »

Não, não fiz ainda algum projeto com o Pi porque nem o tenho, apenas andei estudando as possibilidades dele em diversos artigos de revistas e na internet.

Para o que deseja implementar (voltímetro) tem que ter em mente que o Pi tem algumas desvantagens e vantagens sobre implementar a mesma aplicação do que se usar uma placa como o Arduíno ou mesmo um microcontrolador puro.  Basicamente o Pi é um computador, com processador baseado em um microprocessador com núcleo ARM. É diferente de uma placa com microcontrolador de núcleo ARM ou outro microcontrolador usada mesmo para aplicações embarcadas (embedded). Se por um lado as interfaces humanas são muito mais elaboradas no Pi (saída de vídeo, entrada para teclado, etc), para interfacear com circuitos externos e sensores, ele é muito mais pobre do que um Arduíno (que por outro lado é bem mais fraco em termos de interface com o homem - tem que se implementar botões, e displays para haver a interface humana mais básica), que possui mais portas de entrada e saída e ainda entradas analógicas além das digitais. Já o Pi tem portas de E/S disponíveis do tipo digitais o que exige que grandezas analógicas do tipo valor de tensão ou corrente sejam convertidas em sinais digitais.
Apesar de para um voltímetro, o Pi poder apresentar o valor numa tela de monitor e poder apresentar gráficos, telas, guardar dados e fazer processamento com eles, ou mesmo se o voltímetro for muito simples, você vai precisar de um circuito que faça a conversão analógico-digital (ADC) e depois disponibilize os bits para o Pi. Ou seja tem que achar um circuito integrado ADC seja paralelo (e nesse caso vai fornecer n bits para n portas GPIO do Pi) ou serial (menos portas GPIO necessárias, mas menor velocidade de transferência para o Pi). Como a velocidade de um voltímetro não é requisito essencial (ao contrário de uma digitalização de um sinal de áudio), acho que seria a melhor opção, além de ser mais fácil de compatibilizar com o barramento do Pi.
Sobre a conversão ADC, a maioria dos cis usa a conversão do tipo registradores de aproximação sucessiva, onde um sinal de tensão é amostrado e a seguir comparado com um sinal analógico vindo de um conversor digital-analógico que recebe as saídas do registrador. Isso exige alguns ciclos de processamento, e a cada ciclo, a saída vai se aproximando cada vez mais do valor do sinal amostrado. O número de ciclos depende muito do número de bits da conversão (8 bits, 10 bits, 12 bits, etc) e esse número de bits determina a resolução da conversão. Assim com 8 bits teremos 256 degraus de tensão (sendo que os extremos são determinados pelos valores de tensão de referência mínimo e máximo). Se Vref forem 0V e 3,3Vdc, cada degrau terá um valor de (3,3 - 0)/255 = 12,9mV.  Da mesma forma com 10 bits, a resolução será de (3,3 -0)/1023 =  3,22mV.  Logicamente a escala pode ser ampliada com um divisor de tensão e isolada com um AO como buffer. Assim se quiser medir até 33Vdc, precisa de um divisor de 33/3,3 = 10.  Nesse caso, cada degrau passa a ser de 129mV em 8 bits e 32,2mV em 10 bits.  Esses 8 bits ou 10 bits devem ser transferidos para o Pi.  Se for modo paralelo, serão 8 bits lidos cada bit num GPIO do Pi e esses bits devem ser recompostos em uma sequência de bits e se for o caso mudados para base 10 e escalonados para apresentar na interface do Pi. 
Ex.  medição de  1Vdc seria convertido para   01001101  (= 1 / 3,3 x 255 = 77 decimal = 01001101 binário) em 8 bits.  Essa sequência de bits entrando no Pi, precisaria ser reconvertida para decimal (se for o caso) e escalonada para tensão: 77 / 255 x 3,3V = 0,996V  (cálculo a ser implementado no software do Pi).
Se a transferência para o Pi for em modo serial, existem algumas opções de modo de comunicação serial: I2C, SPI, 1wire, etc, vai depender de como é a saída e modo do ci ADC.

Agora se for só pra implementar um voltímetro com display de leds 7 segmentos ou LCD, usar o Arduíno ou microcontroladores é uma opção bem mais barata, pois a maioria deles já tem o conversor AD incorporado nas suas portas de E/S, simplificando o hardware por um lado, apenas tem que se implementar o circuito de amostragem e adequação de nível (divisor de tensão e buffer) e o display pra apresentar o resultado.

 
Registrado

O que se escreve com "facilidade" costuma ser lido com dificuldade pelos outros. Se quiser ajuda em alguma coisa, escreva com cuidado e clareza. Releia sua mensagem postada e corrija os erros.
Páginas: [1]   Ir para o Topo
  Imprimir  
 
Ir para:  


Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines

XHTML 1.0 Válido! CSS Válido! Dilber MC Theme by HarzeM
Página criada em 0.039 segundos com 22 procedimentos.
SimplePortal 2.3.3 © 2008-2010, SimplePortal