Mạch đo điện cảm và điện dung sử dụng arduino : Tất cả những người yêu thích nhúng đều quen thuộc với đồng hồ vạn năng, một công cụ tuyệt vời để đo điện áp, dòng điện, điện trở, v.v. Đồng hồ vạn năng có thể đo chúng dễ dàng. Nhưng đôi khi mình cần đo độ tự cảm và điện dung mà không thể thực hiện được bằng đồng hồ vạn năng thông thường. Có một số đồng hồ vạn năng đặc biệt có thể đo điện cảm và điện dung nhưng chúng rất tốn kém. Vì vậy, hôm nay mình sẽ tạo ra một đồng hồ đo LC điện cảm sử dụng Arduino . Trong Project này, mình sẽ hiển thị các giá trị điện cảm và điện dung cùng với tần số trên màn hình LCD 16×2. Một nút nhấn được đưa ra trong mạch để chuyển đổi giữa màn hình điện dung và độ tự cảm.

Linh kiện cần có trong Mạch đo điện cảm và điện dung sử dụng arduino

  1. Arduino una
  2. IC opamp 741
  3. Pin 3v
  4. Điện trở 100 ohm
  5. Tụ điện
  6. Cuộn cảm
  7. 1n4007 diode
  8. Điện trở 10k
  9. Hủ 10k
  10. Nguồn cấp
  11. Nút ấn
  12. Breadboard hoặc PCB
  13. Kết nối dây

Tính toán tần số và điện cảm

Trong Project này, mình sẽ đo độ tự cảm và điện dung bằng cách sử dụng một mạch LC song song . Mạch này giống như một chiếc chuông hoặc chuông bắt đầu cộng hưởng ở một tần số nhất định. Bất cứ khi nào mình áp dụng một xung, mạch LC này sẽ bắt đầu cộng hưởng và tần số cộng hưởng này ở dạng tương tự (sóng hình sin) vì vậy mình cần chuyển đổi nó thành sóng squire. Để làm điều này, mình áp dụng tần số cộng hưởng tương tự này cho opamp (trong trường hợp của mình là 741) sẽ chuyển đổi nó ở dạng sóng squire (tần số) ở 50% chu kỳ nhiệm vụ. Bây giờ mình đo tần số bằng cách sử dụng Arduino và bằng cách sử dụng một số phép tính toán học, mình có thể tìm thấy độ tự cảm hoặc điện dung. mình đã sử dụng công thức đáp ứng tần số mạch LC đã cho .

f=1/(2*time)

mà thời gian là đầu ra của pulseIn () chức năng

bây giờ mình có mạch LC Tần số:

f=1/2*Pi* square root of (LC)

mình có thể giải quyết nó để có được điện cảm:

f2 = 1/ (4Pi2LC)
L= 1/ (4Pi2 f2C)
L = 1/(4* Pi * Pi * f * f * C)

Như mình đã đề cập rằng sóng của mình là sóng hình sin nên nó có cùng khoảng thời gian với cả biên độ dương và âm. Nó có nghĩa là bộ so sánh sẽ chuyển nó thành sóng vuông có chu kỳ nhiệm vụ 50%. Vì vậy, mình có thể đo lường nó bằng cách sử dụng hàm xungIn () của Arduino. Hàm này sẽ cung cấp cho mình một khoảng thời gian có thể dễ dàng chuyển đổi thành tần số bằng cách đảo ngược khoảng thời gian. Vì hàm xungIn chỉ đo một xung, vì vậy bây giờ để có được tần số chính xác, mình phải nhân nó với 2. Bây giờ mình có một tần số có thể được chuyển đổi thành điện cảm bằng cách sử dụng công thức trên.

Lưu ý: trong khi đo độ tự cảm (L1), giá trị tụ điện (C1) phải là 0,1uF và trong khi đo điện dung (C1), giá trị cuộn cảm (L1) phải là 10mH.

Sơ đồ mạch và giải thích Mạch đo điện cảm và điện dung sử dụng arduino

Trong sơ đồ mạch LC Meter này , mình đã sử dụng Arduino để điều khiển hoạt động của Project. Trong điều này, mình đã sử dụng một mạch LC. Mạch LC này gồm một cuộn cảm và một tụ điện. Để chuyển đổi tần số cộng hưởng hình sin sang sóng kỹ thuật số hoặc sóng vuông, mình đã sử dụng âm ly hoạt động cụ thể là 741. Ở đây mình cần áp dụng nguồn cung cấp âm cho op-amp để có được tần số đầu ra chính xác. Vì vậy, mình đã sử dụng một pin 3v nối ngược cực, nghĩa là chân âm 741 được nối với cực âm của pin và chân dương của pin được nối với đất của mạch còn lại. Để rõ hơn, hãy xem sơ đồ mạch bên dưới.

Ở đây mình có một nút nhấn để thay đổi chế độ hoạt động cho dù mình đang đo điện cảm hay điện dung. Một LCD 16×2 được dùng để hiển thị độ tự cảm hoặc điện dung cùng tần số với mạch LC. Một nồi 10k được sử dụng để kiểm soát độ sáng của màn hình LCD. Mạch được cấp nguồn với sự trợ giúp của nguồn cung cấp 5v Arduino và mình có thể cấp nguồn cho Arduino 5v bằng bộ chuyển đổi USB hoặc 12v.

Đo tần số và điện dung

Đo tần số và điện cảm

Giải thích

Phần lập trình của LC Meter này rất dễ dàng. Code Arduino hoàn chỉnh được đưa ra ở cuối bài viết này.

Đầu tiên mình phải bao gồm thư viện cho LCD và khai báo một số chân và macro.

#include<LiquidCrystal.h>
LiquidCrystal lcd(A5, A4, A3, A2, A1, A0);

#define serial

#define charge 3
#define freqIn 2
#define mode 10

#define Delay 15

double frequency, capacitance, inductance;

typedef struct
{
  int flag: 1;
}Flag;

Flag Bit;

Sau đó, trong chức năng cài đặt, mình đã khởi tạo giao tiếp LCD và Serial để hiển thị các giá trị đo được qua LCD và màn hình nối tiếp.

void setup()
{
#ifdef serial
  Serial.begin(9600);
#endif
  lcd.begin(16, 2);
  pinMode(freqIn, INPUT);
  pinMode(charge, OUTPUT);
  pinMode(mode, INPUT_PULLUP);
  lcd.print(" LC Meter Using ");
  lcd.setCursor(0, 1);
  lcd.print("     Arduino    ");
  delay(2000);
  lcd.clear();
  lcd.print("Circuit Digest");
  delay(2000);
}

Sau đó, trong chức năng vòng lặp , áp dụng một xung của một khoảng thời gian cố định vào mạch LC sẽ sạc mạch LC. Sau khi loại bỏ xung LC mạch bắt đầu cộng hưởng. Sau đó, mình đọc chuyển đổi sóng vuông của nó, đến từ op-amp, bằng cách sử dụng hàm xungIn () và chuyển đổi bằng cách nhân với 2. Ở đây mình cũng đã lấy một số mẫu của điều này. Đó là cách tính tần số :

void loop()
{
  for(int i=0;i<Delay;i++)
  {
    digitalWrite(charge, HIGH);
    delayMicroseconds(100);
    digitalWrite(charge, LOW);
    delayMicroseconds(50);
  double Pulse = pulseIn(freqIn, HIGH, 10000);
  if (Pulse > 0.1)
    frequency+= 1.E6 / (2 * Pulse);
    delay(20);
  }
  frequency/=Delay;
#ifdef serial
  Serial.print("frequency:");
  Serial.print( frequency );
  Serial.print(" Hz     ");
#endif

  lcd.setCursor(0, 0);
  lcd.print("freq:");
  lcd.print( frequency );
  lcd.print(" Hz      ");

Sau khi thấy giá trị tần số, mình đã chuyển đổi chúng thành điện cảm bằng cách sử dụng đoạn mã nhất định

capacitance = 0.1E-6;
    inductance = (1. / (capacitance * frequency * frequency * 4.*3.14159 * 3.14159)) * 1.E6;
#ifdef serial
    Serial.print("Ind:");
    if(inductance>=1000)
    {
    Serial.print( inductance/1000 );
    Serial.println(" mH");
    }
    else
   {
    Serial.print( inductance );
    Serial.println(" uH");
  }
#endif

    lcd.setCursor(0, 1);
    lcd.print("Ind:");
    if(inductance>=1000)
    {
    lcd.print( inductance/1000 );
    lcd.print(" mH            ");
    }
    else
   {
    lcd.print( inductance );
    lcd.print(" uH              ");
  }
  }

Và bằng cách sử dụng mã đã cho, mình đã tính toán điện dung .

if (Bit.flag)
  {
    inductance = 1.E-3;
    capacitance = ((1. / (inductance * frequency * frequency * 4.*3.14159 * 3.14159)) * 1.E9);
    if((int)capacitance < 0)
    capacitance=0;
#ifdef serial
    Serial.print("Capacitance:");
    Serial.print( capacitance,6);
    Serial.println(" uF   ");
#endif
    lcd.setCursor(0, 1);
    lcd.print("Cap: ");
    if(capacitance > 47)
    {
      lcd.print( (capacitance/1000));
    lcd.print(" uF                 ");
    }
    else
    {
       lcd.print(capacitance);
       lcd.print(" nF                 ");
    }
  }

Vì vậy, đây là cách mình tính toán tần số, điện dung và điện cảm bằng Arduino và hiển thị nó trên màn hình LCD 16×2.

CODE

#include<LiquidCrystal.h>
LiquidCrystal lcd(A5, A4, A3, A2, A1, A0);

#define serial

#define charge 3
#define freqIn 2
#define mode 10

#define Delay 15

double frequency, capacitance, inductance;

typedef struct
{
int flag: 1;
}Flag;

Flag Bit;

void setup()
{
#ifdef serial
Serial.begin(9600);
#endif
lcd.begin(16, 2);
pinMode(freqIn, INPUT);
pinMode(charge, OUTPUT);
pinMode(mode, INPUT_PULLUP);
lcd.print(” LC Meter Using “);
lcd.setCursor(0, 1);
lcd.print(”     Arduino    “);
delay(2000);
lcd.clear();
lcd.print(“Circuit Digest”);
delay(2000);
}

void loop()
{
for(int i=0;i<Delay;i++)
{
digitalWrite(charge, HIGH);
delayMicroseconds(100);
digitalWrite(charge, LOW);
delayMicroseconds(50);
double Pulse = pulseIn(freqIn, HIGH, 10000);
if (Pulse > 0.1)
frequency+= 1.E6 / (2 * Pulse);
delay(20);
}
frequency/=Delay;
#ifdef serial
Serial.print(“frequency:”);
Serial.print( frequency );
Serial.print(” Hz     “);
#endif

lcd.setCursor(0, 0);
lcd.print(“freq:”);
lcd.print( frequency );
lcd.print(” Hz      “);

if (Bit.flag)
{
inductance = 1.E-3;
capacitance = ((1. / (inductance * frequency * frequency * 4.*3.14159 * 3.14159)) * 1.E9);
if((int)capacitance < 0)
capacitance=0;
#ifdef serial
Serial.print(“Capacitance:”);
Serial.print( capacitance,6);
Serial.println(” uF   “);
#endif
lcd.setCursor(0, 1);
lcd.print(“Cap: “);
if(capacitance > 47)
{
lcd.print( (capacitance/1000));
lcd.print(” uF                 “);
}
else
{
lcd.print(capacitance);
lcd.print(” nF                 “);
}
}

else
{
capacitance = 0.1E-6;
inductance = (1. / (capacitance * frequency * frequency * 4.*3.14159 * 3.14159)) * 1.E6;
#ifdef serial
Serial.print(“Ind:”);
if(inductance>=1000)
{
Serial.print( inductance/1000 );
Serial.println(” mH”);
}
else
{
Serial.print( inductance );
Serial.println(” uH”);
}
#endif

TRUNG TÂM SỬA CHỮA ĐIỆN TỬ QUẢNG BÌNH
MR. XÔ - 0901.679.359 - 80 Võ Thị Sáu, Phường Quảng Thuận, tx Ba Đồn, tỉnh Quảng Bình
Sửa điện tử tại Quảng Bình

lcd.setCursor(0, 1);
lcd.print(“Ind:”);
if(inductance>=1000)
{
lcd.print( inductance/1000 );
lcd.print(” mH            “);
}
else
{
lcd.print( inductance );
lcd.print(” uH              “);
}
}

if (digitalRead(mode) == LOW)
{
Bit.flag = !Bit.flag;
delay(1000);
while (digitalRead(mode) == LOW);
}
delay(50);
}

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

64 − = 58