, ,

Módulo MCP23S17 e Circuito Integrado MCP23S17-E/SO SMD

Avatar de Eletronica_eletrodex

O MCP23S17 é um circuito Integrado Bidirecional de 16 bits, de interface de comunicação serial SPI, que tem como finalidade ampliar a quantidade de portas digitais para um microcontrolador. É uma excelente opção para quem deseja implementar a comunicação SPI em seu projeto, apresentando grandes possibilidades e feitos de uso em conjunto com microcontroladores

Ele possui dois barramentos independentes INTA e INTB, que podem ser configurados para atuação juntos ou separadamente, e por ser um módulo bidirecional, que atua por meio de dois canais digitais, é possível efetuar o controle de diversas cargas e sistemas, permitindo que os dados recebidos de forma serial sejam recebidos diretamente em seus pinos de entrada, fazendo o caminho contrário ao convencional.

O uso do Módulo MCP23S17 Expansor de Portas digitais 16 Bits SPI é ideal para leitura de sensores e acionamento de cargas através do Arduino, PIC, Raspberry, NodeMCU ESP8266 ou outras plataformas microcontroladas.

Descrição dos Pinos:

GPIO (GPB0 à GPB7) e (GPA0 à GPA7) – São pinos multifunção, podendo ser configurados como INPUT ou OUTPUT individualmente

CS – Chip Select (habilitar transferência de dados)

SCK – Relógio Serial (sinal do relógio do microcontrolador)

SI: MOSI – Saída Mestre, Entrada Escravo (saída do microcontrolador, entrada MCP23S17)

SO: MISO – Entrada Master, Saída Slave (entrada do microcontrolador, saída MCP23S17)

INTA – Pino de interrupção do barramento A

INTB – Pino de interrupção do barramento B

A2, A1 e A0 – Pinos de configuração do endereço do dispositivo.

 A transferência de dados é feita via linhas MOSI e MISO, sendo a linha MOSI utilizada para a transferência de dados do microcontrolador para o expansor de porta, enquanto a linha MISO é utilizada para transferência de dados do expansor de porta para o microcontrolador. O microcontrolador inicia a transferência de dados quando o pino CS é colocado em nível baixo (0) enviando um sinal de clock (SCK).

 

 

Teste de Funcionamento do MCP23S17 – Módulo Expansor Bidirecional 16 bits:

https://youtu.be/joW_52XyKjs?si=jn7II0oPBCN6HXgR

 

Acesse a página do produto clicando aqui: MCP23S17 – Módulo Expansor Bidirecional 16 bits

 Diagrama eletrônico do teste de funcionamento do Módulo MCP23S17-E/SO com Arduino

Conexões Módulo MCP23S17-E/SO ao Arduino:

Pino VCC do Módulo MCP23S17 = 5V podendo ser alimentado com o próprio VCC ou 5V do Arduino UNO

Pino GND do Módulo MCP23S17 ao GND Arduino UNO

Pino CS do Módulo MCP23S17 ao SPI CS (Uno 10)

Pino SCK do MCP23S17 ao SPI SCK (Uno 13)

Pino SI do Módulo MCP23S17 ao SPI MOSI (Uno 11)

Pino SO do Módulo MCP23S17 ao SPI MISO (Uno 12)

Pino A0, A1, A2 do Módulo MCP23S17 ao GND

Pino RESET do Módulo MCP23S17 através de um resistor de ~10kohm a VCC

Pino A0 (GPA0) do Módulo MCP23S17 ao botão, o outro lado, ao terra

A0 é o pino 0 do barramento A para programação

Pino A1 (GPA1) do Módulo MCP23S17 ao cátodo do LED, o outro lado ao Vcc através do resistor de 470ohm

A1 é o pino 1 do barramento A para programação

Pino A2 (GPA2) do Módulo MCP23S17 ao cátodo do LED, o outro lado ao Vcc através do resistor de 470ohm

A2 é o pino 2 do barramento A para programação

Pino A3 (GPA3) do Módulo MCP23S17 ao cátodo do LED, o outro lado ao Vcc através do resistor de 470ohm

