PCF8574: Ynglŷn ag I2C I / O Expander ar gyfer Arduino

PCF8574 TI CHIP

Mae'n siŵr eich bod wedi clywed am y IC PCF8574, sglodyn y gellir ei brynu ar wahân neu sydd eisoes wedi'i osod ar fodiwl fel llawer o rai eraill Cydrannau electronig i hwyluso'ch integreiddio â'ch bwrdd Arduino. Yn yr achos hwn, mae'n estynnydd o'r mewnbynnau a'r allbynnau ar gyfer y bws I2C.

Efallai eich bod chi'n meddwl bod gan Arduino ei hun eisoes bws I2C integredig, ac y mae yn wir. Ond gall y PCF8574 helpu i ymestyn y bws hwnnw y tu hwnt i derfynau eich bwrdd datblygu, a all fod o gymorth mawr i rai gwneuthurwyr sydd angen mwy na dim ond yr hyn a ddarperir gan Arduino.

Beth yw'r bws I2C?

Arduino UNO swyddogaethau millis

Daw'r enw I2C Cylchdaith Ryng-Integredig neu gylchedau rhyng-integredig. Cafodd ei fersiwn 1.0 ei greu ym 1992 gan Philips. Yna byddai ail 2.1 yn dod yn 2000 a heddiw mae wedi dod yn safon (ar 100 kbit yr eiliad, er ei fod yn caniatáu hyd at 3.4 Mbit yr eiliad) pan ddaeth y patent i ben yn 2006 a gellir ei ddefnyddio'n rhydd.

Ar hyn o bryd fe'i defnyddir yn helaeth yn y diwydiant ar gyfer cyfathrebu, a hefyd yn cael ei werthfawrogi'n fawr gan wneuthurwyr am eu prosiectau i gyfathrebu gwahanol ficroreolyddion a pherifferolion wedi'u hintegreiddio mewn un IC.

El Bws yw I2C yn adnabyddus o gyfathrebu cyfresol. Mae'n defnyddio protocol cyfathrebu cydamserol gyda dim ond 2 sianel (mae yna drydedd, ond mae wedi'i gyplysu â chyfeirnod neu GND), mewn gwirionedd fe'i gelwir hefyd yn TWI (Rhyngwyneb Dau Wifren):

  • Un ar gyfer y cloc (SCL).
  • Arall ar gyfer data (SDA).
Mae'r ddau yn gysylltiadau CMOS draen agored ac mae angen gwrthyddion tynnu i fyny arnynt. Ar ben hynny, os yw un ddyfais yn trosglwyddo 0 ac un arall yn 1, gallai fod problemau, a dyna pam mae'r llinell bob amser wedi'i gosod i 1 (lefel uchel) ac mae'r dyfeisiau bob amser yn trosglwyddo 0 (lefel isel).

Mae hynny'n awgrymu bod y meistr a chaethwas maent yn anfon data dros yr un cebl neu drac, sy'n cael ei reoli gan yr un cyntaf sy'n cynhyrchu'r signal cloc. Bydd cyfeiriad unigryw i bob un o'r dyfeisiau ymylol sy'n gysylltiedig â'r bws I2C, er mwyn cyfeirio'r trosglwyddiadau. Ond nid yw'n angenrheidiol bod yr athro bob amser yr un peth (aml-athro), ef bob amser sy'n cychwyn y trosglwyddiad.

Fel yr eglurais eisoes yn yr erthygl ar Arduino I2C Cyfeiriais yn gynharach, mae gan bob bwrdd y cysylltiadau I2C hyn mewn gwahanol leoedd. Mae'n rhywbeth y mae'n rhaid i chi ei gofio er mwyn gallu ei ddefnyddio'n iawn ym mhob fersiwn o'r plât:

  • Arduino UNO: Mae SDA yn A4 a SCK yn A5
  • Arduino Nano: yr un peth â'r blaenorol.
  • Arduino Mini Pro: yr un peth.
  • Arduino Mega: Mae SDA ar pin 20 a SCK ar 21.
  • Mwy o wybodaeth am blatiau.

Rydych chi eisoes yn gwybod y gallwch chi ddefnyddio'r I2C ar gyfer eich brasluniau yn hawdd, ers y Llyfrgell Wire.h. gyda nifer o swyddogaethau ar gyfer y cyfathrebiad cyfresol hwn:

  • dechrau (): dechreuwch y llyfrgell Wire a nodwch a yw'n feistr neu'n gaethwas
  • caisFrom (): yn cael ei ddefnyddio gan y meistr i ofyn am ddata gan y caethwas.
  • beginTransmission (): dechrau trosglwyddo gyda chaethwas.
  • endTransmission (): trosglwyddiad diwedd.
  • ysgrifennu()- Ysgrifennwch ddata gan gaethwas mewn ymateb i gais gan y meistr, neu gallwch giwio trosglwyddiad meistr.
  • ar gael (): yn dychwelyd nifer y bytes i'w darllen.
  • darllen (): darllen beit a drosglwyddir o gaethwas i feistr neu i'r gwrthwyneb.
  • onReceive (): Yn galw swyddogaeth pan fydd caethwas yn derbyn trosglwyddiad gan feistr.
  • onRequest (): Yn galw swyddogaeth pan fydd caethwas yn gofyn am ddata gan feistr.

