Forum: Mikrocontroller und Digitale Elektronik Atmel Appnote AVR446 Hilfe lineare Geschwindigkeit


von Daniel D. (__daniel__)



Lesenswert?

Hallo an alle Interessierten und Helfer!

Aktuell beschäftige ich mich zum ersten mal mit einem Schrittmotor bzw. 
Schrittmotortreiber.
Ich verwende den Allegro A4988 (bis 1A Phasenstrom) dem man bequem den 
Schrittmodus und den Takt vorgeben kann und dieser sich dann um die 
Signalgenerierung für die Schrittmotor selbst kümmert.
Außerdem verwendet ich den ATmega128A bei 14,7456 Mhz.

Meine ersten Versuche den Schrittmotor linear zu beschleunigen bzw. zu 
verzögern waren nicht sehr erfolgreich, vor allem weil ich den stepmode 
(also Voll, Halb, Viertel, Achtel- oder Sechzehntelschrittbetrieb) und 
einige andere Parameter flexibel halten möchte.

Daher habe ich micht mit der Atmel AppNote zum Thema Schrittmotoren 
linear Beschleunigen/Verzögern beschäftigt (AVR446: Linear speed control 
of stepper motor, siehe Anhang). Nun läuft der Code auch wunderbar, aber 
ich bekomme immer wieder ein seltsames Verhalten des Motors. Mal 
verzögert er zwischendurch um dann wieder zu Beschleunigen usw.

Um mir eine Übersicht bzgl. der Größe der verwendeten Variablen und 
gegebenfalls Überfläufe zu detektieren die ich nicht erwarte habe ich 
mal ein Excel-File angelegt, siehe Anhang.
Hier sind alle Formeln aus der AppNote bzw. aus dem Atmel-Code umgesetzt 
und man kann mit den Werten spielen.
Vielleicht erfreut sich ja noch der ein oder andere darüber, der diesen 
Beispielcode von Atmel auch verwendet.

Irgendetwas scheint aber noch nicht korrekt zu sein. Der OCR1A-Wert 
srd.step_delay wird irgendwann negativ die Restfunktion habe ich noch 
nicht wirlich gecheckt...Nach Diagramm1 sieht der 
Geschwindigkeitsverlauf wirklich schön linear aus. Diagramm2 zeigt dass 
da aber an der Berechnung doch noch irgendwas falsch sein muss.

Ich würde mich freuen, wenn sich jemand dafür interessiert und das 
Dokument (und damit evtl auch der Code) korrigiert und verbessert werden 
kann!

Mathematisch akzeptiert aber den Ansatz noch nicht verstanden habe ich 
die den Ansatz zur cn-berechnung nach der Taylorreihe. 
Taylorapproximation ist mir schon klar aber wie bzw. welche spezielle 
Reihe da verwendet wird und weshalb, das ist mir nicht klar...jemand 
mathematisch versiert und Lust mir das näher zu bringen?

Nächste Woche teste ich mal diverse Einstellungen die ich davor zuerst 
mit dem Excel-File simuliert habe und sehe mir an was der Schrittmotor 
macht.

Ich freue mich über Feedback. Viele Grüße,

Daniel

von Daniel D. (__daniel__)


Angehängte Dateien:

Lesenswert?

Zur Info:
Die Formeln werden in der PDF beschrieben und ich habe sie aus dem 
Beispielcode übernommen.

Im Anhang:
- Zip-File (AVR446.zip) mit komplettem Atmel-Beispiel-Projekt zur 
Schrittmotoransteuerung

- direkt relevante Dateien "speed_cntr.c" und "speed_cntr.h" aus dem 
Atmel-Code-Beispiel

von Mike (Gast)


Lesenswert?

Und wie sieht dein Programm aus, in dem du die Atmel-Routinen 
verwendest?

von Daniel D. (__daniel__)


Lesenswert?

Die Berechnung in meinem Fall ist praktisch identisch zu dem Beispiel 
von Atmel.
Einzige Änderung: Statt in der ISR wie Atmel eine Funktion zu starten 
die über eine Tabelle die Phasen des Schrittmotors ansteuert, erzeuge 
ich hier einen kurzen Impuls als Clock-Signal für den 
Schrittmotortreiber..

Es geht mir prinzipiell darum was in der Berechnung falsch sein könnte 
bzw. wo die Berechnung an ihre Grenzen stößt..und was man da verbessern 
könnte.

von Daniel D. (__daniel__)



Lesenswert?

Update:
Excel Tool zur Hilfe und Visualisierung der 
Schrittmotor-Geschwindigkeitsberechnung nach Atmel Application Note 
"AVR446: Linear speed control of stepper motor" ist korrigiert.

Ihr findet es im Anhang.
Durch die große Anzahl der Daten und Diagramme ist das Excel-File 
relativ groß geworden.

Für Kritik oder Anregungen bin ich natürlich offen :) Ich hoffe es hilft 
denjenigen die sich sich auch mit diesem Thema auseinander setzen bei 
der erfolgreichen Implementierung des Codes.

Ob es in der Anwendung tatsächlich so funktioniert wie in Excel 
simuliert teste ich nächste WOche.

Viele Grüße,

Daniel

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.