Arduino đo điện áp Xoay Chiều 220v. Các Phép đo Tương Tự Với ...
Có thể bạn quan tâm
Sơ đồ mạch của một thiết bị tự chế dựa trên Arduino Uno, được thiết kế để đo tần số và điện áp trong ổ cắm và hiển thị kết quả trên màn hình 1602A. Thiết bị này rất dễ sản xuất nhờ sử dụng mô-đun ARDUINO UNO làm sẵn.
Sơ đồ
Chỉ báo là màn hình LCD loại 1602A, là màn hình tiêu chuẩn, dựa trên bộ điều khiển HD44780. Ký hiệu 1602A thực sự có nghĩa là nó nằm trên hai dòng, mỗi dòng 16 ký tự.
Cơ sở của thiết bị là ARDUINO UNO, đây là một mô-đun làm sẵn tương đối rẻ tiền - một bảng mạch in nhỏ chứa bộ vi điều khiển ATMEGA328, cũng như tất cả các “đường ống” cần thiết cho hoạt động của nó, bao gồm cả bộ lập trình USB và Nguồn cấp.
Thiết bị được cấp nguồn từ nguồn điện lưới và đo các thông số trên. Nguồn điện đồng thời đóng vai trò là cảm biến để thu thập dữ liệu về tần số và điện áp trong mạng điện. Nguồn điện được chế tạo trên cơ sở một máy biến áp làm sẵn công suất thấp T1, có hai cuộn dây điện áp xoay chiều 9V giống hệt nhau.
Cơm. 1. Sơ đồ của máy đo tần số và điện áp trong mạng điện, Arduino Uno và 1602A được sử dụng.
Một cuộn dây dùng để nhận điện áp cung cấp. Điện áp xoay chiều từ nó được cung cấp cho cầu chỉnh lưu bằng điốt VD1-VD4. Tụ điện C3 làm dịu đi các gợn sóng của điện áp chỉnh lưu.
C3 nhận được một điện áp không đổi khoảng 12V, được cung cấp cho đầu nối để cấp nguồn cho bo mạch ARDUINO UNO, đến đầu vào của bộ điều chỉnh điện áp 5V trên bo mạch này, cấp nguồn cho toàn bộ bo mạch và đèn báo H1.
Cuộn thứ cấp còn lại của máy biến áp đóng vai trò là cảm biến đo các thông số mạng điện. Điện áp xoay chiều từ nó qua R1 được cung cấp cho bộ tạo xung ở tần số nguồn điện, được tạo trên bóng bán dẫn VT1 theo mạch chuyển mạch. Các xung này được gửi đến cổng kỹ thuật số D10 của bo mạch ARDUINO UNO.
Điện áp xoay chiều của mạng được đo bằng bộ chỉnh lưu sử dụng diode VD5 và tụ điện C2. Độ lớn của điện áp xoay chiều trong mạng được xác định bởi độ lớn của điện áp một chiều trên tụ điện này và thông qua một bộ chia có thể điều chỉnh trên các điện trở R4 và R5, được cung cấp cho đầu vào tương tự A1 của bo mạch ARDUINO UNO.
Chương trình
Chương trình C++ với các nhận xét chi tiết được đưa ra trong Bảng 1. Để đo tần số, hãy sử dụng hàm Pulseln, hàm này đo khoảng thời gian của cạnh dương hoặc âm của xung đầu vào tính bằng micro giây.
Bảng 1.
Cơm. 2. Mã nguồn chương trình đo giá trị tần số, điện áp trong mạng điện.
Vì vậy, để tìm ra chu kỳ, bạn cần cộng thời lượng của nửa chu kỳ dương và âm, và để tìm ra tần số tính bằng hertz, bạn cần chia 1.000.000 cho khoảng thời gian đã tính.
Đo thời lượng của một khoảng thời gian bao gồm hai phần; đầu tiên, thời lượng của nửa sóng dương và âm được đo theo các đường:
Htime=pulseln(10,CAO);
Ltime=pulseln(10,THẤP);
Sau đó, toàn bộ thời gian được tính trong dòng:
Tthời gian=Hthời gian+Lthời gian ;
Sau đó tính tần số trên đường dây:
tần số = 1000000/T thời gian;
Hoạt động của chương trình đo điện áp dựa trên việc đọc dữ liệu từ đầu vào analog và tính toán kết quả đo. Đầu ra của cổng analog được ADC của vi điều khiển chuyển đổi sang dạng kỹ thuật số. Để có được kết quả tính bằng đơn vị vôn, bạn cần nhân nó với 5 (với điện áp tham chiếu, nghĩa là với điện áp cung cấp của vi điều khiển) và chia cho 1024.
Để có thể đo điện áp lớn hơn 5V, hay đúng hơn là lớn hơn điện áp cung cấp của vi điều khiển, vì điện áp thực tế ở đầu ra của bộ ổn định 5V trên bo mạch ARDUINO UNO có thể khác với 5V và thường là thấp hơn một chút, bạn cần sử dụng các bộ chia điện trở thông thường ở đầu vào. Đây là một bộ chia điện áp trên các điện trở R5 và R4.
Ngoài ra, việc sử dụng máy biến áp có vai trò cũng như sự khác biệt giữa giá trị điện áp một chiều và điện áp xoay chiều. Do đó, hệ số chia ban đầu là 0,016 được thêm vào. Việc đọc dữ liệu từ cổng analog xảy ra ở dòng:
vout=analogRead(analogInput);
Sau đó, điện áp thực tế được tính toán có tính đến tỷ số chia của bộ chia điện áp đầu vào:
volt=vout*5.0/1024.0/0.016;
Ở dòng này, số 5.0 là điện áp ở đầu ra ổn áp của bo mạch ARDUINO UNO. Lý tưởng nhất là 5V, nhưng để vôn kế hoạt động chính xác thì trước tiên phải đo điện áp này.
Kết nối nguồn điện 12V và đo điện áp +5V tại đầu nối POWER của bo mạch bằng vôn kế khá chính xác. Chuyện gì xảy ra thì nhập vào dòng này thay vì 5.0, ví dụ nếu có 4.85V thì dòng này sẽ như thế này:
vôn=vout*4,85/1024,0/0,016;
Sau đó, kết quả đo được hiển thị trên màn hình LCD. Điện áp được nhập vào dòng đầu tiên của màn hình và tần số ở dòng thứ hai. Đơn vị đo được biểu thị là "V" và "Hz". Đối với phép đo tần số, không cần điều chỉnh gì cả. Nhưng để đo điện áp, bạn cần hiệu chỉnh thiết bị theo tiêu chuẩn bằng cách điều chỉnh điện trở R5.
Karavkin V. RK-10-17.
Bài viết này cung cấp một sơ đồ thú vị cho những ai thích thử nghiệm và Arduino. Nó có một vôn kế kỹ thuật số đơn giản có thể đo điện áp DC một cách an toàn trong khoảng từ 0 đến 30 V. Bản thân bo mạch Arduino có thể được cấp nguồn bằng nguồn điện 9 V tiêu chuẩn.
Như bạn đã biết, bằng cách sử dụng đầu vào analog Arduino, bạn có thể đo điện áp từ 0 đến 5 V (với điện áp tham chiếu tiêu chuẩn là 5 V). Nhưng phạm vi này có thể được mở rộng bằng cách sử dụng bộ chia điện áp.
Bộ chia giảm điện áp đo được xuống mức có thể chấp nhận được đối với đầu vào analog. Sau đó, mã được viết đặc biệt sẽ tính toán điện áp thực tế.
Cảm biến analog trong Arduino phát hiện điện áp ở đầu vào analog và chuyển đổi nó thành định dạng kỹ thuật số mà bộ vi điều khiển có thể đọc được. Chúng tôi kết nối một bộ chia điện áp được hình thành bởi các điện trở R1 (100K) và R2 (10K) với đầu vào analog A0. Với các giá trị điện trở này, tối đa 55 V có thể được cung cấp cho Arduino, vì hệ số phân chia trong trường hợp này là 11, do đó 55V/11 = 5V. Để đảm bảo phép đo an toàn cho bo mạch, tốt nhất nên đo điện áp trong khoảng từ 0 đến 30 V.
Nếu số đọc trên màn hình không khớp với số đọc của vôn kế đã được xác minh, hãy sử dụng đồng hồ vạn năng kỹ thuật số chính xác để tìm giá trị chính xác của R1 và R2. Trong trường hợp này, trong mã, bạn sẽ cần thay thế R1=100000.0 và R2=10000.0 bằng các giá trị của riêng bạn. Sau đó, bạn nên kiểm tra nguồn điện bằng cách đo điện áp trên bo mạch trong khoảng từ 5V đến GND. Điện áp có thể là 4,95 V. Sau đó, trong mã vout = (giá trị * 5.0) / 1024.0, bạn cần thay thế 5.0 bằng 4,95. Nên sử dụng điện trở chính xác có sai số không quá 1%. Hãy nhớ rằng điện áp trên 55V có thể làm hỏng bo mạch Arduino!
#bao gồm LCD LiquidCrystal(7, 8, 9, 10, 11, 12); int analogInput = 0; float vout = 0,0; float vin = 0,0; phao R1 = 100000.0; // điện trở R1 (100K) float R2 = 10000.0; // điện trở R2 (10K) giá trị int = 0; void setup())( pinMode(analogInput, INPUT); lcd.begin(16, 2); lcd.print("DC VOLTMETER"); ) void loop())( // đọc giá trị analog value = analogRead(analogInput ); vout = (giá trị * 5.0) / 1024.0; vin = vout / (R2/(R1+R2));= 10000) ( đếm= 0; timeCurrent= millis(); Serial.println(timeCurrent - timePrev); timePrev= thời gian hiện tại; } }Trong tùy chọn đầu tiên, khi các thao tác dấu phẩy động trong vòng lặp được nhận xét và không được thực thi, chương trình tạo ra kết quả là 34 mili giây.
Những thứ kia. 10.000 vòng lặp trống được hoàn thành trong 34 mili giây.
Sau đó tôi mở dòng:
y= (float)x / 500. * 5. / 1024. / 4.22 * (15. + 4.22);
lặp lại tính toán của chúng tôi Kết quả của 10.000 lần vượt qua trong 922 mili giây hoặc
(922 – 34) / 10.000 = 88,8 µs.
Những thứ kia. dòng tính toán dấu phẩy động này mất 89 µs để hoàn thành. Tôi nghĩ sẽ có nhiều hơn nữa.
Bây giờ tôi đóng dòng này bằng một nhận xét và mở dòng tiếp theo, nhân với hằng số được tính toán trước:
y= (float)x * 0,00004447756 ;
Kết quả của 10.000 lần vượt qua trong 166 mili giây hoặc
(166 – 34) / 10.000 = 13,2 µs.
Kết quả đáng kinh ngạc. Chúng tôi đã tiết kiệm được 75,6 μs trên mỗi dòng. Chúng tôi đã hoàn thành nó nhanh hơn gần 7 lần. Chúng tôi có 2 dòng như vậy nhưng có thể có nhiều dòng hơn trong chương trình.
Kết luận - việc tính toán với các hằng số phải được thực hiện độc lập trên máy tính và sử dụng trong các chương trình dưới dạng hệ số có sẵn. Trình biên dịch Arduino sẽ không tính toán chúng ở giai đoạn biên dịch. Trong trường hợp của chúng tôi, chúng tôi nên làm điều này:
#define ADC_U_COEFF 0,00004447756 // hệ số chuyển đổi mã ADC thành điện áp
Serial.print((float)avarageU1 * ADC_U_COEFF, 2);
Tùy chọn tối ưu cho hiệu suất là chuyển mã ADC vào máy tính và cùng với đó là tất cả các phép tính dấu phẩy động. Trong trường hợp này, một chương trình chuyên biệt trên máy tính phải nhận dữ liệu. Trình giám sát cổng từ Arduino IDE sẽ không hoạt động.
Tôi sẽ nói về những cách khác để tối ưu hóa chương trình Arduino trong các bài học sau nếu cần. Nhưng không giải quyết được vấn đề này thì không thể phát triển các chương trình phức tạp trên bộ vi điều khiển 8 bit.
Một bài học khác đã xuất hiện trên trang web (
Từ khóa » đo điện áp Xoay Chiều Bằng Arduino
-
Mạch Vôn Kế Xoay Chiều Không Biến áp Sử Dụng Arduino
-
Đo áp Xoay Chiều - Dien Tu Viet Nam
-
Hướng Dẫn Sử Dụng Cảm Biến Dòng điện ACS712 Với Arduino
-
Module đo Thông Số điện Xoay Chiều Pzem-004 - Điện Tử 360
-
Đo điện áp AC Bằng Bộ Chuyển đổi Nguồn AC Sang AC
-
INA226 Giao Tiếp Arduino, Đo Dòng điện + Điện áp + Công Suất + LCD
-
Arduino_Hướng Dẫn Tạo Thiết Bị đo Năng Lượng
-
DA05: ĐO ĐIỆN ÁP DC (0 - 30) SỬ DỤNG ARDUINO - YouTube
-
Ứng Dụng Kiến Trúc Mở Arduino Trong Thiết Kế Thiết Bị Giám Sát điện ...
-
Cảm Biến Dòng điện Là Gì? Nguyên Lý Hoạt động Của Cảm ... - Nshop
-
DA31: ĐO DÒNG ĐIỆN DC/AC SỬ DỤNG MODULE ACS712 VÀ ...
-
Lập Trình Vi điều Khiển- Phần 178- Đo Dòng Xoay Chiều Với Cảm Biến ...
-
Đo Dòng điện Xoay Chiều Bằng Vi điều Khiển PIC - Mobitool