สารบัญ:

PCF8591 (i2c Analog I/O Expander) ใช้งานง่ายรวดเร็ว: 9 ขั้นตอน
PCF8591 (i2c Analog I/O Expander) ใช้งานง่ายรวดเร็ว: 9 ขั้นตอน

วีดีโอ: PCF8591 (i2c Analog I/O Expander) ใช้งานง่ายรวดเร็ว: 9 ขั้นตอน

วีดีโอ: PCF8591 (i2c Analog I/O Expander) ใช้งานง่ายรวดเร็ว: 9 ขั้นตอน
วีดีโอ: #42 สอน Arduino Tutorial : Arduino PCF8591 ขยายขา Analog 2024, พฤศจิกายน
Anonim
PCF8591 (i2c Analog I/O Expander) ใช้งานง่ายรวดเร็ว
PCF8591 (i2c Analog I/O Expander) ใช้งานง่ายรวดเร็ว

ห้องสมุดเพื่อใช้ i2c pcf8591 IC กับ Arduino และ esp8266

IC นี้สามารถควบคุม (จนถึง 4) อินพุตแบบอะนาล็อกและ/หรือเอาต์พุตแบบอะนาล็อก 1 รายการ เช่น วัดแรงดันไฟ อ่านค่าเทอร์มิสเตอร์หรือหรี่ไฟ LED

สามารถอ่านค่าแอนะล็อกและเขียนค่าแอนะล็อกได้เพียง 2 สาย (เหมาะสำหรับ ESP-01)

ฉันพยายามทำให้การใช้ IC นี้ง่ายขึ้นด้วยชุดการทำงานที่น้อยที่สุด

คุณสามารถค้นหาเวอร์ชันที่อัปเดตบนเว็บไซต์ของฉัน

ขั้นตอนที่ 1: I2c ทำงานอย่างไร

I2c ทำงานอย่างไร
I2c ทำงานอย่างไร

I2C ใช้งานได้กับสองสายคือ SDA (สายข้อมูล) และ SCL (สายนาฬิกา)

ทั้งสองเส้นนี้เป็นท่อระบายน้ำแบบเปิด แต่ถูกดึงขึ้นด้วยตัวต้านทาน

โดยปกติจะมีเจ้านายหนึ่งคนและทาสหนึ่งคนหรือหลายคนในบรรทัด แม้ว่าจะมีเจ้านายหลายคน แต่เราจะพูดถึงเรื่องนี้ในภายหลัง

ทั้งมาสเตอร์และสเลฟสามารถส่งหรือรับข้อมูลได้ ดังนั้นอุปกรณ์สามารถอยู่ในสถานะใดสถานะหนึ่งจากสี่สถานะเหล่านี้: การส่งสัญญาณหลัก, การรับมาสเตอร์, การส่งสัญญาณสเลฟ, การรับสเลฟ

ขั้นตอนที่ 2:

คุณสามารถหาห้องสมุดของฉันได้ที่นี่

ดาวน์โหลด.

คลิกปุ่มดาวน์โหลดที่มุมบนขวา เปลี่ยนชื่อโฟลเดอร์ PCF8591 ที่ไม่บีบอัด

ตรวจสอบว่าโฟลเดอร์ PCF8591 มี PCF8591.cpp และ PCF8591.h

วางโฟลเดอร์ไลบรารี PCF8591 /libraries/ โฟลเดอร์ของคุณ

คุณอาจต้องสร้างโฟลเดอร์ย่อยของไลบรารีหากเป็นไลบรารีแรกของคุณ

รีสตาร์ท IDE

ขั้นตอนที่ 3: การใช้งาน

ตัวสร้าง: คุณต้องผ่านที่อยู่ของ i2c (เพื่อตรวจสอบที่อยู่ให้ใช้คู่มือนี้ I2cScanner)

PCF8591 (ที่อยู่ uint8_t);

สำหรับ esp8266 หากคุณต้องการระบุพิน SDA e SCL ให้ใช้สิ่งนี้:

PCF8591 (ที่อยู่ uint8_t, uint8_t sda, uint8_t scl);

ขั้นตอนที่ 4: อ่านค่า

อ่านค่า
อ่านค่า

IC ดังที่คุณเห็นในภาพมีอินพุตแบบอะนาล็อก 4 รายการและเอาต์พุตแบบอะนาล็อก 1 รายการ

ดังนั้นหากต้องการอ่านอินพุตแบบอะนาล็อกทั้งหมดในทราสมิชชันเดียว คุณสามารถทำได้ (ค่าตั้งแต่ 0 ถึง 255):

PCF8591::AnalogInput ai = pcf8591.analogReadAll();

Serial.print(ai.ain0); Serial.print(" - "); Serial.print (ai.ain1); Serial.print(" - "); Serial.print (ai.ain2); Serial.print(" - "); Serial.println (ai.ain3);

หากคุณต้องการอ่านอินพุตหรือช่องสัญญาณอนาล็อกเดียว:

int ana = pcf8591.analogRead(AIN0); // อ่านอนาล็อก 0

ขั้นตอนที่ 5: อ่าน Vale จาก Channel

อ่าน Vale จาก Channel
อ่าน Vale จาก Channel

IC นี้มีการอ่านหลายประเภท และคุณสามารถใช้อินพุตแบบอะนาล็อกหรือช่องสัญญาณแอนะล็อกได้ (เมื่อคุณใช้อินพุตอนาล็อกแบบอ่านอย่างเดียวและช่องสัญญาณอยู่ในรูปภาพ)

ตัวอย่างเช่นหากต้องการอ่านค่าของช่อง 0 ในสองอินพุตที่แตกต่างกันคุณต้องทำ:

int ana = pcf8591.analogRead(CHANNEL0, TWO_DIFFERENTIAL_INPUT); // อ่านอนาล็อก 0

ขั้นตอนที่ 6: เขียนค่า

หากคุณต้องการเขียนค่าแอนะล็อก คุณต้องทำ (ค่าตั้งแต่ 0 ถึง 255):

pcf8591.analogWrite(128);

ขั้นตอนที่ 7: คุณสมบัติเพิ่มเติม

คุณสมบัติเพิ่มเติมคือการอ่านแรงดันเขียน: สำหรับการคำนวณแรงดันไฟ คุณต้องผ่านพารามิเตอร์บางตัว:

  • microcontrollerReferenceVoltage: รับแรงดันไฟฟ้าจากแรงดันไฟฟ้าไมโครคอนโทรลเลอร์ (เฉพาะ AVR ไม่มี esp8266 สำหรับ esp 3.3v คงที่)
  • referenceVoltage: ถ้า microcontrollerReferenceVoltage false รับค่านี้ คำสั่งคือ:

โมฆะ voltageWrite (ค่าโฟลต, bool microcontrollerReferenceVoltage = true, float referenceVoltage = 5.0);

float voltageRead (uint8_t analogPin, bool microcontrollerReferenceVoltage = true, float referenceVoltage = 5.0);

ตัวอย่างคือ:

pcf8591.voltageWrite(2.7); // เอาต์พุต 2.7Volts

ล่าช้า (3000);

float ana0V = pcf8591.voltageRead (AIN0); // อ่านแรงดันจากแอนะล็อก 0

Serial.println (ana0V);

ขั้นตอนที่ 8: ตัวอย่างไดอะแกรมการเชื่อมต่อ

ตัวอย่างแผนภาพการเชื่อมต่อ
ตัวอย่างแผนภาพการเชื่อมต่อ

ขั้นตอนที่ 9: ขอบคุณ

ชุดโครงการ i2c (คอลเลกชัน):

  • เซ็นเซอร์ความชื้นอุณหภูมิ
  • เครื่องขยายสัญญาณอนาล็อก
  • เครื่องขยายสัญญาณดิจิตอล
  • จอ LCD

แนะนำ: