PCF8574: Arduino- ს I2C I / O გაფართოების შესახებ

PCF8574 TI ჩიპი

თქვენ ნამდვილად გსმენიათ ამის შესახებ IC PCF8574, ჩიპი, რომლის შეძენა შესაძლებელია ცალკე ან უკვე დამონტაჟებულია მოდულზე, როგორც მრავალი სხვა Ელექტრონული კომპონენტები ხელი შეუწყოს თქვენს Arduino დაფაზე ინტეგრაციას. ამ შემთხვევაში, ეს არის შემავალი და გასასვლელი გამავრცელებელი I2C ავტობუსი.

შეიძლება იფიქროთ, რომ Arduino- ს უკვე აქვს თავისი ინტეგრირებული I2C ავტობუსიდა ეს მართალია. მაგრამ PCF8574 დაგეხმარებათ გააფართოვოთ ეს ავტობუსი თქვენი განვითარების დაფის საზღვრებს მიღმა, რაც დიდ დახმარებას გაუწევს ზოგიერთ მწარმოებელს, ვისაც Arduino– ს გარდა უფრო მეტი სჭირდება.

რა არის I2C ავტობუსი?

Arduino UNO მილისის ფუნქციები

სახელი I2C მოდის ინტეგრირებული სქემა ან ინტეგრირებული სქემები. მისი ვერსია 1.0 შეიქმნა 1992 წელს Philips- ის მიერ. შემდეგ მეორე 2.1 მოვიდოდა 2000 წელს და დღეს ის სტანდარტად იქცა (100 კბიტ / წმ – ზე, თუმცა ის საშუალებას აძლევს მაქსიმუმ 3.4 მბიტ / წმ – ს), როდესაც პატენტი ამოიწურა 2006 წელს და მისი გამოყენება თავისუფლად შეიძლება.

დღეისათვის იგი ფართოდ გამოიყენება ინდუსტრიაში კომუნიკაციისთვისდა ასევე ძალიან აფასებენ მწარმოებლებს მათი პროექტებისთვის, რომ კომუნიკაცია მოახდინონ სხვადასხვა მიკროკონტროლერებთან და პერიფერიულ მოწყობილობებთან ერთ IC- ში.

El I2C არის ავტობუსი სერიული კომუნიკაციიდან კარგად არის ცნობილი. იგი იყენებს სინქრონულ საკომუნიკაციო პროტოკოლს მხოლოდ 2 არხით (არსებობს მესამე, მაგრამ იგი დაერთებულია მითითებასთან ან GND), სინამდვილეში იგი ასევე ცნობილია როგორც TWI (ორი მავთულის ინტერფეისი):

  • ერთი საათისთვის (SCL).
  • სხვა მონაცემებისთვის (SDA).
ორივე ღია გადინების CMOS კავშირია და საჭიროებს გამწევ რეზისტორებს. ასევე, თუ ერთი მოწყობილობა გადასცემს 0-ს, ხოლო მეორეში 1-ს, შეიძლება არსებობდეს პრობლემები, ამიტომ ხაზი ყოველთვის არის 1-ზე (მაღალი დონის) და მოწყობილობები ყოველთვის გადასცემენ 0-ს (დაბალი დონე).

ეს ნიშნავს, რომ ბატონი და მონა ისინი აგზავნიან მონაცემებს იმავე კაბელის ან ტრეკის საშუალებით, რომელსაც აკონტროლებს პირველი, რომელიც ქმნის საათის სიგნალს. I2C ავტობუსთან დაკავშირებულ თითოეულ პერიფერულ მოწყობილობას ენიჭება უნიკალური მისამართი, გადაცემების წარმართვის მიზნით. მაგრამ არ არის აუცილებელი, რომ ოსტატი ყოველთვის ერთი და იგივე იყოს (მრავალ სამაგისტრო), ყოველთვის ის არის ის, ვინც იწყებს გადაცემას.

