Forum: Mikrocontroller und Digitale Elektronik Ohmmeter mit Arduino


von Mans A. (mansmaak)


Lesenswert?

Hallo liebe Leute,

ich versuche gerade einen Ohmmeter mit dem Arduino DUE aufzubauen. Ich 
habe als festen Widerstand 1k verwendet. Den Poti habe ich auf 140 Ohm 
gestellt bzw. der vermeintlich unbekannte Widerstand ist ca. 140 Ohm. 
Die Referenzspannung liegt bei 5V. Als Ausgabe des unbekannten 
Widerstandes bekomme ich jedoch 230 Ohm und nicht 140 Ohm.
1
#define PIN_MEASURE A0
2
3
4
#define V_IN   5.0   // source voltage in Volt
5
#define REF_R2 1000 // value of the known resistor in Ohm
6
7
void setup()
8
{
9
  Serial.begin(9600);
10
  pinMode(PIN_MEASURE, INPUT);
11
}
12
13
void loop()
14
{
15
    measureResistance();
16
    delay(10000);
17
  
18
}
19
20
void measureResistance()
21
{
22
  // measure 10 times and calculate the average
23
  long reading = 0;
24
  for (byte i = 0; i < 10; i++) {
25
    reading += analogRead(PIN_MEASURE);
26
  }
27
  reading = (long)(reading / 10);
28
29
  Serial.print("A0: ");
30
  Serial.println(reading);
31
32
  // calculate voltage
33
  float voltageR1 = (V_IN / 1023.0) * reading;
34
  Serial.print("Voltage over R1: ");
35
  Serial.print(voltageR1, 2);
36
  Serial.println(" V");
37
38
  // formula: R1 = R2 * (U2/U1)
39
  int resistance = REF_R2 * (voltageR1 / (V_IN - voltageR1));
40
  Serial.println("Resistor R1: " + String(resistance) + " Ω\n\n");
41
}

: Bearbeitet durch User
von 🍅🍅 🍅. (tomate)


Lesenswert?

Für gewöhnlich nimmt man da eine Stromquelle und keinen Widerstand, 
erspart unnötige Rechnerei....

von Thomas W. (Gast)


Lesenswert?

von der Arduino-Webseite:
1
Warning: Unlike most Arduino boards, the Arduino Due board runs at 3.3V. The maximum voltage that the I/O pins can tolerate is 3.3V. Applying voltages higher than 3.3V to any I/O pin could damage the board.

Also: Schaltung bitte!

Gruesse

Th.

von Mans A. (mansmaak)


Lesenswert?

Thomas W. schrieb:
> von der Arduino-Webseite:
> Warning: Unlike most Arduino boards, the Arduino Due board runs at 3.3V.
> The maximum voltage that the I/O pins can tolerate is 3.3V. Applying
> voltages higher than 3.3V to any I/O pin could damage the board.
>

Danke für die Information. Der Arduino DUE hat einen 5V- Pin. Diesen 
habe ich auch mit einem Multimeter nachweislich messen können.

von Michael B. (laberkopp)


Lesenswert?

Mans A. schrieb:
> Arduino DUE

Mans A. schrieb:
> Die Referenzspannung liegt bei 5V.

Autsch.

Mans A. schrieb:
> formula: R1 = R2 * (U2/U1)
Angenommen U1 ist die Spannung über R1 und U2 die Spannung uber R2 ist 
die Formel falsch.
1
R1   R2         R2 * U1
2
-- = --    R1 = -------
3
U1   U2            U2
>   int resistance = REF_R2 * (voltageR1 / (V_IN - voltageR1));

Was soll V_IN sein, die ADC Eingangsspannung ? Sicher nicht, sondern die 
5V. voltageR1 ist die ADC Eingangsspannung.

V_IN - voltageR1 wäre damit voltageR2

R2 x voltageR1 / ( voltageR2 ) solte R1 ergeben.

von Sebastian W. (wangnick)


Lesenswert?

Thomas W. schrieb:
> Also: Schaltung bitte!

Mans A. schrieb:
> Thomas W. schrieb: [...]
> Der Arduino DUE hat einen 5V- Pin.

Toller Schaltplan ...

LG, Sebastian

von Mans A. (mansmaak)


Lesenswert?

Michael B. schrieb:
> Mans A. schrieb:
>> Arduino DUE
>
> Mans A. schrieb:
>> Die Referenzspannung liegt bei 5V.
>
> Autsch.

Warum Autsch.


> Mans A. schrieb:
>> formula: R1 = R2 * (U2/U1)
> Angenommen U1 ist die Spannung über R1 und U2 die Spannung uber R2 ist
> die Formel falsch.
Ok, steht aber in einem Kommentar! War aus Versehen!


> Was soll V_IN sein, die ADC Eingangsspannung ?

Nein, die Verorgungsspannung des Arduinos! 5V



> V_IN - voltageR1 wäre damit voltageR2
>
> R2 x voltageR1 / ( voltageR2 ) solte R1 ergeben.

Genau!! So habe ich das doch auch!!!

von Björn S. (bjrn_s869)


Lesenswert?

Mans A. schrieb:
> Nein, die Verorgungsspannung des Arduinos! 5V

Nein die Versorgungsspannung des µC ist 3,3V.

von Εrnst B. (ernst)


Lesenswert?

Mans A. schrieb:
> float voltageR1 = (V_IN / 1023.0) * reading;

Und wieder der typische Arduino-Fehler...
der ADC kann 1024 verschiedene Werte ausgeben, jeder Wert entspricht 
1/1024 des Messbereichs.

Falls das zu Verständnisschwierigkeiten führt: Überleg dir wie es 
möglich sein kann, dass du 5 Finger hast, aber nur 4 Zwischenräume 
zwischen den Fingern.

Und ja, der Fehler ist klein und meist zu vernachlässigen. Trotzdem 
zeigt er dem Leser des Quelltexts, dass da ein (freundlich ausgedrückt) 
blutiger Anfänger wild irgendwelchen Rotz aus dem Internet 
zusammenkopiert hat.

von Harald W. (wilhelms)


Lesenswert?

Εrnst B. schrieb:

> Und wieder der typische Arduino-Fehler...
> der ADC kann 1024 verschiedene Werte ausgeben, jeder Wert entspricht
> 1/1024 des Messbereichs.
> Und ja, der Fehler ist klein und meist zu vernachlässigen.

Insbesondere, weil der Arduino zwar 10Bit Auflösung hat, aber wohl
kaum 10Bit Genauigkeit bietet.

von Motopick (motopick)


Lesenswert?

> zwar 10Bit Auflösung hat, aber wohl
> kaum 10Bit Genauigkeit bietet

Der Spruch kommt doch sonst immer von urschmitt.
Hat der Urlaub?

von Sebastian W. (wangnick)


Lesenswert?

Mans A. schrieb:
> Michael B. schrieb:
>> Mans A. schrieb:
>>> Arduino DUE
>>
>> Mans A. schrieb:
>>> Die Referenzspannung liegt bei 5V.
>>
>> Autsch.
>
> Warum Autsch.

Die Referenzspannung des Due für analogRead ist die Versorgungsspannung 
des ATSAM3X8EA, und die ist 3.3V. Schau dir 
https://www.arduino.cc/en/uploads/Main/arduino-Due-schematic.pdf mal 
diesbezüglich genau an. Ob VIN oder USBVCC, der nachgeschaltete NCP1117 
wandelt die on-board +5V in on-board 3.3V um, und die 3.3V speisen den 
uC.

LG, Sebastian

von Mans A. (mansmaak)


Lesenswert?

> Die Referenzspannung des Due für analogRead ist die Versorgungsspannung
> des ATSAM3X8EA, und die ist 3.3V. Schau dir
> https://www.arduino.cc/en/uploads/Main/arduino-Due-schematic.pdf mal
> diesbezüglich genau an. Ob VIN oder USBVCC, der nachgeschaltete NCP1117
> wandelt die on-board +5V in on-board 3.3V um, und die 3.3V speisen den
> uC.

Danke!

von Sebastian W. (wangnick)


Lesenswert?

Mans A. schrieb:
> Danke!

Zuviel der Ehre.

Thomas W. schrieb:
> Arduino Due board runs at 3.3V.
Michael B. schrieb:
> Autsch.
Björn S. schrieb:
> Nein die Versorgungsspannung des µC ist 3,3V.

LG, Sebastian

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.