http://ww1.microchip.com/downloads/en/DeviceDoc/ATmega48A-PA-88A-PA-168A-PA-328-P-DS-DS40002061A.pdf
จากคำสั่ง analogRead() จะได้ค่า ADC อยู่ระหว่าง 0 - 1023 โดยที่
• 0x000 คือ Ground จะไม่นับเป็น 1 step
• 0x3FF คือค่าสูงสุดที่วัดได้ ซึ่งจะน้อยกว่า Vref อยู่ 1 step
จึงสรุปได้ดังนี้
1. การแปลงค่า ADC กลับไปเป็น Voltage จะต้องหารด้วย 1024 (ไม่ใช่ 1023)
Code: Select all
int level = analogRead(A1);
float voltage = level * (5.0 / 1024.0);
3. จำง่ายๆว่า Vref = 1024 = 5.0 volt เพียงแต่ ADC จะให้ค่าสูงสุดได้แค่ 1023 เพราะไบต์ไม่พอ