როგორც სტატიაში უკვე ავუხსენი არდუინო I2C მე ადრე მივუთითე, თითოეულ საბჭოს აქვს I2C კავშირი სხვადასხვა ადგილას. ეს არის ის, რაც უნდა გაითვალისწინოთ, რომ შეძლოთ მისი სწორად გამოყენება ფირფიტის თითოეულ ვერსიაში:

თქვენ უკვე იცით, რომ შეგიძლიათ გამოიყენოთ I2C ესკიზებისთვის მარტივად, რადგან Wire.h ბიბლიოთეკა ამ სერიული კომუნიკაციის სხვადასხვა ფუნქციით:

  • დაწყება (): დაიწყეთ Wire ბიბლიოთეკა და მიუთითეთ არის master ან მონა
  • requestFrom (): გამოიყენება ოსტატის მიერ მონადან მონაცემის მოთხოვნისთვის.
  • startTransmission (): დაიწყეთ გადაცემა მონათან ერთად.
  • endTransmission (): დასრულებული გადაცემა.
  • დაწერე ()- დაწერეთ მონა მონაგან სამაგისტრო თხოვნის საპასუხოდ, ან შეგიძლიათ რიგში დგომოთ სამაგისტრო გადაცემა.
  • ხელმისაწვდომია (): დაუბრუნებს წასაკითხად ბაიტების რაოდენობას.
  • წაკითხვა (): წაიკითხეთ მონადან ბატონზე გადაცემული ბაიტი ან პირიქით.
  • onReceive (): მოუწოდებს ფუნქციას, როდესაც მონა გადაცემას იღებს სამაგისტრო პროგრამისგან.
  • მოთხოვნისამებრ (): მოუწოდებს ფუნქციას, როდესაც მონა ითხოვს მონაცემებს სამაგისტროდან.

to მეტი ინფორმაცია Arduino– ს პროგრამირებისა და ფუნქციების შესახებ შეგიძლიათ გადმოწეროთ ჩვენი PDF სახელმძღვანელო.

რა არის PCF8574?

PCF8574 მოდული

PCF8574 არის ა I2C ავტობუსის ციფრული შესასვლელი და გამომავალი (I / O) გამაფართოებელი. მისი დამზადება შესაძლებელია სხვადასხვა მწარმოებლების მიერ, გარდა იმისა, რომ ის ხელმისაწვდომია IC– ებში და მოდულებში. ნებისმიერ შემთხვევაში, ეს ძალიან პრაქტიკულია, დააკავშიროთ იგი თქვენს Arduino დაფაზე და გქონდეთ შესაძლებლობა აკონტროლოთ მეტი მოწყობილობა, ვიდრე ეს დედაპლატის საშუალებას იძლევა.

El PCF8574 pinout ეს მარტივია, რადგან ის მხოლოდ მოიცავს 8 pines quasidirectional (P0-P7, სადაც ჩიპები კომუნიკაციისთვის არის დაკავშირებული), მეორეს მხრივ თქვენ გაქვთ SDA და SCL, რომლებიც უნდა დაუკავშიროთ Arduino დაფაზე, ასევე VCC და GND, რომ ასევე ჩართოთ მოდული. და არ უნდა დაგვავიწყდეს, რომ სამი მისამართით გამოირჩევა A0, A1, A2, რომ აირჩიოთ რომელი მოწყობილობიდან არის მიმართული კომუნიკაცია ...

PCF8574 pinout

