PCF8574: Tietoja I2C I / O Expander for Arduinosta

PCF8574 TI-siru

Olet varmasti kuullut IC PCF8574, siru, joka voidaan ostaa erikseen tai jo asennettu moduuliin kuten monet muutkin Elektroniset komponentit helpottamaan integrointia Arduino-korttiisi. Tässä tapauksessa se on laajennus tuloille ja lähdöille I2C-väylä.

Saatat ajatella, että Arduinolla on jo oma integroitu I2C-väylä, ja se on totta. Mutta PCF8574 voi auttaa laajentamaan väylää kehityskorttisi rajojen ulkopuolelle, mikä voi olla suuri apu joillekin valmistajille, jotka tarvitsevat enemmän kuin vain Arduino tarjoaa.

Mikä on I2C-väylä?

Arduino UNO millis-toiminnot

Nimi I2C tulee Integroitu piiri tai integroituja piirejä. Sen versio 1.0 luotiin vuonna 1992 Philipsin toimesta. Sitten toinen 2.1 tulee vuonna 2000, ja nykyään siitä on tullut standardi (nopeudella 100 kbit / s, vaikka se sallii enintään 3.4 Mbit / s), kun patentti päättyi vuonna 2006, ja sitä voidaan käyttää vapaasti.

Tällä hetkellä sitä käytetään laajalti teollisuudessa viestintään, ja myös valmistajat ovat arvostaneet niitä projektistaan ​​kommunikoimaan erilaisiin mikrokontrollereihin ja oheislaitteisiin, jotka on integroitu yhteen mikropiiriin.

El I2C on väylä hyvin tunnettu sarjaliikenteestä. Se käyttää synkronista tiedonsiirtoprotokollaa, jossa on vain 2 kanavaa (on kolmas, mutta se on kytketty referenssiin tai GND: hen), itse asiassa se tunnetaan myös nimellä TWI (Two Wire Interface):

  • Yksi kelloa varten (SCL).
  • Muu tietoihin (SDA).
Molemmat ovat avoimen tyhjennyksen CMOS-yhteyksiä ja vaativat vetovastuksia. Lisäksi, jos yksi laite lähettää nollan ja toinen a 0, saattaa olla ongelmia, siksi linja on aina asetettu arvoon 1 (korkea taso) ja laitteet lähettävät aina 1 (matala taso).

Tämä tarkoittaa, että isäntä ja orja ne lähettävät tietoja samalla kaapelilla tai radalla, jota ensimmäinen ohjaa, joka tuottaa kellosignaalin. Jokaisella I2C-väylään liitetyllä oheislaitteella on yksilöllinen osoite lähetysten ohjaamiseksi. Mutta ei ole välttämätöntä, että päällikkö on aina sama (monimestari), aina hän aloittaa siirron.

Kuten jo selitin artikkelissa Arduino I2C Viittasin aiemmin, jokaisella kortilla on nämä I2C-yhteydet eri paikoissa. Se on jotain, joka sinun on pidettävä mielessä, jotta voit käyttää sitä oikein jokaisessa levymallissa:

  • Arduino UNO: SDA on A4-muodossa ja SCK A5-muodossa
  • Arduino Nano: sama kuin edellinen.
  • Arduino Mini Pro: sama.
  • Arduino Mega: SDA on tapissa 20 ja SCK 21: ssä.
  • Lisätietoja levyistä.

Tiedät jo, että voit käyttää I2C: tä luonnoksissasi helposti, koska Wire.h-kirjasto useita toimintoja tälle sarjaliikenteelle:

  • alkaa (): Käynnistä Wire-kirjasto ja määritä onko se isäntä vai orja
  • requestFrom (): isäntä käyttää pyytääkseen tietoja orjalta.
  • beginTransmission (): aloita lähetys orjalla.
  • endTransmission (): lähetyksen loppu.
  • kirjoittaa()- Kirjoita tietoja orjalta vastauksena isännän pyyntöön, tai voit jonottaa isännän lähetyksen.
  • saatavilla (): palauttaa luettavien tavujen määrän.
  • lukea(): lukea tavu, joka on lähetetty orjalta isännälle tai päinvastoin.
  • onReceive (): Kutsuu toiminnon, kun orja vastaanottaa lähetyksen isännältä.
  • pyynnöstä (): Kutsuu toiminnon, kun orja pyytää tietoja isännältä.

että Más información Arduino-ohjelmoinnista ja toiminnoista voit ladata PDF-opetusohjelma.

Mikä on PCF8574?

PCF8574-moduuli

PCF8574 on a I2C-väylän digitaaliset tulot ja lähdöt (I / O) -laajennin. Sitä voivat valmistaa useat valmistajat sen lisäksi, että se on saatavana IC: nä ja moduuleina. Joka tapauksessa on erittäin käytännöllistä liittää se Arduino-korttiisi ja sillä on kyky hallita enemmän laitteita kuin emolevy sallii.

