การแปลงอนาล็อกเป็นดิจิทัลเป็นงานที่สำคัญมากในอุปกรณ์อิเล็กทรอนิกส์แบบฝังเนื่องจากเซ็นเซอร์ส่วนใหญ่ให้เอาต์พุตเป็นค่าอะนาล็อกและเพื่อป้อนข้อมูลลงในไมโครคอนโทรลเลอร์ซึ่งเข้าใจเฉพาะค่าไบนารีเท่านั้นเราจึงต้องแปลงเป็นค่าดิจิทัล ดังนั้นเพื่อให้สามารถประมวลผลข้อมูลแบบอะนาล็อก, ไมโครคอนโทรลเลอร์ต้อง อนาล็อกเป็นดิจิตอลแปลง
ไมโครคอนโทรลเลอร์บางตัวมี 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 กับ Arduino
ส่วนประกอบที่จำเป็น
- Arduino UNO
- PCF8591 ADC โมดูล
- หม้อ 100K
- สายจัมเปอร์
PCF8591 ADC / DAC โมดูล
PCF8591 เป็น โมดูลตัวแปลงอนาล็อกเป็นดิจิตอล 8 บิตหรือ 8 บิตดิจิตอลเป็นอนาล็อกซึ่งหมายความว่าแต่ละพินสามารถอ่านค่าอนาล็อกได้สูงสุด 256 นอกจากนี้ยังมีวงจร LDR และเทอร์มิสเตอร์ที่ให้มาบนบอร์ด โมดูลนี้มีอินพุตแบบอนาล็อกสี่อินพุตและเอาต์พุตอนาล็อกหนึ่งชุด ทำงานกับการสื่อสารI 2 C ดังนั้นจึงมีพิน SCL และ SDA สำหรับนาฬิกาอนุกรมและที่อยู่ข้อมูลอนุกรม ต้องใช้ แรงดันไฟฟ้า2.5-6Vและมีกระแสไฟสแตนด์บายต่ำ นอกจากนี้เรายังสามารถปรับแต่งแรงดันไฟฟ้าขาเข้าโดยการปรับปุ่มของโพเทนชิออมิเตอร์บนโมดูล นอกจากนี้ยังมีจัมเปอร์สามตัวบนกระดาน J4 เชื่อมต่อเพื่อเลือก วงจรการเข้าถึงเทอร์มิสเตอร์ J5 เชื่อมต่อเพื่อเลือก วงจรการเข้าถึงตัวต้านทาน LDR / ภาพถ่าย และ J6 เชื่อมต่อเพื่อเลือกวงจรการเข้าถึงแรงดันไฟฟ้าที่ปรับได้ ในการเข้าถึงวงจรเหล่านี้คุณต้องใช้ที่อยู่ของจัมเปอร์เหล่านี้: 0x50 สำหรับ J6, 0x60 สำหรับ J5 และ 0x70 สำหรับ J4 มี LED สองดวงบนบอร์ด D1 และ D2- D1 แสดงความเข้มของแรงดันไฟฟ้าขาออกและ D2 แสดงความเข้มของแรงดันไฟฟ้า เอาต์พุตหรือแรงดันไฟฟ้าที่สูงขึ้นความเข้มของ LED D1 หรือ D2 สูงขึ้น คุณยังสามารถทดสอบ LED เหล่านี้ได้โดยใช้โพเทนชิออมิเตอร์บน VCC หรือบนขา AOUT
การเชื่อมต่อโมดูล PCF8591 ADC / DAC กับ Arduino
โปรแกรมที่สมบูรณ์และวิดีโอการทำงาน จะได้รับในตอนท้ายของการกวดวิชานี้
ประการแรกเราต้องกำหนดไลบรารีสำหรับการสื่อสารI 2 C และจอ LCD
# รวม
จากนั้นกำหนดมาโครบางส่วน มาโครตัวแรกใช้สำหรับกำหนดแอดเดรสของบัสข้อมูลสำหรับ IC และมาโครตัวที่สองใช้สำหรับกำหนดแอดเดรสของพินอินพุตแรกของโมดูลโดยที่อินพุตจากพ็อตจะได้รับ
# กำหนด PCF8591 (0x90 >> 1) #define AIn0 0x00
จากนั้นกำหนดการเชื่อมต่อพินของ LCD กับ Arduino และเริ่มต้นค่าที่เราได้รับที่พินอนาล็อก
const int rs = 12, th = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LiquidCrystal LCD (rs, en, d4, d5, d6, d7); ค่า int = 0;
ตอนนี้มาที่ฟังก์ชั่น การตั้งค่า ในบรรทัดแรกเราได้เริ่มต้นการสื่อสารI 2 C และในบรรทัดที่สองเราได้กำหนดค่าเริ่มต้นของหน้าจอ LCD ที่เรากำลังพิมพ์ค่าอะนาล็อก เรียนรู้เพิ่มเติมเกี่ยวกับการเชื่อมต่อ LCD 16x2 กับ Arduino ที่นี่
การตั้งค่าเป็นโมฆะ () { Wire.begin (); lcd.begin (16,2); }
ในฟังก์ชัน ลูป บรรทัดแรกคือการเริ่มต้นการส่งข้อมูลกล่าวคือเริ่ม PCF8591 บรรทัดที่สองบอกให้ IC ทำการวัดอนาล็อกที่ขาอินพุตอนาล็อกแรก บรรทัดที่สามสิ้นสุดการส่งและสายที่สี่รับข้อมูลที่วัดได้จากพินอนาล็อก
ห่วงเป็นโมฆะ () { Wire.beginTransmission (PCF8591); Wire.write (AIn0); Wire.endTransmission (); Wire.requestFrom (PCF8591, 1);
ในส่วนถัดไปให้ใส่ค่าที่อ่านจากพินอนาล็อกเป็นตัวแปร ค่าที่ กำหนดไว้ก่อนหน้านี้ และในบรรทัดถัดไปให้พิมพ์ค่านั้นไปยัง LCD
ค่า = Wire.read (); lcd.print ("ค่า ADC ="); lcd.print (ค่า); ล่าช้า (500); lcd.clear ();}
ในที่สุดอัปโหลดรหัสใน Arduino และเรียกใช้ ค่าอะนาล็อกจะเริ่มแสดงบนจอ LCD ปรับลูกบิดหม้อแล้วคุณจะเห็นค่าที่เปลี่ยนไปทีละน้อย