Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

DIY voltmeter met Arduino en smartphone

Componenten en benodigdheden

Arduino UNO
× 1
PHPoC WiFi Shield voor Arduino
× 1
Weerstand 100k ohm
× 1
Weerstand 1M ohm
× 1
Jumperdraden
× 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

1. Meet de echte waarde van (R1 + R2) / R2

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

2. Instabiliteit van voeding

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; i  
Voltmeter.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 code
double 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; i  
voltmeter.phpPHP
Dit bestand is de webgebruikersinterface. Het moet worden geüpload naar PHPoC Shield samen met de achtergrondafbeelding voltmeter_body.jpg
PHPoC Shield - VOLTMETERhtml {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

  1. DIY Photoshop-bewerkingsconsole met Arduino Nano RP 2040
  2. Aanwezigheidssysteem met Arduino en RFID met Python
  3. Universele afstandsbediening met Arduino, 1Sheeld en Android
  4. DIY infrarood hartslagsensor met Arduino
  5. Frequentie- en werkcyclusmeting met Arduino
  6. DIY voltmeter met Arduino en een Nokia 5110-display
  7. Sonar met arduino en weergave op verwerkings-IDE
  8. MobBob:doe-het-zelf Arduino-robot bestuurd door Android-smartphone
  9. LED-helderheid regelen met Bolt en Arduino
  10. Eenvoudige en slimme robotarm met Arduino
  11. FM-radio met Arduino en RDA8057M