บทที่ 7
การแปลงสัญญาณอะนาล๊อก เป็นดิจิทัล (ADC : Analog to Digital Converter)
ADC ใช้สำหรับแปลงแรงดันไฟฟ้าอินพุตแบบแอนะล็อกให้เป็นรูปแบบดิจิทัล ไมโครคอนโทรลเลอร์ทุกตัวจำเป็นต้องมี ADC เนื่องจากไมโครคอนโทรลเลอร์ทั้งหมดทำงานเฉพาะกับแรงดันไฟฟ้า
ขาเข้าและขาออกแบบดิจิตอลเท่านั้น ดังนั้น ADC จึงนำแรงดันไฟฟ้าแบบแอนะล็อกมาแปลงเป็นดิจิทัล แล้วส่งให้กับไมโครคอนโทรลเลอร์
ESP32 ADC
ADC ของ ESP32 มีจำนวน 16 ช่อง ช่องละ 12 บิต สามารถใช้อ่านค่าแรงดันอะนาล๊อกตั้งแต่ 0 - 3.3 V จึงสามารถแปลงเป็นค่าดิจิทัลตั้งแต่ 0 ถึง 4095 (2^12)
โดยสามารถคำนวณหาค่า resolation หรือค่าความละเอียดของแรงดันไฟฟ้าด้านอะนาล๊อก ต่อการเปลี่ยนแปลงดิจิทัล 1 ค่า
เมื่อทราบค่า Resolution แล้วสามารถคำนวณหาค่าดิจิทัล ที่จะถูกแปลงจากสัญญาณอะนาล๊อกได้จากสมการ
ADC Pins ของ ESP32
จำนวน ADC ของ ESP32 มีจำนวน 16 ช่อง แต่ละช่องขนาด 12 บิต มีแรงดันอ้างอิง (Vref) 3.3V โดยตำแหน่งขา ADC ดังรูปด้านบน
การอ่าน ADC ของแต่ละช่อง จะใช้คำสั่ง analogRead(pin) โดยสามารถกำหนดขาหรือช่อง
analogRead(pin);
โดย pin คือ หมายเลขขา ADC ที่ต้องการอ่าน เช่น analogRead(A0);
หมายถึงต้องการอ่านค่าดิจิทัล จากขา ADC ช่อง A0 ซึ่งจะให้ค่าระหว่าง 0-4095
วงจรการทดลอง อ่านค่า ADC จากขา A0
การทดลองจะใช้ Wokwi เพื่อจำลองการอ่านค่าจาก A0 (VP) โดยใช้อุปกรณ์ Potentiometer เป็นความต้านทานปรับค่าได้
นำโค้ดตัวอย่างไปวางใน Editor ของ Wokwi แล้วทดลองรัน จะเห็นข้อความแสดงค่าดิจิทัลทีอ่านได้จากขา A0 ปรากฏที่ Serial Monitor
ให้ทดลองปรับหมุนค่า Potentiometer แล้วสังเกตตัวเลขที่ Serial Monitor
ให้ทดลองเปลี่ยน Potentiometer เป็น Sensor วัดอุณหภูมิ ชนิด NTC Thermistor ซึ่งจะให้ค่าอุณหภูมิออกมาเป็นแรงดันไฟฟ้าที่ผันแปรกับความต้านทาน ต่อวงจรดังรูป
และให้คัดลอกโค้ดไปใส่ใน editor ของ Wokwi
จากวงจรการแปลงอนาล๊อกเป็นดิจิทัลของ ESP32 หากวัดแรงดันไฟฟ้าที่ขา A0 ได้ 1.5 V จงคำนวณค่าตัวเลขดิจิทัลที่จะนำไปใช้ในไมโครคอนโทรลเลอร์
Reference
ADC of ESP32ESP32 With NTC Thermistor
https://www.geeksforgeeks.org/digital-logic/microcontroller-and-its-types/