PCF8574: umbes I2C I / O laiendaja Arduino jaoks

PCF8574 TI kiip

Olete kindlasti kuulnud PCF8574 IC, kiip, mida saab osta eraldi või mis on juba moodulile paigaldatud nagu paljud teisedki Elektroonilised osad hõlbustamaks oma integreerumist Arduino tahvliga. Sel juhul on see kasutaja sisendite ja väljundite laiendaja I2C siini.

Võite arvata, et Arduinol on juba oma integreeritud I2C siinja see on tõsi. Kuid PCF8574 aitab seda bussi laiendada väljaspool teie arendusplaadi piire, mis võib olla suureks abiks mõnele tegijale, kes vajab rohkem kui Arduino pakutavat.

Mis on I2C buss?

Arduino UNO millisfunktsioonid

Nimi I2C pärineb Integreeritud vooluahel või integreeritud vooluahelad. Selle versiooni 1.0 lõi 1992. aastal Philips. Siis saabub teine ​​2.1 aastal 2000 ja tänapäeval on see muutunud standardiks (kiirusel 100 kbit / s, kuigi see võimaldab maksimaalselt kuni 3.4 Mbit / s), kui patent lõppes 2006. aastal, ja seda saab vabalt kasutada.

Praegu kasutatakse seda tööstuses laialdaselt suhtlemiseksja ka tootjate poolt väga hinnatud projektide eest, mis on seotud erinevate mikrokontrollerite ja lisaseadmete integreerimisega ühte IC-sse.

El I2C on buss jadasuhtlusest hästi tuntud. See kasutab sünkroonset sideprotokolli, millel on ainult kaks kanalit (on kolmas, kuid see on ühendatud võrdlusega või GND-ga), tegelikult on see tuntud ka kui TWI (Two Wire Interface):

  • Üks kella jaoks (SCL).
  • Muu andmete jaoks (SDA).
Mõlemad on CMOS-i avatud äravooluga ühendused ja vajavad tõmbetakisteid. Samuti, kui üks seade edastab 0 ja teine ​​a 1, võib tekkida probleeme, seetõttu on liin alati seatud 1-le (kõrge tase) ja seadmed edastavad alati 0 (madal tase).

See tähendab, et peremees ja ori nad saadavad andmeid sama kaabli või rööbastee kaudu, mida kontrollib esimene, mis tekitab kellasignaali. Kõigil I2C siiniga ühendatud välisseadmetel on ülekannete suunamiseks määratud kordumatu aadress. Kuid pole vaja, et kapten oleks alati sama (multimeister), alati on see, kes algatab ülekande.

Nagu ma juba selgitasin artiklis Arduino I2C Viitasin varem, igal plaadil on need I2C-ühendused erinevates kohtades. See on midagi, mida peate meeles pidama, et saaksite seda plaadi igas versioonis õigesti kasutada:

  • Arduino UNO: SDA on A4 ja SCK A5
  • Arduino nano: sama mis eelmine.
  • Arduino MiniPro: sama.
  • arduino mega: SDA on tihvtis 20 ja SCK 21. kohal.
  • Lisateave plaatide kohta.

Teate juba, et saate I2C-d oma visandite jaoks hõlpsasti kasutada, kuna Wire.h raamatukogu selle jadaside erinevate funktsioonidega:

  • algama (): käivitage Wire'i teek ja määrake, kas see on põhi- või alluv
  • requestFrom (): kasutatakse ülema poolt orjalt andmete küsimiseks.
  • beginTransmission (): edastuse alustamine alluvaga.
  • endTransmission (): ülekande lõpp.
  • kirjuta ()- Kirjutage andmed orjalt vastusena ülema taotlusele või saate ülema edastuse järjekorda panna.
  • saadaval (): tagastab loetud baitide arvu.
  • loe (): loe orjalt peremehele edastatud bait või vastupidi.
  • onReceive (): Kutsub funktsiooni, kui ori saab masterilt ülekande.
  • nõudmisel (): Kutsub funktsiooni, kui ori nõuab isandalt andmeid.