A3 é o pino 3 do barramento A para programação

Pino A4 (GPA4) do Módulo MCP23S17 ao cátodo do LED, o outro lado ao Vcc através do resistor de 470ohm

A4 é o pino 4 do barramento A para programação

Pino A5 (GPA5) do Módulo MCP23S17 ao cátodo do LED, o outro lado ao Vcc através do resistor de 470ohm

A5 é o pino 5 do barramento A para programação

Pino A6 (GPA6) do Módulo MCP23S17 ao cátodo do LED, o outro lado ao Vcc através do resistor de 470ohm

A6 é o pino 6 do barramento A para programação

Pino A7 (GPA7) do Módulo MCP23S17 ao cátodo do LED, o outro lado ao Vcc através do resistor de 470ohm

A7 é o pino 7 do barramento A para programação

Pino B0 (GPB0) do Módulo MCP23S17 ao botão, o outro lado ao terra 

BO é o pino 8 do barramento B para programação

Pino B1 (GPB1) do Módulo MCP23S17 ao cátodo do LED, o outro lado ao Vcc através do resistor de 470ohm

B1 é o pino 9 do barramento B para programação

Pino B2 (GPB2) do Módulo MCP23S17 ao cátodo do LED, o outro lado ao Vcc através do resistor de 470ohm

B2 é o pino 10 do barramento B para programação

Pino B3 (GPB3) do Módulo MCP23S17 ao cátodo do LED, o outro lado ao Vcc através do resistor de 470ohm

B3 é o pino 11 do barramento B para programação

Pino B4 (GPB4) do Módulo MCP23S17 ao cátodo do LED, o outro lado ao Vcc através do resistor de 470ohm

B4 é o pino 12 do barramento B para programação

Pino B5 (GPB5) do Módulo MCP23S17 ao cátodo do LED, o outro lado ao Vcc através do resistor de 470ohm

B5 é o pino 13 do barramento B para programação

Pino B6 (GPB6) do Módulo MCP23S17 ao cátodo do LED, o outro lado ao Vcc através do resistor de 470ohm

B6 é o pino 14 do barramento B para programação

Pino B7 (GPB7) do Módulo MCP23S17 ao cátodo do LED, o outro lado ao Vcc através do resistor de 470ohm

B7 é o pino 15 do barramento B para programação

 Diagrama eletrônico do teste de funcionamento do Circuito Integrado MCP23S17-E/SO com Arduino

Conexões CI MCP23S17-E/SO ao Arduino:

Pino Vdd MCP23S17 = 5V podendo ser alimentado com o próprio VCC ou 5V do microcontrolador Arduino

Pino nº 9 (Vdd) do MCP23S17 ao VCC ou 5V do microcontrolador Arduino UNO

Pino nº 10 (Vss) do MCP23S17 ao GND do microcontrolador Arduino UNO

Pino nº 11 (CS) do MCP23S17 ao SPI CS (Uno 10)

Pino nº 12 (SCK) do MCP23S17 ao SPI SCK (Uno 13)

Pino nº 13 (SI) do MCP23S17 ao SPI MOSI (Uno 11)

Pino nº 14 (SO) do MCP23S17 ao SPI MISO (Uno 12)

Pino nº 15, 16 e 17 (A0,A1,A2) do MCP23S17 ao GND

Pino nº 18 (RESET) do MCP23S17 através de um resistor de ~10kohm a Vcc

Pino nº 21 (GPA0) do MCP23S17 ao botão, o outro lado ao terra

GPA0 é o pino 0 do barramento A para programação

Pino nº 22 (GPA1) do MCP23S17 ao cátodo do LED, o outro lado ao Vcc através do resistor de 470ohm

GPA1 é o pino 1 do barramento A para programação

Pino nº 23 (GPA2) do MCP23S17 ao cátodo do LED, o outro lado ao Vcc através do resistor de 470ohm

GPA2 é o pino 2 do barramento A para programação

Pino nº 24 (GPA3) do MCP23S17 ao cátodo do LED, o outro lado ao Vcc através do resistor de 470ohm

GPA3 é o pino 3 do barramento A para programação

Pino nº 25 (GPA4) do MCP23S17 ao cátodo do LED, o outro lado ao Vcc através do resistor de 470ohm

GPA4 é o pino 4 do barramento A para programação

Pino nº 26 (GPA5) do MCP23S17 ao cátodo do LED, o outro lado ao Vcc através do resistor de 470ohm

GPA5 é o pino 5 do barramento A para programação

Pino nº 27 (GPA6) do MCP23S17 ao cátodo do LED, o outro lado ao Vcc através do resistor de 470ohm

GPA6 é o pino 6 do barramento A para programação

Pino nº 28 (GPA7) do MCP23S17 ao cátodo do LED, o outro lado ao Vcc através do resistor de 470ohm

GPA7 é o pino 7 do barramento A para programação

Pino nº 1 (GPB0) do MCP23S17 ao botão, o outro lado ao terra

GPB0 é o pino 8 do barramento B para programação

Pino nº 2 (GPB1) do MCP23S17 ao cátodo do LED, o outro lado ao Vcc através do resistor de 470ohm

GPB1 é o pino 9 do barramento B para programação

Pino nº 3 (GPB2) do MCP23S17 ao cátodo do LED, o outro lado ao Vcc através do resistor de 470ohm

GPB2 é o pino 10 do barramento B para programação

Pino nº 4 (GPB3) do MCP23S17 ao cátodo do LED, o outro lado ao Vcc através do resistor de 470ohm

GPB3 é o pino 11 do barramento B para programação

Pino nº 5 (GPB4) do MCP23S17 ao cátodo do LED, o outro lado ao Vcc através do resistor de 470ohm

GPB4 é o pino 12 do barramento B para programação

Pino nº 6 (GPB5) do MCP23S17 ao cátodo do LED, o outro lado ao Vcc através do resistor de 470ohm

GPB5 é o pino 13 do barramento B para programação

Pino nº 7 (GPB6) do MCP23S17 ao cátodo do LED, o outro lado ao Vcc através do resistor de 470ohm

GPB6 é o pino 14 do barramento B para programação

Pino nº 8 (GPB7) do MCP23S17 ao cátodo do LED, o outro lado ao Vcc através do resistor de 470ohm

 

Para mais informações, acesse o datasheet clicando aqui!

 

Software de funcionamento:


