DIY voltmeter met Arduino en smartphone
Componenten en benodigdheden
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Over dit project
Demonstratie
Als Arduino nieuw voor je is, kun je aan de slag met Arduino Tutorials voor beginners.
Hoe het werkt
We kunnen de analoge ingangspin van Arduino gebruiken om de spanning te meten. De maximaal meetbare spanning is echter 5V.
Om de meetbare spanning te verhogen, moeten we een spanningsdeler gebruiken
InTheorie
We hebben:
V_measure =(R1 + R2) / R2 * V_in
verhouding =(R1 + R2) / R2
=> V_measure =verhouding * V_in
Als we R1 =10 * R2 kiezen, hebben we:
V_measure =11 * V_in
Aangezien het maximum van de toegestane V_in 5V is => Het maximum van de meetbare spanning is 55V
Om de stroom door Arduino's pin te beperken, die schade aan Arduino kan veroorzaken, moeten we een zo groot mogelijke weerstandswaarde kiezen.
Ik kies R1 =1 Mohm, R2 =100Kohm
In de praktijk
Daar zijn er in de praktijk wat problemen
- Waarde van R1 en R2 bevat fouten. De fouten veroorzaken de fout van V_measure
- Stroombron van Arduino kan onstabiel zijn. Het maakt de V_REF van analoge invoer onstabiel. Daarom veroorzaakt het de fout in de berekening van V_in. => het veroorzaakt een fout in de berekening van V_measure
Deze problemen worden opgelost in het gedeelte Kalibratie
Kalibratie
Dit hoeft maar één keer te worden gedaan om de verhouding te krijgen
Bedrading als onderstaande afbeelding:
verhouding =(R1 + R2) / R2 =V_measure / V_in =A1_read_value / A0_read_value
verhouding =A1_read_value / A0_read_value
Code voor deze kalibratie => zie ResisterCalibration.ino in codegedeelte
Instabiliteit van de voeding veroorzaakt instabiliteit in de spanningsreferentie van de analoge pin. Het veroorzaakt de verkeerde maat in de spanningsberekening.
Om dit op te lossen, moeten we de spanningsreferentie regelmatig meten.
Hoe de spanningsreferentie te meten?
Sluit 3.3V aan op pin A1
De spanningsreferentie wordt indirect gemeten op basis van de waarde in A1:
V_reference=1023 * 3.3 / A1_value
Hoe de V_measure te berekenen:
V_in =mapFloat(A0_value, 0, 1023, 0, V_reference);V_measure =ratio * V_in;
Hoofdbedrading:
Hoe
- Bedrading als circuit voor "weerstandskalibratiebedrading"
- ResistorCalibration.ino uploaden
- Serieplotter openen
- Kopieer de verhoudingswaarde
- Vervang deze waarde in regel 5 van Voltmeter.ino
- Herbedrading als "hoofdbedrading"
- Voltmeter.ino uploaden
- Webgebruikersinterface uploaden (voltmeter.php en voltmeter_body.jpg ) naar PHPoC Shield
- Ga naar de webpagina http://phpoc_shield_ip_address/voltmeter.php om de spanning te zien.
U kunt de spanning op de smartphone als volgt bekijken:
Bedradingstips:
De beste Arduino-starterkit voor beginners
Zie de beste Arduino-kit voor beginners
Code
- ResistorCalibration.ino
- Voltmeter.ino
- voltmeter.php
ResistorCalibration.inoArduino
- Bedrading zoals beschreven in Kalibratiedeel- Voer deze code een keer uit
- Open seriële plotter
- Kopieer de verhoudingswaarde
- Vervang deze waarde in regel 5 van Voltmeter.ino
double ratio;int analogReadAverage(int pin, int read_time){ unsigned long read_value =0; // lees de analoge waarde read_time times:for(int i =0; iVoltmeter.inoArduino
Dit is de hoofdcode. Voordat we deze code uploaden, moeten we:
- upload ResistorCalibration.ino
- seriële monitor openen
- kopieer de verhoudingswaarde en vervang de waarde in regel 5 van deze codedouble V_measure;double V_in; dubbele V_reference;dubbele ratio =11.59;dubbele mapFloat(dubbele x, dubbele in_min, dubbele in_max, dubbele uit_min, dubbele uit_max) { return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;}int analogReadAverage (int pin, int read_time) { unsigned long read_value =0; for(int i =0; ivoltmeter.phpPHP
Dit bestand is de webgebruikersinterface. Het moet worden geüpload naar PHPoC Shield samen met de achtergrondafbeelding voltmeter_body.jpgPHPoC Shield - VOLTMETER html {hoogte:100%;}lichaam {breedte:100%; hoogte:100%;; text-align:center;}.container {breedte:100%; min-hoogte:99%; max-height:100%;}canvas { achtergrond:url(voltmeter_body.jpg); achtergrondgrootte:bevatten; font-familie:'Segment7Standard'; lettergewicht:vet; font-style:cursief;} Schema's
Het moet worden geüpload naar PHPoC Shield
Productieproces
- DIY Photoshop-bewerkingsconsole met Arduino Nano RP 2040
- Aanwezigheidssysteem met Arduino en RFID met Python
- Universele afstandsbediening met Arduino, 1Sheeld en Android
- DIY infrarood hartslagsensor met Arduino
- Frequentie- en werkcyclusmeting met Arduino
- DIY voltmeter met Arduino en een Nokia 5110-display
- Sonar met arduino en weergave op verwerkings-IDE
- MobBob:doe-het-zelf Arduino-robot bestuurd door Android-smartphone
- LED-helderheid regelen met Bolt en Arduino
- Eenvoudige en slimme robotarm met Arduino
- FM-radio met Arduino en RDA8057M