สารบัญ:
- ขั้นตอนที่ 1: I2c ทำงานอย่างไร
- ขั้นตอนที่ 2:
- ขั้นตอนที่ 3: การใช้งาน
- ขั้นตอนที่ 4: อ่านค่า
- ขั้นตอนที่ 5: อ่าน Vale จาก Channel
- ขั้นตอนที่ 6: เขียนค่า
- ขั้นตอนที่ 7: คุณสมบัติเพิ่มเติม
- ขั้นตอนที่ 8: ตัวอย่างไดอะแกรมการเชื่อมต่อ
- ขั้นตอนที่ 9: ขอบคุณ
วีดีโอ: PCF8591 (i2c Analog I/O Expander) ใช้งานง่ายรวดเร็ว: 9 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:06
ห้องสมุดเพื่อใช้ i2c pcf8591 IC กับ Arduino และ esp8266
IC นี้สามารถควบคุม (จนถึง 4) อินพุตแบบอะนาล็อกและ/หรือเอาต์พุตแบบอะนาล็อก 1 รายการ เช่น วัดแรงดันไฟ อ่านค่าเทอร์มิสเตอร์หรือหรี่ไฟ LED
สามารถอ่านค่าแอนะล็อกและเขียนค่าแอนะล็อกได้เพียง 2 สาย (เหมาะสำหรับ ESP-01)
ฉันพยายามทำให้การใช้ IC นี้ง่ายขึ้นด้วยชุดการทำงานที่น้อยที่สุด
คุณสามารถค้นหาเวอร์ชันที่อัปเดตบนเว็บไซต์ของฉัน
ขั้นตอนที่ 1: 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
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
แนะนำ:
MicroPython PCF8591 DACtest: 3 ขั้นตอน (พร้อมรูปภาพ)
MicroPython PCF8591 DACtest: ฉันซื้อหนังสือเล่มนี้เพื่อปรับปรุงทักษะ Micropython ของฉัน: MicroPython for ESP8266 Development Workshop โดย Agus Kurniawan หนังสือเล่มนี้เป็นการเริ่มต้นที่ดีมาก โครงการ I2C ใช้โมดูล PCF8591 แต่ไม่มีตัวอย่างการเขียนโปรแกรม DAC ดังนั้นฉันจึงต้องคิดว่าคุณ
Raspberry Pi - PCA9536 บทช่วยสอน Python อินพุต/เอาต์พุต Expander: 4 ขั้นตอน
Raspberry Pi - PCA9536 Expander Python Tutorial อินพุต/เอาท์พุต: PCA9536 เป็นอุปกรณ์ CMOS 8 พินที่ให้การขยาย 4 บิตของ General Purpose Parallel Input/Output (GPIO) สำหรับแอปพลิเคชัน I2C-bus/SMBus ประกอบด้วยการลงทะเบียนการกำหนดค่า 4 บิตเพื่อรองรับวัตถุประสงค์ของการเลือกอินพุตหรือเอาต์พุต 4 บิต
DHT12 (i2c เซ็นเซอร์ความชื้นและอุณหภูมิราคาถูก) ใช้งานง่ายรวดเร็ว: 14 ขั้นตอน
DHT12 (i2c เซ็นเซอร์ความชื้นและอุณหภูมิราคาถูก) ใช้งานง่ายรวดเร็ว: คุณสามารถค้นหาการอัปเดตและอื่น ๆ บนเว็บไซต์ของฉัน https://www.mischianti.org/2019/01/01/dht12-library-en/.ฉันชอบเซ็นเซอร์ที่ สามารถใช้ได้กับ 2 สาย (โปรโตคอล i2c) แต่ฉันชอบสายราคาไม่แพง นี่คือไลบรารี Arduino และ esp8266 สำหรับ DHT12 series o
Arduino และ PCF8591 ADC DAC IC: 7 ขั้นตอน
Arduino และ PCF8591 ADC DAC IC: คุณเคยต้องการพินอินพุตแบบอะนาล็อกเพิ่มเติมในโครงการ Arduino ของคุณหรือไม่ แต่ไม่ต้องการแยกออกเป็นเมก้า? หรือคุณต้องการสร้างสัญญาณอะนาล็อก? จากนั้นตรวจสอบหัวข้อของบทช่วยสอนของเรา – NXP PCF8591 IC.It แก้ปัญหาทั้งสองนี้
IO Expander สำหรับ ESP32, ESP8266 และ Arduino: 24 ขั้นตอน
IO Expander สำหรับ ESP32, ESP8266 และ Arduino: คุณต้องการขยาย IO ของ ESP32, ESP8266 หรือ Arduino หรือไม่ และคุณได้คิดเกี่ยวกับความเป็นไปได้ของ GPIO ใหม่ 16 ตัวที่สามารถควบคุมได้โดยใช้บัส I2C หรือไม่? วันนี้ฉันจะมาแนะนำคุณเกี่ยวกับ GPIO expander MCP23016 นอกจากนี้ ฉันยัง