PCF8574: รับพินการเชื่อมต่อเพิ่มเติมสำหรับ Arduino

pcf8574

คุณอาจพบว่าตัวเองอยู่ในสถานการณ์ที่คุณต้องการขยายจำนวนอินพุตและเอาต์พุตที่มีให้กับคุณ บอร์ด arduinoเนื่องจากคุณกำลังดำเนินโครงการที่ต้องการอุปกรณ์มากกว่าที่คาดไว้ ในกรณีเหล่านี้ คุณทำได้เพียงสิ่งเดียวเท่านั้น นั่นคือการพิจารณาซื้อบอร์ดรุ่นสูงกว่าที่มีการเชื่อมต่อเหล่านี้มากกว่า แต่ตอนนี้ด้วย PCF8574 สามารถขยาย I/O ของ Arduino ได้ ด้วยวิธีง่ายและราคาถูก

ที่นี่เราจะแสดงให้คุณเห็นว่า PCF8574 คืออะไร ในกรณีที่คุณไม่รู้ นอกเหนือจากการแสดงให้เห็นว่าสามารถเชื่อมต่อกับบอร์ด Arduino ของคุณได้อย่างไร โดยอธิบายทีละขั้นตอนและวิธีการทำงาน...

PCF8574 คืออะไร

pcf8574

El PCF8574 เป็นตัวขยายอินพุตและเอาต์พุตดิจิทัล (I/O) สำหรับบัส I2C1 อุปกรณ์นี้ผลิตโดย Philips ช่วยให้คุณสามารถเชื่อมต่อโปรเซสเซอร์เช่น Arduino เพื่อควบคุมอุปกรณ์ได้มากขึ้นโดยใช้พินน้อยลง2 PCF8574 รวมพินเสมือนทิศทาง 8 พินตามเอาต์พุต CMOS ในการกำหนดค่าเดรนแบบเปิด

นอกจากนี้ PCF8574 ยังเป็นอุปกรณ์ที่ใช้พลังงานต่ำอีกด้วย รองรับการทำงานของ VCC ตั้งแต่ 2.5V ถึง 6V. โดยมีคุณลักษณะพอร์ต I/O เสมือนสองทิศทาง 8 บิต เอาต์พุตแบบสลัก เอาต์พุตขัดจังหวะเดรนเดรนแบบเปิด และความสามารถในการขับเคลื่อนกระแสไฟสูงสำหรับ LED ในทางกลับกัน ปริมาณการใช้ขณะสแตนด์บายต่ำมาก น้อยกว่า 10 µA

มันมีประโยชน์มากสำหรับ ขยายขีดความสามารถของบอร์ด Arduino ของคุณให้เกินขีดจำกัดซึ่งสามารถช่วยได้มากสำหรับผู้สร้างที่ต้องการบางสิ่งมากกว่าที่ Arduino นำเสนอ กระแสสูงสุดที่แต่ละพินสามารถจ่ายได้จะขึ้นอยู่กับการกำหนดค่า:

  • เมื่อทำหน้าที่เป็นเอาต์พุต จะเป็น 25mA เมื่อทำหน้าที่เป็นซิงก์ นั่นคือเมื่อกระแสไฟฟ้าไหลไปที่ PCF8574 นี่คือการกำหนดค่าเริ่มต้น
  • เมื่อทำหน้าที่เป็นแหล่งจ่าย ค่าจะอยู่ที่ 300µA นั่นคือเมื่อกระแสไหลจาก PCF8574 ในทำนองเดียวกัน คุณต้องทราบว่าเอาต์พุตทั้งหมดมี Latches นั่นคือจะรักษาสถานะด้วยตัวเองในรีจิสเตอร์ เราจะต้องดำเนินการเมื่อเราต้องการแก้ไขสถานะของเอาต์พุตตัวใดตัวหนึ่งเท่านั้น

การสื่อสารเสร็จสิ้น ผ่านบัส I2Cดังนั้นจึงง่ายต่อการรับข้อมูลจากอุปกรณ์ที่เชื่อมต่ออยู่ ในทำนองเดียวกัน ควรสังเกตว่ามีหมุดที่อยู่ 3 พิน ซึ่งให้การเชื่อมต่อที่เป็นไปได้ 8 รายการกับบัส I2C เดียวกัน ซึ่งหมายความว่าสามารถควบคุมอุปกรณ์ได้ 64 เครื่องโดยใช้เพียง 2 พินเท่านั้น

การตั้งค่าที่อยู่

โมดูล PCF8574 บางรุ่นนี้มักจะมีพินการกำหนดค่าและจัมเปอร์เหมือนกับที่คุณเห็นในภาพด้านบน ในทางกลับกัน รุ่นอื่นๆ มีสวิตช์ที่ทำให้สิ่งต่างๆ ง่ายขึ้นด้วยไมโครสวิตช์ทั้งสามตัว... แต่ถึงอย่างนั้น พวกมันก็คุ้นเคยกับ กำหนดค่าที่อยู่ จำนวนพิน I/O:

A0 A1 A2 ที่อยู่
0 0 0 0x20
0 0 1 0x21
0 1 0 0x22
0 1 1 0x23
1 0 0 0x24
1 0 1 0x25
1 1 0 0x26
1 1 1 0x27

Precio y dóndeประกอบด้วย

สามารถพบได้เพียงไม่กี่ยูโร มันเป็นอุปกรณ์ ค่อนข้างถูก ว่า Arduino บางรุ่นมีจำนวน I/O น้อยกว่าจะใช้งานได้จริงเพียงใด ดังนั้นหากคุณกำลังมองหา PCF8574 คุณสามารถค้นหาได้ในร้านค้าเฉพาะหรือบนแพลตฟอร์มออนไลน์ขนาดใหญ่ เช่น Amazon, Aliexpress หรือ eBay ตัวอย่างเช่น เราขอแนะนำสิ่งหนึ่งต่อไปนี้:

การเชื่อมต่อ PCF8574 กับ Arduino

ไปยัง เชื่อมต่อตัวขยาย PCF8574 เข้ากับบอร์ด Arduino ของคุณ แผนภาพการเชื่อมต่อค่อนข้างง่าย คุณจะต้องเชื่อมต่อ:

  • พิน SCL ที่ทำเครื่องหมายไว้บนบอร์ด PCF8574 ไปยังพิน SCL ของ Arduino พินนี้สามารถเปลี่ยนแปลงได้ขึ้นอยู่กับรุ่น แต่โดยปกติแล้วจะอยู่บน A5 ในรุ่นยอดนิยมอย่าง UNO
  • พิน SDA ของตัวขยายจะต้องเชื่อมต่อกับพิน SDA ของ Arduino เช่นเดียวกับที่ผมบอกไปข้างต้น มันสามารถเปลี่ยนแปลงได้ขึ้นอยู่กับรุ่น แต่โดยทั่วไปแล้วจะเป็น A4 หากมีข้อสงสัย ให้ตรวจสอบ pinout ของโมเดลของคุณ
  • แน่นอนว่าพิน GND ของ PCF8574 จะเชื่อมต่อกับ GND ที่ทำเครื่องหมายไว้บน Arduino นั่นคือเป็นการเชื่อมต่อภาคพื้นดิน
  • พิน Vcc ของตัวขยายเชื่อมต่อกับ 5V ของ Arduino ด้วยวิธีนี้ด้วย GND และ Vcc เราได้ขับเคลื่อนบอร์ดขยายเพื่อให้สามารถเริ่มทำงานได้

การทำงาน

