Mục lục:

Đồng hồ đo điện áp Arduino (0-100V DC) - Phiên bản 2 (tốt hơn): 3 bước
Đồng hồ đo điện áp Arduino (0-100V DC) - Phiên bản 2 (tốt hơn): 3 bước

Video: Đồng hồ đo điện áp Arduino (0-100V DC) - Phiên bản 2 (tốt hơn): 3 bước

Video: Đồng hồ đo điện áp Arduino (0-100V DC) - Phiên bản 2 (tốt hơn): 3 bước
Video: Bí mật bị giấu kín của Vôn Kế mini...mà không phải ai cũng biết 2024, Tháng mười một
Anonim
Image
Image
Bước 1: Sơ đồ
Bước 1: Sơ đồ

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-100v) với độ chính xác và độ chính xác tương đối bằng cách sử dụng Arduino Nano và ADS 1115 ADC.

Đây là phiên bản thứ hai của vôn kế được sử dụng mà tôi đã hướng dẫn trước đây tại đây:

Các phép đo thử nghiệm mà tôi thực hiện đều chính xác, hầu hết trong khoảng 0,1v 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).

Theo ý kiến của tôi, điều này tốt hơn nhiều và dễ dàng hơn so với việc sử dụng tham chiếu điện áp bên ngoài trê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

1 x ADS 1115 - ADC 16 bit - Liên kết

1 x 1 / 4W (tôi khuyên bạn nên sử dụng điện trở 1W) Điện trở 1% - 220k ohm - Liên kết

1 x 1 / 4W (tôi khuyên bạn nên sử dụng điện trở 1W) Điện trở 1% - 10k ohm - 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: Bước 1: Sơ đồ

Bước 1: Sơ đồ
Bước 1: Sơ đồ

Tôi đã kết nối tất cả các phần theo sơ đồ ở trên.

Tôi đã buộc chân ADDR của ADC1115 xuống đất. Điều này đặt địa chỉ của ADC thành 0x48.

Bước 2: Bước 2: Tính toán mã và điện trở

Bước 2: Tính toán mã và điện trở
Bước 2: Tính toán mã và điện trở

Như trong hướng dẫn trước, ý tưởng của mạch là điện áp một chiều cần đo đi qua một điện trở điện áp. Điện áp được chia tỷ lệ và sau đó đi vào chân tương tự của bộ chuyển đổi ADC để được đọc, sau đó được chuyển đến Arduino qua I2C và sau đó được chia tỷ lệ lại và hiển thị trên màn hình OLed.

Tôi đã không sử dụng bất kỳ mức trung bình hoặc làm mịn nào trong mã trong trường hợp này, vì các kết quả đọc có vẻ khá chính xác. Để giảm nhiễu, bạn có thể muốn thêm một tụ điện nhỏ giữa A0 (trên ADC) và đất. Nó không được yêu cầu cho thử nghiệm của tôi.

Một điều tôi nhận thấy, là một chút tiếng ồn khi không có pin đi kèm (0 volt). Tôi đã sử dụng màn hình nối tiếp của Arduino để hiển thị giá trị ADC và sửa / điều chỉnh nó thông qua mã.

Như trong phần hướng dẫn trước, 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 trong bộ chia điện áp: 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 #include #include Adafruit_ADS1115 quảng cáo (0x48); // Địa chỉ của ADC U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2 (U8G2_R0); // (quay, [reset]) int calib = 7; // Giá trị hiệu chỉnh của ADS1115 để giảm lỗi float điện áp = 0; // dùng để lưu giá trị điện áp float Radjust = 0.043421905; // 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 // 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 làm mới // các hằng số sẽ không thay đổi: const long Khoảng = 250; // khoảng thời gian làm mới màn hình (mili giây) void setup (void) {Serial.begin (9600); u8g2.begin (); ads.begin (); } void loop (void) {int16_t adc0; // 16 bit ADC đọc đầu vào A0 adc0 = ads.readADC_SingleEnded (0); điện áp = ((adc0 + hiệu chuẩn) * 0,1875) / 1000; unsigned long currentMillis = millis (); vbat = điện áp / Điều chỉnh; // Ngăn không cho hiển thị điện áp âm khi ngắt kết nối pin if (vbat = khoảng) {beforeMillis = currentMillis; u8g2.clearBuffer (); // xóa menory nội bộ // Hiển thị điện áp gói - Phông chữ tại trang này: https://github.com/olikraus/u8g2/wiki/fntlistall //u8g2.setFont(u8g2_font_fub20_tr); // Phông chữ 20px u8g2.setFont (u8g2_font_fub35_tr); // phông chữ 35px u8g2.setCursor (1, 42); u8g2.print (vbat, 2); u8g2.setFont (u8g2_font_8x13B_mr); // Phông chữ 10 px u8g2.setCursor (1, 60); u8g2.print ("Vôn"); } u8g2.sendBuffer (); // chuyển bộ nhớ trong sang độ trễ hiển thị (1); }

Bước 3: Bước 3: Hãy thử nghiệm

Bước 3: Hãy thử nghiệm!
Bước 3: Hãy thử nghiệm!

Để kiểm tra vôn kế này, tôi đã sử dụng pin 10x 9v mà tôi mua ở một cửa hàng địa phương. Lần này tôi có thể đo được tới 97 vôn! 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 ở đầu Có thể hướng dẫn, tôi đã có thể lưu trữ video này! Hầu hết các bài đọc đều được phát hiện tại chỗ!

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: