[ Easy Elektro Start ] [ Seitenende ] [ zurück ]

 

 

 

Easy Elektro Start – Programmieren 9

 

 

Zwei in Reih und Glied

 

Von unserem „Arduino UNO“ wissen wir, dass dieser hardwaremäßig über sechs analoge Eingänge und zwar in Form der engl. Ports „Pin A0“, …, „Pin A5“ verfügt, sodass sich mittels des integrierten A/D-Wandlers entsprechende Eingangsspannungen UPin_A0 > 0 V und UPin_A0 <= 5,0 V vom Anschluss „Pin A0“ gegen Masse „Pin GND“ („┴“) messen und als Digitalwert im Bereich [ 0, …, 1023 ] als Bitwert anzeigen lassen.

 

Da der „Arduino UNO“ über das mitgelieferte USB-Kabel mit „Typ B“-Stecker mit Energie bei einer Spannung von 4,75 V bis 5,25 V (= 5 V Nennwert) und einer Stromstärke von bis zu 0,5 A (USB 2.0 High-Powered-Port) versorgt wird, beträgt auch die interne Stromversorgung des „Arduino UNO“ 5 Volt, die auch am Anschluss „Pin 5V“ z.B. als Referenzspannung zur allgemeinen Verfügung steht.

 

Wegen der internen Stromversorgung des „Arduino UNO“ mit 5 Volt kann auch der integrierte A/D-Wandler entsprechende Eingangsspannungen UPin_A0 > 0 V und UPin_A0 <= 5,0 V vom Anschluss „Pin A0“ gegen Masse „Pin GND“ („┴“) verarbeiten, sodass folgt:

 

1023 Bit      5,0 V

      1 Bit         x V

 

x = 5,0 V / 1023 Bit * 1 Bit = 0,0049 V = 4,9 mV

 

Demzufolge beträgt also die Auflösung des A/D-Wandlers 4,9 mV / Bit.

 

Probe:

 

4,9 mV / Bit * 1023 Bit = 5 012,7 mV ≈ 5 V

 

Da aber der A/D-Wandler nicht weiß, dass er mit einer internen Versorgungsspannung von UA/D = 5 V betrieben wird und demzufolge auch entsprechend große Eingangsspannungen UPin_A0 > 0 V und UPin_A0 <= 5,0 V in Bitwerte umwandeln kann, müssen wir ihm dies bei der Programmierung zuvor entsprechend mitteilen:

 

 

(Bild vergrößern: auf Bild klicken! Webverzeichnis | sketch_prog_09_01.ino)

 

Wenn man also will, dass das obenstehende Programm die umgewandelten Bitwerte im Arduino-Konsolefenster in Volt anzeigt, dann muss man die Referenzspannung ebenfalls in Volt einpflegen! Wenn man darüber hinaus auch noch den umgewandelten Spannungswert als Dezimalzahl mit zwei Nachkommastellen anzeigen will, dann muss man die Variable U_float als vom Typ „float“ deklarieren! Außerdem gilt es zu beachten, dass der Quotient AnzahlBits / 1023 bei der Division als Ergebnis einen Dezimalwert zurückliefert, sodass man dem Programm mitteilen muss, dass dezimal gerechnet werden soll, indem man die Bitzahl 1023.0 ebenfalls als Dezimalzahl einpflegt (siehe rote Kästen im obenstehenden Bild). -

 

Für den Fall, dass man bei der A/D-Wandlung die eingelesenen Bitwerte umgewandelt lieber in Millivolt [mV] angezeigt bekommen möchte, dann muss man dazu die Referenzspannung = 5030 ebenfalls als Millivolt-Wert einpflegen! Wenn die Ergebniswerte darüber hinaus ganzzahlig in Millivolt [mV], also ohne Nachkommastellen, angezeigt werden sollen, dann muss man die Variable U_int als vom Typ „int“, d.h. für engl. „integer“ (= ganzzahlig) deklarieren (siehe rote Kästen im nachfolgenden Bild):

 

 

(Bild vergrößern: auf Bild klicken! Webverzeichnis | sketch_prog_09_02.ino)

 

Wer außerdem eine noch höhere Rechengenauigkeit bei den im obenstehenden Bild angezeigten Millivolt-Werten haben möchte, der muss zu diesem Zweck die Variable U_int wieder in die Variable U_float vom Typ „float“, d.h. Fließkommazahl umbenennen und deklarieren.

 

Auf diese Weise bekäme man zwar noch zwei weitere Nachkommastellen als Millivolt angezeigt, was aber nicht zur Folge hat, dass sich auch die Auflösung „4,9 mV / Bit (= Empfindlichkeit) des A/D-Wandlers entsprechend verbessert! -

 

Als nächstes befassen wir uns mit dem „Sketch“-Programm sketch_prog_09_03.ino, das eine am Port „Pin A0“ anliegende analoge Spannung UPin_A0 aus dem Bereich UPin_A0 > 0 V und UPin_A0 <= 5,0 V vom Anschluss „Pin A0“ gegen Masse „Pin GND“ („┴“) einliest, mittels des A/D-Wandlers in einen Bitwert [ 0, …, 1023 ] umwandelt und nach entsprechender Berechnung und Umformung als Dezimalwert mit zwei Nachkommastellen im Arduino-Konsolefenster wie folgt anzeigt:

 

 

(Bild vergrößern: auf Bild klicken! Webverzeichnis | sketch_prog_09_03.ino)

 

Der Knackpunkt bei dem Programm sketch_prog_09_03.ino

 

 

(Bild vergrößern: auf Bild klicken! Webverzeichnis | sketch_prog_09_03.ino)

 

bzw. der Anzeige im Konsolefenster ist der, dass man es den angezeigten Ziffern(!) nicht ansieht, ob es sich bei diesen ausschließlich um

 

·        einzelne Ziffern vom Typ „char“ (= einzelne Zeichen, Buchstaben, Ziffern),

·        einen Textstring vom Typ „String“ (= alphanumerische Zeichenkette) oder

·        eine Dezimalzahl vom Typ „float“ (= Fließkommazahl mit der sich rechnen lässt)

 

handelt.

 

Okay, wenn man sich den Quellkode des Programms anschaut, der auf den ersten Blick ziemlich komplex aussieht, dann weiß man, dass es sich bei der angezeigten Ziffernfolge(!) um die Spannung UPin_A0 am Eingang des Ports „Pin A0“ des A/D-Wandlers handelt, wobei sich bei der Anzeige um eine zusammengesetzte handelt! Und zwar

 

·        aus dem ganzzahligen Wert vor dem Dezimalkomma

·        plus Dezimalkomma-Zeichen(!)

·        plus drei Nachkommastellen nach dem Dezimalkomma,

 

sodass sich mit der anzeigten Ziffernfolge(!) nicht rechnen lässt (siehe obenstehendes Bild)! -

 

Um das vorgenannte Programm sketch_prog_09_03.ino besser zu verstehen, bröseln wir dieses entsprechend auf,

 

1.     führen die Referenzspannung U_Ref = 5.03 ein,

2.     weisen den eingelesenen Analogwert „batteryPin_A0“ der „integer“-Variablen „U_A0_val“ zu,

3.     berechnen den Millivoltwert, der in der „integer“-Variablen „U_A0_mV“ abgespeichert wird und

4.     wandeln die Millivolt-Spannung in den ganzzahligen Wert der „integer“-Variablen „U_A0_V_int“
(Zahl bzw. Ziffer vor dem Komma) um (siehe
rote Kästen im nachfolgenden Bild):

 

 

(Bild vergrößern: auf Bild klicken! Webverzeichnis | sketch_prog_09_04.ino)

 

Wie man sich anhand des nachfolgenden Screenshots überzeugen kann, wird die am Port „Pin A0“ gemessene Eingangsspanung U_A0_mV = 2052 mV ordnungsgemäß in die dezimale Ziffernfolge(!) 2,052 V umgewandelt:

 

 

(Zum Vergrößern bitte auf das Bild klicken!)

 

Mit dem erweiterten Programm „sketch_prog_09_05.ino ist es jetzt möglich, den Textstring der Variablen „U_A0_V_str“ in die „char“-Variable „U_A0_V_char[6]“ umzuwandeln!

 

Dabei wird dann auch das vormalige Dezimalkomma durch einen Dezimalpunkt ersetzt, damit sich später mit dem „Character“-Array „U_A0_V_char[6]“ auch rechnen lässt:

 

 

(Bild vergrößern: auf Bild klicken! Webverzeichnis | sketch_prog_09_05.ino)

 

Wie man im nachfolgenden Screenshot des Programms „sketch_prog_09_05.ino sieht, ist die Umwandlung des Textstrings der Variablen „U_A0_V_str“ in die „char“-Variable „U_A0_V_char[6]“ recht einfach, muss man den Textstring nur zeichenweise auslesen und dem „Character“-Array ebenso zeichenweise zuweisen:

 

 

(Bild vergrößern: auf Bild klicken! Webverzeichnis | sketch_prog_09_06.ino)

 

Was jetzt noch fehlt, ist die Umwandlung des Textstrings der Variablen „U_A0_V_str“ in die Fließkommazahl der Variablen „U_A0_V_float“ (siehe Programm „sketch_prog_09_07.ino):

 

 

(Bild vergrößern: auf Bild klicken! Webverzeichnis | sketch_prog_09_07.ino)

 

 

 

 

 

 

Ob dabei das „Character“-Array in einen Fließkommawert umgewandelt werden muss, werden wir dann sehen.

 

 

 

LF, CR, EOL und EOF beim „Character“-Array

 

Nachfolgend geht es darum, das bisherige Berechnungsprogramm „sketch_prog_03_09.ino aus dem Versuch 1 dahingehend zu erweitern, sodass sich mit diesem nicht nur Spannungen, sondern auch Ströme messen lassen.

 

Um Ströme messen zu können, braucht man ein Strommessgerät, umgangssprachlich auch Amperemeter genannt, das zu diesem Zweck in den Stromkreis geschaltet werden muss, sodass man diesen an der zu messenden Stelle auftrennen und das Messgerät dort in Reihe zum Verbraucher (= Lastwiderstand RLast) anschließen muss.

 

Bevor die sogenannten Digitalmultimeter die analogen Multimeter (= Vielfachmessgeräte z.B. für Spannungs-, Strom-, Widerstands- und Kapazitätsmessungen) wegen ihres günstigen Preis-/Leistungsverhältnisses und der komfortablen Messwertanzeige mittels LCD-Display ablösten, gab es zu Spannungs- und Strommessungen nur die analogen Drehspulmessgeräte.

 

>> Drehspulmessgeräte können bis herab zum Messbereichsendwert IMB von etwa 10 µA gefertigt werden[2]. Für höhere Ströme bis etwa 100 mA wird die Drehspule aus dickerem Draht mit weniger Windungen gefertigt  - der Spannungsabfall ist dann entsprechend geringer.

 

Für noch größere Ströme wird ein Shunt eingesetzt  - ein parallel zum Messwerk geschalteter Messwiderstand, der einen Teil des Stromes um das Messwerk herum leitet (Stromteiler). Dabei ist zum Messwerk außerdem ein Vorwiderstand erforderlich, damit die Temperaturabhängigkeit des Widerstands der Kupferspule die Stromteilung nur gering beeinflusst, zu Einzelheiten siehe unter Strommessgerät. Typische Anordnungen zur Strommessung mit Shunt sind auf einen Spannungsabfall von 60 mV bei Messbereichsendwert ausgelegt und sind in dieser Hinsicht vielen digitalen Strommessgeräten überlegen, welche meist einen Spannungsabfall von 200 mV besitzen. << (Wikipedia)

 