i mwy o wybodaeth am raglennu a swyddogaethau Arduino gallwch lawrlwytho ein Tiwtorial PDF.

Beth yw'r PCF8574?

Modiwl PCF8574

Mae'r PCF8574 yn a Mewnbynnau ac allbynnau digidol bysiau I2C (I / O) yn ehangu. Gellir ei gynhyrchu gan wneuthurwyr amrywiol, yn ogystal â sicrhau ei fod ar gael mewn ICs a modiwlau. Beth bynnag, mae'n ymarferol iawn ei gysylltu â'ch bwrdd Arduino a bod â'r gallu i reoli mwy o ddyfeisiau nag y mae'r famfwrdd yn ei ganiatáu.

El PinF PCF8574 yn syml, gan ei fod yn cynnwys yn unig Pinnau 8 lled-gyfeiriadol (P0-P7 lle mae'r sglodion i gyfathrebu wedi'u cysylltu), ac ar y llaw arall mae gennych yr SDA a'r SCL y mae'n rhaid i chi eu cysylltu â bwrdd Arduino, yn ogystal â VCC a GND i bweru'r modiwl hefyd. A pheidiwch ag anghofio'r tri phin cyfeiriad A0, A1, A2 i ddewis pa rai o'r dyfeisiau y mae'r cyfathrebiad wedi'u cyfeirio atynt ...

PinF PCF8574

Yn berchen arno Nodweddion eraill y dylech chi wybod:

  • Gall ei gysylltiadau, gan ei fod yn ddraen agored yn cael ei ddefnyddio fel mewnbynnau ac allbynnau.
  • La cerrynt brig mae'n 25mA pan mae'n gweithredu fel allbwn (sinc, pan fydd cerrynt yn llifo tuag at PCF8574) a 300 µA (ffynhonnell, llif cerrynt o PCF8574).
  • La tensiwn y cyflenwad pŵer yw 2.5 a 6v. Mae'r defnydd wrth gefn yn isel iawn, dim ond 10 µA.
  • Pob allbwn cael cliciedau, i gynnal y wladwriaeth heb yr angen am gamau allanol. Dim ond pan fyddwch chi eisiau newid y wladwriaeth y mae'n rhaid i chi weithredu.
  • Gallwch chi gael 8 cyfarwyddiadau posib, hynny yw, hyd at 8 dyfais i gyfathrebu â neu ddefnyddio 8 modiwl i'w ehangu hyd at 64 dyfais. Y cyfeiriadau (pinnau A0, A1, A2) fydd:
    • 000: cyfeiriad 0x20
    • 001: cyfeiriad 0x21
    • 010: cyfeiriad 0x22
    • 011: cyfeiriad 0x23
    • 100: cyfeiriad 0x24
    • 101: cyfeiriad 0x25
    • 110: cyfeiriad 0x26
    • 111: cyfeiriad 0x27
  • Yn cyfaddef ymyrraeth (INT) gan linell arbennig i ganfod data heb ei fonitro'n gyson.

Integreiddio ag Arduino

Ciplun o Arduino IDE

Mae'r cysylltiad ag Arduino yn syml iawn, mae'n rhaid i chi gysylltu Vcc â phin 5v bwrdd Arduino, a GND â GND o Arduino. Ar y llaw arall, gall pinnau modiwl PCF8574 SDA a SCL fod cysylltu â phinnau 14 (A5 SCL) a 15 (A4 SDA). Dim ond gyda hynny y byddai'n dechrau gweithio, yn amlwg gallwch chi ddefnyddio'r Px i gysylltu'r dyfeisiau rydych chi am eu cyfathrebu ...

Yna dim ond ar goll y byddai ar goll dechreuwch gyda braslun enghreifftiol yn Arduino IDE. Gallwch ei wneud heb ddefnyddio llyfrgell ychwanegol fel ...

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

Fel mewnbwn:

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

Neu hefyd defnyddio llyfrgelloedd, fel y PCF8574 y gallwch lawrlwythwch yma a defnyddio cod tebyg i hwn o'r enghraifft ei hun sy'n dod ynghyd â'r llyfrgell hon:

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


Mae cynnwys yr erthygl yn cadw at ein hegwyddorion moeseg olygyddol. I riportio gwall cliciwch yma.

Bod y cyntaf i wneud sylwadau

Gadewch eich sylw

Ni fydd eich cyfeiriad e-bost yn cael ei gyhoeddi. Meysydd gofynnol yn cael eu marcio â *

*

*

  1. Yn gyfrifol am y data: Miguel Ángel Gatón
  2. Pwrpas y data: Rheoli SPAM, rheoli sylwadau.
  3. Cyfreithlondeb: Eich caniatâd
  4. Cyfathrebu'r data: Ni fydd y data'n cael ei gyfleu i drydydd partïon ac eithrio trwy rwymedigaeth gyfreithiol.
  5. Storio data: Cronfa ddata wedi'i chynnal gan Occentus Networks (EU)
  6. Hawliau: Ar unrhyw adeg gallwch gyfyngu, adfer a dileu eich gwybodaeth.