ფლობს სხვა მახასიათებლები რომ იცოდეთ:

  • მისი კავშირები, როგორც ღია გადინება, შეიძლება იყოს გამოიყენება როგორც შემავალი და გამომავალი.
  • La პიკური მიმდინარეობა ეს არის 25mA, როდესაც ის მოქმედებს როგორც გამომავალი (ჩაძირვაში, როდესაც დენის მიედინება PCF8574- ისკენ) და 300 μA (წყარო, მიმდინარე მიედინება PCF8574- დან).
  • La სტრესი ელექტროენერგიის მიწოდება არის 2.5 და 6 ვ. ლოდინის მოხმარება ძალიან დაბალია, მხოლოდ 10 მკA.
  • ყველა შედეგი აქვს საკინძები, სახელმწიფოს შენარჩუნება გარე ქმედებების გარეშე. თქვენ მხოლოდ მაშინ უნდა იმოქმედოთ, როდესაც სახელმწიფოს შეცვლა გსურთ.
  • შეგიძლიათ მიიღოთ 8 შესაძლო მიმართულებები, ეს არის 8 მოწყობილობამდე კომუნიკაცია ან 8 მოდულის გამოყენება 64 მოწყობილობამდე გასაუმჯობესებლად. მისამართები (ქინძისთავები A0, A1, A2) იქნება:
    • 000: მისამართი 0x20
    • 001: მისამართი 0x21
    • 010: მისამართი 0x22
    • 011: მისამართი 0x23
    • 100: მისამართი 0x24
    • 101: მისამართი 0x25
    • 110: მისამართი 0x26
    • 111: მისამართი 0x27
  • აღიარებს შეფერხება (INT) სპეციალური ხაზით მონაცემების მუდმივად მონიტორინგის გარეშე დასადგენად.

ინტეგრაცია Arduino- სთან

Arduino IDE- ს სკრინშოტი

Arduino- სთან კავშირი ძალიან მარტივია, თქვენ უბრალოდ უნდა დააკავშიროთ Vcc Arduino დაფის 5v პინთან და GND Arduino GND- ით. მეორეს მხრივ, PCF8574 SDA და SCL მოდულის ქინძისთავები შეიძლება იყოს დაკავშირება ქინძისთავებით 14 (A5 SCL) და 15 (A4 SDA). მხოლოდ ამით ის დაიწყებს მუშაობას, ცხადია, შეგიძლიათ გამოიყენოთ Px იმ მოწყობილობების დასაკავშირებლად, რომელთა კომუნიკაციაც გსურთ ...

მაშინ ის მხოლოდ დაკარგული იქნებოდა დაიწყეთ ესკიზის მაგალითით Arduino IDE- ში. ამის გაკეთება შეგიძლიათ დამატებითი ბიბლიოთეკის გამოყენების გარეშე, როგორიცაა ...

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

შეყვანის სახით:

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

ან ასევე გამოიყენეთ ბიბლიოთეკები, მაგალითად, PCF8574, რომელიც შეგიძლიათ ჩამოტვირთვა აქ და გამოიყენეთ მსგავსი კოდის მაგალითი, რომელიც მოცემულია ამ ბიბლიოთეკასთან ერთად:

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


სტატიის შინაარსი იცავს ჩვენს პრინციპებს სარედაქციო ეთიკა. შეცდომის შესატყობინებლად დააჭირეთ ღილაკს აქ.

იყავი პირველი კომენტარი

დატოვე კომენტარი

თქვენი ელფოსტის მისამართი გამოქვეყნებული არ იყო. აუცილებელი ველები აღნიშნულია *

*

*

  1. მონაცემებზე პასუხისმგებელი: მიგელ ანგელ გატონი
  2. მონაცემთა მიზანი: სპამის კონტროლი, კომენტარების მართვა.
  3. ლეგიტიმაცია: თქვენი თანხმობა
  4. მონაცემთა კომუნიკაცია: მონაცემები არ გადაეცემა მესამე პირებს, გარდა სამართლებრივი ვალდებულებისა.
  5. მონაცემთა შენახვა: მონაცემთა ბაზა, რომელსაც უმასპინძლა Occentus Networks (EU)
  6. უფლებები: ნებისმიერ დროს შეგიძლიათ შეზღუდოთ, აღადგინოთ და წაშალოთ თქვენი ინფორმაცია.