>> Zur Strommessung muss der zu messende Strom durch das Messgerät fließen. Es wird daher zum Verbraucher in Reihe geschaltet. Dazu muss es ständig eingebaut sein. Zum Ein- oder Ausbau des Strommessgerätes muss der Stromkreis abgeschaltet und aufgetrennt werden: Die Messung erfordert einen Eingriff in die zu untersuchende Schaltung und in dieser Zeit eine Unterbrechung des Stromflusses. Allenfalls kann ein „Bypass“ gelegt werden, um den Strom um die aufzutrennende Stelle herumzuleiten.

Es gibt mehrere Möglichkeiten, um diese Auftrennung des Stromkreises zu vermeiden:

1.     Wenn ein bekannter ohmscher Widerstand R im Stromkreis liegt, kann man mit einem Spannungsmessgerät die Spannung U über dem Widerstand R messen und den Strom I gemäß I = U / R ausrechnen.

2.     Wenn eine einzelne stromführende Leitung (kein Kabel mit Hin- und Rückleiter) zugänglich ist, verwendet man ein Messgerät, welches das vom Stromfluss verursachte magnetische Feld erfasst (Zangenstrommesser, Rogowskispule).

3.     Zur Messung von Gleichstrom (z.B. in Messumformern mit Einheitssignal) lässt man diesen ständig durch eine Diode fließen. Zu Prüfzwecken kann ein Strommesser parallel zur Diode angeklemmt werden. Wenn die Klemmenspannung des Strommessers unter etwa 200 mV (d.h. sicher unterhalb der Durchlassspannung der Silizium-Diode) bleibt, fließt der Strom ausschließlich durch das Messgerät. << (Quelle: Wikipedia)

 

Da wir beim Versuch 9 „Zwei in Reih und Glied“ über zwei in Reihe geschaltete Glühlampen 18 als ohmscher Verbraucher und Lastwiderstände RLast 1 und RLast 2 verfügen, bietet es sich an, dass man die zweite Glühlampe 18 als Messwiderstand RLast 2 = RMess einsetzt bzw. verwendet, da sich dieser mittels der Nenn-Betriebsdaten der Glühlampe 18 von UNenn = 3,2 V und INenn = 0,2 A bequem berechnen lässt:

 

RMess    = UMess / IMess

 

            = UNenn / INenn

 

            = 3,2 V / 0,2 A = 16 Ω

 

 

(Zum Vergrößern bitte auf das Bild klicken!)

 

Dass die Glühlampe 18 mit RMess = 16 Ω als Messwiderstand natürlich viel zu groß ist, ist unbestritten, bietet aber den Vorteil, dass wir den Stromkreis nicht extra auftrennen müssen, um ein Strommessgerät einzufügen.

 

Außerdem kennen wir das analoge Multimeter in Form des Spannungs- und Strom-Messgerätes Messgerät 56 noch gar nicht, um es jetzt schon zu verwenden.

 

Darüber hinaus sind wir ja gerade dabei mit dem „Arduino UNO“ unser eigenes Spannungs- und Strom-Messgerät selbst zu programmieren!

 

Da die beiden im obenstehenden Bild zu sehenden 1,5 Volt Batterien vom Mignon AA im Batteriefach 19 inzwischen energiemäßig ziemlich aufgebraucht sind und die Batteriespannung bei jedem weiteren Gebrauch und jeder weiteren Belastung durch die beiden in Reihe geschaltete Glühlampen 18 „in die Knie geht“, d.h. absinkt, lassen sich mit diesen keine exakte Messungen mehr nebst Auswertung und Berechnung durchführen! Aber das ist kein Problem, da wir die interne Stromversorgung des „Arduino UNO“ anzapfen können! Aber nur dann, wenn wir diesen über das mitgelieferte USB-Kabel mit „Typ B“-Stecker mit Energie bei einer Spannung von 4,75 V bis 5,25 V (= 5 V Nennwert) und einer Stromstärke von bis zu 500 mA (USB 2.0 High-Powered-Port) versorgen!

 

