Spisu treści:
2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-13 06:58
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
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
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
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!