Actions

KAmod I2C-IOexp16 (PL)

From Kamamilabs.com - Wiki

Opis

KAmod I2C-IOexp16 - Expander 16 cyfrowych linii I/O z układem MCP23017

Moduł KAmod I2C-IOexp16 zawiera 16 linii cyfrowych, które mogą działać jako wejścia lub wyjścia. Sterowanie odbywa się poprzez magistralę I2C.

Podstawowe cechy i parametry
  • 16 linii które mogą działać jako wejścia lub wyjścia, o maksymalnym prądzie 20 mA
  • Zawiera expander typu MCP23017
  • Sterowanie poprzez interfejs I2C o taktowaniu max 1 MHz
  • 3 linie adresowe umożliwiają dołączenie 8 modułów do jednej magistrali I2C
  • Wyjście przerwania, które może być przypisane do linii portu A
  • Zasilanie 2...5 V



Wyposażenie standardowe
Kod Opis
KAmod I2C-IOexp16
  • Zmontowany i uruchomiony moduł
  • 1 x prosta listwa goldpin 10-pin raster 2,54 mm
  • 1 x prosta listwa goldpin 8-pin raster 2,54 mm
  • 2 x prosta listwa goldpin 4-pin raster 2,54 mm



Schemat elektryczny


Rozmieszczenie linii I/O


Oznaczenie Funkcja
PA (J2)
  • 8 wyprowadzeń I/O należących do portu A
PB (J3)
  • 4 wyprowadzenia (0...3) I/O należące do portu B
PB (J4)
  • 4 wyprowadzenia (4...7) I/O należące do portu B


Linie I/O zostały wyprowadzone jako punkty lutownicze z otworami, rozmieszczone ze standardowym rastrem 2,54 mm, tuż przy krawędziach płytki. Umożliwiają one przylutowanie przewodów lub szpilek goldpin. Przyporządkowanie portów i wyprowadzeń zostało opisane na poniższym rysunku.

Każde wyprowadzenie może być niezależnie skonfigurowane jako wejście lub wyjście cyfrowe. Wyjścia cyfrowe mogą myć obciążone maksymalnym prądem 20 mA. Wejścia cyfrowe mają niezależnie konfigurowane rezystory podciągające tzw. pull-up oraz umożliwiają generowanie przerwań. Linie portu A mogą sygnalizować wystąpienie przerwania na dodatkowym wyprowadzeniu – INTA.

Sygnały sterujące


Oznaczenie Funkcja
SD (J1) Sygnał SDA (dane) interfejsu I2C
SC (J1) Sygnał SCL (zegar) interfejsu I2C
RST (J1) Wejście zerujące układ
INTA (J1) Wyjście sygnalizujące wystąpienie przerwania na liniach portu A
A0, A1 (J1) Wejścia umożliwiające ustawienie adresu interfejsu I2C (bity 1 oraz 0). Domyślnie ustawione na logiczne 0.
A2 (zworka) Założenie zworki ze spoiwa lutowniczego umożliwia ustawienie bitu 2 adresu interfejsu I2C.


Sterowanie modułem KAmod I2C-IOexp16 odbywa się poprzez interfejs I2C, który może być taktowany sygnałem zegarowym o częstotliwości 100 kHz, 400 kHz lub 1 MHz. Funkcje wyprowadzeń na złączu J1 są następujące:

  • Sygnały interfejsu sterującego I2C to SD – SDA, oraz SC – SCL. Nie są wyposażone w rezystory podciągające – odpowiednie elementy musi zawierać układ sterujący.
  • Wejścia A0, A1 pozwalają ustawić adres (bity nr 1 i 0), jakim będzie dysponował moduł dołączony do interfejsu I2C. Domyślnie wejścia te są połączone do masy poprzez rezystory (pull-down) i przyjmują wartości logiczne 0. Dołączenie dodatniego bieguna zasilania do wejść A0 i A1 ustawia logiczne 1 dla najmłodszych bitów adresu.
  • Zworka A2 umieszczona na dolnej stronie płytki modułu (bottom) pozwala na ustawienie bitu nr. 2 określającego adres I2C. Domyślnie sygnał A2 jest połączony do masy poprzez rezystor (pull-down) i przyjmuje wartość logiczną 0. Założenie zworki ze spoiwa lutowniczego umożliwia ustawienie logicznego 1 dla bitu nr 2 adresu interfejsu I2C.
  • Wszystkie dostępne adresy interfejsu I2C zawierają się w zakresie 0x20...0x27.



Szczegółowe informacje dotyczące komunikacji i konfiguracji układu MCP23017 są dostępne w dokumentacji technicznej tego układu.

Dodatkowe sygnały to:

  • Sygnał zerujący (RST) służy do wyzerowania układu MCP23017 na płytce KAmod I2C-IOexp16, co przywraca wszystkie ustawienia do stanu początkowego.
  • Wyjście INTA może sygnalizować odpowiednim stanem wystąpienie przerwania na liniach portu A.



Zasilanie

Moduł KAmod I2C-IOexp16 może być zasilany napięciem stałym o wartości 2...5 V.



Wymiary

Wymiary płytki KAmod I2C-IOexp16 to 31x18 mm. Na płytce znajdują się 2 otwory montażowe o średnicy 3,2 mm.



Program testowy

Program testowy został napisany w środowisku Arduino dla płytki KAmodESP32 POW RS485. Moduł KAmod I2C-IOexp16 został podłączony poprzez interfejs I2C.

#include <Wire.h>
#include <Adafruit_MCP23X17.h>

//LED
#define LED_PIN         2 
#define MY_DELAY        2000
#define TEST_LED_ON     1
#define TEST_LED_OFF    0

//I2C
#define I2C_SDA         33
#define I2C_SCL         32
#define I2C_FREQ        100000
#define MCP23017_ARD    0x20

TwoWire I2Cbus = TwoWire(0);
Adafruit_MCP23X17 MCPIO;
int i;

//-----------------------------------------------------------------
void setup() {
  Serial.begin(115200);
  Serial.println();
  Serial.println("Hello. KAmod IOexp16 test");

  pinMode(LED_PIN, OUTPUT);
  digitalWrite(LED_PIN, HIGH);

  delay(500);
  while(!I2Cbus.begin(I2C_SDA, I2C_SCL, I2C_FREQ)){
    Serial.println("I2C init failed...");
    delay(500);
  }
  while (!MCPIO.begin_I2C(MCP23017_ARD, &I2Cbus)) {
    Serial.println("MCP init failed...");
    delay(500);
  }

  Serial.println("I2C init OK");
  delay(100);
  MCPIO.pinMode(TEST_LED, OUTPUT);
}

//-----------------------------------------------------------------
void loop() {
  if (i & 1){
    digitalWrite(LED_PIN, TEST_LED_ON);
  } else {
    digitalWrite(LED_PIN, TEST_LED_OFF);
  }
  
  MCPIO.pinMode(i, OUTPUT);
  MCPIO.digitalWrite(i, TEST_LED_ON);
  delay(100);
  MCPIO.pinMode(i, OUTPUT);
  MCPIO.digitalWrite(i, TEST_LED_OFF);
  delay(100);
  
  i++;
  if (i  >= 16){
    i = 0;
  }
}



Linki