Ist dies der Fall, dann lassen sich über die Ports „3.3 V“ und „5 V“ der internen Spannungsversorgung des „Arduino UNO“ Stromstärken von bis zu 400 mA realisieren:

 

 

(Zum Vergrößern bitte auf das Bild klicken!)

 

Diesbezüglich stellt sich gleich die Frage, wo wir mit der Berechnung und der Programmierung des Lastwiderstandes RLast der Glühlampe 18 anfangen sollen bzw. können!

 

Mit den beiden A/D-Wandlern lassen sich am Port „Pin A0“ sowohl die Gesamtspannung UGesamt = UPin 5V = 4,99 V als auch am Port „Pin A1“ die Teilspannung UMess = 2,33 V messen:

 

 

(Bild vergrößern: auf Bild klicken! Webverzeichnis | sketch_prog_09_09.ino)

 

Gemäß dem Ohmschen Gesetz R = U þ / I verbleiben jetzt aber immer noch zwei Unbekannte, sodass wir entweder den Messwiderstand RMess oder den (Quer-) Strom I durch den Spannungsteiler ULast + UMess kennen müssen, um den Lastwiderstand RLast = 15,09 Ω berechnen zu können.

 

Wenn man unterstellt, dass die beiden Glühlampen 18 aus der gleichen Produktion und der gleichen Charge stammen und demzufolge nahezu zu 100 % identisch sind und die Nenn-Betriebsdaten mit UNenn = 3,2 V und INenn = 0,2 A zutreffend sind, dann lässt sich die Stromstärke I durch den Spannungsteiler recht einfach wie folgt berechnen:

 

RNenn    = UNenn / I  

 

I           = UNenn / RNenn = 3,2 V / 16 Ω = 0,2 A     

 

I           = UMess / RMess = 2,33 V / 13,17 Ω = 0,1769 A 177 mA

 

RGesamt  = RLast + RMess

 

            = UGesamt / RGesamt  

 

I           = 4,99 V / ( 13,17 Ω + 15,09 Ω ) = 4,99 V / ( 28,26 Ω ) = 0,1766 A 177 mA

 

In der Praxis verhält es sich natürlich so, dass man einen viel kleineren (Präzisions-) Messwiderstand von z.B. RMess = 1 Ω mit einer Toleranz von 1 bis 1,5 % verwendet.

 

So verfügt z.B. ein gutes Drehspulmessgerät über einen Messbereichsendwert (= Vollausschlag) von 50 µA bei einer Messgenauigkeit von 1,5 %. Wegen der hohen Messempfindlichkeit entsprechen dabei die 50 µA einer Messspannung von 50 mV, sodass der Innenwiderstand Ri = 50 mV / 50 µA = 1 * 10-3 V / 10-6 A = 1 * 103 = 1 kΩ pro 50 mV Spannung beträgt      1 kΩ/50 mV = 2 kΩ/100 mV = 2 kΩ/0,1 V = 20 kΩ/1 V = 20 kΩ/V beträgt      hohe Messempfindlichkeit aufgrund des hohen Innenwiderstandes Ri = 20 kΩ/V bzw. des niedrigen Eigenverbrauchs von nur 50 µA.

 

Zum Vergleich der Innenwiderstand Ri = 3,3 kΩ/V eines Drehspulmessgerätes mit eher mittelmäßiger Empfindlichkeit bei gleichzeitig zu hohem Eigenverbrauch (siehe Wikipedia):

 

 

(Zum Vergrößern bitte auf das Bild klicken!)

 

Probe:

 

IMess = UMess / RMess

 

         = 50 mV / 20 kΩ = 50 * 10-3 V / 20 * 103 = 2,5 * 10-3 V / 103 = 2,5 * 10-6 A = 2,5 µA pro 50 mV

 

         = 2,5 µA / 50 mV = 2,5 µA / 0,050 V = 50 µA/1 V      sehr geringer Eigenverbrauch von 50 µA pro 1 Volt

 

 

 

 

 

[ Easy Elektro Start ] [ Seitenanfang ] [ zurück ]