Wert soll um 8% pro Sekunde wachsen

#1178786
Lesenswert?

Ich hau mich auch gleich aufs Ohr, aber meiner Meinung nach falsch:

nach 400x ist der Wert um 8,3% gewachsen: 1,0002^400 = 1,0833 
(Stichwort: Zinseszins)

Was du willst ist 1,08^(1/400) = 1,0001924211134082521262781155983

Wobei ich bezweifle, dass der AVR das so genau rechnen kann, 
insbesondere könnte es sein dass sich durch so oftmaliges Anwenden einer 
Float-Operation irgendwelche Rundungsfehler hochschaukeln.

Gruß
Roland
Gast #1178791
Lesenswert?

Die Zinseszins-Rechnung greift nur, wenn man jedes Mal, also bei jedem 
Interrupt berechnet:

neuer Wert = alterWert*0,08/400


Wenn aber von einem Startwert ausgegangen wird, so ergibt sich:

neuerWert = Startwert*0,08/400 + alterWert


Die Frage ist nur, welche Aufgabenstellung ist korrekt? Das kann nur 
Gert klären.
Gast #1178997
Lesenswert?

Also angenommen ich Starte bei Null. Dann soll der Wert mit 8% pro 
Sekunde steigen. Bei 400Hz sollte er ja dann nach 12.5 Perioden bei 100% 
sein:
(0.08/400)*400)*12.5=1

Aber irgendwas mach ich glaube ich noch falsch ...
Gast #1179048
Lesenswert?

Was solls denn werden? Eine Art Anstiegsbegrenzung? Oder eine Rampe oder 
was?

Gib mal paar mehr Infos und vielleicht ein zwei Beispiele. Wo kommen 
Werte her, die 8% je Sekunde steigen sollen...?
Moderator (Firma: Titel) Persönliche Seite #1179056
Lesenswert?

> 8% von  Null sind Null.
>>> Bei 400Hz sollte er ja dann nach 12.5 Perioden bei 100% sein
Es soll offenbar einfach bei jedem Timertic ein Wert dazuaddiert werden, 
bis nach 12,5 sec der Wert 1 erreicht ist.

Manche verwechseln das mit Prozentrechnen ;-)

Das ist wie mit der einen Frage:
Auf einem Teich mit einer Oberfläche von 0,8765km² wachsen Seerosen mit 
einer Oberfläche von 17,6789dm². Jeden Tag verdoppelt sich die Anzahl 
der Seerosen. Schon nach 22 Tagen ist die gesamte Teichfläche mit 
Seerosen bedeckt. Frage: wann war der Teich zur Hälfte bedeckt?

Wer die Antwort weiß:
bitte noch ein wenig warten, dass auch andere ihren Spass haben ;-)
Gast #1179061
Lesenswert?

Genau, eine Rampe soll das werden um ein sprunghaftes Eingangssignal 
linear zu verzögern. Wenn z.B. das Eingangssignal von Null auf 50% des 
max. Wertes springt, soll der Wert nur mit 8% pro Sekunde steigern. 
Vielleicht drücke ich mich mit den %_Wert auch falsch aus ... bin gerade 
total verwirrt
Moderator (Firma: Titel) Persönliche Seite #1179097
Lesenswert?

>>> Hast das von 9live ;-)
>> Nein, auswendig gelernt ;-)
> 9Live  :-))
Mann, ich wusste gar nicht, dass es sowas wie 9live gibt (zu dieser 
Bildunglücke stehe ich und ich werde die auch nicht weiter ausmerzen).
So ein Pech, das ist echt miserables Timing, dass die dort irgendwo auch 
gerade diese Frage gestellt haben :-/

Also eine andere:
Ich habe zwei halbvolle Weingläser, eines enthält Weißwein, das andere 
Rotwein (100ml). Jetzt nehme ich jetzt einen Teelöffel (z.B. 5ml) 
Weißwein heraus, schütte den in den Rotwein, rühre den dann um, und 
nehme danach einen Teelöffel dieses Gemischs heraus un schütte den 
zurück in den Weißwein.
Habe ich jetzt mehr Weißwein im Rotwein oder umgekehrt oder was?
Gast #1179154
Lesenswert?

> Genau, eine Rampe soll das werden um ein sprunghaftes Eingangssignal
> linear zu verzögern. Wenn z.B. das Eingangssignal von Null auf 50% des
> max. Wertes springt, soll der Wert nur mit 8% pro Sekunde steigern.
> Vielleicht drücke ich mich mit den %_Wert auch falsch aus ... bin gerade
> total verwirrt

Das wird nie eine Rampe, wenn du einmal pro Sekunden einen Wert um einen 
Prozentsatz erhöhst.

Das wird bestenfalls eine Art Treppe.

Aber nur dann eine Art Treppe, wenn du dich erst mal einigst WOVON die 
verfl*chten 8% genommen werden sollen. Von einem festen Startwert, vom 
gewünschten Endwert, oder von dem gerade eingestellten Wert? In allen 
Fällen ist 0 dabei ein sehr ungünstiger Wert.

