PCF8574: Par I2C I / O paplašinātāju Arduino

PCF8574 TI mikroshēma

Jūs noteikti esat dzirdējuši par PCF8574 IC, mikroshēma, kuru var iegādāties atsevišķi vai jau uzstādīt uz moduļa tāpat kā daudzus citus Elektroniskās sastāvdaļas lai atvieglotu integrāciju ar Arduino dēli. Šajā gadījumā tas ir ieejas un izejas paplašinātājs I2C kopne.

Jūs domājat, ka Arduino jau ir savs integrēta I2C kopne, un tā ir taisnība. Bet PCF8574 var palīdzēt paplašināt šo autobusu ārpus jūsu izstrādes dēļa robežām, kas var būt liels atbalsts dažiem veidotājiem, kuriem nepieciešams vairāk nekā tikai tas, ko nodrošina Arduino.

Kas ir I2C kopne?

Arduino UNO milis funkcijas

Nosaukums I2C nāk no Savstarpēji integrētā shēma vai savstarpēji integrētas shēmas. Tās versiju 1.0 1992. gadā izveidoja Philips. Tad 2.1. gadā pienāks otrais 2000, un šodien tas ir kļuvis par standartu (ar ātrumu 100 kbit / s, lai gan tas pieļauj maksimāli līdz 3.4 Mbit / s), kad patenta termiņš beidzās 2006. gadā, un to var brīvi izmantot.

Pašlaik to plaši izmanto nozarē saziņai, un arī ļoti atzinīgi novērtējuši veidotāji par saviem projektiem, lai sazinātos ar dažādiem mikrokontrolleriem un perifērijas ierīcēm, kas integrēti vienā IC.

El I2C ir autobuss labi zināms no sērijveida sakariem. Tas izmanto sinhrono sakaru protokolu tikai ar 2 kanāliem (ir trešais, bet tas ir savienots ar atsauci vai GND), patiesībā to sauc arī par TWI (divu vadu saskarne):

  • Viens pulkstenim (SCL).
  • Cits datiem (SDA).
Abi ir atvērti CMOS savienojumi, un tiem ir nepieciešami pievilkšanas rezistori. Turklāt, ja viena ierīce pārraida 0, bet otra - 1, var rasties problēmas, tāpēc līnija vienmēr ir iestatīta uz 1 (augsts līmenis) un ierīces vienmēr pārraida 0 (zems līmenis).

Tas nozīmē, ka saimnieks un vergs viņi sūta datus pa to pašu kabeli vai sliežu ceļu, kuru kontrolē pirmais, kurš ģenerē pulksteņa signālu. Katrai no I2C kopnei pievienotajām perifērijas ierīcēm tiks piešķirta unikāla adrese, lai vadītu pārraides. Bet nav nepieciešams, lai skolotājs vienmēr būtu viens un tas pats (vairāku skolotāju), vienmēr viņš ir tas, kurš iniciē pārcelšanu.

Kā es jau paskaidroju rakstā par Arduino I2C Es atsaucos iepriekš, katram dēlim ir šie I2C savienojumi dažādās vietās. Tas ir kaut kas, kas jums jāpatur prātā, lai varētu to pareizi izmantot katrā plāksnes versijā:

  • Arduino UNO: SDA ir A4 un SCK A5
  • Arduino nano: tas pats, kas iepriekšējais.
  • Arduino MiniPro: tas pats.
  • Mega Arduino: SDA ir uz tapas 20 un SCK uz 21. tapas.
  • Plašāka informācija par plāksnēm.

Jūs jau zināt, ka I2C varat viegli izmantot savām skicēm, jo Wire.h bibliotēka ar dažādām funkcijām šai seriālajai saziņai:

  • sākt (): palaidiet Wire bibliotēku un norādiet, vai tā ir galvenā vai pakārtotā
  • pieprasījums no (): izmanto kapteinis, lai pieprasītu datus no verga.
  • beginTransmission (): sākt pārraidi ar vergu.
  • endTransmission (): beigu pārraide.
  • rakstīt ()- Rakstiet datus no verga, atbildot uz kapteiņa pieprasījumu, vai arī varat ierindot kapteiņa pārraidi.
  • pieejams (): atgriezīs lasāmo baitu skaitu.
  • lasīt (): nolasīt baitu, kas pārsūtīts no verga pavēlniekam vai otrādi.
  • onReceive (): Izsauc funkciju, kad vergs saņem pārraidi no kapteiņa.
  • onRequest (): Izsauc funkciju, kad vergs pieprasa datus no kapteiņa.

līdz más INFORMACION par Arduino programmēšanu un funkcijām varat lejupielādēt mūsu PDF apmācība.

Kas ir PCF8574?

PCF8574 modulis

PCF8574 ir a I2C kopnes digitālo ieeju un izeju (I / O) paplašinātājs. To var ražot dažādi ražotāji, turklāt tas ir pieejams arī IC un moduļos. Jebkurā gadījumā ir ļoti praktiski to savienot ar savu Arduino dēli un tam ir iespējas vadīt vairāk ierīču, nekā to atļauj mātesplatē.

El PCF8574 pinout ir vienkārša, jo tā ietver tikai 8 priedes gandrīz virziena virziens (P0-P7, kur ir savienotas mikroshēmas saziņai), un, no otras puses, jums ir SDA un SCL, kas jums jāpievieno Arduino dēlim, kā arī VCC un GND, lai arī moduli darbinātu. Neaizmirstiet trīs adresējošos tapas A0, A1, A2, lai izvēlētos, uz kuru no ierīcēm tiek novirzīta komunikācija ...

PCF8574 tapa

Pieder citas funkcijas kas jums jāzina:

  • Tās savienojumi, kas ir atvērta kanalizācija, var būt izmanto gan kā ieejas, gan izejas.
  • La maksimālā strāva tas ir 25mA, kad tas darbojas kā izeja (izlietne, kad strāva plūst uz PCF8574) un 300 µA (avots, strāva plūst no PCF8574).
  • La saspīlējums barošanas avots ir 2.5 un 6v. Gaidīšanas režīmā patēriņš ir ļoti zems, tikai 10 µA.
  • Visas izejas ir aizbīdņi, lai uzturētu valsti bez ārējām darbībām. Jums ir jārīkojas tikai tad, kad vēlaties mainīt stāvokli.
  • Jūs varat saņemt 8 iespējamie virzieni, tas ir, līdz pat 8 ierīcēm, lai sazinātos ar vai izmantotu 8 moduļus, lai to paplašinātu līdz 64 ierīcēm. Adreses (tapas A0, A1, A2) būs:
    • 000: adrese 0x20
    • 001: adrese 0x21
    • 010: adrese 0x22
    • 011: adrese 0x23
    • 100: adrese 0x24
    • 101: adrese 0x25
    • 110: adrese 0x26
    • 111: adrese 0x27
  • Atzīst pārtraukums (INT) ar īpašu līniju, lai atklātu datus bez pastāvīgas uzraudzības.

Integrācija ar Arduino

Arduino IDE ekrānuzņēmums

Savienojums ar Arduino ir ļoti vienkāršs, jums vienkārši jāpieslēdz Vcc ar Arduino dēļa 5v tapu un GND ar Arduino GND. No otras puses, PCF8574 SDA un SCL moduļa tapas var būt savienot ar tapām 14 (A5 SCL) un 15 (A4 SDA). Tikai ar to tas sāktu darboties, protams, jūs varat izmantot Px, lai savienotu ierīces, ar kurām vēlaties sazināties ...

Tad tā tikai pietrūktu sāciet ar skices piemēru arduino IDE. To var izdarīt, neizmantojot papildu bibliotēku, piemēram, ...

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

Kā ievade:

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

Vai arī izmantot bibliotēkas, piemēram, PCF8574, kuru varat Lejupielādējiet šeit un izmantojiet šim kodam līdzīgu pašu piemēru, kas pievienots šai bibliotēkai:

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


Esi pirmais, kas komentārus

Atstājiet savu komentāru

Jūsu e-pasta adrese netiks publicēta. Obligātie lauki ir atzīmēti ar *

*

*

  1. Atbildīgais par datiem: Migels Ángels Gatóns
  2. Datu mērķis: SPAM kontrole, komentāru pārvaldība.
  3. Legitimācija: jūsu piekrišana
  4. Datu paziņošana: Dati netiks paziņoti trešām personām, izņemot juridiskus pienākumus.
  5. Datu glabāšana: datu bāze, ko mitina Occentus Networks (ES)
  6. Tiesības: jebkurā laikā varat ierobežot, atjaunot un dzēst savu informāciju.