เมื่อ PCF8574 เชื่อมต่อกับบอร์ด Arduino แล้ว ตอนนี้ก็ถึงเวลารู้แล้ว มันทำงานอย่างไร. ในการทำเช่นนี้ คุณต้องจำไว้ว่าคุณจะสามารถมีพินพิเศษได้ 8 พิน แลกกับการใช้พิน Arduino สองตัว นอกเหนือจากพินกำลัง ในทางกลับกัน คุณต้องคำนึงถึงบางสิ่งบางอย่าง และนั่นคือในแต่ละ 8 พินของ PCF8574 คุณมีทรานซิสเตอร์ MOSFET พร้อมกับตัวต้านทานแบบดึงขึ้นที่มีความต้านทานต่ำมาก โดยถือว่าความเข้มกระแสอยู่ที่ 100 microA เมื่อทรานซิสเตอร์ทำงาน

และนี่ทำให้เรามีภาพพาโนรามาดังต่อไปนี้:

  • การกำหนดค่าเป็นเอาต์พุต- เมื่อใช้พินเป็นเอาท์พุต มันจะทำหน้าที่เป็นซิงก์กระแส ดังที่ฉันได้กล่าวไว้ข้างต้น นั่นคือกระแสไหลเข้า
    • LOW: เมื่อแรงดันไฟต่ำจะไม่นำกระแส โหลด = Vdd
    • สูง: เมื่อไฟฟ้าแรงสูง สามารถจ่ายกระแสได้สูงถึง 25mA โหลดจะเชื่อมต่อกับ GND
  • การกำหนดค่าเป็นอินพุต: ต้องตั้งค่าเป็น HIGH เสมอ และในกรณีนี้จะทำหน้าที่เป็นแหล่งกำเนิด นั่นคือ กระแสจะไหลออก
    • ปิด: เมื่อไม่ได้กำหนดโหลดภายนอก แรงดันไฟฟ้าบนพินจะไปที่ GND
    • เปิด: เมื่อมีโหลดภายนอกเกิดขึ้น แรงดันพินจะกลายเป็น Vdd

รหัส Arduino IDE

Arduino IDE, ชนิดข้อมูล, การเขียนโปรแกรม

หากสิ่งที่คุณต้องการคือตัวอย่างวิธีสร้างโค้ดเพื่อใช้ PCF8574 นี้บน Arduino ก็ทำได้ง่ายๆ เพียงใช้ตัวอย่างโค้ดเหล่านี้ซึ่งคุณสามารถแก้ไขได้ตามความต้องการ:

  • การกำหนดค่าเป็นเอาต์พุต:
#include <Wire.h>

const int pcfAddress = 0x38;

void setup()
{
  Wire.begin();
  Serial.begin(9600);
}

void loop()
{
  for (short channel = 0; channel < 8; channel++)
  {
    // Escribir dato en canal 'channel'
    Wire.beginTransmission(pcfAddress);
    Wire.write(~(1 << channel));
    Wire.endTransmission();
    
    // Leer dato de canal
    delay(500);
  }
}
  • การกำหนดค่าเป็นอินพุต:
#include <Wire.h>

const int pcfAddress = 0x38;

void setup()
{
  Wire.begin();
  Serial.begin(9600);
}

void loop()
{
  short channel = 1;
  byte value = 0;

  // Leer dato de canal 'channel'
  Wire.requestFrom(pcfAddress, 1 << channel);
  if (Wire.available())
  {
    value = Wire.read();
  }
  Wire.endTransmission();

  // Mostrar el valor por puerto serie
  Serial.println(value);
}

โปรดจำไว้ว่าคุณยังสามารถใช้ ไลบรารี่ที่สร้างขึ้นโดยเฉพาะสำหรับ PCF8574 ซึ่งรวมถึงตัวอย่างการปฏิบัติ...


เป็นคนแรกที่จะแสดงความคิดเห็น

แสดงความคิดเห็นของคุณ

อีเมล์ของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องการถูกทำเครื่องหมายด้วย *

*

*

  1. ผู้รับผิดชอบข้อมูล: Miguel ÁngelGatón
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา