ในโครงการนี้เรากำลังจะทำให้ช่วงต่ำแอมมิเตอร์ใช้ ATMEGA8 ไมโครคอนโทรลเลอร์ ใน ATMEGA8 เราจะใช้คุณสมบัติ 10bit ADC (Analog to Digital Conversion) เพื่อทำสิ่งนี้ แม้ว่าเราจะมีวิธีอื่นในการรับพารามิเตอร์ปัจจุบันจากวงจร แต่เราจะใช้วิธีการลดลงของตัวต้านทานเนื่องจากเป็นวิธีที่ง่ายและง่ายที่สุดในการรับพารามิเตอร์ปัจจุบัน
ในวิธีนี้เราจะส่งกระแสที่จำเป็นต้องวัดเป็นความต้านทานเล็กน้อยโดยวิธีนี้เราจะได้รับความต้านทานลดลงซึ่งเกี่ยวข้องกับกระแสที่ไหลผ่าน แรงดันไฟฟ้าข้ามความต้านทานนี้ป้อนให้กับ ATMEGA8 สำหรับการแปลง ADC ด้วยการที่เราจะมีค่าปัจจุบันเป็นค่าดิจิตอลซึ่งจะแสดงบนจอ LCD 16x2
เพื่อที่เราจะใช้วงจรแบ่งแรงดันไฟฟ้า เราจะป้อนกระแสผ่านสาขาความต้านทานที่สมบูรณ์ จุดกึ่งกลางของสาขาถูกนำไปวัด เมื่อการเปลี่ยนแปลงในปัจจุบันจะมีการเปลี่ยนแปลงลดลงของความต้านทานซึ่งเป็นเส้นตรง ด้วยเหตุนี้เราจึงมีแรงดันไฟฟ้าซึ่งเปลี่ยนไปตามความเป็นเส้นตรง
ตอนนี้สิ่งสำคัญที่ควรทราบก็คืออินพุตที่คอนโทรลเลอร์สำหรับการแปลง ADC นั้นต่ำถึง 50µAmp ผลการโหลดของตัวแบ่งแรงดันตามความต้านทานนี้มีความสำคัญเนื่องจากกระแสที่ดึงมาจาก Vout ของตัวแบ่งแรงดันจะเพิ่มเปอร์เซ็นต์ความผิดพลาดที่เพิ่มขึ้นในตอนนี้เราไม่จำเป็นต้องกังวลเกี่ยวกับผลการโหลด
ส่วนประกอบที่จำเป็น
ฮาร์ดแวร์: ATMEGA8, แหล่งจ่ายไฟ (5v), AVR-ISP PROGRAMMER, JHD_162ALCD (16 * 2LCD), ตัวเก็บประจุ 100uF, ตัวเก็บประจุ 100nF (4 ชิ้น), ตัวต้านทาน100Ω (7 ชิ้น) หรือ2.5Ω (2 ชิ้น), ตัวต้านทาน100KΩ
ซอฟต์แวร์: Atmel studio 6.1, progisp หรือ flash magic
แผนภาพวงจรและคำอธิบายการทำงาน
แรงดันไฟฟ้าข้าม R2 และ R4 ไม่เป็นเส้นตรงอย่างสมบูรณ์ มันจะมีเสียงดัง ในการกรองสัญญาณรบกวนตัวเก็บประจุจะถูกวางไว้บนตัวต้านทานแต่ละตัวในวงจรแบ่งดังแสดงในรูป
ใน ATMEGA8 เราสามารถให้อินพุตแบบอะนาล็อกแก่ PORTC สี่ช่องทางใดก็ได้ไม่สำคัญว่าเราจะเลือกช่องใดเพราะทั้งหมดจะเหมือนกัน เราจะเลือกช่อง 0 หรือ PIN0 ของ PORTC ใน ATMEGA8 ADC มีความละเอียด 10 บิตดังนั้นคอนโทรลเลอร์จึงสามารถตรวจจับการเปลี่ยนแปลงขั้นต่ำของ Vref / 2 ^ 10 ได้ดังนั้นหากแรงดันอ้างอิงคือ 5V เราจะได้รับการเพิ่มเอาต์พุตดิจิตอลทุก ๆ 5/2 ^ 10 = 5mV ดังนั้นสำหรับทุกๆ 5mV ที่เพิ่มขึ้นในอินพุตเราจะเพิ่มขึ้นหนึ่งครั้งที่เอาต์พุตดิจิตอล
ตอนนี้เราต้องตั้งค่าการลงทะเบียนของ ADCตามเงื่อนไขต่อไปนี้:
1. ก่อนอื่นเราต้องเปิดใช้งานคุณสมบัติ ADC ใน ADC
2. ที่นี่จะได้รับแรงดันไฟฟ้าอินพุตสูงสุดสำหรับการแปลง ADC คือ + 5V ดังนั้นเราจึงสามารถตั้งค่าสูงสุดหรือการอ้างอิงของ ADC เป็น 5V
3. คอนโทรลเลอร์มีคุณสมบัติการแปลงทริกเกอร์ซึ่งหมายความว่าการแปลง ADC จะเกิดขึ้นหลังจากทริกเกอร์ภายนอกเท่านั้นเนื่องจากเราไม่ต้องการให้เราต้องตั้งค่าการลงทะเบียนเพื่อให้ ADC ทำงานในโหมดการทำงานฟรีอย่างต่อเนื่อง
4. สำหรับ ADC ใด ๆ ความถี่ของการแปลง (ค่าอนาล็อกเป็นค่าดิจิตอล) และความแม่นยำของเอาต์พุตดิจิตอลจะแปรผกผัน ดังนั้นเพื่อความแม่นยำที่ดีขึ้นของเอาต์พุตดิจิตอลเราต้องเลือกความถี่ที่น้อยกว่า สำหรับนาฬิกา ADC ปกติเรากำลังตั้งค่าการขายล่วงหน้าของ ADC เป็นค่าสูงสุด (2) เนื่องจากเราใช้นาฬิกาภายใน 1MHZ นาฬิกาของ ADC จะเป็น (1000000/2)
นี่เป็นเพียงสี่สิ่งที่เราต้องรู้เพื่อเริ่มต้นใช้งาน ADC
คุณสมบัติทั้งสี่ประการข้างต้นถูกกำหนดโดยการลงทะเบียนสองรายการ
RED (ADEN): ต้องตั้งค่าบิตนี้เพื่อเปิดใช้งานคุณลักษณะ ADC ของ ATMEGA
BLUE (REFS1, REFS0): บิตทั้งสองนี้ใช้เพื่อกำหนดแรงดันอ้างอิง (หรือแรงดันไฟฟ้าขาเข้าสูงสุดที่เราจะให้) เนื่องจากเราต้องการมีแรงดันอ้างอิง 5V จึงควรกำหนด REFS0 ตามตาราง
สีเหลือง (ADFR): ต้องตั้งค่าบิตนี้เพื่อให้ ADC ทำงานอย่างต่อเนื่อง (โหมดการทำงานฟรี)
PINK (MUX0-MUX3): สี่บิตนี้ใช้สำหรับบอกช่องสัญญาณเข้า เนื่องจากเราจะใช้ ADC0 หรือ PIN0 เราจึงไม่จำเป็นต้องตั้งค่าบิตใด ๆ ตามตาราง
BROWN (ADPS0-ADPS2): บิตทั้งสามนี้ใช้สำหรับตั้งค่า prescalar สำหรับ ADC เนื่องจากเราใช้ prescalar เป็น 2 เราจึงต้องตั้งค่าหนึ่งบิต
DARK GREEN (ADSC): บิตนี้ตั้งค่าสำหรับ ADC เพื่อเริ่มการแปลง บิตนี้สามารถปิดใช้งานได้ในโปรแกรมเมื่อเราต้องการหยุดการแปลง