Prozentangaben sind RELATIVE Angaben. Solange du dich nicht darauf 
einigst "relativ wozu" kommt halt irgendein Mist raus.

So, und wenn das eine Rampe werden soll, willkommen im Land des 
Abtasttheorems. Zu beantworten ist die Frage, was für eine 
Abtastfrequenz man mindestens braucht, um aus (künstlich erzeugten) 
Daten ein vorgegebenes Signal (Anstieg mit einer vorgegebenen Steilheit) 
(re)konstruieren zu können. Dazu wiederum die Frage, bis zur welcher 
Oberwelle, also wie genau,  man besagtes Signal konstruieren möchte.

Nicht von dem Begriff Abtastfrequenz verwirren lassen. Hier wird nicht 
abgetastet, doch es die gleiche Frequenz, mit der man die Ausgangswerte 
ändert (ändern muss) um ein vorgegebenes Signal zu erreichen.

Viel Spaß beim rechnen.
Gast #1179235
Lesenswert?

>Habe ich jetzt mehr Weißwein im Rotwein oder umgekehrt oder was?

Es ist genauso viel Rotwein im Weißwein, wie Weißwein im Rotwein.

Ich habe es damals selbst nicht geglaubt, bis ich nachgerechnet habe...
Moderator (Firma: Titel) Persönliche Seite #1179239
Lesenswert?

Matthias Lipinsky wrote:
>>>Habe ich jetzt mehr Weißwein im Rotwein oder umgekehrt oder was?
>> Es ist genauso viel Rotwein im Weißwein, wie Weißwein im Rotwein.
> Ich habe es damals selbst nicht geglaubt, bis ich nachgerechnet habe...
Ja, denn ich könnte z.B. einen Teelöffel nehmen, der genau 100ml fasst.
Dann gehts einfacher mit dem Rechnen ;-)
Gast #1179249
Lesenswert?

> Ich habe es damals selbst nicht geglaubt, bis ich nachgerechnet habe...

Hab ich auch mal gemacht, ist aber nicht noetig. Hinterher ist in beiden 
Glaesern gleichviel drin, da kann das garnicht unterschiedlich sein.
Gast #1179253
Lesenswert?

Dito.
Wenn ich eine bestimmte Anzahl an 'Weißweinteilchen' in den Rotwein gebe 
und nehme anschließend ein Gemisch aus 'Weißweinteilchen' + 
'Rotweinteilchen' mit der Bedingung dass die Summe der Teilchen Konstant 
sein muss, dann muss ich weniger 'Rotweinteilchen' als 
'Weißweinteilchen' haben  (wenn gilt: Weißweinteilchen != 0)
Gast #1179255
Lesenswert?

ups... war noch nicht fertig.

...weniger Rotweinteilchen im Gemisch natürlich.
Wenn ich jetzt die wenigeren Rotweinteilchen in den Weiswein gebe habe 
ich weniger Rotweinteilchen im Weißwein als andersrum...

verstehs auch nicht...
#1179286
Lesenswert?

Becher A                 |     Becher B
------------------------------------------------
 1000 Einheiten Rotwein  | 1000 Einheiten Weißwein
              << 100 Einheiten
 1000 Einheiten Rotwein  |  900 Einheiten weißwein
+ 100 Einheiten Weißwein |
              100 Einheiten Gemisch >>
  910 Einheiten Rotwein  |  910 Einheiten Weißwein
+  90 Einheiten Weißwein | + 90 Einheiten Rotwein
Gast #1179322
Lesenswert?

mhhh...
Also was ich vor habe: Ich starte bei 0. Der Wert soll um 8 Einheiten 
pro Sekunde zunehmen.Endwert ist 100. Getaktet werden soll der Zuwachs 
von dem 400 Hz Signal. Dann wäre doch der Zuwachs pro Interrupt-Wreignis 
8/400. Das wäre dann doch die Steigung der Rampe, oder?
Gast #1179323
Lesenswert?

@dgoersch:
Fast richtig.
In den Gläsern befinden sich nachher

  909,090909... Einheiten Rotwein  |  909,090909... Einheiten Weißwein
+  90,909090... Einheiten Weißwein | + 90,909090... Einheiten Rotwein
Gast #1179324
Lesenswert?

Becher A                 |     Becher B
------------------------------------------------
 1000 Einheiten Rotwein  | 1000 Einheiten Weißwein
              << 100 Einheiten
 1000 Einheiten Rotwein  |  900 Einheiten weißwein
+ 100 Einheiten Weißwein |
^^^^^^^^^^^^^^^^^
Verhältniss 10:1

              100 Einheiten Gemisch >>
  910 Einheiten Rotwein  |  910 Einheiten Weißwein
+  90 Einheiten Weißwein | + 90 Einheiten Rotwein
^^^^^^^^^^^^^^^^
Verhältniss 9:1  <= Fehler !

Besser:
  909,09... Einheiten Rotwein  |  909,09... Einheiten Weißwein
+  90,90... Einheiten Weißwein | + 90,90... Einheiten Rotwein

Gruß,
Klaus
Gast #1179331
Lesenswert?

O.k. ich habs auch nachgerechnet - stimmt schon. ....

Becher A                 |     Becher B
------------------------------------------------
 1000 Einheiten Rotwein  | 1000 Einheiten Weißwein
              << 100 Einheiten
 1000 Einheiten Rotwein  |  900 Einheiten weißwein
+ 100 Einheiten Weißwein |
              100 Einheiten Gemisch >>
  909,09... Einheiten Rotwein  |  909,09...Einheiten Weißwein
+  90,90.. Einheiten Weißwein | + 90,90.. Einheiten Rotwein

*Gemisch besteht aus: 90,90.. Einheiten (R) und 9,09.. Einheiten (W)

@Axel Rühl
Auf die Seerosen kommt man schnell, wenn man sich überlegt, dass sie 
sich jeden Tag verdoppeln... na kleiner Tip jeden Tag VERDOPPELN... ;)
#1179341
Lesenswert?

Gert wrote:
> mhhh...
> Also was ich vor habe: Ich starte bei 0. Der Wert soll um 8 Einheiten
> pro Sekunde zunehmen.Endwert ist 100. Getaktet werden soll der Zuwachs
> von dem 400 Hz Signal. Dann wäre doch der Zuwachs pro Interrupt-Wreignis
> 8/400. Das wäre dann doch die Steigung der Rampe, oder?

Ganz genau.
Das hat aber nichts mit Prozent zu tun.
Bei jedem Interrupt wird dein bisheriger Wert um einen 'konstantes' 
Delta erhöht.
Gast #1179361
Lesenswert?

>Das hat aber nichts mit Prozent zu tun.
>Bei jedem Interrupt wird dein bisheriger Wert um einen 'konstantes'
>Delta erhöht.

Also sieht deine 440Hz-Routine etw so aus:

pseudocode:
1
ISR (440Hz)
2
{
3
  differenz = (eingang - ausgang);
4
  if ( differenz > X ) differenz = X;
5
  else if ( differenz < X ) differenz = -X;
6
 
7
  ausgang = ausgang + differenz;
8

9
}
Gast #1179382
Lesenswert?

... und wenn die Augangswert 0..100 % sind. Ist dann 8% pro Sekunde 
richtig ausgedrückt?


Meine Routine sieht quasi so aus:
1
ISR (440Hz)
2
{
3
  
4
  if ( ausgabe < eingabe ){ausgabe+=8/440}
5

6
}

Der Wert wächst aber ca. doppelt so schnell an wie erwartet
#1179388
Lesenswert?

Gert wrote:
> ... und wenn die Augangswert 0..100 % sind.

Sind auch nur Zahlen.
Dein Wert soll dann in einer bestimmten Zeit von 0 bis 100 rauffahren.

Ob das Prozent oder Äpfel oder Schrittmotorpulse sind, ist unerheblich. 
Du musst in einer bestimmten Zeit eine Variable vom Startwert zum 
Endwert interpolieren.


>
1
> ISR (440Hz)
2
> {
3
> 
4
>   if ( ausgabe < eingabe ){ausgabe+=8/440}
5
> 
6
> }
7
> 
8
>
>
> Der Wert wächst aber ca. doppelt so schnell an wie erwartet

Dann sieh dir mal die Timerwerte an.
Obiges (offensichtliche Problem mal beiseite gelassen), erhöht ausgabe 
in 1 Sekunde um den Wert 8. Aber nur dann, wenn die ISR wirklich 440 mal 
in der Sekunde aufgerufen wird.
#1179409
Lesenswert?

Mal mit konkreten Zahl.

Angenommen du hast eine Variable X.
Die soll alle Werte von 129 bis 546 durchlaufen.
Und zwar in 12 Sekunden.


Die Frage ist daher, um welchen Wert muss x jeweils erhöht werden?
In 12 Sekunden, wird die ISR 12 * 440 = 5280 mal aufgerufen.

x soll einen Bereich von 546 - 129 = 417 durchlaufen.
Also muss x bei jedem ISR Aufruf um 417 / 5280 = 0.07897 erhöht werden.


Die 0.07897 sind im Grunde nichts anderes als die Steigung der Geraden, 
die du durch die Punkte   0/129 und 12/546  gelegt hast

Jetzt kannst du den Spiess aber auch Umdrehen. Du willst x wieder alle 
Werte durchlaufen lassen, von 129 bis 546. Und zwar soll x in 1 Sekunde 
um 8% von (546-129) zunehmen.
546 - 129 = 417. 8% davon sind 33.36

In 1 Sekunde muss x also um 33.26 größer werden. (Daraus folgt sofort, 
dass
x für den kompletten Ablauf 12.5 Sekunden brauchen wird, den 417 / 33.36 
sind 12.5)

Wenn x in 1 Sekunde um 33.26 zunehmen soll, dann muss es daher in einem 
ISR Aufruf (der ja 440 mal in der Sekunde erfolgt) um 33.26/440 = 
0.07559 zunehmen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren