Spisu treści:

Arduino Volt Meter (0-100V DC) - Wersja 2 (lepsza): 3 kroki
Arduino Volt Meter (0-100V DC) - Wersja 2 (lepsza): 3 kroki

Wideo: Arduino Volt Meter (0-100V DC) - Wersja 2 (lepsza): 3 kroki

Wideo: Arduino Volt Meter (0-100V DC) - Wersja 2 (lepsza): 3 kroki
Wideo: TC1 stare VS TC1 nowe - a i tak już uszkodzone 2024, Czerwiec
Anonim
Image
Image
Krok 1: Schematy
Krok 1: Schematy

W tej instrukcji zbudowałem woltomierz do pomiaru wysokich napięć DC (0-100v) ze względną precyzją i dokładnością za pomocą Arduino Nano i ADS 1115 ADC.

To jest druga wersja woltomierza, z której korzystałem tutaj:

Pomiary testowe, które wykonałem, były dokładne, głównie w granicach 0,1 V rzeczywistego napięcia zmierzonego standardowym woltomierzem (użyłem Astro AI DM6000AR).

Jest to o wiele lepsze i moim zdaniem łatwiejsze niż użycie zewnętrznego napięcia odniesienia na Arduino.

Kieszonkowe dzieci

1 x Arduino Nano-Link

1 x wyświetlacz Oled (SSD 1306)-Link

1 x ADS 1115 - 16-bitowy ADC - Link

1 x 1/4W (sugeruję jednak użycie rezystorów 1W) 1% Rezystory - 220k ohm - Link

1 x 1/4W (sugeruję jednak użycie rezystorów 1W) 1% Rezystory - 10k omów - Link

Płytka do krojenia chleba i druty - Link

Astro AI DM6000AR - Link

Powerbank USB - Link

Baterie 9V - Link

CanadianWinters jest uczestnikiem programu Amazon Services LLC Associates, programu reklam afiliacyjnych, którego celem jest zapewnienie witrynom środków do zarabiania opłat poprzez umieszczanie linków do Amazon.com i witryn stowarzyszonych. Używając tych linków, jako współpracownik Amazon zarabiam na kwalifikujących się zakupach, nawet jeśli kupisz coś innego – i nic Cię to nie kosztuje.

Krok 1: Krok 1: Schematy

Krok 1: Schematy
Krok 1: Schematy

Połączyłem wszystkie części zgodnie z powyższymi schematami.

Przywiązałem pin ADDR ADC1115 do masy. Ustawia to adres ADC na 0x48.

Krok 2: Krok 2: Obliczenia kodu i rezystora

Krok 2: Obliczenia kodu i rezystora
Krok 2: Obliczenia kodu i rezystora

Podobnie jak w poprzedniej instrukcji, idea obwodu polega na tym, że mierzone napięcie prądu stałego przechodzi przez rezystor napięciowy. Skalowane napięcie, a następnie trafia do pinu analogowego konwertera ADC w celu odczytania, a następnie przekazywane do Arduino przez I2C, a następnie ponownie skalowane i wyświetlane na wyświetlaczu OLed.

Nie zastosowałem w tym przypadku żadnego uśredniania ani wygładzania w kodzie, ponieważ odczyty wydają się dość dokładne i precyzyjne. Aby zmniejszyć hałas, możesz dodać mały kondensator między A0 (na ADC) a masą. Nie było to jednak wymagane do mojego testu.

Jedna rzecz, którą zauważyłem, to trochę hałasu, gdy nie było podłączonej baterii (0 V). Użyłem monitora szeregowego Arduino, aby wyświetlić wartość ADC i poprawić/dostosować ją za pomocą kodu.

Podobnie jak w poprzedniej instrukcji, zrobiłem arkusz kalkulacyjny, który automatyzuje obliczenia w przypadku, gdy chcesz użyć różnych wartości rezystorów w dzielniku napięcia: Link do Google Sheet

Oto kod, którego użyłem w tym projekcie:

#włączać

#include #include #include Adafruit_ADS1115 reklamy (0x48); //Adres przetwornika ADC U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0);// (obrót, [reset]) int calib = 7; // Wartość kalibracji ADS1115 w celu zmniejszenia błędu napięcia pływaka = 0; // używane do przechowywania wartości napięcia float Radjust = 0.043421905; // Współczynnik dzielnika napięcia (R2 / R1+R2) float vbat = 0; //napięcie końcowe po obliczeniach- napięcie akumulatora //zmienne do odświeżania ekranu bez użycia opóźnienia unsigned long previousMillis = 0; // zapisze ostatnie odświeżenie ekranu // stałe nie ulegną zmianie: const long interval = 250; // częstotliwość odświeżania ekranu (milisekundy) void setup(void) { Serial.begin(9600); u8g2.rozpocznij(); reklamy.początek(); } void loop(void) { int16_t adc0; // 16-bitowy odczyt ADC wejścia A0 adc0 = ads.readADC_SingleEnded(0); napięcie = ((adc0 + kalibr) * 0,1875)/1000; unsigned long currentMillis = millis(); vbat = napięcie/Radjust; //Zapobiegaj wyświetlaniu ujemnego napięcia po odłączeniu akumulatora if (vbat = interwał) { previousMillis = currentMillis; u8g2.clearBuffer(); // wyczyść wewnętrzne menu //Wyświetlacz napięcia Pack - Czcionki na tej stronie: https://github.com/olikraus/u8g2/wiki/fntlistall //u8g2.setFont(u8g2_font_fub20_tr); // czcionka 20px u8g2.setFont(u8g2_font_fub35_tr); // czcionka 35px u8g2.setCursor (1, 42); u8g2.print(vbat, 2); u8g2.setFont(u8g2_font_8x13B_mr); // czcionka 10 pikseli u8g2.setCursor (1, 60); u8g2.print("Wolty"); } u8g2.sendBuffer(); // przenieś pamięć wewnętrzną do wyświetlacza delay(1); }

Krok 3: Krok 3: Przetestujmy to

Krok 3: Przetestujmy to!
Krok 3: Przetestujmy to!

Do przetestowania tego woltomierza użyłem baterii 10x 9v, które kupiłem w lokalnym sklepie. Tym razem mogłem zmierzyć do 97 woltów! Planuję użyć tego woltomierza do pomiaru napięcia na zestawach akumulatorów do moich rowerów elektrycznych (mają napięcia w zakresie od 24 do 60 V z okazjonalnymi 72 V).

Gdy elektronika zostanie zapakowana w płytkę drukowaną i małe pudełko, stworzy to ładny i przenośny miernik akumulatorów. Grafika i czcionki na OLED można dostosować do własnych potrzeb (np. większa czcionka ułatwiająca czytanie). Moim celem było uzyskanie odczytu napięcia na mierniku Oled/Arduino niezbyt daleko od mojego cyfrowego miernika uniwersalnego. Celowałem w +/-0, 3v max delta.

Jak widać na filmie na początku Instructable, udało mi się to zarchiwizować! Większość odczytów była na miejscu!

Mam nadzieję, że podobał Ci się ten Instruktaż i daj mi znać o swoich przemyśleniach!

Zalecana: