วันพฤหัสบดีที่ 12 กรกฎาคม พ.ศ. 2561

(งาน4) https://www.electronicshub.org/digital-arduino-voltmeter/


เครื่องวัดโวลต์มิเตอร์ดิจิตอล Arduino



เครื่องวัดโวลต์มิเตอร์หรือเครื่องวัดแรงดันไฟฟ้าเป็นเครื่องมือวัดที่ใช้ในการวัดแรงดันหรือความต่างศักย์ระหว่างจุดสองจุดในวงจร โวลตมิเตอร์เป็นอุปกรณ์สำคัญ ๆ ที่เกี่ยวข้องกับโครงการอิเล็กทรอนิกส์ประเภทใด พวกเขาจะใช้ในการวัดแรงดันไฟฟ้าทั้ง AC และ DC
เครื่องวัดโวลต์มิเตอร์จะถูกแบ่งออกเป็นสองประเภท ได้แก่ เครื่องวัดโวลต์มิเตอร์และโวลต์มิเตอร์แบบดิจิตอล โวลต์มิเตอร์แบบอนาล็อกประกอบด้วยตัวชี้ที่เคลื่อนที่ข้ามสเกลและการเคลื่อนที่เป็นไปตามสัดส่วนของแรงดันไฟฟ้าที่วัดได้
Arduino Digital Voltmeter
โวลตมิเตอร์แบบอนาล็อกจะถูกจัดอยูตามหลักการกอสราง บางส่วนของโวลต์มิเตอร์ที่รู้จักกันทั่วไปคือโวลต์มิเตอร์แบบเคลื่อนที่แม่เหล็กถาวร, โวลต์มิเตอร์ชนิดรีทมิเตอร์, โวลต์มิเตอร์ชนิดไฟฟ้าสถิต, เครื่องยกโวลต์มิเตอร์ชนิดเคลื่อนย้าย ฯลฯ
โวลต์มิเตอร์แบบอนาล็อกทั่วไปมีเปอร์เซ็นต์ข้อผิดพลาด 5% และข้อผิดพลาดของ parallax มักเป็นปัญหา แต่โวลต์มิเตอร์แบบแอนะล็อกสามารถใช้วัดได้ตั้งแต่ไม่กี่โวลต์ถึงหลายพันโวลต์
เพื่อแก้ปัญหาข้อบกพร่องของโวลต์มิเตอร์แบบแอนะล็อก Voltmeters ดิจิตอลจะนำมาใช้ เครื่องวัดโวลต์มิเตอร์แบบดิจิตอลจะแสดงแรงดันไฟฟ้าที่วัดได้บนจอแสดงผลดิจิทัลโดยตรงจากโวลต์มิเตอร์แบบอนาล็อกมาตราส่วนและตัวชี้เพื่อแสดงแรงดันไฟฟ้าที่วัดได้
เปอร์เซ็นต์ของข้อผิดพลาดในโวลต์มิเตอร์แบบดิจิตอลมักจะน้อยกว่า 1% และความแม่นยำสามารถเพิ่มขึ้นในเครื่องวัดปริมาตรความเที่ยงแบบดิจิตอลที่มีการวัดความเร็วสูงและตัวเลือกในการจัดเก็บค่าในหน่วยความจำ
ในโครงการนี้ได้มีการออกแบบเครื่องวัดโวลต์มิเตอร์แบบดิจิตอล Arduino ซึ่งสามารถวัดแรงดันไฟฟ้าได้ถึง 50 โวลต์

แผนภูมิวงจรรวม


ภาพที่ 1 - แผนภาพวงจรไฟฟ้าโวลต์มิเตอร์แบบดิจิตอล Arduino
Arduino Digital Voltmeter
รูปที่ 2 - แผนภาพวงจรไฟฟ้าของโวลต์มิเตอร์ดิจิตอล Arduino

ส่วนประกอบ

  • Arduino UNO
  • จอ LCD 16 x 2
  • POT 10KΩ
  • 100KΩ
  • 10KΩ
  • สายเชื่อมต่อ

คำอธิบายคอมโพเนนต์

Arduino UNO
Arduino UNO เป็นหนึ่งในคณะกรรมการต้นแบบด้านอิเล็คทรอนิคส์ที่ได้รับความนิยมมากที่สุดโดยอิงกับไมโครคอนโทรลเลอร์ ATmega328P ATmega328P เป็นไมโครคอนโทรลเลอร์แบบ 8 บิตที่ใช้สถาปัตยกรรม AVR
จอ LCD 16 x 2
จอแสดงผล LCD ขนาด 16 x 2 เป็นหน่วยแสดงผลที่ใช้โดยทั่วไปสำหรับแอพพลิเคชันที่ใช้ไมโครคอนโทรลเลอร์
สนับสนุนแถวละ 16 แถวด้วยแถวสองแถว นอกจากนี้ยังสนับสนุนอักขระพิเศษและแม้แต่อักขระที่กำหนดเอง
Arduino Digital Voltmeter

การออกแบบวงจร

สำหรับการวัดแรงดันไฟฟ้าน้อยกว่าหรือเท่ากับ 5V สามารถใช้วงจรแรกได้ สำหรับการวัดแรงดันไฟฟ้าได้ถึง 50V สามารถใช้วงจรที่สองได้ ส่วน LCD ในวงจรทั้งสองเหมือนกัน
ขา 1 และ 2 (Vss และ Vdd) ของขาจ่ายไฟ LCD สำหรับจอแสดงผล พวกเขาจะเชื่อมต่อกับพื้นดินและ + 5V จัดหาตามลำดับ Pin 3 (Vee) ของจอ LCD คือขาปรับความคมชัดของจอแสดงผล เชื่อมต่อกับเต้ารับปัดน้ำฝนของ POT 10KΩในขณะที่ขั้วอื่น ๆ ของ POT เชื่อมต่อกับแหล่งจ่ายไฟ + 5V และพื้นดินตามลำดับ
หมุดสามตัวถัดไปของ LCD คือหมุดควบคุม Pins 4 และ 6 (RS และ E) ของ LCD เชื่อมต่อกับขาเข้าและขาออกดิจิตอล 2 และ 3 ของ Arduino ตามลำดับ Pin 5 (RW) ของจอ LCD เชื่อมต่อกับพื้น
การเชื่อมต่อครั้งต่อไปมีข้อมูลเกี่ยวกับหมุดข้อมูล LCD ใช้ในโหมดข้อมูล 4 บิตและใช้ข้อมูล D4 ถึง D7 ต่อพิน 11 ถึง 14 (D4 ถึง D7) ของจอ LCD เชื่อมต่อกับขาเข้าและขาออกดิจิตอล 4 ถึง 7 ของ Arduino หมุด 15 และ 16 เป็นหมุดป้อนของไฟ LED แบ็คไลท์ ขา 15 (LED +) ของ LCD เชื่อมต่อกับแหล่งจ่ายไฟ + 5V ผ่านตัวต้านทาน จำกัด กระแสไฟฟ้า220Ω หมุด 16 (LED-) ของ LCD เชื่อมต่อกับพื้น
ในวงจรแรกซึ่งใช้วัดแรงดันไฟฟ้าได้ถึง 5 โวลต์จะไม่มีการเชื่อมต่อเพิ่มเติมและแรงดันไฟฟ้าที่วัดได้จะเชื่อมต่อโดยตรงกับอินพุต A0 อะนาล็อกของ Arduino UNO
ในวงจรที่สองซึ่งใช้ในการวัดแรงดันไฟฟ้าได้ถึง 50 โวลต์เราจำเป็นต้องต่อวงจรแรงดันไฟฟ้าเพิ่มเติม เอาท์พุทของวงจรแบ่งแรงดันไฟฟ้าประกอบด้วยตัวต้านทาน100KΩและตัวต้านทาน10KΩเชื่อมต่อกับขาเข้าขาเข้าแบบอะนาล็อก A0 ของ Arduino UNO กับปลายอีกด้านหนึ่งของตัวต้านทาน100KΩที่เชื่อมต่อกับแรงดันไฟฟ้าที่จะวัดและอีกปลายหนึ่งของตัวต้านทาน10KΩที่เชื่อมต่ออยู่ พื้นดิน.
ขั้วดินของแรงดันไฟฟ้าเข้าจะต้องวัดและ Arduino UNO ต้องใช้กันทั่วไป
Arduino Digital Voltmeter

การทำงาน

จุดมุ่งหมายของโครงการคือการสร้างโวลต์มิเตอร์แบบดิจิตอลโดยใช้ Arduino UNO ส่วนประกอบที่จำเป็นและการก่อสร้างโครงการทำได้ง่ายมาก การทำงานของโครงการได้รับการอธิบายไว้ที่นี่
ในโวลต์มิเตอร์แบบดิจิตอลแรงดันไฟฟ้าที่จะวัดซึ่งอยู่ในรูปแบบอะนาล็อกจะถูกแปลงเป็นรูปแบบดิจิทัลด้วยความช่วยเหลือของ Analog to Digital Converters (ADC) ดังนั้นคุณลักษณะ ADC ของ Arduino UNO ถูกนำมาใช้ในโครงการนี้
ในวงจรแรกซึ่งใช้ในการวัดแรงดันไฟฟ้าสูงสุด 5 โวลต์แรงดันไฟฟ้าขาเข้าจะถูกใส่ให้กับขาอินพุทแบบอะนาล็อกของ Arduino แรงดันอ้างอิงของ ADC คือ 5V ADC ใน Arduino UNO มีความละเอียด 10 บิต ดังนั้นแรงดันไฟฟ้าขาเข้าคำนวณโดยการคูณค่าอนาล็อกที่ขาอะนาล็อกกับ 5 และหารค่าด้วย 2 10คือ 1024
ช่วงของแรงดันไฟฟ้าสำหรับอินพุตอนาล็อก Arduino UNOs คือ 0V ถึง 5V ดังนั้นเพื่อที่จะเพิ่มช่วงนี้ต้องใช้วงจร divider แรงดันไฟฟ้า
ในวงจรที่สองช่วงของอินพุตอะนาล็อกของ Arduino UNO จะเพิ่มขึ้นได้ถึง 50V โดยใช้ตัวต้านทานแรงดันไฟฟ้าประกอบด้วยตัวต้านทาน100KΩและตัวต้านทาน10KΩ ด้วยความช่วยเหลือของวงจรแรงดันไฟฟ้าแรงดันไฟฟ้าอินพุตจะถูกนำมาวัดลงไปที่ช่วงอินพุตแบบอนาล็อก Arduino UNOs
ส่วนที่เหลือของการคำนวณจะทำในส่วนการเขียนโปรแกรมของ Arduino UNO
บันทึก
  • ข้อเสียของการใช้โวลต์มิเตอร์มิเตอร์แรงดันไฟฟ้าแบ่งเป็นข้อผิดพลาดในการวัด ดังนั้นเราจำเป็นต้องใช้เครื่องวัดโวลต์มิเตอร์หลายช่วง
  • เพื่อลดข้อผิดพลาดอัตราส่วนของ R1 และ R2 ในตัวแบ่งแรงดันไฟฟ้าจะต้องน้อยที่สุด
  • ตัวอย่างเช่นในการวัดแรงดันไฟฟ้าขาเข้าที่ 50V อัตราส่วนของ R1 และ R2 ต้องมากกว่า ((50/5) - 1) เช่น
R1 / R2> ((50/5) - 1)
R1 / R2> 9
ดังนั้นถ้าเราเลือก R1 เป็น100KΩและ R2 เป็น10KΩก็เป็นไปได้ที่จะวัดแรงดันไฟฟ้าได้ถึง 50V

การประยุกต์ใช้งาน

  • เครื่องวัดโวลต์มิเตอร์แบบดิจิตอล Arduino ได้รับการออกแบบในโครงการนี้ซึ่งสามารถใช้วัดแรงดันไฟฟ้ากระแสตรงได้หลากหลายรูปแบบ
  • วงจรสามารถขยายเพื่อวัดแรงดันไฟฟ้ากระแสสลับที่มีการปรับเปลี่ยนเล็กน้อยในวงจรและรหัส

Code 1

#include "LiquidCrystal.h"
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
float voltage = 0.0;
float temp=0.0;
int analog_value;
void setup()
{
lcd.begin(16, 2);
lcd.setCursor (0,0);
lcd.print(" Arduino based ");
lcd.setCursor(0,1);
lcd.print("Digital Voltmeter");
delay(2000);
}
void loop()
{
analog_value = analogRead(A0);
temp = (analog_value * 5.0) / 1024.0;
voltage = temp/(0.0909);
if (voltage < 0.1)
{
voltage=0.0;
}
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Voltage= ");
lcd.print(voltage);
lcd.setCursor(13,1);
lcd.print("V");
delay(30);
}

Code 2

#include "LiquidCrystal.h"
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
float voltage = 0.0;
float temp=0.0;
int analog_value;
void setup()
{
lcd.begin(16, 2);
lcd.setCursor (0,0);
lcd.print(" Arduino based ");
lcd.setCursor(0,1);
lcd.print("Digital Voltmeter");
delay(2000);
}
void loop()
{
analog_value = analogRead(A0);
voltage = (analog_value * 5.0) / 1024.0;
if (voltage < 0.1)
{
voltage=0.0;
}
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Voltage= ");
lcd.print(voltage);
lcd.setCursor(13,1);
lcd.print("V");
delay(30);
}


ไม่มีความคิดเห็น:

แสดงความคิดเห็น