/* ===================================================================================================================== 

                                      ELETRODEX ELETRÔNICA  Teste MCP23S17 

   ===================================================================================================================== 

   Para funcionamento definimos como entrada os pinos 0 e 8, sendo o 0 o acionamento por botão 

   do banco A e o 8, o acionamento por botão do Banco B. 

    Pino Vdd MCP23S17 = 5V podendo ser alimentado com o próprio microcontrolador (Vcc) 

   Pino nº 9 (Vdd) do MCP23S17 a Vcc (alimentação do IC) 

   Pino nº 10 (Vss) do MCP23S17 ao terra (terra do IC) 

   Pino nº nº 11 (CS) do MCP23S17 ao SPI CS (Uno 10) 

   Pino nº 12 (SCK) do MCP23S17 ao SPI SCK (Uno 13) 

   Pino nº pino nº 13 (SI) do MCP23S17 ao SPI MOSI (Uno 11) 

   Pino nº pino nº 14 (SO) do MCP23S17 ao SPI MISO (Uno 12) 

   Pino nº pinos 15, 16 e 17 (A0,A1,A2) do MCP23S17 ao terra 

   Pino nº pino 18 (RESET) do MCP23S17 através de um resistor de ~10kohm a Vcc 

   Pino nº pino 21 (GPA0) do MCP23S17 ao botão, o outro lado ao terra | GPA0 é o pino 0 do barramento A para programação 

   Pino nº pino 22 (GPA1) do MCP23S17 ao cátodo do LED, o outro lado ao Vcc através do resistor de 470ohm | GPA1 é o pino 1 do barramento A para programação 

   Pino nº pino 23 (GPA2) do MCP23S17 ao cátodo do LED, o outro lado ao Vcc através do resistor de 470ohm | GPA2 é o pino 2 do barramento A para programação 

   Pino nº pino 24 (GPA3) do MCP23S17 ao cátodo do LED, o outro lado ao Vcc através do resistor de 470ohm | GPA3 é o pino 3 do barramento A para programação 

   Pino nº pino 25 (GPA4) do MCP23S17 ao cátodo do LED, o outro lado ao Vcc através do resistor de 470ohm | GPA4 é o pino 4 do barramento A para programação 

   Pino nº pino 26 (GPA5) do MCP23S17 ao cátodo do LED, o outro lado ao Vcc através do resistor de 470ohm | GPA5 é o pino 5 do barramento A para programação 

   Pino nº pino 27 (GPA6) do MCP23S17 ao cátodo do LED, o outro lado ao Vcc através do resistor de 470ohm | GPA6 é o pino 6 do barramento A para programação 

   Pino nº pino 28 (GPA7) do MCP23S17 ao cátodo do LED, o outro lado ao Vcc através do resistor de 470ohm | GPA7 é o pino 7 do barramento A para programação 

   Pino nº pino 1 (GPB0) do MCP23S17 ao cátodo do LED, o outro lado ao Vcc através do resistor de 470ohm | GPBO é o pino 1 do barramento B para programação 

   Pino nº pino 2 (GPB1) do MCP23S17 ao cátodo do LED, o outro lado ao Vcc através do resistor de 470ohm | GPB1 é o pino 2 do barramento B para programação 

   Pino nº pino 3 (GPB2) do MCP23S17 ao cátodo do LED, o outro lado ao Vcc através do resistor de 470ohm | GPB2 é o pino 3 do barramento B para programação 

   Pino nº pino 4 (GPB3) do MCP23S17 ao cátodo do LED, o outro lado ao Vcc através do resistor de 470ohm | GPB3 é o pino 4 do barramento B para programação 

   Pino nº pino 5 (GPB4) do MCP23S17 ao cátodo do LED, o outro lado ao Vcc através do resistor de 470ohm | GPB4 é o pino 5 do barramento B para programação 

   Pino nº pino 6 (GPB5) do MCP23S17 ao cátodo do LED, o outro lado ao Vcc através do resistor de 470ohm | GPB5 é o pino 6 do barramento B para programação 

   Pino nº pino 7 (GPB6) do MCP23S17 ao cátodo do LED, o outro lado ao Vcc através do resistor de 470ohm | GPB6 é o pino 7 do barramento B para programação 

   Pino nº pino 8 (GPB7) do MCP23S17 aao botão, o outro lado ao terra | GPA0 é o pino 8 do barramento B para programação 

*/ 

#include           // Arduino SPI library 

#include      // Majenko MCP23S17 Library 

 

const uint8_t chipSelect = 10; 

MCP23S17 BancoA(&SPI, chipSelect, 0);    // usando endereço padrão 0 

MCP23S17 BancoB(&SPI, chipSelect, 0);    // usando endereço padrão 0 

 

//=================================================================================================================== 

//  Iniciando 

//=================================================================================================================== 

  void setup() { 

  BancoA.begin();            // usando endereço padrão 0 

  BancoB.begin();            // usando endereço padrão 1 

  BancoA.pinMode(0, INPUT_PULLUP);  // Botão de entrada entrada 

  BancoB.pinMode(8, INPUT_PULLUP);  // Botão de entrada entrada 

  BancoA.pinMode(1, OUTPUT); // LED1 de saída 

  BancoA.pinMode(2, OUTPUT); // LED2 de saída 

  BancoA.pinMode(3, OUTPUT); // LED3 de saída 

  BancoA.pinMode(4, OUTPUT); // LED4 de saída 

  BancoA.pinMode(5, OUTPUT); // LED5 de saída 

  BancoA.pinMode(6, OUTPUT); // LED6 de saída 

  BancoA.pinMode(7, OUTPUT); // LED7 de saída 

  BancoB.pinMode(9, OUTPUT); // LED8 de saída 

  BancoB.pinMode(10, OUTPUT); // LED9 de saída 

  BancoB.pinMode(11, OUTPUT); // LED10 de saída 

  BancoB.pinMode(12, OUTPUT); // LED12 de saída 

  BancoB.pinMode(13, OUTPUT); // LED13 de saída 

  BancoB.pinMode(14, OUTPUT); // LED14 de saída 

  BancoB.pinMode(15, OUTPUT); // LED15 de saída 


 Serial.begin(9600); 

 Serial.print(" TESTE MCP23S17 "); 

} 


void loop() { 

  int BotaoA = 0; 

  int BotaoB = 8; 

 
 BotaoA = BancoA.digitalRead(0); 

 BotaoB = BancoB.digitalRead(8); 

 
//CONDIÇÃO BANCO A 

  if (BotaoA == 0)  // Se botão pressionado 

   { BancoA.digitalWrite(1, LOW);  // Acende LED 1 

    //Serial.println("LED1 LIGADO"); 

    BancoA.digitalWrite(2, LOW);  // Acende LED 2 

    //Serial.println("LED2 LIGADO"); 

    BancoA.digitalWrite(3, LOW);  // Acende LED 3 

    //Serial.println("LED3 LIGADO"); 

     BancoA.digitalWrite(4, LOW);  // Acende LED 4 

    //Serial.println("LED3 LIGADO"); 

     BancoA.digitalWrite(5, LOW);  // Acende LED 5 

    //Serial.println("LED3 LIGADO"); 

     BancoA.digitalWrite(6, LOW);  // Acende LED 6 

    //Serial.println("LED3 LIGADO"); 

     BancoA.digitalWrite(7, LOW);  // Acende LED 7 

    //Serial.println("LED3 LIGADO"); 

    Serial.println("Botão Banco A pressionado, LED's Banco A acionados"); 
  
    } 

  else 

   { BancoA.digitalWrite(1, HIGH); // Apaga LED 1 

   //Serial.println("LED1 APAGADO"); 

   BancoA.digitalWrite(2, HIGH);  // Apaga LED 2 

   //Serial.println("LED2 LIGADO"); 

   BancoA.digitalWrite(3, HIGH);  // Apaga LED 3 

   //Serial.println("LED3 LIGADO"); 

   BancoA.digitalWrite(4, HIGH);  // Apaga LED 4 

   //Serial.println("LED4 LIGADO"); 

   BancoA.digitalWrite(5, HIGH);  // Apaga LED 5 

   //Serial.println("LED5 LIGADO"); 

   BancoA.digitalWrite(6, HIGH);  // Apaga LED 6 

   //Serial.println("LED6 LIGADO"); 

   BancoA.digitalWrite(7, HIGH);  // Apaga LED 7 

   //Serial.println("LED's Banco A Apagados"); 

   delay(100);} 
 
//CONDIÇÃO BANCO B 

      if (BotaoB == 0)  // Se botão pressionado 

   { BancoB.digitalWrite(9, LOW);  // Acende LED 1 

   BancoB.digitalWrite(10, LOW);  // Acende LED 2 

   BancoB.digitalWrite(11, LOW);  // Acende LED 3 

   BancoB.digitalWrite(12, LOW);  // Acende LED 4 

   BancoB.digitalWrite(13, LOW);  // Acende LED 5 

   BancoB.digitalWrite(14, LOW);  // Acende LED 6 

   BancoB.digitalWrite(15, LOW);  // Acende LED 7 

   Serial.println("Botão Banco B pressionado, LED's Banco B acionados");} 

   else{ 

   BancoB.digitalWrite(9, HIGH); // Apaga LED 1 

   BancoB.digitalWrite(10, HIGH); // Apaga LED 2 

   BancoB.digitalWrite(11, HIGH); // Apaga LED 3 

   BancoB.digitalWrite(12, HIGH); // Apaga LED 4 

   BancoB.digitalWrite(13, HIGH); // Apaga LED 5 

   BancoB.digitalWrite(14, HIGH); // Apaga LED 6 

   BancoB.digitalWrite(15, HIGH); // Apaga LED 7 

   //Serial.println("LED's Banco B Apagados");    

      } 

} 

 

 

Avatar de Eletronica_eletrodex