PCF8574: Txog I2C I / O Kev Qho Tawm rau Arduino

PCF8574 TI CHIP

Koj twb muaj tseeb hnov ​​ntawm lub TIAB SA 8574, ib qho nti uas tuaj yeem muas tau sib cais lossis twb tau muab dai ntawm cov qauv xws li ntau lwm tus Hluav taws xob Cheebtsam los pab txhawb koj kev koom ua ke nrog koj pawg thawj coj saib Arduino. Hauv qhov no, nws yog extender ntawm inputs thiab outputs rau lub npav 2.

Tej zaum koj yuav xav tias Arduino twb muaj nws li kev caij tsheb npav I2C sib xyaw, thiab nws yeej muaj tseeb. Tab sis PCF8574 tuaj yeem pab txuas ntxiv qhov chaw tsheb npav tshaj li qhov kev txwv ntawm koj pawg thawj coj saib kev txhim kho, uas tuaj yeem muaj txiaj ntsig zoo rau qee cov neeg tsim khoom uas xav tau ntau tshaj li qhov uas Arduino muab.

Lub tsheb npav I2C yog dab tsi?

Arduino UNO millis zog

Lub npe I2C los ntawm Cov Kev Sib Txuas Sib Txuas Hauv Circuit lossis kev sib txuas ntawm kev sib txuas. Nws version 1.0 tau tsim nyob rau hauv 1992 los ntawm Philips. Tom qab ntawd lub thib ob 2.1 yuav tuaj txog 2000 thiab hnub no nws tau dhau los ua tus qauv (ntawm 100 kbit / s, txawm hais tias nws tso cai txog 3.4 Mbit / s siab kawg) thaum lub caij ua patent dhau xyoo 2006 thiab tuaj yeem siv dawb.

Tam sim no nws yog dav siv nyob rau hauv kev lag luam rau kev sib txuas lus, thiab kuj tau txais txiaj ntsig ntau los ntawm cov neeg tsim khoom rau lawv cov haujlwm los txuas lus sib txawv microcontrollers thiab peripherals integrated hauv ib qho IC.

El I2C yog tsheb npav paub zoo los ntawm kev sib txuas lus dhau mus. Nws siv cov kev sib txuas lus sib txuas nrog tsuas yog 2 raws (muaj qhov thib peb, tab sis nws txuas ntxiv rau kev siv lossis GND), qhov tseeb nws tseem hu ua TWI (Ob Txoj Kev Sib Txuas Hlau):

  • Ib qho rau lub moos (SCL).
  • Lwm yam rau cov ntaub ntawv (SDA).
Ob leeg yog qhib ntws sib txuas CMOS thiab xav tau rub tawm-cov resistors. Tsis tas li, yog tias ib qho cuab yeej hloov mus rau 0 thiab lwm qhov 1, yuav muaj teeb meem, vim li ntawd cov kab yeej ib txwm teeb tsa 1 (qib siab) thiab cov cuab yeej ib txwm xa 0 (qib qis).

Qhov ntawd txhais tau hais tias tus tus tswv thiab qhev lawv xa cov ntaub ntawv hla tib qho cable lossis khiav, uas yog tswj los ntawm thawj tus uas tsim lub teeb liab moos. Txhua qhov khoom siv hluav taws xob txuas nrog lub tsheb npav I2C yuav muaj qhov chaw nyob tshwj xeeb, thiaj li ua haujlwm ncaj qha. Tab sis nws tsis yog qhov yuav tsum tau hais tias tus kws qhia ntawv yog ib txwm sib xws (ntau tus kws qhia ntawv), nws yog ib txwm nws tus uas pib hloov xa mus.

Raws li kuv twb tau piav qhia hauv tsab xov xwm ntawm Arduino I2C Kuv hais ua ntej lawm, txhua pawg tswj hwm muaj cov I2C kev sib txuas hauv qhov chaw sib txawv. Nws yog ib yam khoom uas koj yuav tsum nco ntsoov tias yuav siv tau kom raug rau txhua daim phaj:

  • Arduino UNO: SDA yog nyob rau hauv A4 thiab SCK hauv A5
  • Arduino Nano Cov: tib yam li yav dhau los.
  • Arduino Mini Pro: tib yam.
  • Arduino Mega Cov: SDA yog rau tus lej 20 thiab SCK ntawm 21.
  • Cov ntaub ntawv ntxiv txog paib.

Koj twb paub tias koj tuaj yeem siv I2C rau koj cov kev sib dhos yooj yim, txij li tus Hlau.h tsev qiv ntawv muaj ntau lub zog rau cov kev sib txuas lus:

  • pib (): pib lub tsev qiv ntawv Hlau thiab qhia meej yog tias nws yog tus tswv lossis qhev
  • requestFrom (): siv los ntawm tus tswv los thov cov ntaub ntawv los ntawm qhev.
  • pibTxojkev (): pib kis nrog tus qhev.
  • endTxojkev (): cov kab mob sib kis tas.
  • sau ()- Sau cov ntaub ntawv los ntawm ib tus qhev ua teb rau kev thov ntawm tus tswv lossis koj tuaj yeem tos tus tswv txoj kev sib kis
  • muaj (): yuav xa cov bytes rov tuaj nyeem.
  • nyeem (): nyeem lub byte kis los ntawm tus qhev mus rau tus tswv lossis tus ua hloov sab.
  • onReceive (): Hu rau txoj haujlwm ua haujlwm thaum tus qhev tau txais kev sib kis los ntawm tus tswv.
  • onRequest (): Hu ua haujlwm thaum tus qhev thov cov ntaub ntawv los ntawm ib tug tswv.

