Mục lục:
Video: Đồng hồ đo điện áp chính xác & chính xác Arduino (0-90V DC): 3 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:30
Trong tài liệu hướng dẫn này, tôi đã chế tạo một vôn kế để đo điện áp cao DC (0-90v) với độ chính xác và độ chính xác tương đối bằng cách sử dụng Arduino Nano.
Các phép đo thử nghiệm mà tôi thực hiện đủ chính xác, hầu hết trong khoảng 0,3v so với điện áp thực được đo bằng vôn kế tiêu chuẩn (tôi sử dụng Astro AI DM6000AR). Điều này đủ gần cho mục đích sử dụng thiết bị của tôi.
Để lưu trữ điều này, tôi đã sử dụng tham chiếu điện áp (4.096v) và bộ chia điện áp.
Về mặt mã, tất nhiên, tôi đã sử dụng tùy chọn "tham chiếu bên ngoài" cho Arduino Nano và ví dụ "Làm mịn" trong hướng dẫn Arduino.
Quân nhu
1 x Arduino Nano - Liên kết
1 x Màn hình Oled (SSD 1306) - Liên kết
Điện trở 1 x 1 / 4W 1% - 1k ohm - Liên kết
Điện trở 1 x 1 / 4W 1% - 220k ohm - Liên kết
Điện trở 1 x 1 / 4W 1% - 10k ohm - Liên kết
Tham chiếu điện áp 1 x 4.096v LM4040DIZ-4.1 - Liên kết
Bảng mạch và dây - Liên kết
Astro AI DM6000AR - Liên kết
Ngân hàng điện USB - Liên kết
Pin 9V - Liên kết
CanadianWinters là người tham gia Chương trình liên kết Amazon Services LLC, một chương trình quảng cáo liên kết được thiết kế để cung cấp phương tiện cho các trang web kiếm phí bằng cách liên kết đến Amazon.com và các trang web liên kết. Bằng cách sử dụng các liên kết này, với tư cách là Cộng tác viên của Amazon, tôi kiếm được từ các giao dịch mua đủ điều kiện, ngay cả khi bạn mua thứ khác - và bạn sẽ không mất bất cứ chi phí nào.
Bước 1: Sơ đồ
Tôi đã kết nối tất cả các phần theo sơ đồ ở trên. Đặc biệt, tôi đã chọn tham chiếu điện áp 4.096 để ở càng gần vạch 5v càng tốt để tránh mất độ phân giải.
Sau biểu dữ liệu, tôi đã chọn một điện trở 1K ohm cho tham chiếu điện áp mặc dù có thể sử dụng một giá trị khác. Điện áp cho tham chiếu được cung cấp từ chân Nano 5v.
Ý tưởng của mạch là điện áp một chiều cần đo đi qua một điện trở hiệu điện thế. Điện áp được chia tỷ lệ và sau đó đi vào chân analog của Arduino để được lấy mẫu, làm mịn, điều chỉnh lại tỷ lệ và hiển thị trên màn hình OLed.
Tôi đã cố gắng giữ mọi thứ đơn giản:)
Bước 2: Tính toán mã và điện trở
Các giá trị điện trở đã được khuyến khích (nếu tôi không nhầm thì đây là trên biểu dữ liệu Arduino / Atmega) để giữ cho trở kháng dưới 10k ohm.
Để đơn giản hóa mọi thứ, tôi đã tạo một bảng tính tự động tính toán trong trường hợp bạn muốn sử dụng các giá trị điện trở khác nhau: Liên kết tới Google Trang tính
Đây là mã tôi đã sử dụng cho dự án này:
#bao gồm
#include U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2 (U8G2_R0); // (quay, [reset]) floattage = 0; // dùng để lưu giá trị điện áp float Radjust = 0.043459459; // Hệ số phân áp (R2 / R1 + R2) float vbat = 0; // điện áp cuối cùng sau calcs- điện áp của pin float Vref = 4.113; // Tham chiếu điện áp - giá trị thực được đo. Giá trị danh nghĩa 4.096v const int numReadings = 50; // số lượng mẫu đọc - tăng để làm mượt hơn. Giảm để đọc nhanh hơn. int lần đọc [numReadings]; // các bài đọc từ đầu vào tương tự int readIndex = 0; // chỉ số của lần đọc hiện tại là unsigned long total = 0; // tổng số đang chạy int average = 0; // các biến để làm mới màn hình mà không sử dụng delay unsigned long beforeMillis = 0; // sẽ lưu trữ lần cuối cùng màn hình được cập nhật // các hằng số sẽ không thay đổi: const long distance = 50; // khoảng thời gian làm mới màn hình (mili giây) void setup (void) {analogReference (EXTERNAL); // sử dụng AREF cho điện áp tham chiếu 4.096. Điện áp thực tham chiếu của tôi là 4.113v u8g2.begin (); for (int thisReading = 0; thisReading = numReadings) {//… quấn quanh đầu: readIndex = 0; } // tính giá trị trung bình: average = (total / numReadings); điện áp = trung bình * (Vref / 1023.0); //4.113 là Vref vbat = điện áp / Radjust; // Đặt độ trễ cho việc làm mới màn hình bằng cách sử dụng Millis if (currentMillis - beforeMillis> = khoảng) {// lưu lần cuối cùng màn hình được cập nhật trước đóMillis = currentMillis; u8g2.clearBuffer (); // xóa menory nội bộ // Hiển thị điện áp gói u8g2.setFont (u8g2_font_fub20_tr); // phông chữ 20px u8g2.setCursor (1, 20); u8g2.print (vbat, 2); u8g2.setFont (u8g2_font_8x13B_mr); // Phông chữ 10 px u8g2.setCursor (76, 20); u8g2.print ("Vôn"); u8g2.setCursor (1, 40); u8g2.print ("CanadianWinters '"); u8g2.setCursor (1, 60); u8g2.print ("Điện áp Chính xác"); } u8g2.sendBuffer (); // chuyển bộ nhớ trong sang độ trễ hiển thị (1); }
Xin lưu ý rằng tôi hơi thiếu hiểu biết về mã hóa Arduino, vì vậy nếu bạn tìm thấy bất kỳ lỗi nào hoặc cách nào để cải thiện mã, tôi sẵn sàng góp ý:)
Bước 3: Hãy thử nghiệm
Để kiểm tra vôn kế này, tôi đã sử dụng pin 8x 9v mua ở một cửa hàng địa phương. Tôi đang định sử dụng vôn kế này để đo điện áp trên bộ ắc quy xe đạp điện của mình (chúng có điện áp dao động từ 24-60v và đôi khi là 72v).
Một khi các thiết bị điện tử được đóng gói thành một pcb và một chiếc hộp nhỏ, điều này sẽ trở thành một đồng hồ đo mức pin di động và đẹp mắt. Đồ họa và phông chữ trên OLED có thể được tùy chỉnh để phù hợp với nhu cầu của bạn (ví dụ: phông chữ lớn hơn để dễ đọc).
Mục tiêu của tôi là có số đọc điện áp trên đồng hồ Oled / Arduino không quá xa Đồng hồ đa năng kỹ thuật số của tôi. Tôi đã nhắm đến vùng đồng bằng tối đa +/- 0, 3v. Như bạn có thể thấy từ video, tôi có thể lưu trữ dữ liệu này ngoại trừ ở phần cuối của các phép đo.
Tôi hy vọng bạn thích tài liệu hướng dẫn này và hãy cho tôi biết suy nghĩ của bạn!
Đề xuất:
Xúc xắc điện tử - Arduino Die / xúc xắc 1 đến 6 Xúc xắc + D4, D5, D8, D10, D12, D20, D24 và D30: 6 bước (có Hình ảnh)
Xúc xắc điện tử - Arduino Die / xúc xắc 1 đến 6 Xúc xắc + D4, D5, D8, D10, D12, D20, D24 và D30: Đây là một dự án arduino đơn giản để tạo ra một con xúc xắc điện tử. Có thể chọn cho 1 đến 6 viên xúc xắc hoặc 1 trong 8 viên xúc xắc đặc biệt. Lựa chọn được thực hiện đơn giản bằng cách xoay một bộ mã hóa quay. Đây là các tính năng: 1 xúc xắc: hiển thị các chấm lớn 2-6 xúc xắc: hiển thị các chấm
Động cơ bước Điều khiển động cơ bước Động cơ bước - Động cơ bước như một bộ mã hóa quay: 11 bước (có hình ảnh)
Động cơ bước Điều khiển động cơ bước Động cơ bước | Động cơ bước như một bộ mã hóa quay: Có một vài động cơ bước nằm xung quanh và muốn làm điều gì đó? Trong Có thể hướng dẫn này, hãy sử dụng động cơ bước làm bộ mã hóa quay để điều khiển vị trí của động cơ bước khác bằng vi điều khiển Arduino. Vì vậy, không cần phải quảng cáo thêm, chúng ta hãy
Đặt DS3231 RTC (Đồng hồ thời gian thực) chính xác, nhanh chóng và tự động bằng Java (+ -1s): 3 bước
Đặt DS3231 RTC (Đồng hồ thời gian thực) chính xác, nhanh chóng và tự động bằng Java (+ -1s): Có thể hướng dẫn này sẽ chỉ cho bạn cách đặt thời gian trên Đồng hồ thời gian thực DS3231 bằng Arduino và một ứng dụng Java nhỏ sử dụng kết nối nối tiếp của Arduino. Logic cơ bản của chương trình này: 1. Arduino gửi một yêu cầu nối tiếp
Làm thế nào để đo chính xác mức tiêu thụ điện năng của các mô-đun truyền thông không dây trong kỷ nguyên tiêu thụ điện năng thấp ?: 6 bước
Làm thế nào để đo chính xác mức tiêu thụ điện năng của các mô-đun truyền thông không dây trong kỷ nguyên tiêu thụ điện năng thấp ?: Tiêu thụ điện năng thấp là một khái niệm cực kỳ quan trọng trong Internet of Things. Hầu hết các nút IoT cần được cung cấp năng lượng bằng pin. Chỉ bằng cách đo chính xác mức tiêu thụ điện năng của mô-đun không dây, chúng tôi mới có thể ước tính chính xác lượng pin mà tôi
Điều chỉnh Jack nguồn điện thoại di động bị hỏng hoặc không xác định: 5 bước
Thích ứng với giắc cắm nguồn điện thoại di động bị hỏng hoặc không xác định: Hack mở một ô mà bạn không có bộ chuyển đổi nguồn hoặc nếu giắc cắm bị hỏng. Sử dụng bất kỳ bộ đổi nguồn điện thoại di động nào khác và cho điện thoại di động cũ kỹ của bạn cơ hội thứ hai