- ส่วนประกอบที่จำเป็น:
- แผนภาพวงจร Arduino Voltmeter:
- การทำงานของโวลต์มิเตอร์ AC ที่ใช้ Arduino:
- จำลองสถานการณ์:
- คำอธิบายรหัส:
ในโครงการนี้เราจะสร้างอุปกรณ์วัดแรงดันไฟฟ้ากระแสสลับโดยใช้ Arduinoซึ่งจะวัดแรงดันไฟฟ้าของแหล่งจ่ายกระแสสลับที่บ้านของเรา เรากำลังจะพิมพ์แรงดันไฟฟ้านั้นบนจอภาพอนุกรมของ Arduino IDE และแสดงบนมัลติมิเตอร์
การทำ Digital Voltmeter นั้นง่ายกว่าการทำอนาล็อกเพราะในกรณีของโวลต์มิเตอร์แบบอนาล็อกคุณต้องมีความรู้เกี่ยวกับพารามิเตอร์ทางกายภาพเช่นแรงบิดการสูญเสียแรงเสียดทานเป็นต้นในขณะที่ในกรณีของดิจิตอลโวลต์มิเตอร์คุณสามารถใช้เมทริกซ์ LCD หรือ LED หรือ แม้แต่แล็ปท็อปของคุณ (เช่นในกรณีนี้) เพื่อพิมพ์ค่าแรงดันไฟฟ้าให้คุณ นี่คือโครงการ Digital Voltmeterบางส่วน:
- วงจรดิจิตอลโวลต์มิเตอร์แบบง่ายพร้อม PCB โดยใช้ ICL7107
- LM3914 วงจรโวลต์มิเตอร์
- 0-25V Digital Voltmeter โดยใช้ AVR Microcontroller
ส่วนประกอบที่จำเป็น:
- หม้อแปลง 12-0-12 หนึ่งตัว
- 1N4007 ไดโอด
- ตัวเก็บประจุ 1uf
- ตัวต้านทาน 10k; 4.7 พัน.
- ซีเนอร์ไดโอด (5v)
- Arduino UNO
- การเชื่อมต่อสายไฟ
แผนภาพวงจร Arduino Voltmeter:
แผนภาพวงจรสำหรับโวลต์มิเตอร์ Arduinoนี้แสดงไว้ด้านบน
การเชื่อมต่อ:
- เชื่อมต่อด้านแรงดันไฟฟ้าสูง (220V) ของหม้อแปลงเข้ากับแหล่งจ่ายไฟหลักและแรงดันไฟฟ้าต่ำ (12v) เข้ากับวงจรแบ่งแรงดันไฟฟ้า
- เชื่อมต่อตัวต้านทาน 10k แบบอนุกรมกับตัวต้านทาน 4.7k แต่ตรวจสอบให้แน่ใจว่าได้รับแรงดันไฟฟ้าเป็นอินพุตข้ามตัวต้านทาน 4.7k
- เชื่อมต่อไดโอดตามที่แสดง
- เชื่อมต่อตัวเก็บประจุและซีเนอร์ไดโอดผ่าน 4.7k
- เชื่อมต่อสายจากขั้ว n ของไดโอดเข้ากับขาอะนาล็อก A0 ของ Arduino
** หมายเหตุ: เชื่อมต่อขากราวด์ของ Arduino กับจุดดังที่แสดงในรูปไม่เช่นนั้นวงจรจะไม่ทำงาน
ต้องการวงจรแบ่งแรงดันไฟฟ้าหรือไม่?
ในขณะที่เราใช้หม้อแปลง 220/12 v เราจะได้รับ 12 v ที่ด้าน lv เนื่องจากแรงดันไฟฟ้านี้ไม่เหมาะเป็นอินพุตสำหรับ Arduino เราจึงจำเป็นต้องมีวงจรแบ่งแรงดันไฟฟ้าซึ่งสามารถให้ค่าแรงดันไฟฟ้าที่เหมาะสมเป็นอินพุตไปยัง Arduino ได้
ทำไมต้องเชื่อมต่อไดโอดและตัวเก็บประจุ?
เนื่องจาก Arduino ไม่ได้รับค่าแรงดันลบเป็นอินพุตก่อนอื่นเราจึงต้องลบวงจรเชิงลบของการลดขั้นตอนลง AC เพื่อให้ Arduino รับเฉพาะค่าแรงดันไฟฟ้าบวกเท่านั้น ดังนั้นไดโอดจึงเชื่อมต่อเพื่อแก้ไขแรงดันไฟฟ้าลดขั้นตอน ตรวจสอบวงจรเรียงกระแสครึ่งคลื่นและวงจรเรียงกระแสคลื่นเต็มเพื่อเรียนรู้เพิ่มเติมเกี่ยวกับการแก้ไข
แรงดันไฟฟ้าที่แก้ไขนี้ไม่ราบรื่นเนื่องจากมีระลอกคลื่นขนาดใหญ่ซึ่งไม่สามารถให้ค่าอะนาล็อกที่แน่นอนใด ๆ กับเราได้ ดังนั้นตัวเก็บประจุจึงเชื่อมต่อเพื่อให้สัญญาณ ac ราบรื่น
วัตถุประสงค์ของซีเนอร์ไดโอด?
Arduino อาจได้รับความเสียหายหากป้อนแรงดันไฟฟ้ามากกว่า 5v ดังนั้นจึงมีการเชื่อมต่อไดโอดซีเนอร์ 5v เพื่อความปลอดภัยของ Arduino ซึ่งจะพังทลายในกรณีที่แรงดันไฟฟ้าเกิน 5v
การทำงานของโวลต์มิเตอร์ AC ที่ใช้ Arduino:
1. ลดแรงดันไฟฟ้าลงที่ด้าน lv ของหม้อแปลงซึ่งเหมาะสำหรับใช้กับตัวต้านทานกำลังไฟฟ้าปกติ
2. จากนั้นเราจะได้ค่าแรงดันไฟฟ้าที่เหมาะสมกับตัวต้านทาน 4.7k
แรงดันไฟฟ้าสูงสุดที่สามารถวัดได้จากการจำลองวงจรนี้บนโปรตีอุส (อธิบายในส่วนการจำลอง)
3. Arduino รับแรงดันไฟฟ้านี้เป็นอินพุตจากขา A0 ในรูปแบบของค่าอนาล็อกระหว่าง 0 ถึง 1023 0 เป็น 0 โวลต์และ 1023 เป็น 5v
4. จากนั้น Arduino จะแปลงค่าแอนะล็อกนี้เป็นแรงดันไฟฟ้ากระแสสลับที่สอดคล้องกันโดยใช้สูตร (อธิบายในส่วนรหัส).
จำลองสถานการณ์:
วงจรที่แน่นอนถูกสร้างขึ้นในโปรตีอุสแล้วจำลองขึ้น เพื่อหาแรงดันไฟฟ้าสูงสุดที่วงจรนี้สามารถวัดการตีได้และใช้วิธีการทดลอง
ในการสร้างแรงดันไฟฟ้าสูงสุดของเครื่องกำเนิดไฟฟ้ากระแสสลับ 440 (311 rms) พบว่าแรงดันไฟฟ้าที่ขา A0 มีค่าสูงสุด 5 โวลต์ ดังนั้นวงจรนี้สามารถวัดแรงดันไฟฟ้าได้สูงสุด 311 rms
การจำลองจะดำเนินการสำหรับแรงดันไฟฟ้าต่างๆระหว่าง 220 rms ถึง 440v
คำอธิบายรหัส:
รหัส ArduinoVoltmeter ที่สมบูรณ์จะได้รับในตอนท้ายของโครงการนี้และอธิบายได้ดีผ่านความคิดเห็น เรากำลังอธิบายบางส่วนของมัน
m คือค่าอนาล็อกอินพุตที่ได้รับบนพิน A0 กล่าวคือ
m = pinMode (A0, อินพุต); // กำหนดพิน a0 เป็นพินอินพุต
ในการกำหนดตัวแปร n ให้กับสูตรนี้ n = (m * . 304177) ขั้น แรกการคำนวณบางประเภทจะดำเนินการโดยใช้ข้อมูลที่ได้รับในส่วนการจำลอง:
ดังที่เห็นในภาพถ่ายจำลองค่าอนาล็อก 5v หรือ 1023 จะได้รับที่ขา A0 เมื่อแรงดันไฟฟ้ากระแสสลับอินพุตคือ 311 โวลต์ ดังนั้น:
ดังนั้นค่าอะนาล็อกแบบสุ่มใด ๆ จึงสอดคล้องกับ (311/1023) * m โดยที่ m ได้รับค่าอนาล็อก
ดังนั้นเราจึงมาถึงสูตรนี้:
n = (311/1023) * m โวลต์หรือ n = (m *.304177)
ตอนนี้ค่าแรงดันไฟฟ้านี้จะถูกพิมพ์บนมอนิเตอร์แบบอนุกรมโดยใช้คำสั่งอนุกรมตามที่อธิบายด้านล่าง และยังแสดงบนมัลติมิเตอร์ตามที่แสดงในวิดีโอด้านล่าง
ค่าที่พิมพ์บนหน้าจอ ได้แก่:
ค่าอินพุตอนาล็อกตามที่ระบุในรหัส:
Serial.print ("อินพุตอนาล็อก"); // สิ่งนี้ให้ชื่อซึ่งเป็น "อินพุตอะนาล็อก" สำหรับค่าอนาล็อกที่พิมพ์ Serial.print (m) // สิ่งนี้จะพิมพ์ค่าอนาล็อกอินพุต
แรงดันไฟฟ้ากระแสสลับที่ต้องการตามที่ระบุในรหัส:
Serial.print ("แรงดันไฟฟ้า ac"); // สิ่งนี้ให้ชื่อ "แรงดันไฟฟ้ากระแสสลับ" เป็นค่าอะนาล็อกที่พิมพ์ Serial.print (n); // นี่เป็นการพิมพ์ค่าแรงดัน ac