- Vật liệu thiết yếu
- Sơ đồ mạch
- Đơn vị đo lường
- Đơn vị tính toán và hiển thị
- Lập trình Arduino
- Làm thế nào để đo lường với độ chính xác hơn?
- Làm việc và Kiểm tra
Là kỹ sư điện tử, chúng tôi luôn phụ thuộc vào đồng hồ / dụng cụ để đo lường và phân tích hoạt động của một mạch. Bắt đầu từ một đồng hồ vạn năng đơn giản đến một bộ phân tích chất lượng điện phức tạp hoặc DSO, mọi thứ đều có những ứng dụng độc đáo của riêng chúng. Hầu hết các máy đo này đều có sẵn và có thể mua được dựa trên các thông số cần đo và độ chính xác của chúng. Nhưng đôi khi chúng ta có thể rơi vào tình huống cần phải xây dựng đồng hồ đo của riêng mình. Ví dụ: bạn đang làm việc trong một dự án điện mặt trời và bạn muốn tính toán mức tiêu thụ điện năng của tải, trong những tình huống như vậy, chúng tôi có thể xây dựng Wattmeter của riêng mình bằng cách sử dụng nền tảng vi điều khiển đơn giản như Arduino.
Việc xây dựng đồng hồ đo của riêng bạn không chỉ giảm chi phí thử nghiệm mà còn giúp chúng tôi có thể dễ dàng hơn trong quá trình thử nghiệm. Giống như, một watt kế được xây dựng bằng Arduino có thể dễ dàng được tinh chỉnh để theo dõi kết quả trên màn hình nối tiếp và vẽ biểu đồ trên máy vẽ nối tiếp hoặc thêm thẻ SD để tự động ghi lại các giá trị của điện áp, dòng điện và công suất theo các khoảng thời gian xác định trước. Nghe thú vị phải không !? Vậy hãy bắt đầu…
Vật liệu thiết yếu
- Arduino Nano
- LM358 Op-Amp
- 7805 điều chỉnh điện áp
- Màn hình LCD 16 * 2
- Điện trở shunt 0,22 ohm 2Watt
- Nồi tông đơ 10k
- Điện trở 10k, 20k, 2,2k, 1k
- Tụ điện 0,1uF
- Tải thử nghiệm
- Bảng Perf hoặc breadboard
- Bộ hàn (tùy chọn)
Sơ đồ mạch
Sơ đồ mạch hoàn chỉnh của dự án arduino wattmeter được đưa ra dưới đây.
Để dễ hiểu, mạch wattmeter arduino được chia thành hai đơn vị. Phần trên của mạch là đơn vị đo và phần dưới của mạch là đơn vị tính toán và hiển thị. Đối với những người mới làm quen với loại mạch này, hãy theo dõi nhãn. Ví dụ + 5V là nhãn có nghĩa là tất cả các chân được kết nối với nhãn phải được coi là chúng được kết nối với nhau. Nhãn thường được sử dụng để làm cho sơ đồ mạch trông gọn gàng.
Mạch được thiết kế để phù hợp với các hệ thống hoạt động từ 0-24V với dải dòng điện từ 0-1A, lưu ý đến đặc điểm kỹ thuật của Điện mặt trời. Nhưng bạn có thể dễ dàng mở rộng phạm vi khi bạn hiểu hoạt động của mạch. Nguyên tắc cơ bản đằng sau mạch là đo điện áp trên tải và dòng điện qua nó để tính công suất tiêu thụ của nó. Tất cả các giá trị đo được sẽ được hiển thị trên màn hình LCD chữ và số 16 * 2.
Dưới đây chúng ta hãy chia mạch thành các đoạn nhỏ để chúng ta có thể có được hình ảnh rõ ràng về cách thức hoạt động của mạch được thụt vào.
Đơn vị đo lường
Bộ phận đo bao gồm một bộ chia điện thế để giúp chúng ta đo điện áp và một điện trở đóng với Op-amp không đảo được sử dụng để giúp chúng ta đo dòng điện qua mạch. Phần phân chia điện thế từ mạch trên được hiển thị bên dưới
Ở đây Điện áp đầu vào được biểu diễn bằng Vcc, như đã nói ở trên, chúng tôi đang thiết kế mạch cho dải điện áp từ 0V đến 24V. Nhưng một vi điều khiển như Arduino không thể đo các giá trị điện áp cao như vậy; nó chỉ có thể đo điện áp từ 0-5V. Vì vậy chúng ta phải ánh xạ (chuyển đổi) dải điện áp 0-24V thành 0-5V. Điều này có thể được thực hiện dễ dàng bằng cách sử dụng một mạch chia thế như hình dưới đây. Điện trở 10k và 2,2k cùng nhau tạo thành mạch phân chia thế. Điện áp đầu ra của một bộ chia tiềm năng có thể được tính bằng các công thức dưới đây. Tương tự được sử dụng để quyết định giá trị của điện trở của bạn, bạn có thể sử dụng máy tính trực tuyến của chúng tôi để tính toán giá trị của điện trở nếu bạn đang thiết kế lại mạch.
Vout = (Vin × R2) / (R1 + R2)
0-5V được ánh xạ có thể nhận được từ phần giữa được gắn nhãn là Điện áp. Điện áp được ánh xạ này sau đó có thể được cấp cho chân Arduino Analog sau đó.
Tiếp theo chúng ta phải đo dòng điện qua TẢI. Như chúng ta đã biết vi điều khiển chỉ có thể đọc điện áp tương tự, vì vậy chúng ta cần bằng cách nào đó chuyển đổi giá trị của dòng điện thành điện áp. Nó có thể được thực hiện bằng cách chỉ cần thêm một điện trở (điện trở shunt) trong đường dẫn mà theo định luật Ohm sẽ làm giảm một giá trị của điện áp trên nó tỷ lệ với dòng điện chạy qua nó. Giá trị của sự sụt giảm điện áp này sẽ rất ít nên chúng tôi sử dụng một op-amp để khuếch đại nó. Mạch cho tương tự được hiển thị bên dưới
Ở đây giá trị của điện trở shunt (SR1) là 0,22 Ohms. Như đã nói trước đó, chúng tôi đang thiết kế mạch cho 0-1A vì vậy dựa trên định luật Ohms, chúng tôi có thể tính toán điện áp rơi trên điện trở này sẽ vào khoảng 0,2V khi dòng điện tối đa 1A chạy qua tải. Điện áp này rất nhỏ để vi điều khiển có thể đọc được, chúng tôi sử dụng Op-Amp ở chế độ Bộ khuếch đại không đảo để tăng điện áp từ 0.2V lên mức cao hơn để Arduino đọc.
Op-Amp ở chế độ Không đảo ngược được hiển thị ở trên. Bộ khuếch đại được thiết kế để có độ lợi 21, sao cho 0,2 * 21 = 4,2V. Công thức tính độ lợi của Op-amp được đưa ra dưới đây, bạn cũng có thể sử dụng máy tính độ lợi trực tuyến này để lấy giá trị của điện trở nếu bạn đang thiết kế lại mạch.
Tăng = Vout / Vin = 1 + (Rf / Rin)
Ở đây trong trường hợp của chúng ta, giá trị của Rf là 20k và giá trị của Rin là 1k cho chúng ta một giá trị là 21. Dạng điện áp khuếch đại của Op-amp sau đó được đưa đến một bộ lọc RC có điện trở 1k và tụ điện 0,1uF để lọc bất kỳ tiếng ồn nào được ghép nối. Cuối cùng, điện áp sau đó được đưa đến chân tương tự Arduino.
Phần cuối cùng còn lại trong bộ đo là phần điều chỉnh điện áp. Vì chúng ta sẽ cung cấp một điện áp đầu vào thay đổi, nên chúng ta cần một vôn + 5V được điều chỉnh để Arduino và Op-amp hoạt động. Điện áp điều chỉnh này sẽ được cung cấp bởi bộ điều chỉnh Điện áp 7805. Một tụ điện được thêm vào ở đầu ra để lọc nhiễu.
Đơn vị tính toán và hiển thị
Trong bộ phận đo lường chúng tôi đã thiết kế mạch chuyển đổi thông số Điện áp và Dòng điện thành 0-5V có thể cấp vào các chân Arduino Analog. Bây giờ trong phần này của mạch, chúng ta sẽ kết nối các tín hiệu điện áp này với Arduino và cũng giao tiếp một màn hình chữ và số 16 × 2 với Arduino để chúng ta có thể xem kết quả. Mạch cho tương tự được hiển thị bên dưới
Như bạn thấy, chân Điện áp được kết nối với chân Analog A3 và chân hiện tại được kết nối với chân Analog A4. Màn hình LCD được cấp nguồn từ + 5V từ 7805 và được kết nối với các chân kỹ thuật số của Arduino để hoạt động ở chế độ 4 bit. Chúng tôi cũng đã sử dụng một chiết áp (10k) được kết nối với chân Con để thay đổi độ tương phản của màn hình LCD.
Lập trình Arduino
Bây giờ chúng ta đã hiểu rõ về phần cứng, hãy mở Arduino và bắt đầu lập trình. Mục đích của mã là để đọc điện áp tương tự trên chân A3 và A4 và tính giá trị Điện áp, Dòng điện và Công suất và cuối cùng hiển thị nó trên màn hình LCD. Chương trình hoàn chỉnh để làm điều tương tự được đưa ra ở cuối trang có thể được sử dụng như vậy cho phần cứng được thảo luận ở trên. Hơn nữa, mã được chia thành các đoạn nhỏ và giải thích.
Như tất cả các chương trình chúng ta bắt đầu, xác định các chân mà chúng ta đã sử dụng. Trong dự án đầu ra, chân A3 và A4 được sử dụng để đo điện áp và dòng điện tương ứng và các chân kỹ thuật số 3,4,8,9,10 và 11 được sử dụng để giao tiếp màn hình LCD với Arduino
int Read_Voltage = A3; int Read_Current = A4; const int rs = 3, en = 4, d4 = 8, d5 = 9, d6 = 10, d7 = 11; // Đề cập đến số chân của kết nối LCD LiquidCrystal lcd (rs, en, d4, d5, d6, d7);
Chúng tôi cũng đã bao gồm một tệp tiêu đề được gọi là tinh thể lỏng để giao diện màn hình LCD với Arduino. Sau đó, bên trong chức năng thiết lập, chúng tôi khởi chạy màn hình LCD và hiển thị văn bản giới thiệu là “Arduino Wattmeter” và đợi hai giây trước khi xóa nó. Mã cho cùng một được hiển thị bên dưới.
void setup () { lcd.begin (16, 2); // Khởi tạo LCD lcd.print 16 * 2 ("Arduino Wattmeter"); // Dòng thông báo Intro 1 lcd.setCursor (0, 1); lcd.print ("- Circuitdigest"); // Dòng thông báo Intro delay 2 (2000); lcd.clear (); }
Bên trong chức năng vòng lặp chính, chúng tôi sử dụng chức năng đọc tương tự để đọc giá trị điện áp từ chân A3 và A4. Như chúng ta đã biết giá trị đầu ra Arduino ADC từ 0-1203 vì nó có ADC 10 bit. Giá trị này sau đó phải được chuyển đổi thành 0-5V có thể được thực hiện bằng cách nhân với (5/1023). Sau đó, một lần nữa trước đó trong phần cứng, chúng tôi đã ánh xạ giá trị thực tế của điện áp từ 0-24V đến 0-5V và giá trị thực tế của dạng dòng điện 0-1A đến 0-5V. Vì vậy, bây giờ chúng ta phải sử dụng một hệ số để hoàn nguyên các giá trị này trở lại giá trị thực. Điều này có thể được thực hiện bằng cách nhân nó với một giá trị nhân. Giá trị của hệ số nhân có thể được tính theo lý thuyết bằng cách sử dụng các công thức được cung cấp trong phần phần cứng hoặc nếu bạn có một bộ giá trị điện áp và dòng điện đã biết, bạn có thể tính toán nó trên thực tế.Tôi đã làm theo tùy chọn thứ hai vì nó có xu hướng chính xác hơn trong thời gian thực. Vì vậy, ở đây giá trị của số nhân là 6,46 và 0,239. Do đó mã trông giống như bên dưới
float Voltage_Value = analogRead (Read_Voltage); float Current_Value = analogRead (Read_Current); Voltage_Value = Voltage_Value * (5.0 / 1023.0) * 6.46; Giá_trị hiện tại = Giá_trị hiện tại * (5.0 / 1023.0) * 0.239;
Làm thế nào để đo lường với độ chính xác hơn?
Cách tính giá trị của điện áp và dòng điện thực tế ở trên sẽ hoạt động tốt. Nhưng có một nhược điểm, đó là mối quan hệ giữa điện áp ADC đo được và điện áp thực tế sẽ không tuyến tính do đó một hệ số nhân đơn lẻ sẽ không cho kết quả rất chính xác, áp dụng cho dòng điện cũng vậy.
Vì vậy, để cải thiện độ chính xác, chúng ta có thể vẽ đồ thị của tập giá trị ADC đo được với giá trị thực bằng cách sử dụng một tập giá trị đã biết và sau đó sử dụng dữ liệu đó để vẽ đồ thị và suy ra phương trình cấp số nhân bằng phương pháp hồi quy tuyến tính. Bạn có thể tham khảo máy đo dB Arduino mà tôi đã sử dụng một phương pháp tương tự.
Cuối cùng, khi chúng ta đã tính được giá trị của điện áp thực và dòng điện thực tế qua tải, chúng ta có thể tính Công suất bằng công thức (P = V * I). Sau đó, chúng tôi hiển thị tất cả ba giá trị trên màn hình LCD bằng cách sử dụng mã bên dưới.
lcd.setCursor (0, 0); lcd.print ("V ="); lcd.print (Điện áp_Value); lcd.print (""); lcd.print ("I ="); lcd.print (Giá_trị hiện tại); float Power_Value = Voltage_Value * Current_Value; lcd.setCursor (0, 1); lcd.print ("Power ="); lcd.print (Power_Value);
Làm việc và Kiểm tra
Vì lợi ích của hướng dẫn, tôi đã sử dụng một bảng mạch hoàn hảo để hàn tất cả các thành phần như được hiển thị trong mạch. Tôi đã sử dụng một thiết bị đầu cuối vít Phoenix để kết nối tải và Jack thùng DC bình thường để kết nối nguồn điện của tôi. Bo mạch Arduino Nano và màn hình LCD được gắn trên Female Bergstik để chúng có thể được sử dụng lại nếu cần sau này.
Sau khi chuẩn bị xong phần cứng, hãy tải mã Arduino lên bảng Nano của bạn. Điều chỉnh nồi tông đơ để kiểm soát mức độ tương phản của màn hình LCD cho đến khi bạn nhìn thấy văn bản giới thiệu rõ ràng. Để kiểm tra bo mạch, hãy kết nối tải với đầu nối đầu vít và nguồn vào giắc Thùng. Điện áp nguồn phải lớn hơn 6V để dự án này hoạt động, vì Arduino yêu cầu + 5V để hoạt động. NẾU mọi thứ hoạt động tốt, bạn sẽ thấy giá trị của Điện áp trên tải và dòng điện qua nó được hiển thị ở dòng đầu tiên của màn hình LCD và công suất tính toán được hiển thị trên dòng thứ hai của màn hình LCD như hình dưới đây.
Phần thú vị của việc xây dựng một thứ gì đó nằm ở việc thử nghiệm nó để kiểm tra xem nó sẽ hoạt động bình thường đến đâu. Để làm điều đó, tôi đã sử dụng đèn báo ô tô 12V làm tải và RPS làm nguồn. Vì bản thân RPS có thể đo và hiển thị giá trị của dòng điện và điện áp, nên chúng tôi sẽ dễ dàng kiểm tra chéo độ chính xác và hiệu suất của mạch. Và có, tôi cũng đã sử dụng RPS của mình để hiệu chỉnh giá trị hệ số nhân của mình sao cho gần với giá trị chính xác.
Hoạt động hoàn chỉnh có thể được tìm thấy ở video ở cuối trang này. Hy vọng bạn đã hiểu mạch và chương trình và học được điều gì đó hữu ích. Nếu bạn có bất kỳ vấn đề nào trong quá trình làm việc, hãy đăng nó vào phần bình luận bên dưới hoặc viết trên diễn đàn của chúng tôi để được trợ giúp kỹ thuật hơn.
Đây dự án wattmeter Arduino dựa có nhiều nâng cấp hơn có thể được thêm vào để tăng hiệu suất để tự động ghi dữ liệu, âm mưu đồ thị, thông báo qua điện áp hoặc tình huống quá dòng vv Vì vậy, ở lại tò mò và cho tôi biết những gì bạn sẽ sử dụng này cho.