Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Intelligentes Voltmeter mit Arduino & Smartphone bauen – Einfaches DIY-Projekt

Komponenten und Materialien

Arduino UNO × 1
PHPoC WiFi Shield für Arduino × 1
Widerstand 100 kΩ × 1
Widerstand 1 MΩ × 1
Steckbrücken (Jumper Wires) × 1

Projektbeschreibung

Mit diesem Projekt baust du ein intelligentes Voltmeter, das Spannungen bis zu 55 V misst und die Werte über ein Webinterface auf deinem Smartphone anzeigt. Der Arduino UNO erfasst die Spannung über einen analogen Eingang, wobei ein Spannungsteiler den Messbereich erweitert. Das PHPoC WiFi Shield stellt die drahtlose Verbindung zum Webserver her.

Funktionsweise

Theoretische Grundlagen

Der Arduino kann an seinen analogen Eingängen maximal 5 V messen. Um höhere Spannungen zu erfassen, wird ein Spannungsteiler aus zwei Widerständen (R1, R2) verwendet.

Intelligentes Voltmeter mit Arduino & Smartphone bauen – Einfaches DIY-Projekt

Die Formel lautet:

V_mess = (R1 + R2) / R2 × V_in

Wählt man R1 = 10 × R2, ergibt sich ein Teilungsverhältnis von 11. Bei maximal 5 V am analogen Eingang können somit bis zu 55 V gemessen werden.

Um den Strom durch den Arduino-Pin gering zu halten und Beschädigungen zu vermeiden, sollten die Widerstandswerte so hoch wie möglich gewählt werden. Hier kommen R1 = 1 MΩ und R2 = 100 kΩ zum Einsatz.

Praxisnahe Betrachtung & Kalibrierung

In der Praxis gibt es zwei Hauptfehlerquellen:

Beide Probleme werden durch eine zweistufige Kalibrierung gelöst:

1. Ermittlung des echten Teilungsverhältnisses

Diese Kalibrierung muss nur einmal durchgeführt werden. Die Schaltung wird wie folgt aufgebaut:

Intelligentes Voltmeter mit Arduino & Smartphone bauen – Einfaches DIY-Projekt

Das Verhältnis berechnet sich aus den ADC-Werten:

ratio = A1_Wert / A0_Wert

Der zugehörige Code (ResistorCalibration.ino) gibt den Wert über den Serial Plotter aus.

2. Kompensation der Versorgungsinstabilität

Die Referenzspannung wird indirekt über den 3,3 V-Pin des Arduino (an A1) gemessen:

V_Referenz = 1023 × 3,3 / A1_Wert

Die Eingangsspannung und die gemessene Spannung werden dann berechnet:

V_in = mapFloat(A0_Wert, 0, 1023, 0, V_Referenz);
V_mess = ratio * V_in;

Die finale Hauptverdrahtung sieht so aus:

Intelligentes Voltmeter mit Arduino & Smartphone bauen – Einfaches DIY-Projekt

Schritt-für-Schritt-Anleitung

  1. Verdrahtung gemäß „Widerstands-Kalibrierung“ aufbauen.
  2. ResistorCalibration.ino hochladen.
  3. Serial Plotter öffnen und den ratio-Wert notieren.
  4. Diesen Wert in Zeile 5 von Voltmeter.ino eintragen.
  5. Umverdrahten gemäß „Hauptverdrahtung“.
  6. Voltmeter.ino hochladen.
  7. Web-Interface (voltmeter.php und voltmeter_body.jpg) auf den PHPoC Shield laden.
  8. Im Browser die Webseite https://phpoc_shield_ip_address/voltmeter.php aufrufen – die Spannung wird angezeigt.

Das Webinterface passt sich responsiv an Smartphone-Bildschirme an.

Intelligentes Voltmeter mit Arduino & Smartphone bauen – Einfaches DIY-Projekt

Verdrahtungstipps:

Intelligentes Voltmeter mit Arduino & Smartphone bauen – Einfaches DIY-Projekt
Intelligentes Voltmeter mit Arduino & Smartphone bauen – Einfaches DIY-Projekt
Intelligentes Voltmeter mit Arduino & Smartphone bauen – Einfaches DIY-Projekt

Code

ResistorCalibration.ino

double ratio;
int analogReadAverage(int pin, int read_time) {
  unsigned long read_value = 0;
  for(int i = 0; i < read_time; i++) {
    read_value += analogRead(pin);
    delay(2);
  }
  read_value /= read_time;
  return read_value;
}

double resistorCalibration() {
  double _ratio;
  double A0_read_value = analogReadAverage(A0, 20);
  double A1_read_value = analogReadAverage(A1, 20);
  _ratio = A1_read_value / A0_read_value;
  return _ratio;
}

void setup() {
  Serial.begin(9600);
}

void loop() {
  ratio = resistorCalibration();
  Serial.print("ratio:");
  Serial.println(ratio);
  delay(200);
}

Voltmeter.ino (Hauptprogramm)

double V_measure;
double V_in;
double V_reference;
double ratio = 11.59; // Hier den kalibrierten Wert eintragen!

double mapFloat(double x, double in_min, double in_max, double out_min, double out_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 < read_time; i++) {
    read_value += analogRead(pin);
    delay(2);
  }
  read_value /= read_time;
  return read_value;
}

double getVoltageReference() {
  double A1_value = analogReadAverage(A1, 20); // A1 an 3,3 V
  double V_REF = 1023 * 3.3 / A1_value;
  return V_REF;
}

void setup() {
  Serial.begin(9600);
}

void loop() {
  V_reference = getVoltageReference();
  double A0_value = analogReadAverage(A0, 20);
  V_in = mapFloat(A0_value, 0, 1023, 0, V_reference);
  V_measure = ratio * V_in;
  Serial.println(V_measure);
  delay(200);
}

voltmeter.php (Web-Interface)

<!DOCTYPE html>
<html>
<head>
  <title>PHPoC Shield - VOLTMETER</title>
  <meta name="viewport" content="width=device-width, initial-scale=0.7">
  <link rel="stylesheet" media="screen" href="https://fontlibrary.org/face/segment7" type="text/css"/>
  <style>
    html {height: 100%;}
    body {width: 100%; height: 100%; text-align: center;}
    .container {width: 100%; min-height: 99%; max-height: 100%;}
    canvas {
      background: url(voltmeter_body.jpg);
      background-size: contain;
      font-family: 'Segment7Standard';
      font-weight: bold;
      font-style: italic;
    }
  </style>
  <script>
    // ... (JavaScript-Code für WebSocket-Verbindung und Canvas-Darstellung)
  </script>
</head>
<body onresize="canvas_resize()">
  <div class="container" id="container">
    <canvas id="graph"></canvas>
  </div>
</body>
</html>

Schaltplan

Das Hintergrundbild voltmeter_body.jpg muss zusammen mit der PHP-Datei auf den PHPoC Shield hochgeladen werden.

Intelligentes Voltmeter mit Arduino & Smartphone bauen – Einfaches DIY-Projekt

Herstellungsprozess

  1. DIY Photoshop-Steuerkonsole mit Arduino Nano RP2040 bauen
  2. RFID-Anwesenheitssystem mit Arduino & Python – Daten direkt in phpMyAdmin (XAMPP) speichern
  3. Universelle Android-Fernbedienung mit Arduino, 1Sheeld & IR-Steuerung
  4. DIY Infrarot-Herzschlag-Sensor mit Arduino: Schritt-für-Schritt-Anleitung
  5. Frequenz & Tastverhältnis präzise messen mit Arduino UNO
  6. DIY-Voltmeter mit Arduino und Nokia 5110 Display – Schritt-für-Schritt-Anleitung
  7. Echtzeit-Entfernungsmessung mit Arduino Sonar & Processing-Visualisierung
  8. MobBob: Eigenen Arduino-Roboter bauen, per Android-Smartphone steuern
  9. Stufenlose LED-Helligkeitssteuerung mit Bolt IoT und Arduino UNO
  10. Intelligenter Arduino-Roboterarm bauen: Einfaches DIY-Tutorial