PCF8574: obtenha mais pinos de conexão para Arduino

pcf8574

Você pode ter se encontrado em uma situação em que gostaria de expandir o número de entradas e saídas disponíveis para o seu placa arduino, já que você está realizando um projeto que precisa de mais dispositivos do que o esperado. Nestes casos você só poderia fazer uma coisa: pensar em comprar uma placa de modelo superior com mais dessas conexões. Mas agora com O PCF8574 pode expandir a E/S do Arduino de uma forma fácil e barata.

Aqui vamos mostrar o que é o PCF8574 caso você não saiba, além de mostrar como ele pode ser conectado à sua placa Arduino explicado passo a passo e como funciona...

O que é PCF8574?

pcf8574

El PCF8574 é um expansor de entrada e saída digital (E/S) para o barramento I2C1. Este dispositivo, fabricado pela Philips, permite conectar um processador como o Arduino para controlar mais dispositivos usando menos pinos2. O PCF8574 incorpora 8 pinos quase direcionais baseados em saídas CMOS em configuração de dreno aberto.

Além disso, o PCF8574 é um dispositivo de baixo consumo de energia que suporta operações VCC de 2.5 V a 6 V. Ele possui uma porta de E/S quase bidirecional de 8 bits, saídas travadas, saída de interrupção de drenagem aberta e capacidade de condução de alta corrente para LEDs. Por outro lado, seu consumo em stand-by é muito baixo, inferior a 10 µA.

É muito útil para Expanda os recursos da sua placa Arduino além de seus limites, o que pode ser uma grande ajuda para criadores que precisam de algo mais do que o Arduino oferece. A corrente máxima que cada pino pode fornecer dependerá da configuração:

  • Quando atua como saída, é de 25mA quando atua como dissipador, ou seja, quando a corrente elétrica flui para o PCF8574. Esta é a configuração padrão.
  • Quando atua como fonte é 300µA, ou seja, quando a corrente flui do PCF8574. Da mesma forma, você deve saber que todas as saídas possuem Latches, ou seja, elas mesmas mantêm o estado em um registrador. Só temos que agir quando queremos modificar o estado de uma das saídas.

A comunicação é feita via barramento I2C, portanto é fácil obter dados dos dispositivos conectados a ele. Da mesma forma, deve-se destacar que possui 3 pinos de endereço, o que dá 8 conexões possíveis ao mesmo barramento I2C. Isso significa que é possível controlar 64 dispositivos utilizando apenas 2 pinos.

Configurações de endereço

Alguns modelos deste módulo PCF8574 geralmente incluem pinos de configuração e jumpers como os que você vê na imagem acima. Por outro lado, outros modelos incluem um interruptor que facilita as coisas com os três microinterruptores... Seja como for, estão habituados a configurar endereços de pinos de E/S:

A0 A1 A2 Endereço
0 0 0 0x20
0 0 1 0x21
0 1 0 0x22
0 1 1 0x23
1 0 0 0x24
1 0 1 0x25
1 1 0 0x26
1 1 1 0x27

Preço e onde comprar

Pode ser encontrado por apenas alguns euros. É um dispositivo bem barato para saber como isso pode ser prático para alguns modelos de Arduino que possuem um número menor de E/S. Portanto, se você procura um PCF8574, poderá encontrá-lo em lojas especializadas ou também em grandes plataformas online como Amazon, Aliexpress ou eBay. Por exemplo, aqui recomendamos um:

Conectando o PCF8574 ao Arduinno

Pára conecte o expansor PCF8574 à sua placa Arduino, O diagrama de conexão é bastante simples. Você só terá que conectar:

  • O pino SCL marcado na placa PCF8574 no pino SCL do Arduino. Este pino pode mudar dependendo do modelo, mas geralmente está no A5 nos modelos mais populares como o UNO.
  • O pino SDA do expansor deve ser conectado ao pino SDA do Arduino. A mesma coisa que mencionei acima, pode mudar dependendo do modelo, mas geralmente é o A4. Em caso de dúvida, verifique a pinagem do seu modelo.
  • O pino GND do PCF8574 será obviamente conectado àquele marcado como GND no Arduino, ou seja, é a conexão de aterramento.
  • O pino Vcc do expansor está conectado ao 5V do Arduino, desta forma, com GND e Vcc já alimentamos a placa expansora para que ela comece a funcionar.

Operação

Depois que o PCF8574 estiver conectado à placa Arduino, agora é hora de saber como funciona. Para isso, você deve ter em mente que poderá ter 8 pinos extras, em troca de ter utilizado dois pinos do Arduino, além dos de potência. Por outro lado, você deve ter algo em mente: em cada um desses 8 pinos do PCF8574 você tem um transistor MOSFET junto com um resistor pull-up de resistência muito baixa. Isto assume uma intensidade de corrente de 100 microA quando o transistor está ativo.

E isso nos deixa com o seguinte panorama:

  • Configuração como saída- Quando o pino é usado como saída, ele atua como um dissipador de corrente, como discuti acima, ou seja, a corrente flui para dentro.
    • BAIXO: Quando em baixa tensão não conduz corrente, carga = Vdd.
    • ALTO: quando em alta tensão, pode passar corrente de até 25mA, a carga será conectada ao GND.
  • Configuração como entrada: deve estar sempre ajustado em HIGH, e neste caso atuará como fonte, ou seja, a corrente fluirá.
    • Fechado: Quando a carga externa não é fornecida, a tensão no pino vai para GND.
    • Abrir: Quando ocorre uma carga externa, a tensão do pino se torna Vdd.

Código IDE do Arduino

Arduino IDE, tipos de dados, programação

Se o que você deseja são alguns exemplos de como criar código para usar este PCF8574 no Arduino, é tão simples quanto usar estes exemplos de código que você pode modificar de acordo com sua necessidade:

  • Configuração como saída:
#include <Wire.h>

const int pcfAddress = 0x38;

void setup()
{
  Wire.begin();
  Serial.begin(9600);
}

void loop()
{
  for (short channel = 0; channel < 8; channel++)
  {
    // Escribir dato en canal 'channel'
    Wire.beginTransmission(pcfAddress);
    Wire.write(~(1 << channel));
    Wire.endTransmission();
    
    // Leer dato de canal
    delay(500);
  }
}
  • Configuração como entrada:
#include <Wire.h>

const int pcfAddress = 0x38;

void setup()
{
  Wire.begin();
  Serial.begin(9600);
}

void loop()
{
  short channel = 1;
  byte value = 0;

  // Leer dato de canal 'channel'
  Wire.requestFrom(pcfAddress, 1 << channel);
  if (Wire.available())
  {
    value = Wire.read();
  }
  Wire.endTransmission();

  // Mostrar el valor por puerto serie
  Serial.println(value);
}

Lembre-se de que você também pode usar o biblioteca criada especialmente para o PCF8574 que também inclui exemplos práticos…


Seja o primeiro a comentar

Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.