PCF8574: Dwar I2C I / O Expander għal Arduino

PCF8574 TI CHIP

Żgur li smajt bil- IC PCF8574, ċippa li tista 'tinxtara separatament jew diġà mmuntata fuq modulu bħal ħafna oħrajn Komponenti elettroniċi biex tiffaċilita l-integrazzjoni tiegħek mal-bord Arduino tiegħek. F'dan il-każ, huwa estensur tal-inputs u l-outputs għal ix-xarabank I2C.

Tista 'taħseb li Arduino diġà għandu tiegħu stess xarabank I2C integrat, u huwa veru. Iżda l-PCF8574 jista 'jgħin biex jestendi dik ix-xarabank lil hinn mil-limiti tal-bord tal-iżvilupp tiegħek, li jista' jkun ta 'għajnuna kbira għal xi produtturi li għandhom bżonn aktar minn dak li jipprovdi biss Arduino.

X'inhi l-karozza tal-linja I2C?

Arduino UNO funzjonijiet millis

L-isem I2C ġej minn Ċirkwit Inter-Integrat jew ċirkuwiti inter-integrati. Il-verżjoni 1.0 tagħha nħolqot fl-1992 minn Philips. Imbagħad jiġi t-tieni 2.1 fl-2000 u llum sar standard (b'100 kbit / s, għalkemm jippermetti massimu ta '3.4 Mbit / s) meta l-privattiva skadiet fl-2006 u tista' tintuża liberament.

Fil-preżent huwa użat ħafna fl-industrija għall-komunikazzjoni, u wkoll apprezzat ħafna minn dawk li jfasslu għall-proġetti tagħhom biex jikkomunikaw mikrokontrolluri u periferali differenti integrati f'IC wieħed.

El I2C hija xarabank magħruf sew mill-komunikazzjoni serjali. Juża protokoll ta 'komunikazzjoni sinkronika b'żewġ kanali biss (hemm it-tielet, iżda huwa akkoppjat ma' referenza jew GND), fil-fatt huwa magħruf ukoll bħala TWI (Two Wire Interface):

  • Wieħed għall-arloġġ (SCL).
  • Oħrajn għad-dejta (SDA).
It-tnejn huma konnessjonijiet CMOS ta 'fossa miftuħa u jeħtieġu resistors pull-up. Ukoll, jekk apparat wieħed jittrażmetti 0 u ieħor 1, jista 'jkun hemm problemi, huwa għalhekk li l-linja hija dejjem issettjata għal 1 (livell għoli) u l-apparati dejjem jittrasmettu 0 (livell baxx).

Dan jimplika li kaptan u skjav jibagħtu dejta fuq l-istess kejbil jew track, li hija kkontrollata mill-ewwel waħda li tiġġenera s-sinjal tal-arloġġ. Kull apparat periferali mqabbad max-xarabank I2C ikollu indirizz uniku assenjat, sabiex jidderieġi t-trasmissjonijiet. Imma mhux meħtieġ li l-kaptan ikun dejjem l-istess (multi-kaptan), huwa dejjem hu li jibda t-trasferiment.

Kif diġà spjegajt fl-artiklu dwar Arduino I2C Qed nirreferi qabel, kull bord għandu dawn il-konnessjonijiet I2C f'postijiet differenti. Hija xi ħaġa li għandek iżżomm f'moħħok biex tkun tista 'tużaha sewwa f'kull verżjoni tal-pjanċa:

  • Arduino UNO: SDA hija f'4 u SCK f'A5
  • Arduino Nano: l-istess bħal ta 'qabel.
  • Arduino Mini Pro: l-istess.
  • Arduino Mega: SDA tinsab fuq il-pin 20 u SCK fuq il-21.
  • Aktar informazzjoni dwar il-pjanċi.

Int diġà taf li tista 'tuża l-I2C għall-abbozzi tiegħek faċilment, peress li Librerija Wire.h b'diversi funzjonijiet għal din il-komunikazzjoni serjali:

  • tibda (): ibda l-librerija tal-Wajer u speċifika jekk hijiex kaptan jew skjav
  • talba Minn (): użat mill-kaptan biex jitlob dejta mill-iskjav.
  • beginTransmission (): ibda t-trasmissjoni bl-iskjavi.
  • endTransmission (): tmiem it-trasmissjoni.
  • ikteb ()- Ikteb dejta minn skjav bi tweġiba għal talba mill-kaptan, jew tista 'tpoġġi fil-kju t-trasmissjoni ta' kaptan.
  • disponibbli (): jirritorna n-numru ta 'bytes biex jinqara.
  • aqra (): aqra byte trasmess minn skjav għal kaptan jew viċi versa.
  • onReceive (): Jsejjaħ funzjoni meta skjav jirċievi trasmissjoni minn kaptan.
  • onRequest (): Jitlob funzjoni meta skjav jitlob dejta minn kaptan.

li aktar informazzjoni dwar il-programmazzjoni u l-funzjonijiet Arduino tista 'tniżżel tagħna Tutorial PDF.

X'inhu l-PCF8574?

Modulu PCF8574

Il-PCF8574 huwa Input u outputs diġitali bus I2C (I / O) li jespandu. Jista 'jiġi manifatturat minn diversi manifatturi, minbarra li jkolluh disponibbli f'ICs u moduli. Fi kwalunkwe każ, huwa prattiku ħafna li tqabbad mal-bord Arduino tiegħek u jkollok il-kapaċità li tikkontrolla aktar apparati milli tippermetti l-motherboard.

El PCF8574 pinout hija sempliċi, billi tinkludi biss Arżnu 8 kważi-direzzjonali (P0-P7 fejn iċ-ċipep biex tikkomunika huma konnessi), u min-naħa l-oħra għandek l-SDA u l-SCL li trid tikkonnettja mal-bord Arduino, kif ukoll VCC u GND biex tħaddem ukoll il-modulu. U tinsiex it-tliet pinnijiet li jindirizzaw A0, A1, A2 biex tagħżel lil liema mill-apparati hija diretta l-komunikazzjoni ...

PCF8574 pinout

Tippossjedi fatturi oħra li inti għandek tkun taf:

  • Il-konnessjonijiet tiegħu, li huma fossa miftuħa, jistgħu jkunu użati kemm bħala inputs kif ukoll bħala outputs.
  • La l-ogħla kurrent huwa 25mA meta jaġixxi bħala ħruġ (sink, meta l-kurrent joħroġ lejn PCF8574) u 300 µA (sors, kurrent joħroġ minn PCF8574).
  • La tensjoni provvista ta 'enerġija hija 2.5 u 6v. Il-konsum stand-by huwa baxx ħafna, 10 µA biss.
  • Ir-riżultati kollha għandhom lukketti, biex iżomm l-istat mingħajr il-ħtieġa għal azzjonijiet esterni. Int trid taġixxi biss meta trid tibdel l-istat.
  • Tista 'tikseb 8 direzzjonijiet possibbli, jiġifieri, sa 8 apparati biex jikkomunikaw ma 'jew jużaw 8 moduli biex jespanduh sa 64 apparat. L-indirizzi (pinnijiet A0, A1, A2) se jkunu:
    • 000: indirizz 0x20
    • 001: indirizz 0x21
    • 010: indirizz 0x22
    • 011: indirizz 0x23
    • 100: indirizz 0x24
    • 101: indirizz 0x25
    • 110: indirizz 0x26
    • 111: indirizz 0x27
  • Jammetti interruzzjoni (INT) b'linja speċjali biex tiskopri dejta mingħajr monitoraġġ kostanti.

Integrazzjoni ma 'Arduino

Screenshot ta 'Arduino IDE

Il-konnessjoni ma 'Arduino hija sempliċi ħafna, għandek biss tikkonnettja Vcc mal-pin 5v tal-bord Arduino, u GND ma' GND ta 'Arduino. Min-naħa l-oħra, il-pinnijiet tal-modulu PCF8574 SDA u SCL jistgħu jkunu qabbad mal-labar 14 (A5 SCL) u 15 (A4 SDA). Biss b'dan jibda jaħdem, ovvjament tista 'tuża l-Px biex tikkonnettja l-apparat li trid tikkomunika ...

Imbagħad ikun nieqes biss ibda bi eżempju sketch f'Arduino IDE. Tista 'tagħmel dan mingħajr ma tuża librerija addizzjonali bħal ...

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

Bħala input:

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

Jew ukoll uża libreriji, bħall-PCF8574 li tista ' niżżel hawn u uża kodiċi simili għal dan mill-eżempju nnifsu li jiġi flimkien ma 'din il-librerija:

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


Il-kontenut tal-artikolu jaderixxi mal-prinċipji tagħna ta ' etika editorjali. Biex tirrapporta żball ikklikkja hawn.

Kun l-ewwel li tikkummenta

Ħalli l-kumment tiegħek

Your email address mhux se jkun ippubblikat. oqsma meħtieġa huma mmarkati bl *

*

*

  1. Responsabbli għad-dejta: Miguel Ángel Gatón
  2. Għan tad-dejta: Kontroll SPAM, ġestjoni tal-kummenti.
  3. Leġittimazzjoni: Il-kunsens tiegħek
  4. Komunikazzjoni tad-dejta: Id-dejta ma tiġix ikkomunikata lil partijiet terzi ħlief b'obbligu legali.
  5. Ħażna tad-dejta: Bażi tad-dejta ospitata minn Occentus Networks (UE)
  6. Drittijiet: Fi kwalunkwe ħin tista 'tillimita, tirkupra u tħassar l-informazzjoni tiegħek.