Hilfe beim programmieren (arduino)?

Weebmania  19.03.2023, 15:11

Über welche Programmiersprache Arbeitest du Als Basis Phyton, c++,Javascript ???

Jenny1441 
Beitragsersteller
 19.03.2023, 15:14

Also arduinoIDE oder meinst du etwas anderes?

3 Antworten

5 V wird die Versorgungsspannung sein (USB).

Mehr Kontext wäre hilfreich, aber ich vermute mal, dass das etwas mit einem ADC oder DAC zu tun hat. Bei einer Auflösung von 10 bit gibt es 1024 mögliche Werte (von 0 bis 5 V). Mit deiner Rechnung hast du die Differenz der analogen Spannung zwischen 2 digitalen Werten berechnet.

Woher ich das weiß:Studium / Ausbildung

Das ist für den ADC, dem Analog nach Digital Converter.

Der vergleicht die Eingangsspannung mit einer Referenzspannung und gibt das in 1024 Stufen an.

Der hat 10 Bit was dann 1024 Stufen sind. Liegt die Referenzspannung auf 5V, dann bedeutet eben der Messwert 1023, dass 5V am Eingang anliegen.

1023 = 100%, 0 = 0%

Und wenn 100% 5V sind, kannst Du dann leicht umrechnen wie viel Volt das sind.

Dazu einfach ausrechnen wie viel Volt eine Stufe hat. Also bei 10-Bit auflösung hat man als maxwert 1023. Bei 5V Referenzspannung macht das dann 5V/1023 = 0,00488758553275V pro Stufe.

Bei der Umrechnung gibst Du das am besten als Bruch an, so kann der Compiler mit möglichst geringen Aufwand (wegend en Compileroptimierungen) möglichst genaue Werte berechnen. Also

voltvariable = ADCgemessen * (5.0 / 1023);

Statt nur 5 musst Du 5.0 angeben. Sonst wird mit Int gerechnet und dann kriegst Du immer "0" heraus weil das Komma abgeschnitten wird. Ist eine Kommazahl in der Formel, zwingt man den Compiler dazu float (also Fließkomma) zu verwenden.

Woher ich das weiß:Berufserfahrung

Jenny1441 
Beitragsersteller
 19.03.2023, 15:19

Danke:)

Das heißt ich teile meine Eingangsspannung (5V) durch 1023 (sind das dann Möglichkeiten?)

0
Commodore64  19.03.2023, 15:21
@Jenny1441

Genau, man kann das als Prozent oder besser "Promille" ansehen. Nur da das Ding binär rechnet hat man keinen glatten tausender sondern eben 1023.

0
Jenny1441 
Beitragsersteller
 19.03.2023, 15:22
@Commodore64

Und dadurch erhalte ich dann einen genaueren Messwert?

0
Commodore64  19.03.2023, 15:32
@Jenny1441

Nein, der Messwert ist nur eine Darstellung von "Wie viel relativ zur Referenzspannung". Also wie ein Prozentwert, nur mit 1023 statt 100 für "maximum".

Einheiten oder sonstige Bezüge stecken in der gemessenen Zahl nicht drin!

Du bekommst als Messergebnis nur eine Zahl, z.B. 782. Was die bedeutet steht da natürlich nicht drin. Möchtest Du die weiter verarbeiten, dann musst Du die umrechnen. Möchtest Du also "Volt" oder besser "Millivolt" haben um z.B. zu sagen:

if (Messwert > 1000)

also wenn "mehr als 1000 Millivolt gemessen wurde, dann..."

Hängt da ein analoger Temperatursensor dran, dann rechnest Du das dann direkt in °C oder was Du brauchst um. Wie das geht hängt dann davon ab welche Spannungen das Teil bei welcher Temperatur erzeugt.

0
Jenny1441 
Beitragsersteller
 19.03.2023, 15:37
@Commodore64

Ich habe einen Feuchtigkeitssensor mit eingebaut.

Wenn ich also den messwert welcher dieser mir liefert mit der Differenz aus 5 und 1023 multipliziere, habe ich aber eine eine Einheit, oder nicht?

0
Commodore64  19.03.2023, 15:46
@Jenny1441

Dann weißt Du wie viel Volt der gerade abliefert.

Kennst Du dann welche Spannung der bei welcher Feuchtigkeit erzeugt, kannst DU das dann in Feuchte umrechnen. Das machst Du dann lieber direkt ohne Umweg auf Volt bzw. Millivolt.

0
Commodore64  19.03.2023, 15:20

P.S.:

Da fließkomma gewisse unschärfen hat, ist es damit viel schwieriger saubere Vergleiche anzustellen. Also "if a >b" und so was.

Ich bevorzuge bei so was, einen Integer für Messwerte zu verwenden. Da eine Stufe ja sowieso 4mV sind, bietet sich die Darstellung in Millivolt gerade zu an. Das umrechnen geht also mit:

int millivolt;

millivolt = analogRead(A0) * (5000.0/1023.0);
0

Ich denke mal es geht um den ADC

Der Arduino (zumindest einige Versionen davon) haben einen 10Bit ADC. Der Wertebereich davon liegt bei 0 bis 1023.

Mit einer Referenzspannung von 5V hast du eben eine Auflösung von 5V/1023 = 4.887mV.

Ein ADC Wert von 1000 würde also einer Spannung von 5V*1000/1023 = 4.887V entsprechen.


Jenny1441 
Beitragsersteller
 19.03.2023, 15:13

Vielen Dank:)

Was genau meint ADC?

0
Kelec  19.03.2023, 15:14
@Jenny1441

Analog to digital converter. Also ein Baustein im Arduino um Spannungen zu messen.

0