- ส่วนประกอบที่จำเป็น
- PCF8591 ADC / DAC โมดูล
- I2C พินใน Raspberry Pi
- การเชื่อมต่อโมดูล PCF8591 ADC / DAC กับ Raspberry Pi
- โปรแกรม Python สำหรับการแปลงอนาล็อกเป็นดิจิตอล (ADC)
การแปลงอนาล็อกเป็นดิจิทัลเป็นงานที่สำคัญมากในอุปกรณ์อิเล็กทรอนิกส์แบบฝังเนื่องจากเซ็นเซอร์ส่วนใหญ่ให้เอาต์พุตเป็นค่าอะนาล็อกและเพื่อป้อนข้อมูลลงในไมโครคอนโทรลเลอร์ซึ่งเข้าใจเฉพาะค่าไบนารีเท่านั้นเราจึงต้องแปลงเป็นค่าดิจิทัล ดังนั้นเพื่อให้สามารถประมวลผลข้อมูลแบบอะนาล็อก, ไมโครคอนโทรลเลอร์ต้องอนาล็อกเป็นดิจิตอลแปลง
ไมโครคอนโทรลเลอร์บางตัวมี ADC ในตัวเช่น Arduino, MSP430, PIC16F877A แต่ไมโครคอนโทรลเลอร์บางตัวไม่มีเช่น 8051, Raspberry Pi เป็นต้นและเราต้องใช้ IC ตัวแปลงอนาล็อกเป็นดิจิตอลภายนอกบางตัวเช่น ADC0804, ADC0808 ด้านล่างนี้คุณสามารถดูตัวอย่างต่างๆของ ADC พร้อมไมโครคอนโทรลเลอร์ที่แตกต่างกัน:
- วิธีใช้ ADC ใน Arduino Uno
- การสอน Raspberry Pi ADC
- การเชื่อมต่อ ADC0808 กับไมโครคอนโทรลเลอร์ 8051
- 0-25V Digital Voltmeter โดยใช้ AVR Microcontroller
- วิธีใช้ ADC ใน STM32F103C8
- วิธีใช้ ADC ใน MSP430G2
- วิธีใช้ ADC ใน ARM7 LPC2148
- การใช้โมดูล ADC ของไมโครคอนโทรลเลอร์ PIC กับ MPLAB และ XC8
ในบทช่วยสอนนี้เราจะเรียนรู้วิธีการเชื่อมต่อโมดูล PCF8591 ADC / DAC กับ Raspberry Pi
ส่วนประกอบที่จำเป็น
- ราสเบอร์รี่พาย
- PCF8591 ADC โมดูล
- หม้อ 100K
- สายจัมเปอร์
สมมติว่าคุณมี Raspberry Pi พร้อมกับ Raspbian OS ล่าสุดติดตั้งอยู่และคุณรู้วิธี SSH ลงใน Pi โดยใช้ซอฟต์แวร์เทอร์มินัลเช่นผงสำหรับอุดรู หากคุณยังใหม่กับ Raspberry Pi ให้ทำตามบทความนี้เพื่อเริ่มต้นกับ Raspberry Pi หากคุณประสบปัญหาใด ๆ ก็มีบทเรียน Raspberry Pi มากมายที่สามารถช่วยได้
PCF8591 ADC / DAC โมดูล
PCF8591 เป็นโมดูลตัวแปลงอนาล็อกเป็นดิจิตอล 8 บิตหรือ 8 บิตดิจิตอลเป็นอนาล็อกซึ่งหมายความว่าแต่ละพินสามารถอ่านค่าอนาล็อกได้สูงสุด 256 นอกจากนี้ยังมีวงจร LDR และเทอร์มิสเตอร์ที่ให้มาบนบอร์ด โมดูลนี้มีอินพุตแบบอนาล็อกสี่อินพุตและเอาต์พุตอนาล็อกหนึ่งชุด ทำงานกับการสื่อสารI 2 C ดังนั้นจึงมีพิน SCL และ SDA สำหรับนาฬิกาอนุกรมและที่อยู่ข้อมูลอนุกรม ต้องใช้แรงดันไฟฟ้า2.5-6Vและมีกระแสไฟสแตนด์บายต่ำ นอกจากนี้เรายังสามารถปรับแต่งแรงดันไฟฟ้าขาเข้าโดยการปรับปุ่มของโพเทนชิออมิเตอร์บนโมดูล นอกจากนี้ยังมีจัมเปอร์สามตัวบนกระดาน J4 เชื่อมต่อเพื่อเลือกวงจรการเข้าถึงเทอร์มิสเตอร์ J5 เชื่อมต่อเพื่อเลือกวงจรการเข้าถึงตัวต้านทาน LDR / ภาพถ่ายและ J6 เชื่อมต่อเพื่อเลือกวงจรการเข้าถึงแรงดันไฟฟ้าที่ปรับได้ มี LED สองดวงบนบอร์ด D1 และ D2- D1 แสดงความเข้มของแรงดันไฟฟ้าขาออกและ D2 แสดงความเข้มของแรงดันไฟฟ้า เอาต์พุตหรือแรงดันไฟฟ้าที่สูงขึ้นความเข้มของ LED D1 หรือ D2 สูงขึ้น คุณยังสามารถทดสอบ LED เหล่านี้ได้โดยใช้โพเทนชิออมิเตอร์บน VCC หรือบนขา AOUT
I2C พินใน Raspberry Pi
ในการใช้PCF8591กับ Raspberry Pi สิ่งแรกที่ต้องทำคือรู้พินพอร์ต Raspberry Pi I2C และกำหนดค่าพอร์ต I2C ใน Raspberry pi
ด้านล่างนี้คือ Pin Diagram ของ Raspberry Pi 3 Model B + และ หมุด I2C GPIO2 (SDA) และ GPIO3 (SCL) ใช้ในบทช่วยสอนนี้
การกำหนดค่า I2C ใน Raspberry Pi
ตามค่าเริ่มต้น I2C ถูกปิดใช้งานใน Raspberry Pi ก่อนอื่นต้องเปิดใช้งาน เพื่อเปิดใช้งาน I2C ใน Raspberry Pi
1. ไปที่เทอร์มินัลแล้วพิมพ์ sudo raspi-config
2. ตอนนี้ Raspberry Pi Software Configuration Tool ปรากฏขึ้น
3. เลือก ตัวเลือกการเชื่อมต่อ จากนั้นเปิดใช้งาน I2C
4. หลังจากเปิดใช้งาน I2C รีบูต Pi
การสแกนที่อยู่ I2C ของ PCF8591 โดยใช้ Raspberry Pi
ตอนนี้เพื่อที่จะเริ่มการสื่อสารกับ PCF8591 IC Raspberry Pi ต้องรู้ที่อยู่ I2C ในการค้นหาที่อยู่ก่อนอื่นให้เชื่อมต่อพิน SDA และ SCL ของ PCF8591 กับพิน SDA และ SCL ของ Raspberry Pi เชื่อมต่อพิน + 5V และ GND ด้วย
ตอนนี้เปิดเทอร์มินัลแล้วพิมพ์คำสั่งด้านล่างเพื่อทราบที่อยู่ของอุปกรณ์ I2C ที่เชื่อมต่อ
sudo i2cdetect –y 1 หรือ sudo i2cdetect –y 0
หลังจากการค้นหาที่อยู่ I2C ตอนนี้ถึงเวลาที่จะสร้างวงจรและติดตั้งห้องสมุดที่จำเป็นสำหรับการใช้ PCF8591 กับราสเบอร์รี่ Pi
การเชื่อมต่อโมดูล PCF8591 ADC / DAC กับ Raspberry Pi
แผนภาพวงจรสำหรับการเชื่อมต่อของ PCF8591 กับ Raspberry Piนั้นง่ายมาก ในตัวอย่างการเชื่อมต่อนี้เราจะอ่านค่าอนาล็อกจากพินอนาล็อกใด ๆ และแสดงบนขั้ว Raspberry Pi เราสามารถเปลี่ยนค่าได้โดยใช้เงินกองกลาง 100K
เชื่อมต่อ VCC และ GND กับ GPIO2 และ GPIO ของ Raspberry Pi จากนั้นเชื่อมต่อ SDA และ SCL กับ GPIO3 และ GPIO5 ตามลำดับ สุดท้ายเชื่อมต่อหม้อ 100K กับ AIN0 คุณยังสามารถเพิ่ม 16x2 LCD เพื่อแสดงค่า ADC แทนการแสดงบน Terminal เรียนรู้เพิ่มเติมเกี่ยวกับการเชื่อมต่อ LCD 16x2 กับ Raspberry Pi ที่นี่
โปรแกรม Python สำหรับการแปลงอนาล็อกเป็นดิจิตอล (ADC)
โปรแกรมที่สมบูรณ์และวิดีโอการทำงานจะได้รับในตอนท้ายของการกวดวิชานี้
ประการแรกอิมพอร์ตไลบรารี smbus สำหรับการสื่อสารบัสI 2 C และไลบรารีเวลาเพื่อให้เวลาพักระหว่างการพิมพ์ค่า
นำ เข้าเวลานำเข้าsmbus
ตอนนี้กำหนดตัวแปรบางอย่าง ตัวแปรแรกประกอบด้วยแอดเดรสของบัสI 2 C และตัวแปรที่สองประกอบด้วยแอดเดรสของพินอินพุตอนาล็อกแรก
ที่อยู่ = 0x48 A0 = 0x40
ต่อไปเราได้สร้างวัตถุของฟังก์ชัน SMBus (1) ของไลบรารี smbus
บัส = smbus.SMBus (1)
ตอนนี้ใน ขณะ ที่บรรทัดแรกบอกให้ IC ทำการวัดอนาล็อกที่ขาอินพุตอนาล็อกแรก ร้านค้าที่อยู่บรรทัดที่สองอ่านที่ขาอนาล็อกในตัวแปรค่า สุดท้ายพิมพ์ค่า
ในขณะที่ True: bus.write_byte (แอดเดรส A0) ค่า = bus.read_byte (ที่อยู่) พิมพ์ (ค่า) time.sleep (0.1)
ในที่สุดตอนนี้ให้บันทึกรหัส python ในบางไฟล์ด้วย. py entension และรันโค้ดใน raspberry Pi terminal โดยใช้คำสั่งด้านล่าง”
python filename.py
ก่อนที่จะรันโค้ดให้แน่ใจว่าคุณได้เปิดใช้งานการสื่อสารI 2 C และพินทั้งหมดเชื่อมต่อตามที่แสดงในแผนภาพมิฉะนั้นจะแสดงข้อผิดพลาด ค่าอะนาล็อกจะต้องเริ่มแสดงบนเทอร์มินัลเช่นด้านล่าง ปรับลูกบิดหม้อแล้วคุณจะเห็นค่าที่เปลี่ยนไปทีละน้อย เรียนรู้เพิ่มเติมเกี่ยวกับการเรียกใช้โปรแกรมใน
รหัสหลามที่สมบูรณ์และวิดีโอได้รับด้านล่าง