MENU

Mạch đo điện trở sử dụng arduino

ĐỒNG HỒ ĐO ĐIỆN TRỞ SỬ DỤNG ARDUINO

Bài này sẽ hướng dẫn chúng ta cách đo điện trở sử dụng arduino. Điện trở đo được hiển thị trên màn hình LCD 16 × 2. Mạch khá chính xác với số lượng linh kiện ít nhất có thể. Trước khi đi vào chi tiết của mạch này, chúng ta hãy xem xét phương pháp đo điện trở cơ bản.

  • Rx là điện trở cần đo. R1 là điện trở đầu vào. i là dòng điện chạy qua đoạn mạch và 5V là điện áp cung cấp. Để tìm điện trở Rx chưa biết, điện áp trên Rx được đo trước tiên. Đặt điện áp trên R1 là VR1. Khi đó VR1 = 5-Vx. i = VR1 / R1 , i = (5-Vx) / R1. Vì R1 và Rx được kết nối nối tiếp, dòng điện qua chúng sẽ bằng nhau. Vậy điện trở chưa biết Rx = Vx / i. Điện áp trên điện trở chưa biết được đo bằng cách sử dụng chân ADC của arduino. Để chính xác, sử dụng chân analog A5.

  • Dù sao phương pháp này có một nhược điểm. Nếu có sự khác biệt lớn giữa điện trở đầu vào và Rx, kết quả sẽ không chính xác. Điều này là do hầu hết tất cả các điện áp đầu vào sẽ giảm trên điện trở lớn hơn. Giả sử R1 = 10K và Rx = 100 Ω. Khi đó, điện áp trên R1 sẽ là 4,95V và điện áp trên Rx sẽ là 50mV. Độ nhạy của arduino là 4.889mV. Vì vậy, khi chúng ta đọc 50mV bằng cách sử dụng ADC arduino, kết quả sẽ là 10. Khi chuyển đổi thành điện áp, kết quả sẽ là 10 x 4,889mV = 48,89mV. Khi đó Rx = 0,0488 / ((5V-48,89mV) / 10000) = 98,7 Ω.

  • Giả sử R1 = 10 Ω và Rx = 220Ω. Khi đó điện áp trên R1 sẽ là 4,89V và điện áp trên Rx sẽ là 107mV. Kết quả khi đọc ADC tương ứng sẽ là 21. Khi chúng ta chuyển đổi nó thành điện áp, kết quả sẽ là 21 x 4.889mV = 102mV. Theo các tính toán được sử dụng trong trường hợp trước, Rx = 208 Ω.

Từ hai ví dụ trên có thể thấy kết quả chính xác nhất xảy ra khi Rx và R1 càng gần càng tốt.

Hướng dẫn lắp mạch đo điện trở

Các điện trở từ R1 đến R7 là các điện trở đầu vào. Điện áp trên điện trở Rx là điện áp cần được đo. Điốt D1 đến D7 có chức năng ngăn dòng ngược. Nếu R1 và Rx bằng nhau, thì điện áp rơi trên Rx sẽ là (5-0,7) / 2 = 2,15 trong đó 0,7 là độ sụt áp của diode. Nếu điện áp trên Rx nhỏ hơn hoặc bằng 2,15 thì chúng ta có thể giả sử rằng Rx nhỏ hơn hoặc bằng 220Ω. Nếu điều kiện trên không được thỏa mãn, lặp lại các bước trên với các điện trở đầu vào khác.

Sơ đồ mạch đo điện trở sử dụng arduino được hiển thị trong hình dưới. Các chân 1, 6, 7, 8, 9, 10, 13 của arduino được sử dụng để chuyển đổi các điện trở đầu vào lần lượt là R1, R2, R3, R4, R5, R6, R7. Các diot D1 đến D7 được sử dụng để ngăn dòng ngược. D8 là đèn LED báo nguồn. Biến trở R10 được sử dụng để điều chỉnh độ tương phản của LCD. Điện trở R9 giới hạn dòng đèn LED D8.

Chương trình

#include<LiquidCrystal.h>

int vin=A5;

 

int t=1;

int u=6;

int v=7;

int w=8;

int x=9;

int y=10;

int z=13;

 

int at;

int au;

int av;

int aw;

int ax;

int ay;

int az;

int a;

double vx;

float rx;

double i;

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup()

{

pinMode(vin,INPUT);

lcd.begin(16,2);

 

pinMode(t,OUTPUT);

pinMode(u,OUTPUT);

pinMode(v,OUTPUT);

pinMode(w,OUTPUT);

pinMode(x,OUTPUT);

pinMode(y,OUTPUT);

pinMode(z,OUTPUT);

 

digitalWrite(t,LOW);

digitalWrite(u,LOW);

digitalWrite(v,LOW);

digitalWrite(w,LOW);

digitalWrite(x,LOW);

digitalWrite(y,LOW);

digitalWrite(z,LOW);

}