et más información Arduino programmeerimise ja funktsioonide kohta saate alla laadida meie PDF-juhendaja.

Mis on PCF8574?

PCF8574 moodul

PCF8574 on a I2C-siini digitaalsisendite ja -väljundite (I / O) laiendaja. Seda saavad valmistada erinevad tootjad, lisaks sellele, et see on saadaval IC-des ja moodulites. Igal juhul on see väga praktiline ühendada see oma Arduino plaadiga ja omada võimalust juhtida rohkem seadmeid, kui emaplaat lubab.

El PCF8574 kinnitus see on lihtne, kuna sisaldab ainult 8i mändid quasidirectional (P0-P7, kus ühenduses olevad kiibid on ühendatud) ja teiselt poolt on teil olemas SDA ja SCL, mille peate ühendama Arduino plaadiga, samuti VCC ja GND, et moodulit ka toita. Ja ärge unustage kolme aadressnõela A0, A1, A2, et valida, millistest seadmetest side suunatakse

PCF8574 kinnitus

Omab muud omadused mida peaksite teadma:

  • Selle ühendused, olles avatud äravool, võivad olla kasutatakse nii sisendite kui ka väljunditena.
  • La tippvool see on 25mA, kui see toimib väljundina (valamu, kui vool voolab PCF8574 poole) ja 300 µA (allikas, vool voolab PCF8574-st).
  • La pinge toiteallikas on 2.5 ja 6v. Ooterežiimi tarbimine on väga väike, ainult 10 µA.
  • Kõik väljundid on riivid, säilitada riik ilma välistegevust vajamata. Sa pead tegutsema ainult siis, kui soovite riiki muuta.
  • Võite saada 8 võimalikud suunad, see tähendab kuni 8 seadet, et suhelda või kasutada 8 moodulit, et laiendada seda kuni 64 seadmeni. Aadressid (tihvtid A0, A1, A2) on järgmised:
    • 000: aadress 0x20
    • 001: aadress 0x21
    • 010: aadress 0x22
    • 011: aadress 0x23
    • 100: aadress 0x24
    • 101: aadress 0x25
    • 110: aadress 0x26
    • 111: aadress 0x27
  • Tunnistab katkestamine (INT) spetsiaalse rea abil andmete tuvastamiseks ilma pideva jälgimiseta.

Integreerimine Arduinoga

Arduino IDE ekraanipilt

Ühendus Arduinoga on väga lihtne, peate lihtsalt ühendama Vcc Arduino plaadi 5v tihvtiga ja GND Arduino GND-ga. Teisest küljest võivad PCF8574 SDA ja SCL mooduli tihvtid olla ühendage tihvtidega 14 (A5 SCL) ja 15 (A4 SDA). Ainult sellega hakkaks see töötama, ilmselt saate suhelda soovivate seadmete ühendamiseks kasutada Px-i ...

Siis oleks see ainult puudu alusta visandi näitega Arduino IDE-s. Saate seda teha ilma täiendava teegi, näiteks ...

#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);
   }
}

Sisendina:

#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);
}

Või ka kasutada raamatukogusid, näiteks PCF8574, mida saate alla laadida siit ja kasutage selle teegiga kaasasolevas näites sarnast koodi:

#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() 
{
}


Ole esimene kommentaar

Jäta oma kommentaar

Sinu e-postiaadressi ei avaldata. Kohustuslikud väljad on tähistatud *

*

*

  1. Andmete eest vastutab: Miguel Ángel Gatón
  2. Andmete eesmärk: Rämpsposti kontrollimine, kommentaaride haldamine.
  3. Seadustamine: teie nõusolek
  4. Andmete edastamine: andmeid ei edastata kolmandatele isikutele, välja arvatud juriidilise kohustuse alusel.
  5. Andmete salvestamine: andmebaas, mida haldab Occentus Networks (EL)
  6. Õigused: igal ajal saate oma teavet piirata, taastada ja kustutada.