Inhoudsopgave:
- Benodigdheden
- Stap 1: De schema's
- Stap 2: De code- en weerstandsberekeningen
- Stap 3: Laten we het uittesten
Video: Arduino nauwkeurige en nauwkeurige voltmeter (0-90V DC) - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:14
In deze instructable heb ik een voltmeter gebouwd om hoge spanningen DC (0-90v) te meten met relatieve precisie en nauwkeurigheid met behulp van een Arduino Nano.
De testmetingen die ik nam waren nauwkeurig genoeg, meestal binnen 0.3v van de werkelijke spanning gemeten met een standaard voltmeter (ik gebruikte een Astro AI DM6000AR). Dit is dichtbij genoeg voor mijn beoogde gebruik van het apparaat.
Om dit te archiveren heb ik een spanningsreferentie (4.096v) en spanningsdeler gebruikt.
Aan de codekant heb ik natuurlijk de optie "externe referentie" voor de Arduino Nano en het voorbeeld "Smoothing" in de Arduino-tutorials gebruikt.
Benodigdheden
1 x Arduino Nano - Link
1 x Oled-scherm (SSD 1306) - Link
1 x 1/4W 1% Weerstanden - 1k ohm - Link
1 x 1/4W 1% Weerstanden - 220k ohm - Link
1 x 1/4W 1% Weerstanden - 10k ohm - Link
1 x 4.096v LM4040DIZ-4.1 Spanningsreferentie - Link
Breadboard en kabels - Link
Astro AI DM6000AR - Link
USB Powerbank - Link
9V-batterijen - Link
CanadianWinters neemt deel aan het Amazon Services LLC Associates-programma, een gelieerd advertentieprogramma dat is ontworpen om sites een manier te bieden om vergoedingen te verdienen door te linken naar Amazon.com en gelieerde sites. Door deze links te gebruiken, verdien ik als Amazon Associate met in aanmerking komende aankopen, zelfs als je iets anders koopt - en het kost je niets.
Stap 1: De schema's
Ik heb alle onderdelen aangesloten volgens de bovenstaande schema's. In het bijzonder koos ik de 4.096-spanningsreferentie om zo dicht mogelijk bij de 5v-markering te blijven om te voorkomen dat de resolutie verloren gaat.
Volgens de datasheet koos ik een weerstand van 1K ohm voor de spanningsreferentie, hoewel een andere waarde zou kunnen worden gebruikt. De spanning voor de referentie wordt geleverd door de Nano 5v pin.
Het idee van de schakeling is dat de te meten gelijkspanning door een spanningsweerstand gaat. De geschaalde spanning komt dan in de analoge pin van de Arduino om te worden gesampled, afgevlakt, opnieuw geschaald en weergegeven op het OLed-display.
Ik heb geprobeerd het simpel te houden:)
Stap 2: De code- en weerstandsberekeningen
De weerstandswaarden zijn gekozen omdat het raadzaam is (als ik me niet vergis, staat dit op het Arduino/Atmega-gegevensblad) om de impedantie onder de 10k ohm te houden.
Om dingen te vereenvoudigen, heb ik een spreadsheet gemaakt die de berekeningen automatiseert voor het geval je verschillende weerstandswaarden wilt gebruiken: Link naar Google Sheet
Hier is de code die ik voor dit project heb gebruikt:
#erbij betrekken
#include U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0);// (rotatie, [reset]) float-spanning =0; // gebruikt om spanningswaarde float Radjust = 0.043459459 op te slaan; // Spanningsdelerfactor (R2 / R1+R2) float vbat =0; // eindspanning na calcs- spanning van de batterijvlotter Vref = 4.113; // Spanningsreferentie - gemeten werkelijke waarde. Nominale waarde 4.096v const int numReadings = 50; // aantal leesvoorbeelden - verhoog voor meer afvlakking. Verlaag voor sneller lezen. int lezingen [numReadings]; // de metingen van de analoge ingang int readIndex = 0; // de index van de huidige lezing unsigned long total = 0; // het lopende totaal int gemiddelde = 0; //variabelen voor het verversen van het scherm zonder gebruik te maken van vertraging unsigned long previousMillis = 0; // slaat de laatste keer op dat het scherm werd bijgewerkt // constanten veranderen niet: const long interval = 50; // interval waarmee het scherm moet worden vernieuwd (milliseconden) void setup (void) { analogReference (EXTERNAL); // gebruik AREF voor referentiespanning 4.096. Mijn referentie echte spanning is 4.113v u8g2.begin(); for (int thisReading = 0; thisReading = numReadings) { // … wikkel rond naar het begin: readIndex = 0; } // bereken het gemiddelde: gemiddelde = (totaal / numReadings); spanning = gemiddeld * (Vref / 1023,0); //4.113 is de Vref vbat = spanning/Radjust; // De vertraging voor het verversen van het scherm instellen met Millis if (currentMillis - previousMillis >= interval) { // sla de laatste keer op dat het scherm is bijgewerkt previousMillis = currentMillis; u8g2.clearBuffer(); // wis het interne geheugen // Pack Voltage-weergave u8g2.setFont (u8g2_font_fub20_tr); // 20px lettertype u8g2.setCursor (1, 20); u8g2.print(vbat, 2); u8g2.setFont(u8g2_font_8x13B_mr); // 10 px lettertype u8g2.setCursor (76, 20); u8g2.print("Volt"); u8g2.setCursor (1, 40); u8g2.print("Canadese Winters'"); u8g2.setCursor (1, 60); u8g2.print ("Precieze spanning"); } u8g2.sendBuffer(); // breng intern geheugen over naar de weergavevertraging (1); }
Let op: ik ben een beetje roestig met Arduino-codering, dus als je een fout vindt of een manier om de code te verbeteren, sta ik open voor suggesties:)
Stap 3: Laten we het uittesten
Om deze voltmeter te testen heb ik 8x 9v batterijen gebruikt die ik bij een plaatselijke winkel kocht. Ik ben van plan deze voltmeter te gebruiken om de spanning op de accu's van mijn elektrische fietsen te meten (ze hebben spanningen variërend van 24-60v met af en toe 72v).
Zodra de elektronica is verpakt in een pcb en een klein doosje, wordt dit een mooie en draagbare batterijmeter. De afbeeldingen en lettertypen op de OLED kunnen worden aangepast aan uw behoeften (bijv. groter lettertype voor gemakkelijk lezen).
Mijn doel was om een spanningsmeting op de Oled/Arduino-meter te hebben, niet te ver van mijn digitale multimeter. Ik mikte op +/-0, 3v max delta. Zoals je in de video kunt zien, heb ik dit kunnen archiveren, behalve aan de bovenkant van de metingen.
Ik hoop dat je genoten hebt van deze Instructable en laat me je gedachten weten!
Aanbevolen:
Arduino Voltmeter (0-100V DC) - Versie 2 (beter): 3 stappen
Arduino Volt Meter (0-100V DC) - Versie 2 (beter): In deze instructable heb ik een voltmeter gebouwd om hoge spanningen DC (0-100v) te meten met relatieve precisie en nauwkeurigheid met behulp van een Arduino Nano en een ADS 1115 ADC .Dit is een tweede versie van de voltmeter die mijn vorige instructable hier gebruikte: https://ww
AC-voltmeter met Arduino: 3 stappen (met afbeeldingen)
AC-voltmeter met Arduino: dit is een eenvoudig circuit om de AC-spanning vast te stellen met behulp van de Arduino UNO zonder enige AC-voltmeter !! GENIETEN VAN
Nauwkeurige YouTube-abonneeteller: 4 stappen
Nauwkeurige YouTube-abonneeteller: ik begon me ongeveer een maand geleden voor te bereiden op dit project, maar toen werd ik ontspoord door YouTube toen ze aankondigden dat ze niet langer het echte aantal abonnees zouden geven, maar het dichtstbijzijnde afgeronde getal. Op dit moment is dat niet echt een probleem voor
Nauwkeurige temperatuurregeling op de Raspberry Pi 4: 3 stappen
Nauwkeurige temperatuurregeling op de Raspberry Pi 4: De Pimoroni Fan Shim is een geweldige oplossing om de temperatuur van je Pi te verlagen wanneer deze heet wordt. De makers leveren zelfs software die de ventilator activeert wanneer de CPU-temperatuur boven een bepaalde drempel komt (bijvoorbeeld 65 graden). De temperatuur k
Digitale Arduino-voltmeter: 3 stappen
Digitale Arduino-voltmeter: een voltmeter of een spanningsmeter is een meetinstrument dat wordt gebruikt voor het meten van spanning