สร้างแอมป์มิเตอร์ดิจิตอลขั้นสูงโดยใช้ Arduino

ลองใช้เครื่องมือของเราเพื่อกำจัดปัญหา





ในโพสต์นี้เราจะสร้างแอมป์มิเตอร์แบบดิจิตอลโดยใช้จอ LCD 16 x 2 และ Arduino เราจะเข้าใจวิธีการวัดกระแสโดยใช้ตัวต้านทานแบบแบ่งและใช้การออกแบบตาม Arduino แอมป์มิเตอร์แบบดิจิตอลที่นำเสนอสามารถวัดกระแสได้ตั้งแต่ 0 ถึง 2 แอมแปร์ (ค่าสูงสุดสัมบูรณ์) ด้วยความแม่นยำที่สมเหตุสมผล

แอมมิเตอร์ทำงานอย่างไร

แอมป์มิเตอร์มีสองประเภท: อะนาล็อกและดิจิตอลการทำงานของพวกเขาแตกต่างกัน แต่ทั้งสองมีแนวคิดที่เหมือนกันคือตัวต้านทานแบบแบ่ง



ตัวต้านทานแบบแบ่งเป็นตัวต้านทานที่มีความต้านทานน้อยมากวางอยู่ระหว่างแหล่งจ่ายและโหลดในขณะที่วัดกระแส

มาดูกันว่าแอมป์มิเตอร์แบบอะนาล็อกทำงานอย่างไรแล้วจะเข้าใจง่ายขึ้น



แอมป์มิเตอร์แบบอะนาล็อกทำงานอย่างไร

ตัวต้านทานแบบแบ่งที่มีความต้านทานต่ำมาก R และสมมติว่ามิเตอร์อะนาล็อกบางชนิดเชื่อมต่อผ่านตัวต้านทานซึ่งการโก่งตัวเป็นสัดส่วนโดยตรงกับแรงดันไฟฟ้าผ่านมิเตอร์อนาล็อก

ตอนนี้เราจะส่งกระแสจำนวนหนึ่งจากด้านซ้ายมือ i1 คือกระแสก่อนเข้าสู่ตัวต้านทานแบบปัด R และ i2 จะเป็นกระแสหลังจากผ่านตัวต้านทานแบบปัด

i1 ปัจจุบันจะมากกว่า i2 เนื่องจากมันลดลงเศษของกระแสผ่านตัวต้านทานแบบปัด ความแตกต่างในปัจจุบันระหว่างตัวต้านทานแบบแบ่งทำให้เกิดแรงดันไฟฟ้าที่ V1 และ V2 จำนวนน้อยมาก
ปริมาณของแรงดันไฟฟ้าจะถูกวัดโดยมิเตอร์อนาล็อกนั้น

แรงดันไฟฟ้าที่พัฒนาข้ามตัวต้านทานแบบแบ่งขึ้นอยู่กับปัจจัยสองประการคือกระแสที่ไหลผ่านตัวต้านทานแบบแบ่งและค่าของตัวต้านทานแบบแบ่ง

หากกระแสไฟฟ้าไหลผ่านมากขึ้นแรงดันไฟฟ้าที่พัฒนาจะมีมากขึ้น ถ้าค่าของ shunt สูงแรงดันไฟฟ้าที่พัฒนาข้าม shunt จะมากขึ้น

ตัวต้านทานแบบแบ่งจะต้องมีค่าน้อยมากและต้องมีกำลังวัตต์ที่สูงขึ้น

ตัวต้านทานค่าขนาดเล็กช่วยให้มั่นใจได้ว่าโหลดได้รับกระแสและแรงดันไฟฟ้าเพียงพอสำหรับการทำงานปกติ

นอกจากนี้ตัวต้านทาน shunt จะต้องมีกำลังวัตต์ที่สูงขึ้นเพื่อให้สามารถทนต่ออุณหภูมิที่สูงขึ้นได้ในขณะที่วัดกระแส กระแสไฟฟ้าผ่าน shunt สูงขึ้นความร้อนจะถูกสร้างขึ้น

ตอนนี้คุณคงมีแนวคิดพื้นฐานแล้วว่าเครื่องวัดอนาล็อกทำงานอย่างไร ตอนนี้เรามาดูการออกแบบดิจิทัลกัน

ตอนนี้เรารู้แล้วว่าตัวต้านทานจะสร้างแรงดันไฟฟ้าถ้ามีการไหลของกระแส จากแผนภาพ V1 และ V2 คือจุดที่เรานำตัวอย่างแรงดันไฟฟ้าไปยังไมโครคอนโทรลเลอร์

การคำนวณแรงดันเป็นแปลงปัจจุบัน

ตอนนี้เรามาดูคณิตศาสตร์ง่ายๆว่าเราจะแปลงแรงดันไฟฟ้าที่ผลิตเป็นกระแสได้อย่างไร

กฎของโอห์ม: I = V / R

เรารู้ค่าของตัวต้านทานแบ่ง R และจะถูกป้อนลงในโปรแกรม

แรงดันไฟฟ้าที่เกิดจากตัวต้านทานแบบแบ่งคือ:

V = V1 - V2

หรือ

V = V2 - V1 (เพื่อหลีกเลี่ยงสัญลักษณ์ลบขณะวัดและสัญลักษณ์ลบขึ้นอยู่กับทิศทางการไหลของกระแส)

เราจึงสามารถทำให้สมการง่ายขึ้น

ฉัน = (V1 - V2) / R
หรือ
ฉัน = (V2 - V1) / R

หนึ่งในสมการข้างต้นจะถูกป้อนลงในโค้ดและเราสามารถค้นหาการไหลของกระแสและจะแสดงใน LCD

ตอนนี้เรามาดูวิธีการเลือกค่าตัวต้านทานแบบปัด

Arduino ได้สร้างตัวแปลงอนาล็อกเป็นดิจิตอล (ADC) 10 บิต สามารถตรวจจับได้ตั้งแต่ 0 ถึง 5V ใน 0 ถึง 1024 ขั้นตอนหรือระดับแรงดันไฟฟ้า

ดังนั้นความละเอียดของ ADC นี้จะเป็น 5/1024 = 0.00488 โวลต์หรือ 4.88 มิลลิโวลต์ต่อขั้นตอน

ดังนั้น 4.88 มิลลิโวลต์ / 2 mA (ความละเอียดขั้นต่ำของแอมป์มิเตอร์) = 2.44 หรือตัวต้านทาน 2.5 โอห์ม

เราสามารถใช้ตัวต้านทาน 10 โอห์ม 2 วัตต์สี่ตัวขนานกันเพื่อให้ได้ 2.5 โอห์มซึ่งทดสอบในต้นแบบ

ดังนั้นเราจะพูดช่วงที่วัดได้สูงสุดของแอมป์มิเตอร์ที่เสนอซึ่งเป็น 2 แอมแปร์ได้อย่างไร

ADC สามารถวัดได้ตั้งแต่ 0 ถึง 5 V เท่านั้นเช่น สิ่งที่กล่าวมาจะทำให้ ADC ในไมโครคอนโทรลเลอร์เสียหาย

จากต้นแบบที่ทดสอบแล้วสิ่งที่เราได้สังเกตเห็นว่าที่อินพุตอะนาล็อกสองตัวจากจุด V1 และ V2 เมื่อค่าที่วัดได้ปัจจุบัน X mA แรงดันอนาล็อกจะอ่าน X / 2 (ในจอภาพแบบอนุกรม)

ตัวอย่างเช่นหากแอมป์มิเตอร์อ่าน 500 mA ค่าอนาล็อกบนจอภาพอนุกรมจะอ่าน 250 ขั้นตอนหรือระดับแรงดันไฟฟ้า ADC สามารถทนได้ถึง 1024 ขั้นหรือสูงสุด 5 V ดังนั้นเมื่อแอมป์มิเตอร์อ่าน 2000 mA จอภาพอนุกรมจะอ่าน 1,000 ขั้นตอนโดยประมาณ ซึ่งใกล้ถึง 1024

สิ่งใดก็ตามที่สูงกว่าระดับแรงดัน 1024 จะทำให้ ADC ใน Arduino เสียหาย เพื่อหลีกเลี่ยงปัญหานี้ก่อน 2000 mA ข้อความเตือนจะแจ้งบน LCD ว่าให้ปลดวงจร

ตอนนี้คุณคงจะเข้าใจแล้วว่าแอมป์มิเตอร์ที่เสนอทำงานอย่างไร

ตอนนี้เรามาดูรายละเอียดการก่อสร้างกัน

แผนภาพ:

Arduino DC Digital Ammeter

วงจรที่นำเสนอนั้นง่ายมากและเป็นมิตรกับผู้เริ่มต้น สร้างตามแผนภาพวงจร ปรับโพเทนชิออมิเตอร์ 10K เพื่อปรับความคมชัดของการแสดงผล

คุณสามารถจ่ายไฟ Arduino จาก USB หรือผ่านแจ็ค DC ด้วยแบตเตอรี่ 9 V ตัวต้านทาน 2 วัตต์สี่ตัวจะกระจายความร้อนอย่างเท่าเทียมกันมากกว่าการใช้ตัวต้านทาน 2.5 โอห์มหนึ่งตัวที่มีตัวต้านทาน 8-10 วัตต์

เมื่อไม่มีกระแสไฟฟ้าผ่านหน้าจออาจอ่านค่าสุ่มเล็ก ๆ ซึ่งคุณอาจเพิกเฉยอาจเป็นเพราะแรงดันไฟฟ้าหลงทางในขั้ววัด

หมายเหตุ: อย่าย้อนกลับขั้วของแหล่งจ่ายโหลดอินพุต

รหัสโปรแกรม:

//------------------Program Developed by R.GIRISH------------------//
#include
#define input_1 A0
#define input_2 A1
LiquidCrystal lcd(12, 11, 5, 4, 3, 2)
int AnalogValue = 0
int PeakVoltage = 0
float AverageVoltage = 0
float input_A0 = 0
float input_A1 = 0
float output = 0
float Resolution = 0.00488
unsigned long sample = 0
int threshold = 1000
void setup()
{
lcd.begin(16,2)
Serial.begin(9600)
}
void loop()
{
PeakVoltage = 0
for(sample = 0 sample <5000 sample ++)
{
AnalogValue = analogRead(input_1)
if(PeakVoltage {
PeakVoltage = AnalogValue
}
else
{
delayMicroseconds(10)
}
}
input_A0 = PeakVoltage * Resolution
PeakVoltage = 0
for(sample = 0 sample <5000 sample ++)
{
AnalogValue = analogRead(input_2)
if(PeakVoltage {
PeakVoltage = AnalogValue
}
else
{
delayMicroseconds(10)
}
}
input_A1 = PeakVoltage * Resolution
output = (input_A0 - input_A1) * 100
output = output * 4
while(analogRead(input_A0) >= threshold)
{
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Reached Maximum')
lcd.setCursor(0,1)
lcd.print('Limit!!!')
delay(1000)
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Disconnect now!!')
delay(1000)
}
while(analogRead(input_A0) >= threshold)
{
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Reached Maximum')
lcd.setCursor(0,1)
lcd.print('Limit!!!')
delay(1000)
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Disconnect now!!')
delay(1000)
}
lcd.clear()
lcd.setCursor(0,0)
lcd.print('DIGITAL AMMETER')
lcd.setCursor(0,1)
lcd.print(output)
lcd.print(' mA')
Serial.print('Volatge Level at A0 = ')
Serial.println(analogRead(input_A0))
Serial.print('Volatge Level at A1 = ')
Serial.println(analogRead(input_A1))
Serial.println('------------------------------')
delay(1000)
}
//------------------Program Developed by R.GIRISH------------------//

หากคุณมีคำถามเฉพาะเกี่ยวกับโครงการวงจรแอมป์มิเตอร์แบบดิจิทัลที่ใช้ Arduino โปรดแสดงความคิดเห็นในส่วนความคิดเห็นคุณอาจได้รับคำตอบอย่างรวดเร็ว




คู่ของ: การใช้ Digital Potentiometer MCP41xx กับ Arduino ถัดไป: แหล่งจ่ายไฟตัดกระแสเกินโดยใช้ Arduino