สร้างเครื่องวัดค่า L (ขดลวด) ด้วย Arduino

เครื่องวัดค่า L ด้วย Arduino

โครงงานนี้ผมได้มาจากเว็บต่างประเทศนะครับ เขาใช้วิธีการสร้างความถี่รูปคลื่นสี่เหลี่ยมขึ้นมา แล้วนำไปต่อร่วมกับ C เมื่อนำ L มาต่อขนานกับ C จะทำให้รูปคลื่นเปลี่ยนแปลงไปเป็นคลื่นไซน์ แล้วนำมาเข้าสูตรคำนวน (ไม่เข้าใจสูตรเลยครับ เรียนมาต่ำเกิน = =)

อุปกรณ์ที่ใช้

  1. ตัวเก็บประจุมีขั้วค่า 2uF (ใช้ 1uF 2 ตัวขนานกัน) หรือตัวเก็บประจุไม่มีขั้ว ค่า 1uF จำนวน 1 ตัว
  2. ไอซีออปแอมป์เบอร์ LM393 (เท่าที่ทดสอบ เบอร์อื่นใช้ไม่ได้นะครับ ต้องเบอร์นี้เท่านั้น) จำนวน 1 ตัว
  3. ตัวต้านทาน 150Ω 1/4W หรือ 1/8W ก็ใช้ได้ จำนวน 1 ตัว
  4. ตัวต้านทาน 330Ω 1/4W หรือ 1/8W จำนวน 1 ตัว
  5. ไดโอด 1N4001 – 1N4007 จำนวน 1 ตัว (ใช้เพื่อป้องกันกระแสไฟไหลกลับเข้าบอร์ด Arduino ถ้าไม่ใส่ ได้ยุ่งแน่ๆ)
  6. บอร์ด Arduino รุ่นใดก็ได้
  7. จอ LCD แบบที่ใช้ I2C ในการส่งข้อมูล (จะได้ประหยัด I/O Port)

เริ่มต่อวงจร

เอาละ เริ่มที่เรามาต่อวงจรวัดค่า L กันเลยครับ ต่อวงจรตามนี้เลยครับ

 

ต่อจอ LCD เชื่อมต่อ I2C ตามวงจรด้านล่างนี้

แล้วเบิร์นโปรแกรมนี้ลงไป (โหลดไลบารี่ LiquidCrystal_I2C ได้ที่ LiquidCrystal_I2C.7z โดย ThaiEasyElec)

#include <Wire.h> 
#include <LiquidCrystal_I2C.h> // Library needed for using LCD 16x2 module with a shift register
LiquidCrystal_I2C lcd(0x27, 16, 2);

//13 is the input to the circuit (connects to 150ohm resistor), 11 is the comparator/op-amp output. //reibot.org for guide
double pulse, frequency, capacitance, inductance;
double Ago = 0;

void setup(){
 pinMode(11, INPUT);
 pinMode(13, OUTPUT);
 lcd.begin();
 delay(200);
}


void loop(){
 digitalWrite(13, HIGH);
 delay(5);//give some time to charge inductor.
 digitalWrite(13,LOW);
 delayMicroseconds(100); 
 pulse = pulseIn(11,HIGH,5000);

 if(pulse > 0.1){ 
 capacitance = 95.E-8; //Use a multimeter to measure the exact value of capacitance for more accurate readings
 frequency = 1.E6/(2*pulse);
 inductance = 1./(capacitance*frequency*frequency*4.*3.14159*3.14159);
 inductance *= 1E6; //note that this is the same as saying inductance = inductance*1E6
 
 lcd.print("Inductance");
 lcd.setCursor(2,1);
 
 if(inductance>=1000){
 lcd.print ((inductance + 10) / 1000);
 lcd.print ("mH");
 }else {
 lcd.print (inductance + 10);
 lcd.print ("uH");
 }
 delay(300);
 lcd.clear();
 }else if(pulse < 0.1){
 lcd.print("Insert Inductor");
 delay(500);
 lcd.clear();
 }
}

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

ขอบคุณสำหรับวงจร และโค้ด โดย Arduino & LM393 Inductance-meter!

1 comment

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องที่ต้องการถูกทำเครื่องหมาย *