El PCF8574 pinout se on yksinkertaista, koska se sisältää vain 8-männyt näennäissuuntainen (P0-P7, jossa kommunikointipiirit on kytketty), ja toisaalta sinulla on SDA ja SCL, jotka sinun on liitettävä Arduino-korttiin, sekä VCC ja GND myös moduulin virran saamiseksi. Ja älä unohda kolmea osoitetappia A0, A1, A2 valita, mihin laitteisiin tiedonsiirto ohjataan ...

PCF8574 liitin

se on muut ominaisuudet että sinun pitäisi tietää:

  • Sen liitännät voivat olla avoimia viemäreitä käytetään sekä tuloina että lähtöinä.
  • La huippuvirta se on 25mA, kun se toimii ulostulona (nielu, kun virta kulkee kohti PCF8574) ja 300 µA (lähde, virta virtaa PCF8574: stä).
  • La jännitys virtalähde on 2.5 ja 6v. Valmiustilan kulutus on hyvin pieni, vain 10 µA.
  • Kaikki lähdöt on salvat, ylläpitää tilaa ilman ulkoisia toimia. Sinun on toimittava vain, kun haluat muuttaa tilaa.
  • Voit saada 8 mahdolliset ohjeet, toisin sanoen jopa 8 laitetta kommunikoimaan tai käyttämään 8 moduulia sen laajentamiseksi 64 laitteeseen. Osoitteet (nastat A0, A1, A2) ovat:
    • 000: osoite 0x20
    • 001: osoite 0x21
    • 010: osoite 0x22
    • 011: osoite 0x23
    • 100: osoite 0x24
    • 101: osoite 0x25
    • 110: osoite 0x26
    • 111: osoite 0x27
  • Myöntää keskeytys (INT) erityisellä rivillä tietojen havaitsemiseksi ilman jatkuvaa valvontaa.

Integrointi Arduinon kanssa

Näyttökuva Arduino IDE: stä

Yhteys Arduinoon on hyvin yksinkertainen, sinun on vain liitettävä Vcc Arduino-kortin 5v-nastaan ​​ja GND Arduinon GND: hen. Toisaalta PCF8574 SDA- ja SCL-moduulin nastat voivat olla Yhdistä nastoihin 14 (A5 SCL) ja 15 (A4 SDA). Vain sen kanssa se toimisi, tietysti voit käyttää Px-laitetta yhteydenpitoon haluamiesi laitteiden kanssa ...

Sitten se vain puuttuisi aloita esimerkkiluonnoksella julkaisussa Arduino IDE. Voit tehdä sen ilman ylimääräistä kirjastoa, kuten ...

#include <Wire.h>
 
const int address = 0x38;
 
void setup()
{
   Wire.begin();
   Serial.begin(9600);
}
 
void loop()
{
   for (short channel = 0; channel < 8; channel++)
   {
      // Escribir dato en cada uno de los 8 canales
      Wire.beginTransmission(address);
      Wire.write(~(1 << channel));
      Wire.endTransmission();
      
      // Lee dato del canal
      delay(500);
   }
}

Syötteenä:

#include <Wire.h>
 
const int address = 0x38;
 
void setup()
{
   Wire.begin();
   Serial.begin(9600);
}
 
void loop()
{
   short channel = 1;
   byte value = 0;
 
   // Leer el dato del canal
   Wire.requestFrom(pcfAddress, 1 << channel);
   if (Wire.available())
   {
      value = Wire.read();
   }
   Wire.endTransmission();
 
   // Mostrar el valor leido por el monitor serie
   Serial.println(value);
}

Tai myös käyttää kirjastoja, kuten PCF8574, jonka voit lataa täältä ja käytä samanlaista koodia kuin tässä kirjastossa mukana olevassa esimerkissä:

#include <Wire.h>
#include "PCF8574.h"
 
PCF8574 expander;
 
void setup() 
{
  Serial.begin(9600);
  
  expander.begin(0x20);
  
  /* Setup some PCF8574 pins for demo */
  expander.pinMode(0, OUTPUT);
  expander.pinMode(1, OUTPUT);
  expander.pinMode(2, OUTPUT);
  expander.pinMode(3, INPUT_PULLUP);
 
  /* Blink hardware LED for debug */
  digitalWrite(13, HIGH);  
  
  /* Toggle PCF8574 output 0 for demo */
  expander.toggle();
  
  /* Blink hardware LED for debug */
  digitalWrite(13, LOW);
}
 
 
 
void loop() 
{
}


Artikkelin sisältö noudattaa periaatteita toimituksellinen etiikka. Ilmoita virheestä napsauttamalla täällä.

Ole ensimmäinen kommentti

Jätä kommentti

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *

*

*

  1. Vastuussa tiedoista: Miguel Ángel Gatón
  2. Tietojen tarkoitus: Roskapostin hallinta, kommenttien hallinta.
  3. Laillistaminen: Suostumuksesi
  4. Tietojen välittäminen: Tietoja ei luovuteta kolmansille osapuolille muutoin kuin lain nojalla.
  5. Tietojen varastointi: Occentus Networks (EU) isännöi tietokantaa
  6. Oikeudet: Voit milloin tahansa rajoittaa, palauttaa ja poistaa tietojasi.