Hi, ich möchte einen Schrittmotor linear beschleunigen. Dafür habe ich mir folgende Gleichungen zur Berechnung der Zeitintervalle zwischen den einzelnen Schritten überlegt:
Das funktioniert soweit in der Theorie wunderbar und ich bekomme auch realistische Werte heraus, wenn ich das in C++ auf dem PC probiere. Beispiel Werte bei w = 1000 und w' = 1000: 0,0010000000 0,0009990010 0,0009980050 0,0009970119 0,0009960219 0,0009950347 0,0009940505 0,0009930692 0,0009920909 0,0009911154 Jetzt habe ich auf dem Mikrokontroller(PIC18F46K80) ja nur begrenzte Möglichkeiten und das Rechnen mit Festkommazahlen ist deutlich einfacher und schneller als mit Fließkommazahlen. Zudem habe ich nur einen 16 Bit Timer zur Verfügung, der mit 1MHz zählt. Deshalb habe ich mir gedacht, dass ich die Einheiten etwas anpasse:
Beispiel Werte bei w = 1000 und w' = 1000: 65,5360000000 00,9849705423 00,9706021622 00,9568476443 00,9436643724 00,9310137675 00,9188608093 00,9071736237 00,8959231283 00,8850827252 Wie man unschwer sehen kann, gibt es einen großen Sprung nach dem ersten Wert und die restlichen Werte sind kleiner als 1. Wo liegt mein Denkfehler? Ich habe eigentlich erwartet Werte über 1 zu erhalten und den großen Sprung kann ich mir überhaupt nicht erklären.