ผู้ที่ชื่นชอบการฝังตัวทุกคนคุ้นเคยกับมัลติมิเตอร์ซึ่งเป็นเครื่องมือที่ดีในการวัดแรงดันกระแสไฟฟ้าความต้านทาน ฯลฯ มัลติมิเตอร์สามารถวัดได้อย่างง่ายดาย แต่บางครั้งเราจำเป็นต้องวัดความเหนี่ยวนำและความจุซึ่งไม่สามารถทำได้ด้วยมัลติมิเตอร์ธรรมดา มีมัลติมิเตอร์พิเศษบางตัวที่สามารถวัดค่าความเหนี่ยวนำและความจุได้ แต่มีราคาแพง เราได้สร้างเครื่องวัดความถี่เครื่องวัดความจุและเครื่องวัดความต้านทานโดยใช้ Arduino แล้ว ดังนั้นวันนี้เราจะไปทำให้การเหนี่ยวนำLC Meter ใช้ Arduino ในโครงการนี้เราจะแสดงค่าความเหนี่ยวนำและค่าความจุพร้อมกับความถี่บนจอ LCD 16x2 ปุ่มกดจะได้รับในวงจรเพื่อสลับระหว่างการแสดงความจุและการเหนี่ยวนำ
ส่วนประกอบที่จำเป็น
- Arduino Uno
- 741 opamp IC
- แบตเตอรี่ 3v
- ตัวต้านทาน 100 โอห์ม
- คาปาซิเตอร์
- ตัวเหนี่ยวนำ
- 1n4007 ไดโอด
- ตัวต้านทาน 10k
- หม้อ 10k
- แหล่งจ่ายไฟ
- ปุ่มกด
- Breadboard หรือ PCB
- การเชื่อมต่อสายไฟ
การคำนวณความถี่และตัวเหนี่ยวนำ
ในโครงการนี้เราจะไปเหนี่ยวนำมาตรการและความจุโดยใช้วงจร LC ในแบบคู่ขนาน วงจรนี้เป็นเหมือนวงแหวนหรือกระดิ่งที่เริ่มสั่นด้วยความถี่ที่แน่นอน เมื่อใดก็ตามที่เราใช้พัลส์วงจร LC นี้จะเริ่มเรโซแนนซ์และความถี่เรโซแนนซ์นี้อยู่ในรูปของแอนะล็อก (คลื่นไซน์) ดังนั้นเราจำเป็นต้องแปลงเป็นคลื่นสไควร์ ในการทำเช่นนี้เราใช้ความถี่เรโซแนนซ์แบบอะนาล็อกนี้กับ opamp (741 ในกรณีของเรา) ซึ่งจะแปลงเป็นคลื่นสไควร์ (ความถี่) ที่ 50% ของรอบการทำงาน ตอนนี้เราวัดความถี่โดยใช้ Arduino และโดยใช้การคำนวณทางคณิตศาสตร์เราสามารถหาค่าความเหนี่ยวนำหรือความจุได้ เราได้ใช้กำหนดLC สูตรการตอบสนองความถี่วงจร
f = 1 / (2 * ครั้ง)
ที่เวลาเป็นผลลัพธ์ของ pulseIn () ฟังก์ชั่น
ตอนนี้เรามีวงจร LC ความถี่:
f = 1/2 * Pi * รากที่สองของ (LC)
เราสามารถแก้ได้เพื่อรับการเหนี่ยวนำ:
ฉ2 = 1 / (4Pi 2 LC) L = 1 / (4Pi 2 f 2 C) L = 1 / (4 * Pi * Pi * f * f * C)
ดังที่เราได้กล่าวไปแล้วว่าคลื่นของเราเป็นคลื่นซายน์ดังนั้นจึงมีช่วงเวลาเดียวกันทั้งในแอมพลิจูดบวกและลบ หมายความว่าเครื่องเปรียบเทียบจะแปลงเป็นคลื่นสี่เหลี่ยมโดยมีรอบการทำงาน 50% เพื่อให้เราสามารถวัดได้โดยใช้ ฟังก์ชัน pulseIn () ของ Arduino ฟังก์ชันนี้จะทำให้เรามีช่วงเวลาที่สามารถแปลงเป็นความถี่ได้อย่างง่ายดายโดยการย้อนกลับช่วงเวลา เนื่องจากฟังก์ชัน pulseIn จะวัดเพียงพัลส์เดียวดังนั้นเพื่อให้ได้ความถี่ที่ถูกต้องเราต้องคูณด้วย 2 ตอนนี้เรามีความถี่ที่สามารถแปลงเป็นความเหนี่ยวนำได้โดยใช้สูตรข้างต้น
หมายเหตุ: ในขณะวัดค่าความเหนี่ยวนำ (L1) ค่าตัวเก็บประจุ (C1) ควรเป็น 0.1uF และในขณะที่วัดความจุ (C1) ค่าตัวเหนี่ยวนำ (L1) ควรเป็น 10mH
แผนภาพวงจรและคำอธิบาย
ในแผนภาพวงจร LC Meterนี้เราได้ใช้ Arduino เพื่อควบคุมการทำงานของโครงการ ในการนี้เราได้ใช้วงจร LC วงจร LC นี้ประกอบด้วยตัวเหนี่ยวนำและตัวเก็บประจุ ในการแปลงความถี่เรโซแนนซ์ไซน์เป็นคลื่นดิจิตอลหรือคลื่นสี่เหลี่ยมเราได้ใช้แอมพลิฟายเออร์ปฏิบัติการคือ 741 ที่นี่เราจำเป็นต้องใช้แหล่งจ่ายเชิงลบกับ op-amp เพื่อให้ได้ความถี่เอาต์พุตที่ถูกต้อง ดังนั้นเราจึงใช้แบตเตอรี่ 3v ที่เชื่อมต่อในขั้วย้อนกลับซึ่งหมายความว่าพินลบ 741 เชื่อมต่อกับขั้วลบของแบตเตอรี่และขาบวกของแบตเตอรี่เชื่อมต่อกับกราวด์ของวงจรที่เหลือ สำหรับคำชี้แจงเพิ่มเติมโปรดดูแผนผังวงจรด้านล่าง
ที่นี่เรามีปุ่มกดเพื่อเปลี่ยนโหมดการทำงานไม่ว่าเราจะวัดความเหนี่ยวนำหรือความจุ จอ LCD 16x2 ใช้เพื่อแสดงความเหนี่ยวนำหรือความจุด้วยความถี่ของวงจร LC หม้อ 10k ใช้สำหรับควบคุมความสว่างของ LCD วงจรขับเคลื่อนด้วยความช่วยเหลือของแหล่งจ่าย Arduino 5v และเราสามารถจ่ายไฟให้ Arduino ด้วย 5v โดยใช้อะแดปเตอร์ USB หรือ 12v
คำอธิบายการเขียนโปรแกรม
ส่วนการเขียนโปรแกรมของโครงการ LC Meterนี้ทำได้ง่ายมาก รหัสArduino ที่สมบูรณ์จะได้รับในตอนท้ายของบทความนี้
ก่อนอื่นเราต้องรวมไลบรารีสำหรับ LCD และประกาศพินและมาโคร
# รวม
หลังจากนั้นในฟังก์ชั่น การตั้งค่า เราได้เริ่มต้นการสื่อสาร LCD และ Serialเพื่อแสดงค่าที่วัดได้บนจอ LCD และจอภาพอนุกรม
การตั้งค่าเป็นโมฆะ () { #ifdef serial Serial.begin (9600); endif # lcd.begin (16, 2); pinMode (ความถี่อินพุท); PinMode (ชาร์จเอาท์พุท); pinMode (โหมด INPUT_PULLUP); lcd.print ("ใช้เครื่องวัด LC"); lcd.setCursor (0, 1); lcd.print ("Arduino"); ล่าช้า (2000); lcd.clear (); lcd.print ("วงจรย่อย"); ล่าช้า (2000); }
จากนั้นในฟังก์ชัน ลูป ให้ใช้พัลส์ของช่วงเวลาคงที่กับวงจร LC ที่จะชาร์จวงจร LC หลังจากถอดวงจรพัลส์ LC จะเริ่มสั่นพ้อง จากนั้นเราอ่านการแปลงคลื่นกำลังสองที่มาจาก op-amp โดยใช้ ฟังก์ชัน pulseIn () และแปลงโดยคูณด้วย 2 ที่นี่เราได้นำตัวอย่างบางส่วนมาด้วย นั่นคือวิธีคำนวณความถี่:
void loop () { สำหรับ (int i = 0; i
หลังจากได้ค่าความถี่แล้วเราได้แปลงเป็นค่าความเหนี่ยวนำโดยใช้โค้ดที่กำหนด
ความจุ = 0.1E-6; ตัวเหนี่ยวนำ = (1. / (ความจุ * ความถี่ * ความถี่ * 4. * 3.14159 * 3.14159)) * 1.E6; #ifdef อนุกรม Serial.print ("Ind:"); ถ้า (ความเหนี่ยวนำ> = 1000) { Serial.print (ตัวเหนี่ยวนำ / 1000); Serial.println ("mH"); } else { Serial.print (อุปนัย); Serial.println ("uH"); } endif # lcd.setCursor (0, 1); lcd.print ("อิน:"); ถ้า (ตัวเหนี่ยวนำ> = 1,000) { lcd.print (ตัวเหนี่ยวนำ / 1000); lcd.print ("mH"); } else { lcd.print (ตัวเหนี่ยวนำ); lcd.print ("uH"); } }
และโดยการใช้รหัสให้เราคำนวณความจุ
ถ้า (Bit.flag) { inductance = 1.E-3; ความจุ = ((1. / (ตัวเหนี่ยวนำ * ความถี่ * ความถี่ * 4. * 3.14159 * 3.14159)) * 1.E9); ถ้า ((int) ความจุ <0) ความจุ = 0; #ifdef serial Serial.print ("Capacitance:"); Serial.print (ความจุ 6); Serial.println ("uF"); endif # lcd.setCursor (0, 1); lcd.print ("หมวก:"); ถ้า (ความจุ> 47) { lcd.print ((ความจุ / 1000)); lcd.print ("uF"); } else { lcd.print (ความจุ); lcd.print ("nF"); } }
นี่คือวิธีที่เราคำนวณความถี่ความจุและตัวเหนี่ยวนำโดยใช้ Arduinoและแสดงบนจอ LCD 16x2