ADC Principles
มีหลายเทคนิคที่ถูกนำมาใช้ในการแปลงสัญญาณอนาล็อก เพื่อเป็นข้อมูลค่าดิจิตอล ที่นิยมกันตัวอย่างเช่น successive approximation conversion, parallel-encoded conversion (หรือ flash conversion), delta-sigma processing และ pulse-code modulation (PCM) เป็นต้น
ซึ่งหนึ่งในเทคนิคที่ถูกใช้มากที่สุดคือ วิธีการประมาณค่าต่อเนื่อง (successive approximation conversion) โดยเทคนิคนี้จะทำการแปลงแต่ละบิตของผลลัพธ์แบบไบนารีจะถูกค้นหา หนึ่งบิตต่อครั้ง—เริ่มจาก MSB bit ซึ่งวิธีนี้จะทำการแปลงที่ค่อนข้างเร็ว (ในช่วงเวลาประมาณ 10 ถึง 300 μs) ด้วยจำนวนวงจรที่จำกัด ดังตัวอย่างรูปข้างล่าง เป็นการแปลงค่าประมาณต่อเนื่องขนาด 8-bit แบบง่าย
ใน PSoCᵀᴹ ไมโครคอลโทรเลอร์ จะมีตัว ADC เป็นส่วนประกอบฮาร์ดแวร์ที่สามารถอ่านแรงดันจากขาอนาล็อก (โหมดแบบเดี่ยว - single ended mode) หรือคู่ขาอนาล็อก (โหมดเชิงเส้น - differential mode) แล้วแปลงเป็นค่าดิจิตอลที่ PSoCᵀᴹ ไมโครคอลโทรเลอร์ สามารถตีความได้ โดยในโหมดแบบเดี่ยว ADC จะอ่านแรงดันที่ขาอนาล็อกที่ระบุเมื่อเทียบกับดินหรือค่าอ้างอิงอื่นๆ ในขณะที่ ในโหมดเชิงเส้น ADC จะอ่านแรงดันระหว่างขาอนาล็อกสองขาที่ระบุ จำนวนบิตในผลลัพธ์ที่ ADC สร้างขึ้นจะกำหนดความละเอียดของ ADC ตัวอย่างเช่น ผลลัพธ์ที่ 12-bit ADC สามารถสร้างขึ้นจะอยู่ในช่วง
0 → 2¹²
=0 → 4096
สำหรับการวัดในโหมดแบบเดี่ยว-2¹¹ → 2¹¹
=-2048 → +2048
สำหรับการวัดในโหมดแบบเชิงเส้น
ในช่วงแรงดันอินพุตของ PSoCᵀᴹ ADC สามารถปรับค่าได้และแตกต่างกันตามอุปกรณ์ โดยทั่วไปแรงดันที่สามารถวัดได้คือ 0 → 2*Vref
สำหรับการวัดแบบเดี่ยวและ Vx ± Vref
สำหรับการวัดแบบเชิงเส้น โดยที่ Vref เป็นแรงดันอ้างอิงที่สร้างขึ้นในชิป และ Vx เป็นอินพุตลบ สำหรับการวัดแบบเชิงเส้น
ผลลัพธ์ที่ ADC สร้างขึ้นมีหน่วยว่า "counts" โดยแต่ละ "count" แทนส่วนหนึ่งของช่วงแรงดันอินพุตทั้งหมด
ตัวอย่างเช่น
ถ้าช่วงอินพุตคือ ±5V (ทั้งหมด 10V) และ ADC มีความละเอียด 12 บิต (12-bit หรือ 2¹²) ดังนั้นแต่ละ count จะเท่ากับ
หรือเท่ากับ
คำถาม: ถ้า input voltage ที่เข้าไปเท่ากับ 2V ตัว ADC จะนับจำนวน count ออกมาได้เท่าไหร่
คำตอบ: counts = 409.5 * 2 = 819 counts
PSoCᵀᴹ devices มี ADC อยู่สองแบบคือ
Successive Approximation Register (SAR)
Sigma-Delta or Delta-Sigma
ในการเขียนโปรแกรมสำหรับบอร์ด PSoC6 จะมีการเรียกใช้ฟังก์ชัน cyhal_adc_init เพื่อกำหนดการทำงานเริ่มต้นให้กับ PSoCᵀᴹ ADC ผ่านตัวแปร obj
ของ ADC object, ตัวแปร pin ของ
input pin และตัวแปร clk
ของ clock
นอกจากนั้นจะเรียกใช้ฟังก์ชัน cyhal_adc_channel_init_diff เพื่อกำหนดจำนวนช่องสัญญาณที่จะรับเข้ามา (channel) และฟังก์ชัน cyhal_adc_read สำหรับการอ่านผลลัพธ์จากการแปลงสัญญาณอนาล็อกเป็นดิจิตอลต่อไป
ตัวอย่างโปรแกรมการอ่านค่าสัญญาณอนาล็อกแบบ 1 channel
รายละเอียดเพิ่มเติมทางเทคนิค
Last updated