void loop()

{

 

digitalWrite(t,HIGH);

digitalWrite(u,LOW);

digitalWrite(v,LOW);

digitalWrite(w,LOW);

digitalWrite(x,LOW);

digitalWrite(y,LOW);

digitalWrite(z,LOW);

delay(100);

at=analogRead(vin);

 

digitalWrite(t,LOW);

digitalWrite(u,HIGH);

digitalWrite(v,LOW);

digitalWrite(w,LOW);

digitalWrite(x,LOW);

digitalWrite(y,LOW);

digitalWrite(z,LOW);

delay(100);

au=analogRead(vin);

digitalWrite(t,LOW);

digitalWrite(u,LOW);

digitalWrite(v,HIGH);

digitalWrite(w,LOW);

digitalWrite(x,LOW);

digitalWrite(y,LOW);

digitalWrite(z,LOW);

delay(100);

av=analogRead(vin);

 

 

 

digitalWrite(t,LOW);

digitalWrite(u,LOW);

digitalWrite(v,LOW);

digitalWrite(w,HIGH);

digitalWrite(x,LOW);

digitalWrite(y,LOW);

digitalWrite(z,LOW);

delay(100);

aw=analogRead(vin);

 

 

digitalWrite(t,LOW);

digitalWrite(u,LOW);

digitalWrite(v,LOW);

digitalWrite(w,LOW);

digitalWrite(x,HIGH);

digitalWrite(y,LOW);

digitalWrite(z,LOW);

delay(100);

ax=analogRead(vin);

 

 

digitalWrite(t,LOW);

digitalWrite(u,LOW);

digitalWrite(v,LOW);

digitalWrite(w,LOW);

digitalWrite(x,LOW);

digitalWrite(y,HIGH);

digitalWrite(z,LOW);

delay(100);

ay=analogRead(vin);

 

 

 

digitalWrite(t,LOW);

digitalWrite(u,LOW);

digitalWrite(v,LOW);

digitalWrite(w,LOW);

digitalWrite(x,LOW);

digitalWrite(y,LOW);

digitalWrite(z,HIGH);

delay(100);

az=analogRead(vin);

 

if(az>=450)

{

vx=az*0.00489;

i=(5-vx-0.55)/22000;

rx=(vx/i);

}

if(ay>=450 && az<450)

{

vx=ay*0.00489;

i=(5-vx-0.55)/10000;

rx=(vx/i);

}

if(ax>=448 && ay<448 && az<448)

{

vx=ax*0.00489;

i=(5-vx-0.55)/4700;

rx=(vx/i);

}

 

if(aw>=439 && ax<439 && ay<439 && az<439)

{

vx=aw*0.00489;

i=(5-vx-0.55)/2200;

rx=(vx/i);

}

 

if(av>=439 && aw<439 && ax<439 && ay<439 && az<439)

{

vx=av*0.00489;

i=(4.8-vx-0.55)/1000;

rx=(vx/i);

}

 

if(au>=430 && av<430 && aw<430 && ax<430 && ay<430 && az<430)

{

vx=au*0.00489;

i=(4.5-vx-0.55)/560;

rx=(vx/i);

}

 

if(at>=430 && au<430 && av<430 && aw<430 && ax<430 && ay<430 && az<430 )

{

vx=at*0.00489;

i=(4.5-vx-0.55)/220;

rx=(vx/i);

}

 

if(at<430 && au<430 && av<430 && aw<430 && ax<430 && ay<430 && az<430 )

{

vx=at*0.00489;

i=(4.5-vx-0.55)/220;

rx=(vx/i);

}

lcd.setCursor(0,0);

 

if(vx>4.8)

{

lcd.clear();

lcd.setCursor(0,0);

lcd.print("----INFINITY----");

}

else

{

if(rx<1000)

{

lcd.clear();

lcd.setCursor(0,0);

lcd.print(rx);

lcd.setCursor(7,0);

lcd.print((char)244);

}

else

{

lcd.clear();

rx=rx/1000;

lcd.setCursor(0,0);

lcd.print(rx);

lcd.setCursor(6,0);

lcd.print("k");

lcd.print((char)244);

}

}

lcd.setCursor(0,1);

lcd.print("Arduino Ohmmeter");

}

 

Hỗ trợ liên kết
0979466469
0899909838
0938128290
0899909838
Khiếu nại: 0964238397
0979466469

Hotline: 0979 466 469

Thương hiệu nổi bật