วัตถุประสงค์ของโปรแกรมนี้เพื่อให้เกิดความเข้าใจการทำงานของโมดูล ADC ที่อยู่ในตัวไมโครคอนโทรลเลอร์ เพราะโมดุล ADC ถูกนำไปประยุกต์ใช้ในหลากหลายงาน ขบวนการแปลงแอนะล็อกเป็นดิจิตอลจะเริ่มจากการสุ่มค่าแรงดันมาเก็บที่ส่วนของวงจร S/H จากนั้นนำแรงดันที่ได้ผ่านขบวนการแปลงของส่วนวงจร ADC แล้วจัดเก็บข้อมูลดิจิตอลตามรูปแบบที่กำหนด สรุปการตั้งค่าโมดุล ADC ได้ดังนี้ (รีจีสเตอร์ที่ระบุเป็นของไมโครคอนโทรลเลอร์ dsPIC30Fxxxx)
1) เลือกขาพอร์ตให้ทำงานเป็นอินพุตแบบแอนะล็อก (ADPCFG)
2) เลือกรูปแบบผลลัพธ์ (ADCON1bits.FORM)
3) เลือกแหล่งกระตุ้นการเริ่มแปลงสัญญาณ (ADCON1bits.SSRC)
4) เลือกรูปแบบการจัดลำดับการสุ่มของวงจร S/H (ADCON1bits.SIMSAM)
5) กำหนดเงื่อนไขการเริ่มสุ่มสัญญาณ (ADCON1bits.ASAM)
6) กำหนดจำนวนช่องของวงจร S/H (ADCON2bits.CHPS)
7) กำหนดจำนวนการแปลงข้อมูลต่อการอินเตอร์รัฟ (ADCON2bits.SMPI)
8) กำหนดเวลาในการแปลงข้อมูล (ADCON3bits.ADCS)
9) กำหนดจำนวนอินพุตที่ต้องทำงานร่วมกับ S/H (ADPCFG)
ข้อมูลการแปลงเก็บอยู่ที่ตัวพักข้อมูล ADCBUF มี 16 ตัว คือ ADCBUF0 ถึง ADCBUFF ซึ่งนำมาใช้ประโยชน์ในกรณีที่มีการอ่านค่าแรงดันหลาย ๆ ค่า โดยกำหนดจากการอินเตอร์รัฟ (ข้อ 7) สำหรับย้ายข้อมูลไปที่ตัวแปรสำหรับการคำนวณต่อไป สำหรับตัวอย่างโปรแกรมเป็นการอ่านแรงดัน 2 ช่อง ๆ ละ 5 ค่า โดยแรงดันทั้งสองช่องถูกสุ่มที่เวลาเดียวกันและมีระยะห่างการสุ่มเท่ากันตามรูปที่ 1 จากนั้นนำทั้ง 5 ค่าของแต่ละช่องสัญญาณหาค่าเฉลี่ย แล้วแสดงค่าแรงดันผ่านจอแสดงผล LCD ตามวงจรรูปที่ 2
รูปที่ 1 เงื่อนไขการอ่านข้อมูลแรงดัน
รูปที่ 2 วงจรวัดค่าแรงดันไฟฟ้ากระแสตรง
การออกแบบโปรแกรมสำหรับวัดค่าแรงดันไฟฟ้ากระแสตรงจะอ่านค่ามาทั้งหมด 5 ค่า โดยแต่ละค่าให้ห่างกัน 5 ms ดังนั้นต้องคำนวณหาค่า PR ของ Timer3 สำหรับไปกระตุ้นการทำงานของโมดูล ADC โดยทั่วไปโมดูล Timer จะมีความสามารถในการลดความถี่สำหรับ Timer หรือเรียกว่าการปรับอัตราปรีสเกลเลอร์ (Clock Prescale) เมื่อมีการปรับอัตราปรีสเกลเลอร์ สมการสำหรับคำนวณหาค่า PR คือ
ปรับอัตราปรีสเกลเลอร์ท่ากับ 1 ความถี่หลักของระบบ(Fosc)มีค่า 4 MHz และ PLL=8 เมื่อต้องการเวลา 0.005 วินาที คำนวณหาค่า PR ได้ดังนี้
รูปที่ 3 การทดสอบวงจรวัดค่าแรงดันไฟฟ้ากระแสตรง 2 ช่อง