Hallo Forum,
gut war ich in Mathe noch nie, aber für dieses Problem wüsste ich nicht
mal, wonach ich suchen soll.
Ich messe mit einem ATmega/ADC über einen Spannungsteiler eine Spannung
von max. 65V.
Aus dem ADC Wert die gemessene Spannung (am Pin) auszurechnen, ist kein
Problem.
Die gemessene Spannung dann in die tatsächliche Spannung vor dem
Spannungsteiler umzurechnen, ist ebenfalls kein Problem.
Damit die übrige Peripherie des Gerätes allerdings ordnungsgemäß
funktioniert, muss die Spannung, die ich da messe, im Bereich zwischen
48V und 65V liegen. Sie kann, rein technisch, aber auch bis 0V
runtergehen - nur arbeitet die Peripherie dann eben nicht mehr korrekt.
Und diesen Intervall, 48V - 65V möchte ich gerne als Skala für eine
Prozent-Anzeige verwenden.
Also nicht:
1
0.0V=0%
2
...
3
32.5V=50%
4
...
5
65.0V=100%
sondern stattdessen
1
<=48.0V=0%
2
...
3
=56.5V=50%
4
...
5
>=65.0V=100%
Das <= 48V als 0% intepretiert werden sollen bzw. >= 65V als 100% krieg
ich ja noch hin. Aber wie komme ich den "skalierten" Prozentwert
dazwischen?
Das muss doch irgendwie auszurechnen sein... O_o
Hat dazu jemand vielleicht eine Idee und kann mir einen Denkanstoß
geben?
Würde mich über jegliche Hilfe sehr freuen.
Vielen Dank, Tobias
Möchtest du das direkt im Programm machen oder händisch einfach die
Lösung bekommen?
Ein Befehl für den ATmega wäre die Funktion:
map(variable, Startwert_Skala1, Endwert_Skala1, Startwert_Skala2,
Endwert_Skala2);
Rechnerisch:
Messwert - 48 = Messwert_1
Messwert_1*(Messwert_1 / 17)*100 = Messwert_1_in_Prozent
Da der Messwert laut Problembeschreibung auch kleiner als 48V sein kann,
muss man noch ne Sonderbehandlung einbauen. Sonst ginge die
Prozentanzeige auch bis -282%.
Arduino bietet dafür map() und contstrain().
Wenn man sich die Funktionen dafür in der Reference klaut und in die
Zielsprache portiert, kann man das recht einfach umsetzen.
Mathe-Null schrieb:> Aus dem ADC Wert die gemessene Spannung (am Pin) auszurechnen, ist kein> Problem. Die gemessene Spannung dann in die tatsächliche Spannung vor dem> Spannungsteiler umzurechnen, ist ebenfalls kein Problem.
Man kann diese Zwischenskalierungen auch einfach weglassen, dann sind
bei einem 10-Bit Wandler die 65V der AD-Wert 1023 und 48V der Wert 755,
zwischen Ober und Untergrenze liegen 268 Inkremente.
Ergibt sich somit in 16-Bit Berechnung die Formel
Mathe-Null schrieb:> Damit die übrige Peripherie des Gerätes allerdings ordnungsgemäß> funktioniert, muss die Spannung, die ich da messe, im Bereich zwischen> 48V und 65V liegen. Sie kann, rein technisch, aber auch bis 0V> runtergehen - nur arbeitet die Peripherie dann eben nicht mehr korrekt.
Was willst du anzeigen, wenn die Spannung dann unter 48V liegt - bei 48V
sind es ja schon 0%?
Oder ist es egal, wenn die Peripherie dann nicht mehr richtig
funktioniert?
Hallo zusammen,
wow - vielen Dank für die vielen Antworten und die Problemlösungen.
Um noch ein paar Fragen zu beantworten:
HildeK schrieb:> Was willst du anzeigen, wenn die Spannung dann unter 48V liegt - bei 48V> sind es ja schon 0%?> Oder ist es egal, wenn die Peripherie dann nicht mehr richtig> funktioniert?
Ja - für die Messung ansich ist die Funktion der Peripherie egal. Die
Entscheidung liegt dann beim Anwender.
Liegt die Spannung zwischen 0V und 48V, so wären das weiterhin 0%.
Die Anzeige soll keine tatsächliche Spannungsanzeige werden. Es geht
eher darum anzuzeigen, wie leistungsfähig die Peripherie noch sein wird.
0% heißt also nicht, das keine Spannung da ist, sondern zu wenig um den
ordnungsgemäßen Betrieb zu gewährleisten.
MaWin schrieb:>> map> Wenn er die Arduino-Umgebung verwendet...
Nein, tut er nicht ;)
Ich habe den Vorschlag von "A.Z." bzw. "AF" übernommen. Das funktioniert
prima. Vielen Dank. Die Idee von Lothar Miller wäre auch schick, aber da
ich die Zwischenwerte ohnehin für ein Log brauche und auch noch ein
ADC-Korrekturwert mit in die Berechnung einfließt, sind die
Einzelschritte für mich übersichtlicher.
Also vielen Dank an alle. Ihr habt mir sehr geholfen.