PCF8574: Arduino üçün I2C I / O Expander haqqında

PCF8574 TI Çip

Əlbətdə ki, eşitmisiniz IC PCF8574, ayrıca satın alınan və ya digərləri kimi bir modula quraşdırılmış bir çip Elektron komponentlər Arduino lövhənizlə inteqrasiyanı asanlaşdırmaq. Bu vəziyyətdə, giriş və çıxışların genişləndiricisidir I2C avtobusu.

Arduinonun artıq özünün olduğunu düşünə bilərsiniz inteqrasiya olunmuş I2C avtobusuvə bu doğrudur. Ancaq PCF8574, bu avtobusu inkişaf lövhənizin hüdudlarından kənara uzatmağa kömək edə bilər ki, bu da Arduinonun təmin etdiyi şeydən daha çox ehtiyacı olan bəzi istehsalçılara böyük kömək ola bilər.

I2C avtobusu nədir?

Arduino UNO millis funksiyaları

I2C adı gəlir İnteqrasiya olunmuş dövrə və ya inter-inteqrasiya edilmiş dövrələr. 1.0 versiyası 1992-ci ildə Philips tərəfindən yaradılmışdır. O zaman ikinci bir 2.1, 2000-ci ildə gələcək və bu gün patentin müddəti 100-cı ildə bitdikdə və sərbəst istifadə edilə bilən bir standart halına gəldi (3.4 kbit / s-də, maksimum 2006 Mbit / s-yə qədər imkan verir).

Hazırda sənayedə geniş istifadə olunur rabitə üçünvə eyni zamanda bir IC-yə inteqrasiya olunmuş fərqli mikrokontroller və ətraf mühit ünsiyyətlərini qurmaq üçün layihələri üçün istehsalçılar tərəfindən çox yüksək qiymətləndirilmişdir.

El I2C bir avtobusdur yaxşı bilinən serial rabitə. Yalnız 2 kanallı bir sinxron rabitə protokolundan istifadə edir (üçüncüsü var, ancaq istinad və ya GND ilə birləşir), əslində TWI (İki Telli İnterfeys) olaraq da bilinir:

  • Saat üçün bir (SCL).
  • Məlumat üçün digər (SDA).
Hər ikisi də açıq drenaj CMOS əlaqələridir və açılan rezistorlar tələb olunur. Bundan əlavə, bir cihaz 0, digəri a 1 ötürürsə, problemlər ola bilər, bu səbəbdən xətt həmişə 1 (yüksək səviyyə) və cihazlar həmişə 0 ötürür (aşağı səviyyə).

Bu deməkdir ağa və kölə saat siqnalını yaradan ilk tərəfindən idarə olunan eyni kabel və ya yol üzərindən məlumat göndərirlər. I2C avtobusuna qoşulmuş periferik cihazların hər birində ötürülmələri istiqamətləndirmək üçün unikal bir ünvan təyin ediləcəkdir. Ancaq müəllimin həmişə eyni olması (çox müəllim) olması vacib deyil, köçürməyə hər zaman təşəbbüskar özüdür.

Artıq məqalədə izah etdiyim kimi Arduino I2C Daha əvvəl istinad etdim, hər lövhədə fərqli yerlərdə bu I2C əlaqələri var. Hər plaka versiyasında düzgün istifadə edə bilmək üçün unutmamalı olduğunuz bir şeydir:

Artıq eskizləriniz üçün I2C-dən asanlıqla istifadə edə biləcəyinizi bilirsiniz Tel.h kitabxana bu serial rabitə üçün müxtəlif funksiyaları ilə:

  • başla (): Wire kitabxanasını başladın və master və ya kölə olduğunu göstərin
  • requestFrom (): kölədən məlumat tələb etmək üçün usta tərəfindən istifadə olunur.
  • beginTransmission (): kölə ötürməyə başlayın.
  • endTransmission (): son ötürmə.
  • yaz ()- Ağadan gələn bir sorğuya cavab olaraq bir kölədən məlumat yazın və ya bir master ötürülməsi üçün növbə tuta bilərsiniz
  • mövcuddur (): oxunacaq bayt sayını qaytaracaq.
  • oxu (): köldən ağaya ötürülən və ya əksinə bir bayt oxuyun.
  • onReceive (): Bir kölə bir ustadan bir ötürmə aldıqda bir funksiyanı çağırır.
  • onRequest (): Bir qul bir ustadan məlumat istədikdə bir funksiyanı çağırır.

qədər daha ətraflı məlumat Arduino proqramlaşdırma və funksiyaları haqqında bizim yükləyə bilərsiniz PDF təlimatı.

PCF8574 nədir?

PCF8574 modulu

PCF8574 birdir I2C avtobus rəqəmsal giriş və çıxışları (I / O) genişləndirici. IC və modullarda mövcud olmasına əlavə olaraq müxtəlif istehsalçılar tərəfindən istehsal edilə bilər. Hər halda, onu Arduino lövhənizə bağlamaq və anakartın icazə verdiyidən daha çox cihazı idarə etmək gücünə sahib olmaq çox praktikdir.

El PCF8574 pinout sadədir, çünki yalnız daxildir 8 çamları yarı istiqamətli (ünsiyyət qurmaq üçün çiplərin bir-birinə bağlandığı P0-P7) və digər tərəfdən Arduino lövhəsinə, eləcə də modulu gücləndirmək üçün VCC və GND-yə bağlamalı olduğunuz SDA və SCL-lər var. Rabitə cihazlarından hansına yönəldildiyini seçmək üçün A0, A1, A2 üç ünvan sancağını unutma ...

PCF8574 çıxışı

Sahibidir digər xüsusiyyətləri bilməlisiniz:

  • Bağlantıları açıq bir drenaj olaraq ola bilər həm giriş, həm də çıxış olaraq istifadə olunur.
  • La pik cərəyan Çıxış rolunu oynadığında 25mA (batma, cərəyan PCF8574-ə doğru axdıqda) və 300 µA (mənbə, cərəyan PCF8574-dən axır).
  • La gərginlik enerji təchizatı 2.5 və 6v-dir. Gözləmə istehlakı çox azdır, yalnız 10 µA.
  • Bütün nəticələr mandalı var, xarici hərəkətlərə ehtiyac olmadan dövləti qorumaq. Yalnız dövləti dəyişdirmək istədiyiniz zaman hərəkət etməlisiniz.
  • 8 əldə edə bilərsiniz mümkün istiqamətlər, yəni 8 cihazla ünsiyyət qurmaq və ya 8 cihazı 64 cihaza qədər genişləndirmək üçün istifadə etmək. Ünvanlar (sancaqlar A0, A1, A2) belə olacaq:
    • 000: ünvan 0x20
    • 001: ünvan 0x21
    • 010: ünvan 0x22
    • 011: ünvan 0x23
    • 100: ünvan 0x24
    • 101: ünvan 0x25
    • 110: ünvan 0x26
    • 111: ünvan 0x27
  • Qəbul edir kəsilmə (INT) daim nəzarət etmədən məlumatları aşkar etmək üçün xüsusi bir xəttlə.

Arduino ilə inteqrasiya

Arduino IDE-nin ekran görüntüsü

Arduino ilə əlaqə çox asandır, sadəcə Vcc-i Arduino lövhəsinin 5v pimi ilə, GND-ni isə GND of Arduino ilə bağlamalısınız. Digər tərəfdən, PCF8574 SDA və SCL modulunun sancaqları ola bilər sancaqlar ilə əlaqə qurun 14 (A5 SCL) və 15 (A4 SDA). Yalnız bununla işə başlayacaq, açıq şəkildə ünsiyyət qurmaq istədiyiniz cihazları birləşdirmək üçün Px istifadə edə bilərsiniz ...

O zaman yalnız itkin olardı bir nümunə eskiz ilə başlayın Arduino IDE-də. Bunu əlavə kitabxana istifadə etmədən edə bilərsiniz ...

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

Giriş olaraq:

#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ə ya da kitabxanalardan istifadə edin, PCF8574 kimi edə bilərsiniz buradan indirin və bu kitabxana ilə birlikdə gələn nümunənin özündən buna bənzər kodu istifadə edin:

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


Məqalənin məzmunu bizim prinsiplərimizə uyğundur redaktor etikası. Xəta bildirmək üçün klikləyin burada.

Şərh yazan ilk kişi olun

Şərhinizi buraxın

E-poçt ünvanından dərc olunmayacaq. Lazım alanlar qeyd olunur *

*

*

  1. Verilərdən məsul: Miguel Ángel Gatón
  2. Verilənlərin məqsədi: Nəzarət SPAM, şərh rəhbərliyi.
  3. Qanuniləşdirmə: Sizin razılığınız
  4. Məlumatların ötürülməsi: Qanuni öhdəlik xaricində məlumatlar üçüncü şəxslərə çatdırılmayacaqdır.
  5. Veri saxlama: Occentus Networks (AB) tərəfindən yerləşdirilən verilənlər bazası
  6. Hüquqlar: İstədiyiniz zaman məlumatlarınızı məhdudlaşdıra, bərpa edə və silə bilərsiniz.