Taula de continguts:

Mesurador de voltatge precís i precís Arduino (0-90V CC): 3 passos
Mesurador de voltatge precís i precís Arduino (0-90V CC): 3 passos

Vídeo: Mesurador de voltatge precís i precís Arduino (0-90V CC): 3 passos

Vídeo: Mesurador de voltatge precís i precís Arduino (0-90V CC): 3 passos
Vídeo: Control Position and Speed of Stepper motor with L298N module using Arduino 2024, De novembre
Anonim

En aquest instructiu, he construït un voltímetre per mesurar tensions altes de corrent continu (0-90v) amb relativa precisió i precisió mitjançant un Arduino Nano.

Les mesures de prova que vaig fer van ser prou precises, sobretot a 0,3 v de la tensió real mesurada amb un voltímetre estàndard (vaig utilitzar un Astro AI DM6000AR). Això és prou apropiat per al meu ús previst del dispositiu.

Per arxivar això, he utilitzat una referència de tensió (4.096v) i un divisor de tensió.

Pel que fa al codi, he utilitzat, per descomptat, l'opció de "referència externa" per a l'Arduino Nano i l'exemple de "Suavitzat" als tutorials d'Arduino.

Subministraments

1 x Arduino Nano - Link

1 x pantalla Oled (SSD 1306): enllaç

1 x 1 / 4W 1% de resistències - 1k ohm - Enllaç

Resistències 1 x 1 / 4W 1% - 220k ohm - Enllaç

Resistències 1 x 1 / 4W 1% - 10k ohm - Enllaç

1 x 4.096v LM4040DIZ-4.1 Referència de tensió - Enllaç

Taula de pa i cables - Enllaç

Astro AI DM6000AR - Enllaç

Banc d'alimentació USB: enllaç

Bateries de 9V: enllaç

CanadianWinters participa al Programa Associats d'Amazon Services LLC, un programa de publicitat afiliada dissenyat per proporcionar un mitjà perquè els llocs guanyin tarifes mitjançant l'enllaç a Amazon.com i llocs afiliats. Mitjançant l’ús d’aquests enllaços, com a associat d’Amazon, guanyo amb les compres que compleixin els requisits, fins i tot si compreu una altra cosa, i no us costarà res.

Pas 1: els esquemes

Els esquemes
Els esquemes
Els esquemes
Els esquemes

He connectat totes les parts segons els esquemes anteriors. En particular, vaig escollir la referència de voltatge 4.096 per mantenir-me el més a prop possible de la marca 5v per evitar perdre la resolució.

Després del full de dades, vaig triar una resistència de 1K ohm per a la referència de tensió tot i que es podria utilitzar un valor diferent. El voltatge de la referència es subministra des del pin Nano 5v.

La idea del circuit és que la tensió CC a mesurar passa per una resistència de tensió. El voltatge escalat i després entra al pin analògic de l'Arduino per ser mostrat, suavitzat, reescalat i mostrat a la pantalla OLed.

He intentat que les coses siguin senzilles:)

Pas 2: el càlcul del codi i de la resistència

Es van triar els valors de les resistències, ja que és aconsellable (si no m'equivoco, apareix al full de dades Arduino / Atmega) per mantenir la impedància per sota de 10k ohm.

Per simplificar les coses, he creat un full de càlcul que automatitza els càlculs per si voleu utilitzar diferents valors de resistència: enllaç a Google Sheet

Aquí teniu el codi que he utilitzat per a aquest projecte:

#incloure

#include U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2 (U8G2_R0); // (rotació, [restabliment]) tensió flotant = 0; // s’utilitza per emmagatzemar el valor de tensió flotant Radjust = 0,043459459; // Factor divisor de tensió (R2 / R1 + R2) flotant vbat = 0; // tensió final després dels calcs- tensió de la bateria flotant Vref = 4.113; // Referència de tensió: valor real mesurat. Valor nominal 4.096v const int numLectures = 50; // nombre de mostres de lectura: augmenta per obtenir més suavitzats. Disminueix per a una lectura més ràpida. lectures int [numLectures]; // les lectures de l'entrada analògica int readIndex = 0; // l'índex de la lectura actual sense signar llarg total = 0; // la mitjana total int corrent = 0; // variables per actualitzar la pantalla sense utilitzar retard sense signar long previousMillis = 0; // emmagatzemarà l'última vegada que es va actualitzar la pantalla // les constants no canviaran: const long interval = 50; // interval per actualitzar la pantalla (mil·lisegons) void setup (void) {analogReference (EXTERNAL); // utilitzeu AREF per a la tensió de referència 4.096. La meva tensió real de referència és 4.113v u8g2.begin (); for (int thisReading = 0; thisReading = numReadings) {// … embolcalla fins al principi: readIndex = 0; } // calcular la mitjana: mitjana = (total / numLectures); tensió = mitjana * (Vref / 1023.0); //4.113 és el Vref vbat = voltatge / Radjust; // Configuració del retard per a l'actualització de la pantalla mitjançant Millis if (currentMillis - previousMillis> = interval) {// desa l'última vegada que es va actualitzar la pantalla previousMillis = currentMillis; u8g2.clearBuffer (); // esborreu el menú intern // Visualització de la tensió del paquet u8g2.setFont (u8g2_font_fub20_tr); // font de 20px u8g2.setCursor (1, 20); u8g2.print (vbat, 2); u8g2.setFont (u8g2_font_8x13B_mr); // font de 10 px u8g2.setCursor (76, 20); u8g2.print ("Volts"); u8g2.setCursor (1, 40); u8g2.print ("CanadianWinters"); u8g2.setCursor (1, 60); u8g2.print ("Voltatge precís"); } u8g2.sendBuffer (); // transferir memòria interna al retard de visualització (1); }

Tingueu en compte que estic una mica rovellat amb la codificació Arduino, així que si trobeu algun error o una manera de millorar el codi, estic obert a suggeriments:)

Pas 3: provem-ho

Anem a provar-ho!
Anem a provar-ho!
Anem a provar-ho!
Anem a provar-ho!
Anem a provar-ho!
Anem a provar-ho!

Per provar aquest voltímetre vaig fer servir bateries de 8x 9v que vaig aconseguir en una botiga local. Tinc previst utilitzar aquest voltímetre per mesurar el voltatge de les bateries de les meves bicicletes elèctriques (tenen tensions que oscil·len entre els 24 i els 60 v amb els ocasionals de 72 v).

Una vegada que l’electrònica s’envasi en un pcb i una petita caixa, es convertirà en un bon mesurador de bateries portàtil. Els gràfics i tipus de lletra de l'OLED es poden personalitzar per adaptar-se a les vostres necessitats (per exemple, tipus de lletra més gran per facilitar la lectura).

El meu objectiu era tenir una lectura de voltatge al comptador Oled / Arduino no gaire lluny del meu multímetre digital. Jo pretenia +/- 0, 3v màxim delta. Com podeu veure al vídeo, vaig poder arxivar-ho excepte a l'extrem superior de les mesures.

Espero que us hagi agradat aquest instructiu i feu-me saber els vostres pensaments.

Recomanat: