กลับไปหน้ารวมไฟล์
arduino-volt-meter-12f940.md

บทนำ:

ในโปรเจกต์นี้ ผมจะสร้าง Digital Voltmeter โดยใช้ Arduino nano และ HD44780 Compatible 16*2 LCD เราจะป้อนแรงดันไฟ analog ที่ต้องการวัดเข้าสู่ขา analog input ขาหนึ่งของ Arduino เราสามารถวัดแรงดัน DC ได้สูงสุด 5V ด้วย Digital Voltmeter นี้ ผมจะพยายามเพิ่มช่วงการวัดให้มากขึ้นในโปรเจกต์ต่อๆ ไป

รายการ Hardware:

  • 1. Arduino Nano
  • 2. HD44780 LCD Display ( 16*2)
  • 3. 10K potentiometer
  • 4. Bread Board
  • 5. 10K trimmer potentiometer
  • 6. Jumper wire
  • 7. 100 ohm resistor
  • 8. Mini B USB Cable

ทำตามขั้นตอนที่ให้ไว้เพื่อตั้งค่าทุกอย่างให้ถูกต้อง

ขั้นตอนที่ 1 – เสียบ Arduino nano และ HD44780 LCD display ลงบน Bread Board อย่างระมัดระวัง หลังจากเสียบอุปกรณ์ทั้งสองนี้แล้ว ให้เสียบ 10K trimmer, 10K potentiometer และ 100 ohm resistor เพิ่มเติมตามที่แสดงในรูปภาพด้านล่าง

ขั้นตอนที่ 2 – เชื่อมต่อขาต่างๆ ของ hardware เข้าด้วยกันตาม Schematic diagram ที่ให้ไว้ เมื่อการเดินสาย hardware เสร็จสิ้น โปรดตรวจสอบการเชื่อมต่อทั้งหมดซ้ำสองครั้ง เพื่อไม่ให้เกิดข้อผิดพลาดในการเดินสายใดๆ หลังจากเดินสายแล้ว การตั้งค่าของคุณจะมีลักษณะดังนี้

Fig-1

ขั้นตอนที่ 3 – ปรับความคมชัดของตัวอักษรที่แสดงบนหน้าจอ LCD ให้ได้ระดับที่คุณต้องการ โดยหมุนปุ่มของ 10K Trimmer ตามเข็มนาฬิกาหรือทวนเข็มนาฬิกาด้วยไขควง

Fig-2

ขั้นตอนที่ 4 – เขียน Sketch เพื่ออ่านแรงดันไฟ analog จากขา analog ขาหนึ่งของ Arduino และแสดงค่าแรงดันนี้บน LCD Display

ในการคำนวณแรงดันไฟ analog input ของขา analog input ใดๆ เราใช้สูตรพื้นฐานของ DAC หรือ ADC Convertor ซึ่งก็คือ

Vout = (digital input * Vref)/Resolution of the ADC

ไมโครคอนโทรลเลอร์ Atemega328P ของ Arduino nano มี ADC ชนิด Successive approximation แบบ 10 Bit ที่แปลงค่า analog เป็นค่า binary ขนาด 10 bit

ขั้นตอนที่ 5 – หลังจากคำนวณค่าแรงดันบนขา analog ของ Arduino แล้ว เราจะแสดงค่าแรงดันนี้บน 16*2 LCD

ขั้นตอนที่ 6 – หลังจากเขียน Sketch แล้ว ให้ Verify Sketch และเมื่อการ Verify เสร็จสิ้น คุณควร Upload Sketch นี้ไปยัง hardware ของคุณโดยใช้ Latest Arduino Software

Sketch (โค้ด C/C++)

#include

LiquidCrystal lcd(5,6,7,8,9,10);

float voltage;

float val;

const int Vref = 5.0;

const int resolution = 1024.0;

void setup() {

// put your setup code here, to run once:

lcd.begin(16,2);

lcd.setCursor(0,0);

lcd.print("Voltage:");

}

void loop() {

// put your main code here, to run repeatedly:

val = analogRead(A3);

voltage = (val*Vref)/resolution;

lcd.setCursor(0,1);

lcd.print(voltage);

delay(90);

}

รูปภาพผลงานของผม -

Schematicdiagram -

รายละเอียดทางเทคนิคเพิ่มเติม

ทฤษฎีการแบ่งแรงดัน (Voltage Division Theory)

แม้ว่า ADC ของ Arduino สามารถวัดแรงดันได้สูงสุดเพียง 5V แต่โปรเจกต์นี้ใช้ Resistor Voltage Divider เพื่อวัดแรงดันที่สูงกว่ามาก (เช่น 0-25V)

  • การออกแบบวงจร: ใช้ 10kΩ และ 2.2kΩ Resistor ต่ออนุกรมกัน ซึ่งจะปรับลดสัญญาณ 24V ลงมาเหลือประมาณ 4.3V ซึ่งปลอดภัยสำหรับขา analog ของ Arduino
  • หลักการทางคณิตศาสตร์: Firmware จะคูณค่าที่อ่านได้จาก ADC ดิบ (0-1023) ด้วย "Correction Factor" ที่ได้มาจากค่า Resistor และแรงดันอ้างอิง (5.0V)

ความปลอดภัยและการแสดงผล (Safety & Display)

  • การป้องกัน: มี Zener Diode (5.1V) คล่อมที่ input เพื่อป้องกันแรงดันเกินโดยไม่ตั้งใจ ซึ่งอาจสร้างความเสียหายให้กับไมโครคอนโทรลเลอร์
  • UI: แรงดันแบบเรียลไทม์จะแสดงบน 16x2 LCD ที่มีความแม่นยำ 2 ตำแหน่งทศนิยม สร้างเครื่องมือวินิจฉัยแบบพกพาที่สะดวกสบายสำหรับการทดสอบแบตเตอรี่และ Power supply

ข้อมูล Frontmatter ดั้งเดิม

title: "Arduino Volt Meter"
description: "Digital Voltmeter with Arduino And HD44780 LCD"
author: "ramjipatel376"
category: ""
tags:
  - "embedded"
  - "monitoring"
  - "robots"
views: 2108
likes: 0
price: 870
difficulty: "Intermediate"
components:
  - "1x Alphanumeric LCD, 16 x 2"
  - "1x Multitool, Screwdriver"
  - "1x Solderless Breadboard Full Size"
  - "1x Trimmer Potentiometer, Square"
  - "1x Jumper wires (generic)"
  - "1x Resistor 100 ohm"
  - "1x USB-A to Mini-USB Cable"
  - "1x Rotary Potentiometer, 10 kohm"
  - "1x Arduino Nano R3"
tools: []
apps:
  - "1x Arduino IDE"
downloadableFiles:
  - "https://projects.arduinocontent.cc/8eb25f63-660d-48b8-9b03-cc0b51855119.ino"
documentationLinks: []
passwordHash: "cca67460063e2a89552b31f34dfa8f1bc78b098794ac433706df29118b78d486"
encryptedPayload: "U2FsdGVkX18By5Njcqp6mhD4/5wNFfoVpjtDaYMiVt7rgd27BTUQiEvtR8Q13nCKqIUkJ7WjZaSslvU6eP9fF5GY/Qda6M+D24ZKchDhwV8="
seoDescription: "Learn how to build a Digital Voltmeter with Arduino and HD44780 LCD for accurate voltage measurement in your projects."
videoLinks: []
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/arduino-volt-meter-12f940_cover.jpg"
lang: "th"