Rau xav paub ntxiv hais txog Arduino programming thiab cov haujlwm koj tuaj yeem rub tau peb PDF nyeem.

PCF8574 yog dab tsi?

PCF8574 module

Tus PCF8574 yog a I2C npav digital inputs thiab outputs (I / O) cov qauv nthuav davCov. Nws tuaj yeem tsim los ntawm ntau cov tuam ntxhab, ntxiv rau muaj nws muaj nyob hauv ICs thiab cov qauv. Nyob rau hauv txhua rooj plaub, nws yog heev tswv yim mus txuas nws rau koj Arduino board thiab muaj lub peev xwm los tswj ntau pab kiag li tshaj li cov motherboard tso cai.

El PCF8574 pinout yog qhov yooj yim, vim nws tsuas suav nrog 8 pines quasi-directional (P0-P7 qhov chaw sib tw sib txuas yog sib txuas), thiab ntawm qhov tod tes koj muaj SDA thiab SCL uas koj yuav tsum txuas rau Arduino board, nrog rau VCC thiab GND los tseem txhawb lub zog. Thiab tsis txhob hnov ​​qab peb qhov chaw hais pins A0, A1, A2 xaiv qhov twg ntawm cov khoom siv sib txuas lus tau hais rau ...

PCF8574 tus pinout

Cov tswv lwm cov nta uas koj yuav tsum paub:

  • Nws cov sib txuas, ua qhov qhib dej, tuaj yeem yog siv ob qho tib si nkag thiab tawm.
  • La tam sim no siab nws yog 25mA thaum nws ua raws li qhov tsim tawm (dab dej, thaum tam sim no ntws los ntawm PCF8574) thiab 300 µA (qhov, ntws tam sim no los ntawm PCF8574).
  • La kev ntxhov siab fais fab mov yog 2.5 thiab 6v. Kev muag zaub noj zaub yog tsawg kawg nkaus, tsuas yog 10 µA.
  • Txhua outputs muaj latches, txhawm rau tswj lub xeev tsis tas yuav ua sab nraud. Koj tsuas yog yuav tsum tau ua thaum koj xav hloov lub xeev.
  • Koj tuaj yeem tau 8 cov lus qhia tau, uas yog, txog li 8 lub xov tooj sib txuas lus nrog lossis siv 8 tus qauv los nthuav nws mus txog 64 pab kiag. Cov chaw nyob (pins A0, A1, A2) yuav yog:
    • 000: chaw nyob 0x20
    • 001: chaw nyob 0x21
    • 010: chaw nyob 0x22
    • 011: chaw nyob 0x23
    • 100: chaw nyob 0x24
    • 101: chaw nyob 0x25
    • 110: chaw nyob 0x26
    • 111: chaw nyob 0x27
  • Lees paub kev cuam tshuam nrog (INT) los ntawm kab tshwj xeeb los tshawb xyuas cov ntaub ntawv yam tsis tau saib xyuas tas li.

Kev sib xyaw nrog Arduino

Screenshot ntawm Arduino IDE

Kev sib txuas nrog Arduino yog qhov yooj yim heev, koj tsuas yog yuav tsum txuas Vcc nrog 5v tus pin ntawm Arduino board, thiab GND nrog GND ntawm Arduino. Ntawm qhov tod tes, cov pins ntawm PCF8574 SDA thiab SCL module tuaj yeem txuas nrog pins 14 (A5 SCL) thiab 15 (A4 SDA). Tsuas yog nrog nws yuav pib ua haujlwm, pom tseeb koj tuaj yeem siv lub Px los txuas rau cov cuab yeej koj xav txuas lus ...

Tom qab ntawv nws tsuas ploj lawm xwb pib nrog piv txwv duab kos hauv Arduino IDE. Koj tuaj yeem ua nws yam tsis siv ib lub tsev qiv ntawv ntxiv xws li ...

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

Raws li cov tswv yim:

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

Lossis siv cov tsev qiv ntawv nyeem, xws li PCF8574 uas koj tuaj yeem ua tau Download ntawm no thiab siv cov kev cai zoo ib yam li qhov no los ntawm qhov piv txwv nws tus kheej los nrog rau lub tsev qiv ntawv no:

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


Cov ntsiab lus ntawm tsab xov xwm ua raws li peb cov ntsiab cai ntawm kev tswj hwm kev ncaj nceesCov. Tshaj tawm ib qho yuam kev nyem no.

Yog thawj tus tuaj tawm tswv yim

Tso koj saib

Koj email chaw nyob yuav tsis tsum luam tawm. Yuav tsum tau teb cov cim nrog *

*

*

  1. Lub luag haujlwm rau cov ntaub ntawv: Miguel Ángel Gatón
  2. Lub hom phiaj ntawm cov ntaub ntawv: Tswj SPAM, kev tswj xyuas tawm tswv yim.
  3. Sau raws cai: Koj kev tso cai
  4. Kev sib txuas lus ntawm cov ntaub ntawv: Cov ntaub ntawv yuav tsis raug xa mus rau lwm tus neeg thib peb tsuas yog los ntawm kev txiav txim siab raug cai.
  5. Cov ntaub ntawv khaws cia: Cov Ntaub Ntawv khaws tseg los ntawm Occentus Networks (EU)
  6. Txoj Cai: Txhua lub sijhawm koj tuaj yeem txwv, rov qab thiab tshem tawm koj cov ntaub ntawv.