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