Rampen / Weg Berechnung

Gast #2257153
Lesenswert?

Hi zusammen!

Für einen Geschwindigkeitsregler mit Rampen möchte ich berechnen
ab wann ich anfangen muss abzubremsen um eine Sollposition zu erreichen.

Das ganze läuft auf einem AVR, also muss das in ganzen Zahlen gerechnet 
werden. (Positionen sind in uint16_t gegeben).

Verwende ich als Rampe ganze Zahlen 1...n habe ich auch kein Problem das 
abbremsen vorherzusagen.

Der einfachheit halber betrachte ich hier mal den Beschleunigungsfall. 
Sei A(t) die zurückgelegte Strecke (in ticks) nach Regelungsloop t:

A(t) = rampe   t   (t + 1) / 2

Nun zu meinem Problem: Ich brauche langsamere Rampen.
Deshalb mache ich folgendes:

speed_now(t) = t * rampe / 16;

rampe=1 -> speed_now = 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 ...
rampe=2 -> speed_now = 0 0 0 0 0 0 0 1 1 1 1 1 1 2 2 2 ...
rampe=3 -> speed_now = 0 0 0 0 0 1 1 1 1 2 2 2 2 2 2 3 ... <--- 4x1 dann 
6x2 !
...
rampe=16 -> speed_now = 1 2 3 4 5 ... kein Problem bei vielfachen von 16
usw.

Wie finde ich bei so einer unregelmässigen Rampe heraus wieviele Ticks 
ich nach t zurückgelegt habe ?

Wenn ich mit (rampe/16) rechne bekomme ich ja aufgrund des aufsummierens
einen immer größer werdenden Fehler.

Irgendwie finde ich da keine Lösung, das muss aber doch irgendeine 
Formel geben, von mir aus auch gerne mit modulo g

Irgendjemand eine Idee oder ein Stichwort wonach ich googeln kann?

Danke & Gruss
Simon

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